From bfc0f554529ba980bd2c68833910f20ec57d95b1 Mon Sep 17 00:00:00 2001 From: cupkax Date: Fri, 28 Aug 2026 18:54:10 +1000 Subject: [PATCH] Add support for rite of passage --- src/Data/ModCache.lua | 46 +++++++++++---------------- src/Modules/ConfigOptions.lua | 27 ++++++++++++++++ src/Modules/ModParser.lua | 60 +++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 27 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index ccfdf5f6db..3435f89364 100644 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -8940,32 +8940,24 @@ c["Poison Cursed Enemies on hit"]={{[1]={[1]={actor="enemy",type="ActorCondition c["Poison you inflict is Reflected to you"]={nil,"Poison you inflict is Reflected to you "} c["Poison you inflict with Travel Skills is Reflected to you if you have fewer than 5 Poisons on you"]={nil,"Poison you inflict with Travel Skills is Reflected to you if you have fewer than 5 Poisons on you "} c["Poisonous Hit"]={{[1]={[1]={type="Condition",var="{Hand}Attack"},flags=0,keywordFlags=0,name="PoisonChance",type="BASE",value=100}},nil} -c["Possessed by Spirit Of The Bear for 15 seconds on use"]={nil,"Possessed by Spirit Of The Bear for 15 seconds on use "} -c["Possessed by Spirit Of The Bear for 20 seconds on use"]={nil,"Possessed by Spirit Of The Bear for 20 seconds on use "} -c["Possessed by Spirit Of The Bear for 20 seconds on use Possessed by Spirit Of The Boar for 20 seconds on use"]={nil,"Possessed by Spirit Of The Bear for 20 seconds on use Possessed by Spirit Of The Boar for 20 seconds on use "} -c["Possessed by Spirit Of The Boar for 15 seconds on use"]={nil,"Possessed by Spirit Of The Boar for 15 seconds on use "} -c["Possessed by Spirit Of The Boar for 20 seconds on use"]={nil,"Possessed by Spirit Of The Boar for 20 seconds on use "} -c["Possessed by Spirit Of The Boar for 20 seconds on use Possessed by Spirit Of The Cat for 20 seconds on use"]={nil,"Possessed by Spirit Of The Boar for 20 seconds on use Possessed by Spirit Of The Cat for 20 seconds on use "} -c["Possessed by Spirit Of The Cat for 15 seconds on use"]={nil,"Possessed by Spirit Of The Cat for 15 seconds on use "} -c["Possessed by Spirit Of The Cat for 20 seconds on use"]={nil,"Possessed by Spirit Of The Cat for 20 seconds on use "} -c["Possessed by Spirit Of The Cat for 20 seconds on use Possessed by Spirit Of The Owl for 20 seconds on use"]={nil,"Possessed by Spirit Of The Cat for 20 seconds on use Possessed by Spirit Of The Owl for 20 seconds on use "} -c["Possessed by Spirit Of The Owl for 15 seconds on use"]={nil,"Possessed by Spirit Of The Owl for 15 seconds on use "} -c["Possessed by Spirit Of The Owl for 20 seconds on use"]={nil,"Possessed by Spirit Of The Owl for 20 seconds on use "} -c["Possessed by Spirit Of The Owl for 20 seconds on use Possessed by Spirit Of The Ox for 20 seconds on use"]={nil,"Possessed by Spirit Of The Owl for 20 seconds on use Possessed by Spirit Of The Ox for 20 seconds on use "} -c["Possessed by Spirit Of The Ox for 15 seconds on use"]={nil,"Possessed by Spirit Of The Ox for 15 seconds on use "} -c["Possessed by Spirit Of The Ox for 20 seconds on use"]={nil,"Possessed by Spirit Of The Ox for 20 seconds on use "} -c["Possessed by Spirit Of The Ox for 20 seconds on use Possessed by Spirit Of The Primate for 20 seconds on use"]={nil,"Possessed by Spirit Of The Ox for 20 seconds on use Possessed by Spirit Of The Primate for 20 seconds on use "} -c["Possessed by Spirit Of The Primate for 15 seconds on use"]={nil,"Possessed by Spirit Of The Primate for 15 seconds on use "} -c["Possessed by Spirit Of The Primate for 20 seconds on use"]={nil,"Possessed by Spirit Of The Primate for 20 seconds on use "} -c["Possessed by Spirit Of The Primate for 20 seconds on use Possessed by Spirit Of The Serpent for 20 seconds on use"]={nil,"Possessed by Spirit Of The Primate for 20 seconds on use Possessed by Spirit Of The Serpent for 20 seconds on use "} -c["Possessed by Spirit Of The Serpent for 15 seconds on use"]={nil,"Possessed by Spirit Of The Serpent for 15 seconds on use "} -c["Possessed by Spirit Of The Serpent for 20 seconds on use"]={nil,"Possessed by Spirit Of The Serpent for 20 seconds on use "} -c["Possessed by Spirit Of The Serpent for 20 seconds on use Possessed by Spirit Of The Stag for 20 seconds on use"]={nil,"Possessed by Spirit Of The Serpent for 20 seconds on use Possessed by Spirit Of The Stag for 20 seconds on use "} -c["Possessed by Spirit Of The Stag for 15 seconds on use"]={nil,"Possessed by Spirit Of The Stag for 15 seconds on use "} -c["Possessed by Spirit Of The Stag for 20 seconds on use"]={nil,"Possessed by Spirit Of The Stag for 20 seconds on use "} -c["Possessed by Spirit Of The Stag for 20 seconds on use Possessed by Spirit Of The Wolf for 20 seconds on use"]={nil,"Possessed by Spirit Of The Stag for 20 seconds on use Possessed by Spirit Of The Wolf for 20 seconds on use "} -c["Possessed by Spirit Of The Wolf for 15 seconds on use"]={nil,"Possessed by Spirit Of The Wolf for 15 seconds on use "} -c["Possessed by Spirit Of The Wolf for 20 seconds on use"]={nil,"Possessed by Spirit Of The Wolf for 20 seconds on use "} +c["Possessed by Spirit Of The Bear for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="Life",type="INC",value=20},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=60},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=60},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=-20}},nil} +c["Possessed by Spirit Of The Bear for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="Life",type="INC",value=20},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="StunThreshold",type="INC",value=60},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="EnemyHeavyStunBuildup",type="INC",value=60},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheBear"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=-20}},nil} +c["Possessed by Spirit Of The Boar for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheBoar"},flags=0,keywordFlags=0,name="DamageGainAsFire",type="BASE",value=20},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheBoar"},flags=0,keywordFlags=0,name="BleedChance",type="BASE",value=100},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheBoar"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=-20}},nil} +c["Possessed by Spirit Of The Boar for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheBoar"},flags=0,keywordFlags=0,name="DamageGainAsFire",type="BASE",value=20},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheBoar"},flags=0,keywordFlags=0,name="BleedChance",type="BASE",value=100},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheBoar"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=-20}},nil} +c["Possessed by Spirit Of The Cat for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="Evasion",type="INC",value=60},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=100},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="Speed",type="INC",value=30},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=30},[5]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=30},[6]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15}},nil} +c["Possessed by Spirit Of The Cat for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="Evasion",type="INC",value=60},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=100},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="Speed",type="INC",value=30},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=30},[5]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=30},[6]={[1]={type="Condition",var="PossessedBySpiritOfTheCat"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15}},nil} +c["Possessed by Spirit Of The Owl for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheOwl"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=60},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheOwl"},flags=0,keywordFlags=0,name="Damage",type="INC",value=80},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheOwl"},flags=0,keywordFlags=0,name="DamageGainAsCold",type="BASE",value=20}},nil} +c["Possessed by Spirit Of The Owl for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheOwl"},flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=60},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheOwl"},flags=0,keywordFlags=0,name="Damage",type="INC",value=80},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheOwl"},flags=0,keywordFlags=0,name="DamageGainAsCold",type="BASE",value=20}},nil} +c["Possessed by Spirit Of The Ox for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheOx"},flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=60},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheOx"},flags=0,keywordFlags=0,name="Armour",type="INC",value=60},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheOx"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=-20}},nil} +c["Possessed by Spirit Of The Ox for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheOx"},flags=0,keywordFlags=0,name="AilmentThreshold",type="INC",value=60},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheOx"},flags=0,keywordFlags=0,name="Armour",type="INC",value=60},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheOx"},flags=0,keywordFlags=0,name="DamageTaken",type="INC",value=-20}},nil} +c["Possessed by Spirit Of The Primate for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfThePrimate"},flags=0,keywordFlags=0,name="CanChill",type="FLAG",value=true},[2]={[1]={type="Condition",var="PossessedBySpiritOfThePrimate"},flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=60},[3]={[1]={type="Condition",var="PossessedBySpiritOfThePrimate"},flags=0,keywordFlags=0,name="Damage",type="INC",value=80}},nil} +c["Possessed by Spirit Of The Primate for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfThePrimate"},flags=0,keywordFlags=0,name="CanChill",type="FLAG",value=true},[2]={[1]={type="Condition",var="PossessedBySpiritOfThePrimate"},flags=0,keywordFlags=0,name="EnemyFreezeBuildup",type="INC",value=60},[3]={[1]={type="Condition",var="PossessedBySpiritOfThePrimate"},flags=0,keywordFlags=0,name="Damage",type="INC",value=80}},nil} +c["Possessed by Spirit Of The Serpent for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheSerpent"},flags=0,keywordFlags=0,name="CanPoison",type="FLAG",value=true},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheSerpent"},flags=0,keywordFlags=0,name="PoisonChance",type="BASE",value=100},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheSerpent"},flags=0,keywordFlags=0,name="Damage",type="INC",value=80}},nil} +c["Possessed by Spirit Of The Serpent for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheSerpent"},flags=0,keywordFlags=0,name="CanPoison",type="FLAG",value=true},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheSerpent"},flags=0,keywordFlags=0,name="PoisonChance",type="BASE",value=100},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheSerpent"},flags=0,keywordFlags=0,name="Damage",type="INC",value=80}},nil} +c["Possessed by Spirit Of The Stag for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="ElementalResist",type="BASE",value=30},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="Speed",type="INC",value=30},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=30},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=30},[5]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15},[6]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="DamageGainAsLightning",type="BASE",value=20}},nil} +c["Possessed by Spirit Of The Stag for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="ElementalResist",type="BASE",value=30},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="Speed",type="INC",value=30},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=30},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=30},[5]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15},[6]={[1]={type="Condition",var="PossessedBySpiritOfTheStag"},flags=0,keywordFlags=0,name="DamageGainAsLightning",type="BASE",value=20}},nil} +c["Possessed by Spirit Of The Wolf for 15 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="Speed",type="INC",value=30},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=30},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=30},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15},[5]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="Condition:CanArmourBreak",type="FLAG",value=true}},nil} +c["Possessed by Spirit Of The Wolf for 20 seconds on use"]={{[1]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="Speed",type="INC",value=30},[2]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=30},[3]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="TotemPlacementSpeed",type="INC",value=30},[4]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=15},[5]={[1]={type="Condition",var="PossessedBySpiritOfTheWolf"},flags=0,keywordFlags=0,name="Condition:CanArmourBreak",type="FLAG",value=true}},nil} c["Possessed by a random Spirit for 20 seconds on use"]={nil,"Possessed by a random Spirit for 20 seconds on use "} c["Precision has 100% increased Mana Reservation Efficiency"]={nil,"Precision has 100% increased Mana Reservation Efficiency "} c["Presence Radius is doubled"]={{[1]={[1]={globalLimit=100,globalLimitKey="PresenceRadiusDoubledLimit",type="Multiplier",var="PresenceRadiusDoubled"},flags=0,keywordFlags=0,name="PresenceRadius",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:PresenceRadiusDoubled",type="OVERRIDE",value=1}},nil} @@ -10003,7 +9995,6 @@ c["Your speed is unaffected by Slows"]={{[1]={flags=0,keywordFlags=0,name="Unaff c["Your spells have 100% chance to Shock against Frozen Enemies"]={nil,"Your spells have 100% chance to Shock against Frozen Enemies "} c["Zealot's Oath"]={{[1]={flags=0,keywordFlags=0,name="Keystone",type="LIST",value="Zealot's Oath"}},nil} c["Zealot's Oath during Effect"]={{[1]={[1]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="ZealotsOath",type="FLAG",value=true}},nil} -end)();(function() c["additional Elemental Infusion of the same type"]={nil,"additional Elemental Infusion of the same type "} c["additional Rune-only sockets:"]={nil,"additional Rune-only sockets: "} c["additional Rune-only sockets: 1 Helmet socket"]={nil,"additional Rune-only sockets: 1 Helmet socket "} @@ -10012,6 +10003,7 @@ c["additional Rune-only sockets: 1 Helmet socket 2 Body Armour sockets 1 Gloves c["additional Rune-only sockets: 1 Helmet socket 2 Body Armour sockets 1 Gloves socket 1 Boots socket"]={nil,"additional Rune-only sockets: 1 Helmet socket 2 Body Armour sockets 1 Gloves socket 1 Boots socket "} c["as being boosted by Chilled Ground"]={nil,"as being boosted by Chilled Ground "} c["as being boosted by Ignited Ground"]={nil,"as being boosted by Ignited Ground "} +end)();(function() c["as being boosted by Ignited, Shocked, and Chilled Ground"]={nil,"as being boosted by Ignited, Shocked, and Chilled Ground "} c["as being boosted by Shocked Ground"]={nil,"as being boosted by Shocked Ground "} c["being Shapeshifted for at least 8 seconds"]={nil,"being Shapeshifted for at least 8 seconds "} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index c862007847..03f23b1ec7 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -995,6 +995,33 @@ Huge sets the radius to 11. { var = "conditionUsingCharm", type = "check", label = "Do you have a Charm active?", ifCond = "UsingCharm", tooltip = "This is automatically enabled if you have a charm active,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) modList:NewMod("Condition:UsingCharm", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, + { var = "conditionPossessedBySpiritOfTheBear", type = "check", label = "Possessed by Spirit Of The Bear?", ifCond = "PossessedBySpiritOfTheBear", defaultState = true, tooltip = "20% increased maximum ^xE05030Life\n^760% increased Stun Threshold\n60% increased Stun Buildup\n20% reduced Damage taken", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheBear", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheBoar", type = "check", label = "Possessed by Spirit Of The Boar?", ifCond = "PossessedBySpiritOfTheBoar", defaultState = true, tooltip = "Gain 20% of Damage as Extra ^xB97123Fire^7 Damage\nAlways inflict ^xE05030Bleeding^7 on Hit\n20% reduced Damage taken", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheBoar", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheCat", type = "check", label = "Possessed by Spirit Of The Cat?", ifCond = "PossessedBySpiritOfTheCat", defaultState = true, tooltip = "60% increased ^x33FF77Evasion Rating\n^7100% increased Critical Hit Chance\n30% increased Skill Speed\n15% increased Movement Speed", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheCat", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheOwl", type = "check", label = "Possessed by Spirit Of The Owl?", ifCond = "PossessedBySpiritOfTheOwl", defaultState = true, tooltip = "60% increased ^x88FFFFEnergy Shield\n^780% increased Damage\nGain 20% of Damage as Extra ^x3F6DB3Cold^7 Damage", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheOwl", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheOx", type = "check", label = "Possessed by Spirit Of The Ox?", ifCond = "PossessedBySpiritOfTheOx", defaultState = true, tooltip = "50% reduced Slowing Potency of Debuffs on you\n60% increased Elemental Ailment Threshold and Armour\n20% reduced Damage taken", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheOx", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfThePrimate", type = "check", label = "Possessed by Spirit Of The Primate?", ifCond = "PossessedBySpiritOfThePrimate", defaultState = true, tooltip = "All Damage from Hits contributes to ^x3F6DB3Chill^7 Magnitude\n60% increased ^x3F6DB3Freeze^7 Buildup\n80% increased Damage", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfThePrimate", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheSerpent", type = "check", label = "Possessed by Spirit Of The Serpent?", ifCond = "PossessedBySpiritOfTheSerpent", defaultState = true, tooltip = "All Damage from Hits contributes to ^xD02090Poison^7 Magnitude\nAlways ^xD02090Poison^7 on Hit\n80% increased Damage", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheSerpent", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheStag", type = "check", label = "Possessed by Spirit Of The Stag?", ifCond = "PossessedBySpiritOfTheStag", defaultState = true, tooltip = "+30% to all Elemental Resistances\n30% increased Skill Speed\n15% increased Movement Speed\nGain 20% of Damage as Extra ^xADAA47Lightning^7 Damage", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheStag", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, + { var = "conditionPossessedBySpiritOfTheWolf", type = "check", label = "Possessed by Spirit Of The Wolf?", ifCond = "PossessedBySpiritOfTheWolf", defaultState = true, tooltip = "50% chance to Maim on Attack Hit\n30% increased Skill Speed\n15% increased Movement Speed\nBreak Armour equal to 10% of Hit Damage dealt", apply = function(val, modList, enemyModList) + modList:NewMod("Condition:PossessedBySpiritOfTheWolf", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) + end }, { var = "conditionHaveTotem", type = "check", label = "Do you have a Totem summoned?", ifCond = "HaveTotem", tooltip = "You will automatically be considered to have a Totem if your main skill is a Totem,\nbut you can use this option to force it if necessary.", apply = function(val, modList, enemyModList) modList:NewMod("Condition:HaveTotem", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 0993923a8b..5e9d66cb1f 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2165,6 +2165,10 @@ local mod = modLib.createMod local function flag(name, ...) return mod(name, "FLAG", true, ...) end +-- Rite of Passage spirit possession, toggled from the Configuration tab +local function possessedBy(spirit) + return { type = "Condition", var = "PossessedBySpiritOfThe"..spirit } +end local gems = {} for id in pairs(data.gems) do @@ -5779,6 +5783,62 @@ local specialModList = { ["gain 0%% to 40%% increased movement speed at random when hit, until hit again"] = { flag("Condition:HaveGamblesprint"), }, + ["possessed by spirit of the bear for (%d+) seconds on use"] = { + mod("Life", "INC", 20, possessedBy("Bear")), + mod("StunThreshold", "INC", 60, possessedBy("Bear")), + mod("EnemyHeavyStunBuildup", "INC", 60, possessedBy("Bear")), + mod("DamageTaken", "INC", -20, possessedBy("Bear")), + }, + ["possessed by spirit of the boar for (%d+) seconds on use"] = { + mod("DamageGainAsFire", "BASE", 20, possessedBy("Boar")), + mod("BleedChance", "BASE", 100, possessedBy("Boar")), + mod("DamageTaken", "INC", -20, possessedBy("Boar")), + }, + ["possessed by spirit of the cat for (%d+) seconds on use"] = { + mod("Evasion", "INC", 60, possessedBy("Cat")), + mod("CritChance", "INC", 100, possessedBy("Cat")), + mod("Speed", "INC", 30, possessedBy("Cat")), + mod("WarcrySpeed", "INC", 30, possessedBy("Cat")), + mod("TotemPlacementSpeed", "INC", 30, possessedBy("Cat")), + mod("MovementSpeed", "INC", 15, possessedBy("Cat")), + }, + ["possessed by spirit of the owl for (%d+) seconds on use"] = { + mod("EnergyShield", "INC", 60, possessedBy("Owl")), + mod("Damage", "INC", 80, possessedBy("Owl")), + mod("DamageGainAsCold", "BASE", 20, possessedBy("Owl")), + }, + ["possessed by spirit of the ox for (%d+) seconds on use"] = { + -- slowing potency is missing + mod("AilmentThreshold", "INC", 60, possessedBy("Ox")), + mod("Armour", "INC", 60, possessedBy("Ox")), + mod("DamageTaken", "INC", -20, possessedBy("Ox")), + }, + ["possessed by spirit of the primate for (%d+) seconds on use"] = { + flag("CanChill", possessedBy("Primate")), + mod("EnemyFreezeBuildup", "INC", 60, possessedBy("Primate")), + mod("Damage", "INC", 80, possessedBy("Primate")), + }, + ["possessed by spirit of the serpent for (%d+) seconds on use"] = { + flag("CanPoison", possessedBy("Serpent")), + mod("PoisonChance", "BASE", 100, possessedBy("Serpent")), + mod("Damage", "INC", 80, possessedBy("Serpent")), + }, + ["possessed by spirit of the stag for (%d+) seconds on use"] = { + mod("ElementalResist", "BASE", 30, possessedBy("Stag")), + mod("Speed", "INC", 30, possessedBy("Stag")), + mod("WarcrySpeed", "INC", 30, possessedBy("Stag")), + mod("TotemPlacementSpeed", "INC", 30, possessedBy("Stag")), + mod("MovementSpeed", "INC", 15, possessedBy("Stag")), + mod("DamageGainAsLightning", "BASE", 20, possessedBy("Stag")), + }, + ["possessed by spirit of the wolf for (%d+) seconds on use"] = { + -- Maim is missing; cam be set manually in config + mod("Speed", "INC", 30, possessedBy("Wolf")), + mod("WarcrySpeed", "INC", 30, possessedBy("Wolf")), + mod("TotemPlacementSpeed", "INC", 30, possessedBy("Wolf")), + mod("MovementSpeed", "INC", 15, possessedBy("Wolf")), + flag("Condition:CanArmourBreak", possessedBy("Wolf")), + }, ["trigger socketed curse spell when you cast a curse spell, with a ([%d%.]+) second cooldown"] = { mod("ExtraSupport", "LIST", { skillId = "SupportUniqueCastCurseOnCurse", level = 1 }, { type = "SocketedIn", slotName = "{SlotName}" }), },