diff --git a/data/mods/Magiclysm/Spells/animist.json b/data/mods/Magiclysm/Spells/animist.json index 49eb21b0721fb..6c39055f698b3 100644 --- a/data/mods/Magiclysm/Spells/animist.json +++ b/data/mods/Magiclysm/Spells/animist.json @@ -5,9 +5,9 @@ "name": "Smite", "description": "Evil has become pervasive throughout the world. Let your power be the light that shines in the darkness!", "valid_targets": [ "hostile" ], - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(10, 0.5)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(200, 0.5)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(15, 0.08)" ] }, + "min_damage": 10, + "max_damage": 200, + "damage_increment": 15, "min_range": 1, "max_range": 1, "effect": "attack", @@ -22,7 +22,7 @@ "difficulty": 8, "max_level": 15, "damage_type": "light", - "flags": [ "VERBAL", "LOUD", "NO_HANDS" ], + "flags": [ "EVOCATION_SPELL", "VERBAL", "LOUD", "NO_HANDS" ], "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ], "energy_source": "MANA" }, @@ -32,9 +32,9 @@ "name": "Life Conversion", "description": "You channel lifeforce itself into your spiritual energy. You consume a rune to regain mana.", "valid_targets": [ "self" ], - "min_damage": { "math": [ "channeling_proficiency_bonus_calculate(75, 1)" ] }, - "damage_increment": { "math": [ "channeling_proficiency_bonus_calculate(15, 0.03)" ] }, - "max_damage": { "math": [ "channeling_proficiency_bonus_calculate(600, 1)" ] }, + "min_damage": 75, + "damage_increment": 15, + "max_damage": 600, "max_level": 35, "effect": "recover_energy", "effect_str": "MANA", @@ -42,8 +42,8 @@ "spell_class": "ANIMIST", "energy_source": "MANA", "components": "spell_components_rune_animist", - "base_casting_time": { "math": [ "channeling_proficiency_negate_calculate(500, 4)" ] }, - "flags": [ "SOMATIC", "VERBAL", "SILENT", "NO_LEGS", "CONSUMES_RUNES" ], + "base_casting_time": 500, + "flags": [ "CHANNELING_SPELL", "SOMATIC", "VERBAL", "SILENT", "NO_LEGS", "CONSUMES_RUNES" ], "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ], "difficulty": 3 }, @@ -53,19 +53,19 @@ "name": "Mind over Pain", "description": "With an intense ritual that resembles crossfit, you manage to put some of your pain at bay.", "valid_targets": [ "self" ], - "min_damage": { "math": [ "channeling_proficiency_bonus_calculate(10, 1)" ] }, - "max_damage": { "math": [ "channeling_proficiency_bonus_calculate(100, 1)" ] }, - "damage_increment": { "math": [ "channeling_proficiency_bonus_calculate(2.0, 0.022)" ] }, + "min_damage": 10, + "max_damage": 100, + "damage_increment": 2, "max_level": 45, "spell_class": "ANIMIST", "effect": "recover_energy", "effect_str": "PAIN", "shape": "blast", "energy_source": "STAMINA", - "base_casting_time": { "math": [ "channeling_proficiency_negate_calculate(50000, 100)" ] }, + "base_casting_time": 50000, "base_energy_cost": 5000, "energy_increment": 500.0, - "flags": [ "SOMATIC", "VERBAL", "PAIN_NORESIST" ], + "flags": [ "CHANNELING_SPELL", "SOMATIC", "VERBAL", "PAIN_NORESIST" ], "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ], "final_energy_cost": 10000 }, @@ -86,11 +86,11 @@ "shape": "blast", "energy_source": "MANA", "base_energy_cost": 400, - "base_casting_time": { "math": [ "summoning_proficiency_negate_calculate(3000, 20)" ] }, - "flags": [ "SOMATIC", "VERBAL", "CONCENTRATE", "CONSUMES_RUNES" ], - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(36000, 30)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1080000, 30)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.034)" ] }, + "base_casting_time": 3000, + "flags": [ "CONJURATION_SPELL", "SOMATIC", "VERBAL", "CONCENTRATE", "CONSUMES_RUNES" ], + "min_duration": 36000, + "max_duration": 1080000, + "duration_increment": 36000, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { @@ -123,10 +123,10 @@ "max_range": 3, "min_aoe": 2, "max_aoe": 2, - "flags": [ "SILENT", "NO_EXPLOSION_SFX", "NO_CORPSE_QUIET" ], - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(36000, 30)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1080000, 30)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.034)" ] } + "flags": [ "CONJURATION_SPELL", "SILENT", "NO_EXPLOSION_SFX", "NO_CORPSE_QUIET" ], + "min_duration": 36000, + "max_duration": 1080000, + "duration_increment": 36000 }, { "id": "summon_zombie", @@ -138,9 +138,9 @@ "effect": "summon", "effect_str": "mon_zombie", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(216000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(216000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.16)" ] } + "min_duration": 216000, + "max_duration": 216000, + "duration_increment": 36000 }, { "id": "summon_tough_zombie", @@ -152,9 +152,9 @@ "effect": "summon", "effect_str": "mon_zombie_tough", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(468000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(468000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.08)" ] } + "min_duration": 468000, + "max_duration": 468000, + "duration_increment": 36000 }, { "id": "summon_zombie_brute", @@ -166,9 +166,9 @@ "effect": "summon", "effect_str": "mon_zombie_brute", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(720000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(720000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.05)" ] } + "min_duration": 720000, + "max_duration": 720000, + "duration_increment": 36000 }, { "id": "summon_skeleton", @@ -180,9 +180,9 @@ "effect": "summon", "effect_str": "mon_skeleton", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(972000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(972000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.04)" ] } + "min_duration": 972000, + "max_duration": 972000, + "duration_increment": 36000 }, { "id": "summon_skeleton_brute", @@ -194,9 +194,9 @@ "effect": "summon", "effect_str": "mon_skeleton_brute", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.03)" ] } + "min_duration": 1260000, + "max_duration": 1260000, + "duration_increment": 36000 }, { "id": "summon_skeleton_hulk", @@ -208,9 +208,9 @@ "effect": "summon", "effect_str": "mon_skeleton_hulk", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.03)" ] } + "min_duration": 1260000, + "max_duration": 1260000, + "duration_increment": 36000 }, { "id": "summon_undead_swarm", @@ -228,12 +228,12 @@ "components": "spell_components_rune_animist_3", "shape": "blast", "energy_source": "MANA", - "base_energy_cost": { "math": [ "summoning_proficiency_negate_calculate(600, 3)" ] }, - "base_casting_time": { "math": [ "summoning_proficiency_negate_calculate(3000, 20)" ] }, - "flags": [ "SOMATIC", "VERBAL", "CONCENTRATE", "CONSUMES_RUNES" ], - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(36000, 40)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1080000, 40)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.034)" ] }, + "base_energy_cost": 600, + "base_casting_time": 3000, + "flags": [ "CONJURATION_SPELL", "SOMATIC", "VERBAL", "CONCENTRATE", "CONSUMES_RUNES" ], + "min_duration": 36000, + "max_duration": 1080000, + "duration_increment": 36000, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { @@ -268,10 +268,10 @@ "max_range": 3, "min_aoe": 2, "max_aoe": 2, - "flags": [ "SILENT", "NO_EXPLOSION_SFX", "NO_CORPSE_QUIET" ], - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(36000, 30)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1080000, 30)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.034)" ] } + "flags": [ "CONJURATION_SPELL", "SILENT", "NO_EXPLOSION_SFX", "NO_CORPSE_QUIET" ], + "min_duration": 36000, + "max_duration": 1080000, + "duration_increment": 36000 }, { "id": "summon_zombie_dog", @@ -283,9 +283,9 @@ "effect": "summon", "effect_str": "mon_zombie_dog", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(144000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(144000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.25)" ] } + "min_duration": 144000, + "max_duration": 144000, + "duration_increment": 36000 }, { "id": "summon_dog_skeleton", @@ -297,9 +297,9 @@ "effect": "summon", "effect_str": "mon_dog_skeleton", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(324000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(324000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.11)" ] } + "min_duration": 324000, + "max_duration": 324000, + "duration_increment": 36000 }, { "id": "summon_zougar", @@ -311,9 +311,9 @@ "effect": "summon", "effect_str": "mon_zougar", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(504000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(504000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.07)" ] } + "min_duration": 504000, + "max_duration": 504000, + "duration_increment": 36000 }, { "id": "summon_wolf_skeleton", @@ -325,9 +325,9 @@ "effect": "summon", "effect_str": "mon_wolf_skeleton", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(684000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(684000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.052)" ] } + "min_duration": 684000, + "max_duration": 684000, + "duration_increment": 36000 }, { "id": "summon_dog_zombie_brute", @@ -339,9 +339,9 @@ "effect": "summon", "effect_str": "mon_dog_zombie_brute", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(864000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(864000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.04)" ] } + "min_duration": 864000, + "max_duration": 864000, + "duration_increment": 36000 }, { "id": "summon_dog_skeleton_brute", @@ -353,9 +353,9 @@ "effect": "summon", "effect_str": "mon_dog_skeleton_brute", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(1044000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1044000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.04)" ] } + "min_duration": 1044000, + "max_duration": 1044000, + "duration_increment": 36000 }, { "id": "summon_dog_zombie_hulk", @@ -367,9 +367,9 @@ "effect": "summon", "effect_str": "mon_dog_zombie_hulk", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.03)" ] } + "min_duration": 1260000, + "max_duration": 1260000, + "duration_increment": 36000 }, { "id": "summon_zougar_hunter", @@ -381,9 +381,9 @@ "effect": "summon", "effect_str": "mon_zougar_hunter", "max_level": 35, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1260000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(36000, 0.03)" ] } + "min_duration": 1260000, + "max_duration": 1260000, + "duration_increment": 36000 }, { "id": "necrotic_gaze", @@ -395,11 +395,11 @@ "shape": "line", "spell_class": "ANIMIST", "energy_source": "MANA", - "flags": [ "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_PROJECTILE", "NO_HANDS", "CONSUMES_RUNES" ], + "flags": [ "EVOCATION_SPELL", "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_PROJECTILE", "NO_HANDS", "CONSUMES_RUNES" ], "components": "spell_components_rune_animist", - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(10, 0.5)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(160, 0.5)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(6, 0.04)" ] }, + "min_damage": 10, + "max_damage": 160, + "damage_increment": 6, "min_range": 3, "max_range": 5, "range_increment": 0.1, @@ -423,7 +423,7 @@ "effect": "spawn_item", "effect_str": "rune_animist", "shape": "blast", - "base_casting_time": { "math": [ "channeling_proficiency_negate_calculate(5000, 10)" ] }, + "base_casting_time": 5000, "base_energy_cost": 5, "min_duration": 1, "max_duration": 2, @@ -434,7 +434,7 @@ "energy_source": "HP", "//": "I'm not sure if this should train anything, since it's an innate ability.", "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ], - "flags": [ "PERMANENT", "NO_LEGS", "CONCENTRATE" ] + "flags": [ "CHANNELING_SPELL", "PERMANENT", "NO_LEGS", "CONCENTRATE" ] }, { "id": "dominate", @@ -442,7 +442,7 @@ "name": "Domination", "description": "Force the undead creature you pick to obey your command, making it your ally for a short time.", "valid_targets": [ "hostile" ], - "flags": [ "CONCENTRATE", "SOMATIC", "SILENT", "CONSUMES_RUNES" ], + "flags": [ "ENERVATION_SPELL", "CONCENTRATE", "SOMATIC", "SILENT", "CONSUMES_RUNES" ], "effect": "charm_monster", "targeted_monster_species": [ "ZOMBIE" ], "components": "spell_components_rune_animist_3", @@ -454,7 +454,7 @@ "min_range": 4, "max_range": 26, "range_increment": 1.1, - "base_energy_cost": { "math": [ "channeling_proficiency_negate_calculate(400, 1)" ] }, + "base_energy_cost": 400, "spell_class": "ANIMIST", "difficulty": 6, "max_level": 20, @@ -464,10 +464,10 @@ "min_duration": 36000, "max_duration": 1080000, "duration_increment": 36000, - "base_casting_time": { "math": [ "channeling_proficiency_negate_calculate(300, 1)" ] }, - "final_casting_time": { "math": [ "channeling_proficiency_negate_calculate(30, 1)" ] }, - "casting_time_increment": { "math": [ "channeling_proficiency_negate_calculate(-14, 0.051)" ] }, - "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ], + "base_casting_time": 300, + "final_casting_time": 30, + "casting_time_increment": -14, + "extra_effects": [ { "id": "eoc_enervation_setup", "hit_self": true } ], "energy_source": "MANA" }, { @@ -480,7 +480,7 @@ "effect": "attack", "shape": "blast", "spell_class": "ANIMIST", - "flags": [ "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_PROJECTILE", "NO_HANDS", "PERCENTAGE_DAMAGE" ], + "flags": [ "EVOCATION_SPELL", "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_PROJECTILE", "NO_HANDS", "PERCENTAGE_DAMAGE" ], "min_damage": 100, "max_damage": 100, "min_range": 10, @@ -502,15 +502,15 @@ "name": "Life Detonation Explosion", "description": "Detonation for life detonation spell.", "valid_targets": [ "hostile", "ground" ], - "flags": [ "CONCENTRATE", "SOMATIC", "SILENT" ], + "flags": [ "EVOCATION_SPELL", "CONCENTRATE", "SOMATIC", "SILENT" ], "effect": "attack", "shape": "blast", "message": "", "damage_type": "poison", "//": "would be cool to make it deal damage the same as hp of the monster, but not possible sadly", - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(20, 0.5)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(180, 0.5)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(6.4, 0.04)" ] }, + "min_damage": 20, + "max_damage": 180, + "damage_increment": 6.4, "spell_class": "ANIMIST", "difficulty": 5, "max_level": 25, @@ -524,7 +524,7 @@ "name": "Convert", "description": "Kill an allied creature, converting its life energy into a compact rune that you can use afterwards.", "valid_targets": [ "ally" ], - "flags": [ "CONCENTRATE", "SOMATIC", "SILENT", "PERCENTAGE_DAMAGE" ], + "flags": [ "CHANNELING_SPELL", "CONCENTRATE", "SOMATIC", "SILENT", "PERCENTAGE_DAMAGE" ], "effect": "attack", "shape": "blast", "message": "", @@ -536,9 +536,9 @@ "spell_class": "ANIMIST", "difficulty": 4, "max_level": 10, - "base_casting_time": { "math": [ "channeling_proficiency_negate_calculate(30000, 10)" ] }, - "final_casting_time": { "math": [ "channeling_proficiency_negate_calculate(1000, 10)" ] }, - "casting_time_increment": { "math": [ "channeling_proficiency_negate_calculate(-200, 0.007)" ] }, + "base_casting_time": 30000, + "final_casting_time": 1000, + "casting_time_increment": -200, "energy_source": "MANA", "extra_effects": [ { "id": "create_rune_animist", "hit_self": true }, { "id": "eoc_channeling_setup", "hit_self": true } ] }, @@ -548,7 +548,7 @@ "name": "Soulrend", "description": "Violently tears the spirit from the body and binds the resulting shade to your will.", "valid_targets": [ "hostile", "ally" ], - "flags": [ "NO_LEGS", "LOUD", "SOMATIC", "POLYMORPH_GROUP", "FRIENDLY_POLY", "NO_HANDS" ], + "flags": [ "CONJURATION_SPELL", "NO_LEGS", "LOUD", "SOMATIC", "POLYMORPH_GROUP", "FRIENDLY_POLY", "NO_HANDS" ], "effect": "targeted_polymorph", "effect_str": "GROUP_POLYMORPH_SHADOW", "shape": "blast", @@ -559,10 +559,10 @@ "max_damage": 140, "damage_increment": 2.5, "max_level": 40, - "base_casting_time": { "math": [ "summoning_proficiency_negate_calculate(200, 1)" ] }, - "casting_time_increment": { "math": [ "summoning_proficiency_negate_calculate(-2.0, 0.025)" ] }, - "final_casting_time": { "math": [ "summoning_proficiency_negate_calculate(120, 1)" ] }, - "base_energy_cost": { "math": [ "summoning_proficiency_negate_calculate(200, 1)" ] }, + "base_casting_time": 200, + "casting_time_increment": -2.0, + "final_casting_time": 120, + "base_energy_cost": 200, "min_range": 3, "max_range": 6, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ], @@ -574,11 +574,11 @@ "name": "Disruption Bolt", "description": "Release a resonant bolt of spiritual energy at a nearby target. It will disrupt the natural link between matter and animus, causing heavy, non-lethal damage.", "valid_targets": [ "hostile" ], - "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "PERCENTAGE_DAMAGE", "SILENT", "NO_PROJECTILE" ], + "flags": [ "EVOCATION_SPELL", "VERBAL", "SOMATIC", "NO_LEGS", "PERCENTAGE_DAMAGE", "SILENT", "NO_PROJECTILE" ], "min_damage": 35, "damage_type": "necrotic", - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(1, 0.2)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(50, 0.2)" ] }, + "damage_increment": 1, + "max_damage": 50, "min_range": 2, "range_increment": 0.5, "max_range": 66, @@ -611,14 +611,14 @@ "effect_str": "mon_magi_shadow", "shape": "blast", "energy_source": "MANA", - "base_energy_cost": { "math": [ "summoning_proficiency_negate_calculate(200, 1)" ] }, - "base_casting_time": { "math": [ "summoning_proficiency_negate_calculate(500, 2)" ] }, + "base_energy_cost": 200, + "base_casting_time": 500, "min_aoe": 3, "max_aoe": 3, - "flags": [ "SOMATIC", "VERBAL" ], - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(3600, 8)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(12000, 8)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(1000, 0.12)" ] }, + "flags": [ "CONJURATION_SPELL", "SOMATIC", "VERBAL" ], + "min_duration": 3600, + "max_duration": 12000, + "duration_increment": 280, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { @@ -628,22 +628,22 @@ "description": "Momentarily plunge into the underworld and swap positions with any spirit you command.", "valid_targets": [ "ally" ], "targeted_monster_ids": [ "mon_wisp", "mon_shadow", "mon_magi_shadow", "mon_darkman", "mon_shadow_snake" ], - "flags": [ "NO_LEGS", "LOUD", "SOMATIC", "SWAP_POS", "NO_PROJECTILE" ], + "flags": [ "CONVEYANCE_SPELL", "NO_LEGS", "LOUD", "SOMATIC", "SWAP_POS", "NO_PROJECTILE" ], "effect": "attack", "shape": "blast", "spell_class": "ANIMIST", "energy_source": "MANA", "difficulty": 5, "max_level": 20, - "base_casting_time": { "math": [ "enhancement_proficiency_negate_calculate(100, 0.33)" ] }, - "casting_time_increment": { "math": [ "enhancement_proficiency_negate_calculate(-2.5, 0.05)" ] }, - "final_casting_time": { "math": [ "enhancement_proficiency_negate_calculate(50, 0.33)" ] }, + "base_casting_time": 100, + "casting_time_increment": -2.5, + "final_casting_time": 50, "base_energy_cost": 300, "energy_increment": -5.0, "final_energy_cost": 200, "min_range": 5, "max_range": 15, - "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ], + "extra_effects": [ { "id": "eoc_conveyance_setup", "hit_self": true } ], "range_increment": 1.0 }, { @@ -652,12 +652,12 @@ "name": "Lesser Banishment", "description": "Banish a monster to a lesser-known nether dimension. If a monster is more powerful than you can handle, the spell drains your life force to make up the difference.", "valid_targets": [ "hostile" ], - "flags": [ "SOMATIC", "VERBAL", "NO_HANDS" ], + "flags": [ "CONVEYANCE_SPELL", "SOMATIC", "VERBAL", "NO_HANDS" ], "effect": "banishment", "shape": "blast", - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(40, 0.7)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(10, 0.04)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(290, 0.7)" ] }, + "min_damage": 40, + "damage_increment": 10, + "max_damage": 290, "min_range": 6, "max_range": 6, "base_energy_cost": 600, @@ -665,7 +665,7 @@ "difficulty": 9, "max_level": 25, "base_casting_time": 100, - "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ], + "extra_effects": [ { "id": "eoc_conveyance_setup", "hit_self": true } ], "energy_source": "MANA" }, { @@ -677,7 +677,7 @@ "effect": "summon", "effect_str": "mon_wisp", "shape": "blast", - "flags": [ "LOUD", "SOMATIC" ], + "flags": [ "CONJURATION_SPELL", "LOUD", "SOMATIC" ], "energy_source": "MANA", "spell_class": "ANIMIST", "difficulty": 2, @@ -692,9 +692,9 @@ "min_range": 3, "max_range": 7, "range_increment": 0.16, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(6000, 30)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(60000, 30)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(2160, 0.04)" ] }, + "min_duration": 6000, + "max_duration": 60000, + "duration_increment": 2160, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { @@ -705,7 +705,7 @@ "valid_targets": [ "hostile" ], "effect": "attack", "shape": "blast", - "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "NO_PROJECTILE", "NO_HANDS" ], + "flags": [ "EVOCATION_SPELL", "VERBAL", "SOMATIC", "NO_LEGS", "NO_PROJECTILE", "NO_HANDS" ], "energy_source": "MANA", "spell_class": "ANIMIST", "difficulty": 2, @@ -713,17 +713,17 @@ "base_energy_cost": 150, "damage_type": "necrotic", "max_level": 25, - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(1, 0.1)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(26, 0.1)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(1, 0.04)" ] }, + "min_damage": 1, + "max_damage": 26, + "damage_increment": 1, "min_range": 3, "max_range": 5, "range_increment": 0.1, "min_duration": 500, "max_duration": 1000, "duration_increment": 20, - "min_dot": { "math": [ "evocation_proficiency_bonus_calculate(2, 0.2)" ] }, - "max_dot": { "math": [ "evocation_proficiency_bonus_calculate(52, 0.2)" ] }, + "min_dot": 2, + "max_dot": 52, "extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ], "dot_increment": 2 }, @@ -736,14 +736,14 @@ "effect_str": "decaying_boneclub", "shape": "blast", "valid_targets": [ "self" ], - "flags": [ "SOMATIC", "CONCENTRATE", "VERBAL" ], + "flags": [ "CONJURATION_SPELL", "SOMATIC", "CONCENTRATE", "VERBAL" ], "components": "spell_components_decayingboneclub", "max_level": 15, "min_damage": 1, "max_damage": 1, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(2400, 30)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(360000, 30)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(24000, 0.07)" ] }, + "min_duration": 24000, + "max_duration": 360000, + "duration_increment": 24000, "spell_class": "ANIMIST", "base_casting_time": 400, "base_energy_cost": 6, @@ -761,18 +761,18 @@ "effect_str": "decaying_boneclub", "shape": "blast", "valid_targets": [ "self" ], - "flags": [ "SOMATIC", "VERBAL", "NO_FAIL" ], + "flags": [ "CONJURATION_SPELL", "SOMATIC", "VERBAL", "NO_FAIL" ], "components": "spell_components_decayingboneclub", "max_level": 25, "min_damage": 1, "max_damage": 1, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(360000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(2160000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(72000, 0.04)" ] }, + "min_duration": 360000, + "max_duration": 2160000, + "duration_increment": 72000, "spell_class": "ANIMIST", - "base_casting_time": { "math": [ "summoning_proficiency_negate_calculate(400, 1)" ] }, - "final_casting_time": { "math": [ "summoning_proficiency_negate_calculate(100, 1)" ] }, - "casting_time_increment": { "math": [ "summoning_proficiency_negate_calculate(-12, 0.04)" ] }, + "base_casting_time": 400, + "final_casting_time": 100, + "casting_time_increment": -12, "base_energy_cost": 6, "final_energy_cost": 3, "energy_increment": -0.2, @@ -788,14 +788,14 @@ "effect": "attack", "shape": "blast", "valid_targets": [ "hostile" ], - "flags": [ "SOMATIC", "NO_PROJECTILE", "LOUD", "NO_HANDS" ], + "flags": [ "EVOCATION_SPELL", "SOMATIC", "NO_PROJECTILE", "LOUD", "NO_HANDS" ], "max_level": 25, "min_range": 1, "range_increment": 0.1, "max_range": 3, - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(0, 0.5)" ] }, - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(90, 0.5)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(3.6, 0.04)" ] }, + "min_damage": 0, + "max_damage": 90, + "damage_increment": 3.6, "base_casting_time": 50, "base_energy_cost": 500, "final_energy_cost": 250, @@ -817,14 +817,14 @@ "name": "Devour", "description": "Kill an allied creature, consuming its life energy to regain some health.", "valid_targets": [ "ally" ], - "flags": [ "CONCENTRATE", "SOMATIC" ], + "flags": [ "EVOCATION_SPELL", "CONCENTRATE", "SOMATIC" ], "//": "added this min/max damage for player, so it will be visible how much hp would be healed. ", "effect": "attack", "shape": "blast", "message": "", - "min_damage": { "math": [ "evocation_proficiency_negate_calculate(-1, 0.1)" ] }, - "max_damage": { "math": [ "evocation_proficiency_negate_calculate(-10, 0.1)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_negate_calculate(-0.4, 0.044)" ] }, + "min_damage": -1, + "max_damage": -10, + "damage_increment": -0.4, "min_range": 10, "max_range": 10, "base_energy_cost": 250, @@ -845,7 +845,7 @@ "name": "Devour Damage", "description": "Deal deadly damage to ally. You can see it only in debug mode.", "valid_targets": [ "ally" ], - "flags": [ "SILENT", "PERCENTAGE_DAMAGE" ], + "flags": [ "EVOCATION_SPELL", "SILENT", "PERCENTAGE_DAMAGE" ], "effect": "attack", "shape": "blast", "damage_type": "pure", @@ -858,12 +858,12 @@ "name": "Devour Healing", "description": "Heal the player. You can see it only in debug mode.", "valid_targets": [ "self" ], - "flags": [ "CONCENTRATE", "SOMATIC", "SILENT", "NO_PROJECTILE" ], + "flags": [ "EVOCATION_SPELL", "CONCENTRATE", "SOMATIC", "SILENT", "NO_PROJECTILE" ], "effect": "attack", "shape": "blast", - "min_damage": { "math": [ "evocation_proficiency_negate_calculate(-1, 0.1)" ] }, - "max_damage": { "math": [ "evocation_proficiency_negate_calculate(-10, 0.1)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_negate_calculate(-0.4, 0.044)" ] }, + "min_damage": -1, + "max_damage": -10, + "damage_increment": -0.4, "max_level": 25 }, { @@ -873,7 +873,7 @@ "description": "You can sense the presence of nearby beings from the Nether.", "valid_targets": [ "self" ], "spell_class": "ANIMIST", - "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC", "NO_EXPLOSION_SFX" ], + "flags": [ "ENHANCEMENT_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC", "NO_EXPLOSION_SFX" ], "effect": "attack", "effect_str": "effect_sense_outsiders", "shape": "blast", @@ -881,10 +881,10 @@ "difficulty": 5, "max_level": 15, "base_energy_cost": 500, - "min_duration": { "math": [ "enhancement_proficiency_bonus_calculate(90000, 5400)" ] }, - "max_duration": { "math": [ "enhancement_proficiency_bonus_calculate(900000, 5400)" ] }, - "duration_increment": { "math": [ "enhancement_proficiency_bonus_calculate(60000, 0.074)" ] }, - "base_casting_time": { "math": [ "enhancement_proficiency_negate_calculate(1500, 10)" ] }, + "min_duration": 90000, + "max_duration": 900000, + "duration_increment": 60000, + "base_casting_time": 1500, "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ] }, { @@ -892,7 +892,7 @@ "type": "SPELL", "name": { "str": "Summon Watcher Spirit" }, "description": "Summon a watcher spirit, whose senses overlap with your own and through whose eyes you can see. Although they are spirits, they are fragile and dissipate easily in the face of any assault.", - "flags": [ "SOMATIC", "CONCENTRATE", "VERBAL", "NO_PROJECTILE" ], + "flags": [ "CONJURATION_SPELL", "SOMATIC", "CONCENTRATE", "VERBAL", "NO_PROJECTILE" ], "spell_class": "ANIMIST", "effect": "summon", "effect_str": "mon_watcher_spirit", @@ -905,12 +905,12 @@ "min_range": 3, "max_range": 20, "range_increment": 1.1, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(24000, 300)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(360000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(24000, 0.07)" ] }, + "min_duration": 24000, + "max_duration": 360000, + "duration_increment": 24000, "energy_source": "MANA", "base_casting_time": 500, - "base_energy_cost": { "math": [ "summoning_proficiency_negate_calculate(150, 1)" ] }, + "base_energy_cost": 150, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { @@ -920,16 +920,16 @@ "description": "Sever the connections between your spirit and the spirits of everyone around you, rendering them incapable of perceiving you; the light might hit their eyes and the sounds their ears, but they cannot recognize what those impressions mean. Anything outside the spell's area of effect will have no trouble spotting you.\n\nThis spell does not affect any target without a spirit, such as a robot.", "valid_targets": [ "hostile", "ally" ], "spell_class": "ANIMIST", - "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC", "NO_HANDS", "IGNORE_WALLS" ], + "flags": [ "ENERVATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC", "NO_HANDS", "IGNORE_WALLS" ], "difficulty": 9, "max_level": 20, "effect": "attack", "effect_str": "telepathic_ignorance", - "extra_effects": [ { "id": "animist_mass_hiding_self", "hit_self": true }, { "id": "eoc_evocation_setup", "hit_self": true } ], + "extra_effects": [ { "id": "animist_mass_hiding_self", "hit_self": true }, { "id": "eoc_enervation_setup", "hit_self": true } ], "shape": "blast", - "min_duration": { "math": [ "evocation_proficiency_bonus_calculate(3000, 5)" ] }, - "max_duration": { "math": [ "evocation_proficiency_bonus_calculate(63000, 5)" ] }, - "duration_increment": { "math": [ "evocation_proficiency_bonus_calculate(3000, 5)" ] }, + "min_duration": 3000, + "max_duration": 63000, + "duration_increment": 3000, "min_aoe": 5, "max_aoe": 25, "aoe_increment": 1, @@ -946,7 +946,7 @@ "message": "", "teachable": false, "valid_targets": [ "self" ], - "flags": [ "SILENT", "NO_HANDS", "NO_LEGS" ], + "flags": [ "ENERVATION_SPELL", "SILENT", "NO_HANDS", "NO_LEGS" ], "effect": "attack", "effect_str": "telepathic_ignorance_self", "shape": "blast", @@ -958,7 +958,7 @@ "type": "SPELL", "name": { "str": "Osseous Luck" }, "description": "Attract spirits of good fortune to a bone, granting minor bonuses as long as it is carried. Though benevolent, the spirits are capricious, and exactly what benefits they will provide cannot be determined ahead of time. The bone crumbles to dust when the spell duration expires and the spirits leave.", - "flags": [ "SOMATIC", "CONCENTRATE", "VERBAL" ], + "flags": [ "CONJURATION_SPELL", "SOMATIC", "CONCENTRATE", "VERBAL" ], "spell_class": "ANIMIST", "effect": "spawn_item", "effect_str": "item_animist_luck_bone", @@ -969,12 +969,12 @@ "max_level": 20, "min_damage": 1, "max_damage": 1, - "min_duration": { "math": [ "summoning_proficiency_bonus_calculate(72000, 600)" ] }, - "max_duration": { "math": [ "summoning_proficiency_bonus_calculate(1512000, 600)" ] }, - "duration_increment": { "math": [ "summoning_proficiency_bonus_calculate(72000, 0.05)" ] }, + "min_duration": 72000, + "max_duration": 1512000, + "duration_increment": 72000, "energy_source": "MANA", "base_casting_time": 30000, - "base_energy_cost": { "math": [ "summoning_proficiency_negate_calculate(600, 3)" ] }, + "base_energy_cost": 600, "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { @@ -982,7 +982,7 @@ "type": "SPELL", "name": { "str": "Spirit-Walking" }, "description": "Transform your body to pure spirit, making you invisible and intangible. You can move incredibly quickly while the spell is in effect and can pass by enemies unseen, but you will be unable to affect the physical world or cast spells.", - "flags": [ "SOMATIC", "CONCENTRATE", "VERBAL" ], + "flags": [ "ENHANCEMENT_SPELL", "SOMATIC", "CONCENTRATE", "VERBAL" ], "spell_class": "ANIMIST", "effect": "effect_on_condition", "effect_str": "EOC_ANIMIST_SPIRIT_WALKING", @@ -991,11 +991,11 @@ "components": "spell_components_spirit_walking", "max_level": 20, "difficulty": 8, - "min_duration": { "math": [ "enhancement_proficiency_bonus_calculate(3000, 40)" ] }, - "max_duration": { "math": [ "enhancement_proficiency_bonus_calculate(9000, 40)" ] }, - "duration_increment": { "math": [ "enhancement_proficiency_bonus_calculate(300, 0.05)" ] }, + "min_duration": 3000, + "max_duration": 9000, + "duration_increment": 300, "energy_source": "MANA", - "base_casting_time": { "math": [ "enhancement_proficiency_negate_calculate(300, 2)" ] }, + "base_casting_time": 300, "base_energy_cost": 1200, "final_energy_cost": 850, "energy_increment": -17.5, @@ -1007,11 +1007,11 @@ "effect": [ { "u_add_effect": "effect_spirit_walking", - "duration": { "math": [ "( 30 + (u_spell_level('animist_spirit_walking') * 3)) " ] } + "duration": { "math": [ "( 30 + (u_spell_level('animist_spirit_walking') * 3) ) * ( enhancement_proficiency_modifier() )" ] } }, { "u_add_effect": "incorporeal", - "duration": { "math": [ "( 30 + (u_spell_level('animist_spirit_walking') * 3)) " ] } + "duration": { "math": [ "( 30 + (u_spell_level('animist_spirit_walking') * 3) ) * (enhancement_proficiency_modifier() )" ] } } ] }, @@ -1022,7 +1022,8 @@ "description": "Summon a benevolent spirit to keep watch over you and warn you of imminent attacks, allowing you to dodge some of them.", "valid_targets": [ "self" ], "spell_class": "ANIMIST", - "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC", "NO_LEGS" ], + "//": "Despite providing a buff, this is a Conjuration spell because the buff is provided by the summoned spirit.", + "flags": [ "CONJURATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC", "NO_LEGS" ], "effect": "attack", "effect_str": "effect_animist_add_evasion", "shape": "blast", @@ -1030,11 +1031,11 @@ "difficulty": 4, "max_level": 15, "base_energy_cost": 350, - "min_duration": { "math": [ "enhancement_proficiency_bonus_calculate(30000, 3000)" ] }, - "max_duration": { "math": [ "enhancement_proficiency_bonus_calculate(480000, 3000)" ] }, - "duration_increment": { "math": [ "enhancement_proficiency_bonus_calculate(30000, 0.07)" ] }, - "base_casting_time": { "math": [ "enhancement_proficiency_negate_calculate(250, 2)" ] }, - "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ] + "min_duration": 30000, + "max_duration": 480000, + "duration_increment": 30000, + "base_casting_time": 250, + "extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ] }, { "id": "animist_slow_food_rotting_spell", @@ -1043,7 +1044,7 @@ "description": "Placing a warding on food or drink, preventing the spirits of decay from nesting within it. The mage may affect as much food or drink as they can carry. The principles by which this spell functions were not discovered until the 20th century, but some animists maintain that radiation is frightening to decay spirits.", "valid_targets": [ "self" ], "spell_class": "ANIMIST", - "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC" ], + "flags": [ "ENHANCEMENT_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ], "effect": "effect_on_condition", "effect_str": "EOC_ANIMIST_SLOW_FOOD_ROTTING_SPELL", "components": "spell_components_slow_food_rotting", @@ -1051,9 +1052,9 @@ "difficulty": 5, "max_level": 15, "energy_source": "MANA", - "base_energy_cost": { "math": [ "channeling_proficiency_negate_calculate(550, 5)" ] }, - "base_casting_time": { "math": [ "channeling_proficiency_negate_calculate(90000, 100)" ] }, - "extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ] + "base_energy_cost": 550, + "base_casting_time": 90000, + "extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true } ] }, { "type": "effect_on_condition", @@ -1077,12 +1078,12 @@ "name": "Magic Fissile", "description": "I cast Magic… Fissile? At the darkness?", "valid_targets": [ "hostile" ], - "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "SILENT", "NO_PROJECTILE" ], + "flags": [ "EVOCATION_SPELL", "VERBAL", "SOMATIC", "NO_LEGS", "SILENT", "NO_PROJECTILE" ], "extra_effects": [ { "id": "animist_radiation_bolt", "hit_self": false }, { "id": "eoc_evocation_setup", "hit_self": true } ], - "min_damage": { "math": [ "evocation_proficiency_bonus_calculate(1, 0.2)" ] }, - "damage_increment": { "math": [ "evocation_proficiency_bonus_calculate(1.5, 0.083)" ] }, + "min_damage": 1, + "damage_increment": 1.5, "damage_type": "necrotic", - "max_damage": { "math": [ "evocation_proficiency_bonus_calculate(20, 0.2)" ] }, + "max_damage": 20, "min_range": 8, "range_increment": 0.8, "max_range": 20, @@ -1100,7 +1101,7 @@ "type": "SPELL", "name": "Magic Fissile Radiation", "description": "Spawns a radiation field near the target. It's a bug if you have it directly.", - "flags": [ "NO_EXPLOSION_SFX" ], + "flags": [ "EVOCATION_SPELL", "NO_EXPLOSION_SFX" ], "valid_targets": [ "self" ], "effect": "emit", "effect_str": "emit_rad_leak", diff --git a/data/mods/Magiclysm/Spells/classless.json b/data/mods/Magiclysm/Spells/classless.json index f7e3973c35f0c..943416f7ab9d7 100644 --- a/data/mods/Magiclysm/Spells/classless.json +++ b/data/mods/Magiclysm/Spells/classless.json @@ -661,6 +661,27 @@ "base_casting_time": 0, "final_casting_time": 0 }, + { + "id": "eoc_enervation_setup", + "type": "SPELL", + "name": "Set Up Proficiency: Enervation", + "description": "Sets up proficiency gain. This is a bug if you have it.", + "valid_targets": [ "self" ], + "spell_class": "NONE", + "flags": [ "NO_LEGS" ], + "difficulty": 0, + "min_damage": 1, + "max_damage": 1, + "duration_increment": 1, + "effect": "effect_on_condition", + "effect_str": "EOC_SPELLCASTING_ENERVATION_PROFICIENCY_ADD", + "shape": "blast", + "energy_source": "NONE", + "base_energy_cost": 0, + "final_energy_cost": 0, + "base_casting_time": 0, + "final_casting_time": 0 + }, { "id": "eoc_conveyance_setup", "type": "SPELL", diff --git a/data/mods/Magiclysm/eoc_spell_casting_proficiencies.json b/data/mods/Magiclysm/eoc_spell_casting_proficiencies.json index d86b3bafb3f5f..957659ee1862b 100644 --- a/data/mods/Magiclysm/eoc_spell_casting_proficiencies.json +++ b/data/mods/Magiclysm/eoc_spell_casting_proficiencies.json @@ -151,6 +151,44 @@ } ] }, + { + "type": "effect_on_condition", + "id": "EOC_SPELLCASTING_ENERVATION_PROFICIENCY_ADD", + "global": false, + "eoc_type": "ACTIVATION", + "effect": [ + { "math": [ "u_prof_lowest", "=", "4" ] }, + { + "if": { "math": [ "u_proficiency('prof_magic_enervation_beginner', 'format': 'percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_proficiency('prof_magic_enervation_apprentice', 'format': 'percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_proficiency('prof_magic_enervation_master', 'format': 'percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_proficiency('prof_magic_enervation_master', 'format': 'percent')", "+=", "rand(4) / 64" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_proficiency('prof_magic_enervation_apprentice', 'format': 'percent')", "+=", "rand(4) / 32" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_proficiency('prof_magic_enervation_beginner', 'format': 'percent')", "+=", "rand(4) / 16" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, { "type": "effect_on_condition", "id": "EOC_SPELLCASTING_CONVEYANCE_PROFICIENCY_ADD", @@ -188,5 +226,130 @@ ] } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_EVOCATION_SPELLS_PROFICIENCY_BONUSES", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "effect": [ + { + "math": [ + "u_spellcasting_adjustment('damage', 'flag_whitelist': 'EVOCATION_SPELL')", + "=", + "( (u_proficiency('prof_magic_evocation_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_evocation_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_evocation_master', 'format': 'percent') / 10) ) )" + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CHANNELING_SPELLS_PROFICIENCY_BONUSES", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "effect": [ + { + "math": [ + "u_spellcasting_adjustment('casting_time', 'flag_whitelist': 'CHANNELING_SPELL')", + "=", + "( (u_proficiency('prof_magic_channel_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_channel_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_channel_master', 'format': 'percent') / 10) ) ) * -1" + ] + }, + { + "math": [ + "u_spellcasting_adjustment('cost', 'flag_whitelist': 'CHANNELING_SPELL')", + "=", + "( (u_proficiency('prof_magic_channel_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_channel_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_channel_master', 'format': 'percent') / 10) ) ) * -1" + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CONJURATION_SPELLS_PROFICIENCY_BONUSES", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "effect": [ + { + "math": [ + "u_spellcasting_adjustment('duration', 'flag_whitelist': 'CONJURATION_SPELL')", + "=", + "( (u_proficiency('prof_magic_summon_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_summon_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_summon_master', 'format': 'percent') / 10) ) )" + ] + }, + { + "math": [ + "u_spellcasting_adjustment('cost', 'flag_whitelist': 'CONJURATION_SPELL')", + "=", + "( (u_proficiency('prof_magic_summon_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_summon_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_summon_master', 'format': 'percent') / 10) ) ) * -1" + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ENHANCEMENT_SPELLS_PROFICIENCY_BONUSES", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "effect": [ + { + "math": [ + "u_spellcasting_adjustment('duration', 'flag_whitelist': 'ENHANCEMENT_SPELL')", + "=", + "( (u_proficiency('prof_magic_enhancement_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enhancement_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enhancement_master', 'format': 'percent') / 10) ) )" + ] + }, + { + "math": [ + "u_spellcasting_adjustment('casting_time', 'flag_whitelist': 'ENHANCEMENT_SPELL')", + "=", + "( (u_proficiency('prof_magic_enhancement_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enhancement_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enhancement_master', 'format': 'percent') / 10) ) ) * -1" + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ENERVATION_SPELLS_PROFICIENCY_BONUSES", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "effect": [ + { + "math": [ + "u_spellcasting_adjustment('duration', 'flag_whitelist': 'ENERVATION_SPELL')", + "=", + "( (u_proficiency('prof_magic_enervation_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enervation_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enervation_master', 'format': 'percent') / 10) ) )" + ] + }, + { + "math": [ + "u_spellcasting_adjustment('aoe', 'flag_whitelist': 'ENERVATION_SPELL')", + "=", + "( (u_proficiency('prof_magic_enervation_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enervation_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enervation_master', 'format': 'percent') / 10) ) )" + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CONVEYANCE_SPELLS_PROFICIENCY_BONUSES", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "effect": [ + { + "math": [ + "u_spellcasting_adjustment('cost', 'flag_whitelist': 'CONVEYANCE_SPELL')", + "=", + "( (u_proficiency('prof_magic_conveyance_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_conveyance_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_conveyance_master', 'format': 'percent') / 10) ) ) * -1" + ] + }, + { + "math": [ + "u_spellcasting_adjustment('range', 'flag_whitelist': 'CONVEYANCE_SPELL')", + "=", + "( (u_proficiency('prof_magic_conveyance_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_conveyance_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_conveyance_master', 'format': 'percent') / 10) ) )" + ] + } + ] } ] diff --git a/data/mods/Magiclysm/jmath.json b/data/mods/Magiclysm/jmath.json index a6f436840e9af..a6ee1cbfbba79 100644 --- a/data/mods/Magiclysm/jmath.json +++ b/data/mods/Magiclysm/jmath.json @@ -41,6 +41,12 @@ "num_args": 2, "return": "_0 + (((((u_proficiency('prof_magic_enhancement_beginner', 'format': 'percent') * 1) / 10) + ((u_proficiency('prof_magic_enhancement_apprentice', 'format': 'percent') * 1) / 10) + ((u_proficiency('prof_magic_enhancement_master', 'format': 'percent') * 1) / 10))) * _1 )" }, + { + "type": "jmath_function", + "id": "enhancement_proficiency_modifier", + "num_args": 0, + "return": "1 + ( (u_proficiency('prof_magic_enhancement_beginner', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enhancement_apprentice', 'format': 'percent') / 10) + (u_proficiency('prof_magic_enhancement_master', 'format': 'percent') / 10) ) )" + }, { "type": "jmath_function", "id": "enhancement_proficiency_negate_calculate", diff --git a/data/mods/Magiclysm/magic_balance.md b/data/mods/Magiclysm/magic_balance.md index 5522b87f20799..cb4690f501307 100644 --- a/data/mods/Magiclysm/magic_balance.md +++ b/data/mods/Magiclysm/magic_balance.md @@ -97,10 +97,13 @@ Channeling covers spells that require the caster to focus for long periods of ti Conjuration encompasses spells that summon something or someone, usually for a set period of time. Most Golemancy is covered by this, along with the Animist's Summon Undead, Ignus Fattus, or the Druid's Nature's Bow. Conjuration specializes in spells that temporarily summon something, rather than permanently creating something, which would be a bit more suited to Channeling. Proficiency in Conjuration will lower the mana cost of spells and improve the duration times of summoned creatures/objects. ### Enhancement -Enhancement covers spells that improve the target in some way, mentally, physically, or emotionally. While there are many spells in this class, some of them are Cat's Grace, Ogre's Strength, Eagle's Sight, or Feral Form. Note that spells which exclusively heal are not included, as they are fixing something which is damaged, while Enhancement covers spells which improve on the whole. However, if a spell both heals and buffs something, then it should be included in this. Any spells which exclusively debuff or hinder something should also not be included. Proficiency in Enhancement will lower the casting time of spells and improve the duration of enhancement. +Enhancement covers spells that improve the target in some way, mentally, physically, or emotionally. While there are many spells in this class, some of them are Cat's Grace, Ogre's Strength, Eagle's Sight, or Feral Form. Note that spells which exclusively heal are not included, as they are fixing something which is damaged, while Enhancement covers spells which improve on the whole. However, if a spell both heals and buffs something, then it should be included in this. Any spells which exclusively debuff or hinder something should also not be included; see below. Proficiency in Enhancement will lower the casting time of spells and improve the duration of enhancement. + +### Enervation +Enervation spells are the opposite of Enhancement, being spells that reduce the capabilities of the target in some way, such as Slow, A Shadow in the Crowd, or . This includes spells such as Domination or Beguiling the Savage Beast that take control of the target's mind or actions. Spells that do damage as their primary effect but have some debuffing power as an additional ability are not Enervation spells. Proficiency in Enervation will improve the duration of the spell and increase its area of effect. ### Conveyance -Conveyance encompasses spells which involve translocating, teleporting, or moving the caster/target. Some spells covered are Phase Door, Magus's Mark, Shocking Dash, or Translocate Self. Proficiency in Conveyance will extend the range of the spell (if applicable), or lower the casting time if not, and lower the mana cost of the incantation. +Conveyance encompasses spells which involve translocating, teleporting, or moving the caster/target. Some spells covered are Phase Door, Magus's Mark, Shocking Dash, or Translocate Self. Proficiency in Conveyance will extend the range of the spell and lower the mana cost of the incantation. #### How The JMATH Works The JMATH behind spellcasting proficiencies is fairly simple, this is how it works: diff --git a/data/mods/Magiclysm/proficiencies.json b/data/mods/Magiclysm/proficiencies.json index 9dcb49dce09b3..454599881fd96 100644 --- a/data/mods/Magiclysm/proficiencies.json +++ b/data/mods/Magiclysm/proficiencies.json @@ -235,6 +235,42 @@ "time_to_learn": "32 h", "required_proficiencies": [ "prof_magic_enhancement_apprentice" ] }, + { + "type": "proficiency", + "id": "prof_magic_enervation_beginner", + "category": "prof_magic_casting", + "name": { "str": "Novice Enervation" }, + "//": "This covers anything that debilitates a target, such as slowing them, silencing them, reducing their regeneration, and so on.", + "description": "You're familiar with debilitating your enemies through magic.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_magic_enervation_apprentice", + "category": "prof_magic_casting", + "name": { "str": "Apprentice Enervation" }, + "description": "You're proficient in debilitating your enemies through magic.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_magic_enhancement_beginner" ] + }, + { + "type": "proficiency", + "id": "prof_magic_enervation_master", + "category": "prof_magic_casting", + "name": { "str": "Master Enervation" }, + "description": "You've mastered the art of debilitating your enemies with the power of magical incantations.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_magic_enhancement_apprentice" ] + }, { "type": "proficiency", "id": "prof_magic_conveyance_beginner", diff --git a/src/magic.cpp b/src/magic.cpp index 0bd038c5b0c2c..c6b4e6b3e4663 100644 --- a/src/magic.cpp +++ b/src/magic.cpp @@ -167,6 +167,12 @@ std::string enum_to_string( spell_flag data ) case spell_flag::NON_MAGICAL: return "NON_MAGICAL"; case spell_flag::PSIONIC: return "PSIONIC"; case spell_flag::RECHARM: return "RECHARM"; + case spell_flag::EVOCATION_SPELL: return "EVOCATION_SPELL"; + case spell_flag::CHANNELING_SPELL: return "CHANNELING_SPELL"; + case spell_flag::CONJURATION_SPELL: return "CONJURATION_SPELL"; + case spell_flag::ENHANCEMENT_SPELL: return "ENHANCEMENT_SPELL"; + case spell_flag::ENERVATION_SPELL: return "ENERVATION_SPELL"; + case spell_flag::CONVEYANCE_SPELL: return "CONVEYANCE_SPELL"; case spell_flag::LAST: break; } cata_fatal( "Invalid spell_flag" ); diff --git a/src/magic.h b/src/magic.h index ec91507c94988..515604c7e48dd 100644 --- a/src/magic.h +++ b/src/magic.h @@ -85,6 +85,12 @@ enum class spell_flag : int { NON_MAGICAL, // ignores spell resistance PSIONIC, // psychic powers instead of traditional magic RECHARM, // charm_monster spell adds to duration of existing charm_monster effect + EVOCATION_SPELL, // Evocation spell category, used for Magiclysm proficiencies + CHANNELING_SPELL, // Channeling spell category, used for Magiclysm proficiencies + CONJURATION_SPELL, // Conjuration spell category, used for Magiclysm proficiencies + ENHANCEMENT_SPELL, // Enhancement spell category, used for Magiclysm proficiencies + ENERVATION_SPELL, // Enervation spell category, used for Magiclysm proficiencies + CONVEYANCE_SPELL, // Conveyance spell category, used for Magiclysm proficiencies LAST };