From 6f1b1dbfdae5698a987444a3950bf8a2c0d2b39d Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Sun, 26 Nov 2023 00:05:40 -0600 Subject: [PATCH] [MoM] Add Electrokinesis path (#69691) * Initial commit * Add EMP immunity * Update src/explosion.cpp Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update src/explosion.cpp Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Distribute electrokinetic matrix crystals into itemgroups * Fixes * Fix Galvanic Aura and Revivification * Fix effects, add power learn ladder * Kick tests * Fix spelling * Spelling --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- data/json/flags.json | 5 + .../effectoncondition/eoc_awakening.json | 175 ++++- .../eoc_crystal_draining.json | 9 + .../effectoncondition/eoc_learn_recipes.json | 18 + .../effectoncondition/eoc_power_effects.json | 16 + .../effects/effects_monster.json | 37 + .../effects/effects_psionic.json | 128 ++++ .../enchantments/enchantments_player.json | 132 ++++ .../itemgroups/matrix_materials.json | 34 +- .../MindOverMatter/items/matrix_crystals.json | 30 + .../items/psions_summon_items.json | 77 ++ data/mods/MindOverMatter/json_flags.json | 5 + .../monsters/monster_overrides.json | 24 + .../MindOverMatter/monsters/species_new.json | 5 + .../mutations/psi_passives.json | 17 + .../mods/MindOverMatter/mutations/traits.json | 16 + .../MindOverMatter/powers/electrokinesis.json | 631 +++++++++++++++++ .../powers/electrokinesis_eocs.json | 93 +++ .../practice/electrokinesis_practice.json | 659 ++++++++++++++++++ doc/JSON_FLAGS.md | 1 + src/explosion.cpp | 7 +- 21 files changed, 2083 insertions(+), 36 deletions(-) create mode 100644 data/mods/MindOverMatter/powers/electrokinesis.json create mode 100644 data/mods/MindOverMatter/powers/electrokinesis_eocs.json create mode 100644 data/mods/MindOverMatter/recipes/practice/electrokinesis_practice.json diff --git a/data/json/flags.json b/data/json/flags.json index 59b239a1fc2dc..7bdf1a2027e1c 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -312,6 +312,11 @@ "type": "json_flag", "info": "This gear completely protects you from bash damage." }, + { + "id": "EMP_IMMUNE", + "type": "json_flag", + "info": "This gear completely protects you from EMP blasts." + }, { "id": "CUT_IMMUNE", "type": "json_flag", diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json b/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json index d3a536782c441..568daae6d0d60 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json @@ -126,6 +126,65 @@ { "u_assign_activity": "ACT_CRYSTAL_AWAKENING_MEDITATION", "duration": 5 } ] }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_MATRIX_AWAKENING", + "condition": { "u_has_trait": "ELECTROKINETIC" }, + "effect": [ + { + "u_message": "You gaze into the strange crystal and the light slowly grows brighter. It starts pulsing, first slowly and more rapidly, and your head starts pounding in time with the light. You tear your gaze away but the pounding in your head remains." + }, + { "u_add_effect": "psionic_overload", "duration": "1 hours" }, + { "u_add_effect": "stunned", "duration": 10 } + ], + "false_effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_2" } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_MATRIX_AWAKENING_2", + "condition": { "x_in_y_chance": { "x": { "math": [ "100 - awakening_reducer" ] }, "y": 100 } }, + "effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_SUCCESS" } ], + "false_effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_FAILURE" } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_MATRIX_AWAKENING_3", + "condition": { "u_has_trait": "ELECTROKINETIC" }, + "effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_FAILURE" } ], + "false_effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_SUCCESS" } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_MATRIX_AWAKENING_SUCCESS", + "effect": [ + { + "u_message": "You gaze into the strange crystal and the light slowly grows brighter. As it fills your vision, you see thin lines beneath your skin. They pulse with energy, bright sparks traveling to your fingers as you flex them and a burst of internal lightning when you touch the crystal with your free hand. You raise your hand and hold up two fingers, and a thunderbolt jumps between them accompanied by a loud crackle. Your hair stands on end as lightning travels down your arm, filling the air with the scent of ozone. As the light from the crystal fades, leaving it dull and colorless, your skin tingles.", + "popup": true + }, + { "u_add_trait": "ELECTROKINETIC" }, + { "u_add_trait": "ELECTRO_SHIELD" }, + { "u_add_effect": "effect_electrokin_zap_enemies", "duration": "5 minutes" }, + { "run_eocs": "EOC_TEACH_ELECTROKIN_CONTEMPLATE_RECIPES" }, + { "math": [ "awakening_countup", "+=", "1" ] }, + { "math": [ "awakening_reducer", "=", "(matrix_awakening_odds(awakening_countup))" ] }, + { "u_assign_activity": "ACT_CRYSTAL_AWAKENING_MEDITATION", "duration": 5 }, + { "queue_eocs": "EOC_ELECTRO_CRYSTAL_DRAINING", "time_in_future": "1 seconds" } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_MATRIX_AWAKENING_FAILURE", + "effect": [ + { + "u_message": "You gaze into the strange crystal and the light slowly grows brighter. As it fills your vision, your muscles tremble. You see bursts of internal lightning traveling down your limbs for a moment, and then your muscles seize up in a sudden shower of internal sparks. As the crystal's light fades you crash to the floor.", + "popup": true + }, + { "u_add_effect": "psionic_overload", "duration": "1 hours" }, + { "u_add_effect": "stunned", "duration": 10 }, + { "u_assign_activity": "ACT_CRYSTAL_AWAKENING_MEDITATION", "duration": 5 }, + { "queue_eocs": "EOC_ELECTRO_CRYSTAL_DRAINING", "time_in_future": "1 seconds" } + ] + }, { "type": "effect_on_condition", "id": "EOC_PHOTOKIN_MATRIX_AWAKENING", @@ -505,6 +564,7 @@ "weighted_list_eocs": [ [ "EOC_BIOKIN_MATRIX_AWAKENING_3", { "const": 1 } ], [ "EOC_CLAIR_MATRIX_AWAKENING_3", { "const": 1 } ], + [ "EOC_ELECTRO_MATRIX_AWAKENING_3", { "const": 1 } ], [ "EOC_PHOTOKIN_MATRIX_AWAKENING_3", { "const": 1 } ], [ "EOC_PYROKIN_MATRIX_AWAKENING_3", { "const": 1 } ], [ "EOC_TELEKIN_MATRIX_AWAKENING_3", { "const": 1 } ], @@ -538,9 +598,10 @@ "case": 1, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 100 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 110 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -554,9 +615,10 @@ "case": 2, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 85 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 90 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -570,9 +632,10 @@ "case": 3, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 65 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 70 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -586,9 +649,10 @@ "case": 4, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 55 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 60 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -602,9 +666,10 @@ "case": 5, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 40 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 45 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -618,9 +683,10 @@ "case": 6, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 25 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 30 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -634,9 +700,10 @@ "case": 8, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 20 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 25 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -650,9 +717,10 @@ "case": 10, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 15 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 20 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -669,6 +737,7 @@ [ "EOC_PORTAL_NULL_AWAKENING", { "const": 10 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -702,9 +771,10 @@ "case": 1, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 100 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 120 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -718,9 +788,10 @@ "case": 2, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 85 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 90 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -734,9 +805,10 @@ "case": 3, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 65 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 70 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -750,9 +822,10 @@ "case": 4, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 55 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 60 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -766,9 +839,10 @@ "case": 5, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 40 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 45 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -782,9 +856,10 @@ "case": 6, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 25 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 30 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -798,9 +873,10 @@ "case": 8, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 20 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 25 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -814,9 +890,10 @@ "case": 10, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 15 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 20 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -866,9 +943,10 @@ "case": 1, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 100 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 120 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -882,9 +960,10 @@ "case": 2, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 85 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 90 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -898,9 +977,10 @@ "case": 3, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 65 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 70 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -914,9 +994,10 @@ "case": 4, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 55 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 60 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -930,9 +1011,10 @@ "case": 5, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 40 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 45 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -946,9 +1028,10 @@ "case": 6, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 25 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 30 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -962,9 +1045,10 @@ "case": 8, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 20 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 25 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -978,9 +1062,10 @@ "case": 10, "effect": { "weighted_list_eocs": [ - [ "EOC_PORTAL_NULL_AWAKENING", { "const": 15 } ], + [ "EOC_PORTAL_NULL_AWAKENING", { "const": 20 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -997,6 +1082,7 @@ [ "EOC_PORTAL_NULL_AWAKENING", { "const": 10 } ], [ "EOC_PORTAL_BIOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_CLAIR_AWAKENING", { "const": 1 } ], + [ "EOC_PORTAL_ELECTRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PHOTOKIN_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_PYRO_AWAKENING", { "const": 1 } ], [ "EOC_PORTAL_TELEKIN_AWAKENING", { "const": 1 } ], @@ -1080,6 +1166,39 @@ { "math": [ "u_val('stamina')", "-=", "4000" ] } ] }, + { + "type": "effect_on_condition", + "id": "EOC_PORTAL_ELECTRO_AWAKENING", + "condition": { + "and": [ + { "not": { "u_has_trait": "ELECTROKINETIC" } }, + { "not": { "u_has_effect": "psionic_awakened" } }, + { "x_in_y_chance": { "x": { "math": [ "100 - awakening_reducer" ] }, "y": 100 } } + ] + }, + "effect": [ + { + "u_message": "A roar fills your mind, louder even than the screaming madness of the portal storm. Multi-colored lightning flashes across the sky and then freezes. The lightning expands in your sight, until you can see individual electrons tracing their paths through the air. You reach out a hand and some of the electrons change their path, and as the world restarts its motion the lightning crashes into you and through you to the ground. A few sparks remain, dancing across your hand, and as you flex your fingers lightning crackles between them.", + "popup": true + }, + { "u_add_trait": "ELECTROKINETIC" }, + { "u_add_trait": "ELECTRO_SHIELD" }, + { "run_eocs": "EOC_TEACH_ELECTRO_CONTEMPLATE_RECIPES" }, + { "u_add_effect": "psionic_awakened", "duration": { "math": [ "ps_str * u_val('time: 2 h')" ] } }, + { "math": [ "awakening_countup", "+=", "1" ] }, + { "math": [ "awakening_reducer", "=", "(portal_storm_awakening_odds(awakening_countup))" ] } + ], + "false_effect": [ + { + "u_message": "A roar fills your mind, louder even than the screaming madness of the portal storm. Multi-colored lightning flashes across the sky, first once and then again, then faster and faster until the thunder comes *before* the lightning. Bolts crash into the ground around you and suddenly one strikes the ground right next to you, hurling you off your feet." + }, + { "u_add_effect": "psionic_overload", "duration": { "math": [ "ps_str * u_val('time: 1 h')" ] } }, + { "u_add_effect": "downed", "duration": 1 }, + { "u_add_effect": "stunned", "duration": { "math": [ "ps_str * u_val('time: 2 s')" ] } }, + { "u_add_effect": "electro_overload", "duration": { "math": [ "ps_str * u_val('time: 2 h')" ] } }, + { "math": [ "u_val('stamina')", "-=", "4000" ] } + ] + }, { "type": "effect_on_condition", "id": "EOC_PORTAL_PHOTOKIN_AWAKENING", @@ -1301,6 +1420,14 @@ "condition": { "u_has_trait": "CLAIRSENTIENT" }, "effect": [ { "math": [ "awakening_countup", "+=", "1" ] } ] }, + { + "type": "effect_on_condition", + "id": "EOC_CHECK_GAMESTART_ELECTROKIN", + "eoc_type": "EVENT", + "required_event": "game_start", + "condition": { "u_has_trait": "ELECTROKINETIC" }, + "effect": [ { "math": [ "awakening_countup", "+=", "1" ] } ] + }, { "type": "effect_on_condition", "id": "EOC_CHECK_GAMESTART_PHOTOKIN", diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_crystal_draining.json b/data/mods/MindOverMatter/effectoncondition/eoc_crystal_draining.json index 3762d33bca586..8c4c9ca7ffb9c 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_crystal_draining.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_crystal_draining.json @@ -17,6 +17,15 @@ { "u_spawn_item": "matrix_crystal_drained", "suppress_message": true } ] }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_CRYSTAL_DRAINING", + "condition": { "u_has_item": "matrix_crystal_electrokinesis" }, + "effect": [ + { "u_consume_item": "matrix_crystal_electrokinesis", "count": 1 }, + { "u_spawn_item": "matrix_crystal_drained", "suppress_message": true } + ] + }, { "type": "effect_on_condition", "id": "EOC_PHOTOKIN_CRYSTAL_DRAINING", diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_learn_recipes.json b/data/mods/MindOverMatter/effectoncondition/eoc_learn_recipes.json index 7a6ccc83a9e6c..e949ea1586e0f 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_learn_recipes.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_learn_recipes.json @@ -32,6 +32,24 @@ { "u_learn_recipe": "practice_clair_omniscience" } ] }, + { + "type": "effect_on_condition", + "id": "EOC_TEACH_ELECTROKIN_CONTEMPLATE_RECIPES", + "effect": [ + { "u_learn_recipe": "practice_electrokinetic_see_electric" }, + { "u_learn_recipe": "practice_electrokinetic_shock_touch" }, + { "u_learn_recipe": "practice_electrokinetic_zap_enemies" }, + { "u_learn_recipe": "practice_electrokinetic_melee_attacks" }, + { "u_learn_recipe": "practice_electrokinetic_personal_battery" }, + { "u_learn_recipe": "practice_electrokinetic_paralysis" }, + { "u_learn_recipe": "practice_electrokinetic_lightning_bolt" }, + { "u_learn_recipe": "practice_electrokinetic_speed_boost" }, + { "u_learn_recipe": "practice_electrokinetic_kill_robot" }, + { "u_learn_recipe": "practice_electrokinetic_lightning_aura" }, + { "u_learn_recipe": "practice_electrokinetic_lightning_blast" }, + { "u_learn_recipe": "practice_electrokinetic_revive" } + ] + }, { "type": "effect_on_condition", "id": "EOC_TEACH_PHOTOKIN_CONTEMPLATE_RECIPES", diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json b/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json index 07b518d229988..e3c4916fb1152 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json @@ -15,6 +15,22 @@ "condition": { "and": [ { "u_has_trait": "CLAIRSENTIENT" }, { "u_has_wielded_with_flag": "MATRIX_CRYSTAL_CLAIRSENTIENCE" } ] }, "effect": [ { "math": [ "u_val('spell_level_adjustment', 'school: CLAIRSENTIENT')", "=", "4" ] } ] }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTRO_MATRIX_BOOST", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "condition": { "and": [ { "u_has_trait": "ELECTROKINETIC" }, { "u_has_wielded_with_flag": "MATRIX_CRYSTAL_ELECTROKINESIS" } ] }, + "effect": [ { "math": [ "u_val('spell_level_adjustment', 'school: ELECTROKINETIC')", "=", "4" ] } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_PHOTO_MATRIX_BOOST", + "eoc_type": "EVENT", + "required_event": "opens_spellbook", + "condition": { "and": [ { "u_has_trait": "PHOTOKINETIC" }, { "u_has_wielded_with_flag": "MATRIX_CRYSTAL_PHOTOKINESIS" } ] }, + "effect": [ { "math": [ "u_val('spell_level_adjustment', 'school: PHOTOKINETIC')", "=", "4" ] } ] + }, { "type": "effect_on_condition", "id": "EOC_PYRO_MATRIX_BOOST", diff --git a/data/mods/MindOverMatter/effects/effects_monster.json b/data/mods/MindOverMatter/effects/effects_monster.json index 502e7b2c03ddf..4b6bcd2cf90d3 100644 --- a/data/mods/MindOverMatter/effects/effects_monster.json +++ b/data/mods/MindOverMatter/effects/effects_monster.json @@ -64,6 +64,43 @@ "base_mods": { "rad_amount": [ 2 ], "rad_min": [ 3, 1 ] }, "immune_flags": [ "RAD_PROOF", "NO_RADIATION" ] }, + { + "type": "effect_type", + "id": "effect_electrokin_revive_debuff", + "name": [ + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified", + "Revivified" + ], + "desc": [ "Causes the target to eventually die. It's a bug if you have it." ], + "max_intensity": 12, + "int_decay_step": 1, + "int_decay_tick": 60, + "show_in_info": true, + "chance_kill": [ + [ 1, 200000 ], + [ 1, 100000 ], + [ 1, 50000 ], + [ 1, 10000 ], + [ 1, 5000 ], + [ 1, 1000 ], + [ 1, 500 ], + [ 1, 100 ], + [ 1, 50 ], + [ 1, 20 ], + [ 1, 5 ], + [ 1, 1 ] + ] + }, { "type": "effect_type", "id": "effect_photokinetic_illumination", diff --git a/data/mods/MindOverMatter/effects/effects_psionic.json b/data/mods/MindOverMatter/effects/effects_psionic.json index 06fbe9d57fa23..d1ca38761fa7d 100644 --- a/data/mods/MindOverMatter/effects/effects_psionic.json +++ b/data/mods/MindOverMatter/effects/effects_psionic.json @@ -595,6 +595,7 @@ "apply_message": "", "rating": "bad", "max_duration": "1 minutes", + "show_in_info": true, "enchantments": [ { "values": [ @@ -776,6 +777,133 @@ "flags": [ "SUPER_CLAIRVOYANCE" ], "vitamins": [ { "vitamin": "vitamin_psionic_drain", "rate": [ [ 1, 1 ] ], "tick": [ "2 s" ] } ] }, + { + "type": "effect_type", + "id": "effect_electrokin_see_electricity", + "name": [ "Spark Sight" ], + "desc": [ "Your powers reveal electrical creatures and robots to you." ], + "apply_message": "", + "remove_message": "You can no longer sense the flow of current.", + "decay_messages": [ [ "You can only see an occasional flicker of charge.", "bad" ], [ "Your electrical senses are fading.", "bad" ] ], + "rating": "good", + "max_duration": "45 minutes", + "max_intensity": 83, + "dur_add_perc": 10, + "int_dur_factor": "32 s", + "enchantments": [ + { + "values": [ + { + "value": "SIGHT_RANGE_ELECTRIC", + "add": { + "math": [ + "( ( u_val('spell_level', 'spell: electrokinesis_see_electric') * 1.5) + 6 ) * (scaling_factor(u_val('intelligence') ) )" + ] + } + } + ] + } + ] + }, + { + "type": "effect_type", + "id": "effect_electrokin_zap_enemies", + "name": [ "Electrical Discharge" ], + "desc": [ "Your body is filled with electrical currents." ], + "apply_message": "", + "remove_message": "The tingling on your skin fades.", + "decay_messages": [ [ "The protective electrical currents are nearly gone.", "bad" ], [ "Your skin is losing its charge.", "bad" ] ], + "rating": "good", + "max_duration": "20 minutes", + "max_intensity": 49, + "dur_add_perc": 10, + "int_dur_factor": "25 s", + "enchantments": [ "enchant_electrokin_zap_enemies" ], + "flags": [ "EMP_IMMUNE" ] + }, + { + "type": "effect_type", + "id": "effect_electrokin_melee_attacks", + "name": [ "Voltaic Strikes" ], + "desc": [ "Your melee attacks unleash electrical blasts." ], + "apply_message": "", + "remove_message": "Your hands no longer spark with electricity.", + "decay_messages": [ [ "The charge in your hands is nearly gone.", "bad" ], [ "The current in your hands is fading.", "bad" ] ], + "rating": "good", + "max_duration": "20 minutes", + "max_intensity": 73, + "dur_add_perc": 10, + "int_dur_factor": "17 s", + "enchantments": [ "enchant_electrokin_electric_strikes" ] + }, + { + "type": "effect_type", + "id": "effect_electrokin_personal_battery", + "name": [ "Electron Overflow" ], + "desc": [ "You are generating a wireless aura of electrical power." ], + "apply_message": "", + "remove_message": "You stop the flow of electricity to your devices.", + "rating": "good", + "max_duration": "7 days" + }, + { + "type": "effect_type", + "id": "effect_electrokinetic_speed_boost", + "name": [ "Neuro-Accelerated" ], + "desc": [ "You are enhancing your nervous system." ], + "apply_message": "", + "remove_message": "Your reactions return to baseline.", + "decay_messages": [ + [ "Your enhanced reactions are nearly gone.", "bad" ], + [ "Your reaction times are gradually becoming slower.", "bad" ] + ], + "rating": "good", + "max_duration": "30 minutes", + "max_intensity": 61, + "dur_add_perc": 10, + "int_dur_factor": "29 s", + "enchantments": [ + { + "values": [ + { + "value": "LEARNING_FOCUS", + "add": { + "math": [ + "min( ( 5 + u_val('spell_level', 'spell: electrokinetic_speed_boost') ) * ( ( u_val('intelligence') + 10) / 20 ), 35 )" + ] + } + }, + { + "value": "SPEED", + "add": { + "math": [ + "min( ( 10 + ( ( u_val('spell_level', 'spell: electrokinetic_speed_boost') ) * 1.5) ) * ( ( u_val('intelligence') + 10) / 20 ), 60 )" + ] + } + } + ] + } + ] + }, + { + "type": "effect_type", + "id": "effect_electrokinetic_lightning_aura", + "name": [ "Galvanic Aura" ], + "desc": [ "Anyone nearby risks being blasted by lightning." ], + "apply_message": "", + "remove_message": "The thrum in the air around you dissipates.", + "decay_messages": [ + [ "The crackling aura around you is fading quickly.", "bad" ], + [ "The lightning blasts are growing less powerful.", "bad" ] + ], + "rating": "good", + "max_duration": "10 minutes", + "max_intensity": 36, + "dur_add_perc": 10, + "int_dur_factor": "17 s", + "enchantments": [ "enchant_electrokin_lightning_aura" ], + "flags": [ "EMP_IMMUNE" ] + }, { "type": "effect_type", "id": "effect_photokin_light_local", diff --git a/data/mods/MindOverMatter/enchantments/enchantments_player.json b/data/mods/MindOverMatter/enchantments/enchantments_player.json index ff50160fbed34..06741f6c224d0 100644 --- a/data/mods/MindOverMatter/enchantments/enchantments_player.json +++ b/data/mods/MindOverMatter/enchantments/enchantments_player.json @@ -26,6 +26,138 @@ "min_duration": 200, "max_duration": 200 }, + { + "type": "enchantment", + "id": "enchant_electrokin_zap_enemies", + "condition": "ALWAYS", + "has": "HELD", + "hit_me_effect": [ { "id": "electrokin_zap_attacked", "hit_self": false, "once_in": 2 } ] + }, + { + "id": "electrokin_zap_attacked", + "type": "SPELL", + "name": "Electrokinetic aura thorns", + "description": "Do electrical damage to a monster that attacked you. If you have this directly its a bug.", + "valid_targets": [ "hostile" ], + "flags": [ "RANDOM_DAMAGE" ], + "shape": "blast", + "effect": "attack", + "damage_type": "electric", + "min_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinesis_zap_enemies') / 4 ) + 1) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinesis_zap_enemies') / 2 ) + 5) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": 1, + "max_range": 1 + }, + { + "type": "enchantment", + "id": "enchant_electrokin_electric_strikes", + "condition": "ALWAYS", + "has": "HELD", + "hit_me_effect": [ { "id": "electrokin_zap_attack", "hit_self": false, "once_in": 3 } ], + "values": [ { "value": "ARMOR_ELEC", "add": { "math": [ "u_val('spell_level', 'spell: electrokinetic_melee_attacks') * -1" ] } } ] + }, + { + "id": "electrokin_zap_attack", + "type": "SPELL", + "name": "Electrokinetic melee attacks", + "description": "Do electrical damage to a monster you attack. If you have this directly its a bug.", + "valid_targets": [ "hostile" ], + "flags": [ "RANDOM_DAMAGE", "RANDOM_AOE" ], + "shape": "blast", + "effect": "attack", + "damage_type": "electric", + "min_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinesis_melee_thorns') / 3 ) + 3) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinesis_melee_thorns') / 1.5 ) + 10) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": 1, + "max_range": 1, + "min_aoe": 0, + "max_aoe": 1, + "field_id": "fd_electricity", + "field_chance": 2, + "min_field_intensity": 1, + "max_field_intensity": 4, + "field_intensity_variance": 10 + }, + { + "type": "enchantment", + "id": "enchant_electrokin_lightning_aura", + "condition": "ALWAYS", + "has": "HELD", + "intermittent_activation": { "effects": [ { "frequency": "5 seconds", "spell_effects": [ { "id": "electrokinetic_lightning_aura_attack" } ] } ] }, + "values": [ + { "value": "ARMOR_ELEC", "add": { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_aura') * -1" ] } } + ] + }, + { + "id": "electrokinetic_lightning_aura_attack", + "type": "SPELL", + "name": "[Ψ]Galvanic Aura Sparks", + "description": "Galvanic Aura attacks. It's a bug if you have it.", + "message": "", + "teachable": false, + "valid_targets": [ "hostile", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "LOUD", "NO_EXPLOSION_SFX", "NO_HANDS", "NO_LEGS" ], + "effect": "emit", + "effect_str": "emit_shock_cloud_big", + "shape": "blast", + "damage_type": "electric", + "max_level": { "math": [ "int_to_level(1)" ] } + }, + { + "id": "electrokinetic_lightning_aura_attack_placeholder", + "//": "This one doesn't work currently. Preserved here until it's fixed.", + "type": "SPELL", + "name": "[Ψ]Galvanic Aura Bolt", + "description": "Galvanic Aura attacks. It's a bug if you have it.", + "message": "", + "teachable": false, + "valid_targets": [ "hostile", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "CONCENTRATE", "LOUD", "NO_PROJECTILE", "RANDOM_DAMAGE", "RANDOM_CRITTER", "NO_HANDS", "NO_LEGS" ], + "effect": "attack", + "shape": "line", + "damage_type": "electric", + "max_level": { "math": [ "int_to_level(1)" ] }, + "min_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_aura') * 1) + 5) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_bolt') * 1.5) + 20) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_lightning_aura') * 0.33) + 2) * (scaling_factor(u_val('intelligence') ) ), 10)" + ] + }, + "max_range": 10, + "field_id": "fd_electricity", + "min_field_intensity": 1, + "max_field_intensity": 4, + "field_chance": 1 + }, { "type": "enchantment", "id": "enchant_pyrokin_cloak", diff --git a/data/mods/MindOverMatter/itemgroups/matrix_materials.json b/data/mods/MindOverMatter/itemgroups/matrix_materials.json index 5853c64fb83a0..6d64473472480 100644 --- a/data/mods/MindOverMatter/itemgroups/matrix_materials.json +++ b/data/mods/MindOverMatter/itemgroups/matrix_materials.json @@ -6,6 +6,7 @@ "items": [ [ "matrix_crystal_biokinesis", 10 ], [ "matrix_crystal_clairsentience", 10 ], + [ "matrix_crystal_electrokinesis", 10 ], [ "matrix_crystal_photokinesis", 10 ], [ "matrix_crystal_pyrokinesis", 10 ], [ "matrix_crystal_telekinesis", 10 ], @@ -20,15 +21,16 @@ "subtype": "distribution", "id": "dist_matrix_crystals_rare", "items": [ - [ "null", 50 ], - [ "matrix_crystal_biokinesis", 5 ], - [ "matrix_crystal_clairsentience", 5 ], - [ "matrix_crystal_photokinesis", 5 ], - [ "matrix_crystal_pyrokinesis", 5 ], - [ "matrix_crystal_telekinesis", 5 ], - [ "matrix_crystal_telepathy", 5 ], - [ "matrix_crystal_teleportation", 5 ], - [ "matrix_crystal_vitakinesis", 5 ], + [ "null", 100 ], + [ "matrix_crystal_biokinesis", 10 ], + [ "matrix_crystal_clairsentience", 10 ], + [ "matrix_crystal_electrokinesis", 10 ], + [ "matrix_crystal_photokinesis", 10 ], + [ "matrix_crystal_pyrokinesis", 10 ], + [ "matrix_crystal_telekinesis", 10 ], + [ "matrix_crystal_telepathy", 10 ], + [ "matrix_crystal_teleportation", 10 ], + [ "matrix_crystal_vitakinesis", 10 ], [ "matrix_crystal_coruscating", 1 ] ] }, @@ -37,9 +39,10 @@ "subtype": "distribution", "id": "dist_matrix_crystals_50_50", "items": [ - [ "matrix_crystal_drained", 7 ], + [ "matrix_crystal_drained", 9 ], [ "matrix_crystal_biokinesis", 1 ], [ "matrix_crystal_clairsentience", 1 ], + [ "matrix_crystal_electrokinesis", 1 ], [ "matrix_crystal_photokinesis", 1 ], [ "matrix_crystal_pyrokinesis", 1 ], [ "matrix_crystal_telekinesis", 1 ], @@ -55,6 +58,7 @@ "items": [ { "item": "matrix_crystal_biokin_dust", "prob": 30, "container-item": "test_tube" }, { "item": "matrix_crystal_clair_dust", "prob": 30, "container-item": "test_tube" }, + { "item": "matrix_crystal_electrokin_dust", "prob": 30, "container-item": "test_tube" }, { "item": "matrix_crystal_photokin_dust", "prob": 30, "container-item": "test_tube" }, { "item": "matrix_crystal_pyrokin_dust", "prob": 30, "container-item": "test_tube" }, { "item": "matrix_crystal_telekin_dust", "prob": 30, "container-item": "test_tube" }, @@ -71,6 +75,7 @@ "items": [ { "item": "matrix_crystal_biokin_dust", "prob": 1, "container-item": "test_tube" }, { "item": "matrix_crystal_clair_dust", "prob": 1, "container-item": "test_tube" }, + { "item": "matrix_crystal_electrokin_dust", "prob": 1, "container-item": "test_tube" }, { "item": "matrix_crystal_photokin_dust", "prob": 1, "container-item": "test_tube" }, { "item": "matrix_crystal_pyrokin_dust", "prob": 1, "container-item": "test_tube" }, { "item": "matrix_crystal_telekin_dust", "prob": 1, "container-item": "test_tube" }, @@ -98,6 +103,15 @@ { "item": "matrix_crystal_clair_dust_refined", "prob": 1, "container-item": "test_tube" } ] }, + { + "type": "item_group", + "subtype": "distribution", + "id": "matrix_crystal_electrokin_dust_group", + "items": [ + { "item": "matrix_crystal_electrokin_dust", "prob": 3, "container-item": "test_tube" }, + { "item": "matrix_crystal_electrokin_dust_refined", "prob": 1, "container-item": "test_tube" } + ] + }, { "type": "item_group", "subtype": "distribution", diff --git a/data/mods/MindOverMatter/items/matrix_crystals.json b/data/mods/MindOverMatter/items/matrix_crystals.json index d9ce0c08cec59..ae1347cfb6431 100644 --- a/data/mods/MindOverMatter/items/matrix_crystals.json +++ b/data/mods/MindOverMatter/items/matrix_crystals.json @@ -72,6 +72,36 @@ "copy-from": "matrix_crystal_biokin_dust_refined", "color": "dark_gray" }, + { + "type": "TOOL", + "id": "matrix_crystal_electrokinesis", + "name": { "str_sp": "strange crystal, cyan" }, + "copy-from": "matrix_crystal_biokinesis", + "description": "A strange-looking, surprisingly-heavy crystal with a faintly-glowing cyan light in its depths. Holding it, you feel more energetic.", + "color": "cyan", + "flags": [ "MATRIX_CRYSTAL_ELECTROKINESIS" ], + "use_action": { + "type": "effect_on_conditions", + "description": "The cyan glow calls to you.", + "effect_on_conditions": [ "EOC_ELECTRO_MATRIX_AWAKENING" ] + } + }, + { + "type": "GENERIC", + "id": "matrix_crystal_electrokin_dust", + "name": { "str_sp": "crystalline dust, cyan" }, + "copy-from": "matrix_crystal_biokin_dust", + "description": "A bit of crystalline dust with a faint cyan shimmer.", + "color": "cyan" + }, + { + "type": "GENERIC", + "id": "matrix_crystal_electrokin_dust_refined", + "name": { "str_sp": "refined matrix crystal powder, cyan" }, + "description": "Concentrated matrix crystal dust. It glitters cyan even in complete darkness.", + "copy-from": "matrix_crystal_biokin_dust_refined", + "color": "cyan" + }, { "type": "TOOL", "id": "matrix_crystal_photokinesis", diff --git a/data/mods/MindOverMatter/items/psions_summon_items.json b/data/mods/MindOverMatter/items/psions_summon_items.json index a3cc050a55c70..912fa208814a3 100644 --- a/data/mods/MindOverMatter/items/psions_summon_items.json +++ b/data/mods/MindOverMatter/items/psions_summon_items.json @@ -222,6 +222,83 @@ "flags": [ "RAD_DETECT", "PERSONAL", "ZERO_WEIGHT" ], "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MAX_MANA", "add": 0 } ] } ] } }, + { + "id": "electrokinetic_ups_1", + "type": "TOOL_ARMOR", + "name": { "str": "electron overflow" }, + "description": "You are generating power for your personal devices.", + "weight": "0 g", + "volume": "0 ml", + "symbol": "=", + "color": "cyan", + "looks_like": "spiral_stone", + "flags": [ + "TRADER_AVOID", + "ONLY_ONE", + "NO_DROP", + "PADDED", + "PERSONAL", + "SEMITANGIBLE", + "NO_SALVAGE", + "ZERO_WEIGHT", + "NO_UNLOAD", + "NO_RELOAD", + "IS_UPS" + ], + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 1000 } } ], + "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "2 s", "regenerate_ammo": true } }, + "//": "Recharge time is 2 seconds due to bug #48019, making it actually 1 second. Reduce to 1 second if that ever gets fixed." + }, + { + "id": "electrokinetic_ups_2", + "type": "TOOL_ARMOR", + "name": { "str": "electron overflow" }, + "description": "You are generating power for your personal devices.", + "copy-from": "electrokinetic_ups_1", + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 2500 } } ], + "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "2 s", "regenerate_ammo": true } }, + "//": "Recharge time is 2 seconds due to bug #48019, making it actually 1 second. Reduce to 1 second if that ever gets fixed." + }, + { + "id": "electrokinetic_ups_3", + "type": "TOOL_ARMOR", + "name": { "str": "electron overflow" }, + "description": "You are generating power for your personal devices.", + "copy-from": "electrokinetic_ups_1", + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 5000 } } ], + "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "2 s", "regenerate_ammo": true } }, + "//": "Recharge time is 2 seconds due to bug #48019, making it actually 1 second. Reduce to 1 second if that ever gets fixed." + }, + { + "id": "electrokinetic_ups_4", + "type": "TOOL_ARMOR", + "name": { "str": "electron overflow" }, + "description": "You are generating power for your personal devices.", + "copy-from": "electrokinetic_ups_1", + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 10000 } } ], + "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "2 s", "regenerate_ammo": true } }, + "//": "Recharge time is 2 seconds due to bug #48019, making it actually 1 second. Reduce to 1 second if that ever gets fixed." + }, + { + "id": "electrokinetic_ups_5", + "type": "TOOL_ARMOR", + "name": { "str": "electron overflow" }, + "description": "You are generating power for your personal devices.", + "copy-from": "electrokinetic_ups_1", + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 17500 } } ], + "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "2 s", "regenerate_ammo": true } }, + "//": "Recharge time is 2 seconds due to bug #48019, making it actually 1 second. Reduce to 1 second if that ever gets fixed." + }, + { + "id": "electrokinetic_ups_6", + "type": "TOOL_ARMOR", + "name": { "str": "electron overflow" }, + "description": "You are generating power for your personal devices.", + "copy-from": "electrokinetic_ups_1", + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 25000 } } ], + "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "2 s", "regenerate_ammo": true } }, + "//": "Recharge time is 2 seconds due to bug #48019, making it actually 1 second. Reduce to 1 second if that ever gets fixed." + }, { "id": "pyrokinetic_fire_tool", "type": "TOOL_ARMOR", diff --git a/data/mods/MindOverMatter/json_flags.json b/data/mods/MindOverMatter/json_flags.json index bb1d7237e8c04..00aaa4849be5a 100644 --- a/data/mods/MindOverMatter/json_flags.json +++ b/data/mods/MindOverMatter/json_flags.json @@ -34,6 +34,11 @@ "type": "json_flag", "info": "This is a matrix crystal attuned to clairsentience." }, + { + "id": "MATRIX_CRYSTAL_ELECTROKINESIS", + "type": "json_flag", + "info": "This is a matrix crystal attuned to electrokinesis." + }, { "id": "MATRIX_CRYSTAL_PHOTOKINESIS", "type": "json_flag", diff --git a/data/mods/MindOverMatter/monsters/monster_overrides.json b/data/mods/MindOverMatter/monsters/monster_overrides.json index 150889ffcbf89..bcd38131c12f1 100644 --- a/data/mods/MindOverMatter/monsters/monster_overrides.json +++ b/data/mods/MindOverMatter/monsters/monster_overrides.json @@ -502,5 +502,29 @@ "copy-from": "mon_mi_go_myrmidon", "type": "MONSTER", "armor": { "bash": 19, "cut": 27, "bullet": 22, "electric": 6, "psi_telepathic_damage": 120 } + }, + { + "id": "mon_yrax_delta", + "copy-from": "mon_yrax_delta", + "type": "MONSTER", + "species": [ "ROBOT", "YRAX_CONSTRUCT" ] + }, + { + "id": "mon_yrax_trifacet", + "copy-from": "mon_yrax_trifacet", + "type": "MONSTER", + "species": [ "ROBOT", "YRAX_CONSTRUCT" ] + }, + { + "id": "mon_yrax_apeirogon", + "copy-from": "mon_yrax_apeirogon", + "type": "MONSTER", + "species": [ "ROBOT", "YRAX_CONSTRUCT" ] + }, + { + "id": "mon_yrax_sphenocorona", + "copy-from": "mon_yrax_sphenocorona", + "type": "MONSTER", + "species": [ "ROBOT", "YRAX_CONSTRUCT" ] } ] diff --git a/data/mods/MindOverMatter/monsters/species_new.json b/data/mods/MindOverMatter/monsters/species_new.json index ed7ffba18e69c..c4242fe355b53 100644 --- a/data/mods/MindOverMatter/monsters/species_new.json +++ b/data/mods/MindOverMatter/monsters/species_new.json @@ -4,5 +4,10 @@ "id": "PSI_NULL", "description": "a being immune to psionics", "//": "This is an extra species to attach to any monster that is supposed to be immune to psionics--it will prevent them from being targeted by psionic powers. If the monster is supposed to be fully immune, they will still need appropriate monster flags or armor against psionic damage types to prevent them from being caught in the AoE of powers targeted elsewhere." + }, + { + "type": "SPECIES", + "id": "YRAX_CONSTRUCT", + "description": "a robot, maybe, but one far more advanced than anything Earth could dream of producing" } ] diff --git a/data/mods/MindOverMatter/mutations/psi_passives.json b/data/mods/MindOverMatter/mutations/psi_passives.json index 48d396fbb3bc2..0f419e25f1d9f 100644 --- a/data/mods/MindOverMatter/mutations/psi_passives.json +++ b/data/mods/MindOverMatter/mutations/psi_passives.json @@ -62,6 +62,23 @@ } ] }, + { + "type": "mutation", + "id": "ELECTRO_SHIELD", + "name": { "str": "Galvanic Armor" }, + "points": 0, + "description": "Your powers help protect you from electrical damage and slightly reduce the intensity of pain you feel.", + "player_display": true, + "purifiable": false, + "enchantments": [ + { + "values": [ + { "value": "ARMOR_ELEC", "add": { "math": [ "u_val('spell_level', 'school: ELECTROKINETIC') / -4" ] } }, + { "value": "PAIN", "multiply": { "math": [ "u_val('spell_level', 'school: ELECTROKINETIC') * -0.007" ] } } + ] + } + ] + }, { "type": "mutation", "id": "PHOTO_EYES", diff --git a/data/mods/MindOverMatter/mutations/traits.json b/data/mods/MindOverMatter/mutations/traits.json index 6d07d2d4e33c7..08f9cf04f3f09 100644 --- a/data/mods/MindOverMatter/mutations/traits.json +++ b/data/mods/MindOverMatter/mutations/traits.json @@ -31,6 +31,22 @@ [ "classless_toggleable_concentration_end", 1 ] ] }, + { + "type": "mutation", + "id": "ELECTROKINETIC", + "name": "Awakened Electrokinetic", + "points": 0, + "description": "Mental control of lightning and electricity.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ + [ "electrokinetic_see_electric", 2 ], + [ "electrokinetic_shock_touch", 2 ], + [ "electrokinetic_zap_enemies", 2 ], + [ "classless_toggleable_concentration_end", 1 ] + ] + }, { "type": "mutation", "id": "PHOTOKINETIC", diff --git a/data/mods/MindOverMatter/powers/electrokinesis.json b/data/mods/MindOverMatter/powers/electrokinesis.json new file mode 100644 index 0000000000000..bd925af241a83 --- /dev/null +++ b/data/mods/MindOverMatter/powers/electrokinesis.json @@ -0,0 +1,631 @@ +[ + { + "id": "electrokinetic_see_electric", + "type": "SPELL", + "name": "[Ψ]Spark Sight", + "description": "Open your senses to the flow of electricity, revealing nearby electrical creatures or robots.", + "message": "You open your senses to the flow of current.", + "teachable": false, + "valid_targets": [ "self" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX", "RANDOM_DURATION" ], + "difficulty": 1, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "effect_electrokin_see_electricity", + "extra_effects": [ { "id": "psionic_drained_difficulty_one", "hit_self": true } ], + "shape": "blast", + "min_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_see_electric') * 15000) + 90000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_see_electric') * 30000) + 180000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "energy_source": "STAMINA", + "base_energy_cost": 2000, + "final_energy_cost": 750, + "energy_increment": -75, + "base_casting_time": 150, + "final_casting_time": 80, + "casting_time_increment": -6, + "learn_spells": { "electrokinetic_personal_battery": 7, "electrokinetic_speed_boost": 14, "electrokinetic_revive": 21 } + }, + { + "id": "electrokinetic_shock_touch", + "type": "SPELL", + "name": "[Ψ]Static Touch", + "description": "Unleash a shock when touching a target, doing a small amount of damage and dazing them.", + "message": "Your hands crackle with sparks!", + "teachable": false, + "valid_targets": [ "hostile", "ground", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "LOUD", "NO_PROJECTILE", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS" ], + "difficulty": 1, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "dazed", + "extra_effects": [ { "id": "psionic_drained_difficulty_one", "hit_self": true } ], + "shape": "blast", + "damage_type": "electric", + "min_damage": { + "math": [ "( (u_val('spell_level', 'spell: electrokinetic_shock_touch') * 1) + 2) * (scaling_factor(u_val('intelligence') ) )" ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_shock_touch') * 1.5) + 7) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": 1, + "max_range": 1, + "field_id": "fd_electricity", + "min_field_intensity": 1, + "max_field_intensity": 2, + "field_chance": 1, + "energy_source": "STAMINA", + "base_energy_cost": 1500, + "final_energy_cost": 450, + "energy_increment": -65, + "base_casting_time": 100, + "final_casting_time": 35, + "casting_time_increment": -4, + "sound_type": "combat", + "sound_description": "zzzaaaaapp!", + "ignored_monster_species": [ "PSI_NULL" ], + "learn_spells": { + "electrokinetic_melee_attacks": 6, + "electrokinetic_paralysis": 8, + "electrokinetic_lightning_bolt": 12, + "electrokinetic_lightning_blast": 20 + } + }, + { + "id": "electrokinetic_zap_enemies", + "type": "SPELL", + "name": "[Ψ]Electrical Discharge", + "description": "Build up a charge in your body, zapping anyone who attempts to attack you. It will also protect you from EMP attacks.", + "message": "Your skin tingles.", + "teachable": false, + "valid_targets": [ "self" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX", "RANDOM_DURATION" ], + "difficulty": 2, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "effect_electrokin_zap_enemies", + "extra_effects": [ { "id": "psionic_drained_difficulty_two", "hit_self": true } ], + "shape": "blast", + "min_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_zap_enemies') * 8000) + 60000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_zap_enemies') * 24000) + 145000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "energy_source": "STAMINA", + "base_energy_cost": 3500, + "final_energy_cost": 1100, + "energy_increment": -120, + "base_casting_time": 125, + "final_casting_time": 45, + "casting_time_increment": -5, + "learn_spells": { "electrokinetic_personal_battery": 8, "electrokinetic_paralysis": 11, "electrokinetic_lightning_aura": 18 } + }, + { + "id": "electrokinetic_melee_attacks", + "type": "SPELL", + "name": "[Ψ]Voltaic Strikes", + "description": "Unleash electrical blasts on those you strike in melee.", + "message": "Lightning crackles between your fingers!", + "teachable": false, + "valid_targets": [ "self" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX", "RANDOM_DURATION" ], + "difficulty": 3, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "effect_electrokin_melee_attacks", + "extra_effects": [ { "id": "psionic_drained_difficulty_three", "hit_self": true } ], + "shape": "blast", + "min_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_melee_attacks') * 6500) + 30000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_melee_attacks') * 21000) + 90000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "energy_source": "STAMINA", + "base_energy_cost": 3500, + "final_energy_cost": 1450, + "energy_increment": -115, + "base_casting_time": 125, + "final_casting_time": 45, + "casting_time_increment": -5, + "learn_spells": { "electrokinetic_paralysis": 8, "electrokinetic_lightning_blast": 18 } + }, + { + "id": "electrokinetic_personal_battery", + "type": "SPELL", + "name": "[Ψ]Electron Overflow (toggle)", + "description": "Generate power for UPS compatible devices on your person.\n\nThis power may be maintained by concentration and causes Drain at intervals.", + "message": "", + "teachable": false, + "valid_targets": [ "self" ], + "spell_class": "ELECTROKINETIC", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX", "RANDOM_DURATION" ], + "difficulty": 3, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "effect_on_condition", + "effect_str": "EOC_ELECTROKIN_PERSONAL_BATTERY_INITIATE", + "shape": "blast", + "min_damage": 1, + "min_duration": { + "math": [ + "min( ( ( (u_val('spell_level', 'spell: electrokinetic_personal_battery') * 4500 ) + 60000) * (scaling_factor(u_val('intelligence') ) ) ), 14400)" + ] + }, + "max_duration": { + "math": [ + "min( ( ( (u_val('spell_level', 'spell: electrokinetic_personal_battery') * 9000 ) + 180000) * (scaling_factor(u_val('intelligence') ) ) ), 14400)" + ] + }, + "energy_source": "STAMINA", + "base_energy_cost": 6500, + "final_energy_cost": 3500, + "energy_increment": -150, + "base_casting_time": 350, + "final_casting_time": 150, + "casting_time_increment": -9, + "learn_spells": { "electrokinetic_kill_robot": 14 } + }, + { + "id": "electrokinetic_paralysis", + "type": "SPELL", + "name": "[Ψ]Neural Spasms", + "description": "Cause an electrical burst in the target's nervous system (or the remains of it), stunning them briefly. It will only work on targets that have, or had, a nervous system.", + "message": "You overload the target's neurons!", + "teachable": false, + "valid_targets": [ "hostile", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "RANDOM_DURATION" ], + "difficulty": 4, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "stunned", + "extra_effects": [ { "id": "psionic_drained_difficulty_four", "hit_self": true } ], + "shape": "blast", + "//": "Complicated formula here is to produce diminishing returns, since stunning for too long might as well just kill the target. Level 1 minimum is 46.5 moves lost, level 20 maximum is 625, all before Intelligence scaling", + "min_duration": { + "math": [ + "( ( ( (u_val('spell_level', 'spell: electrokinetic_paralysis') * 0.25 ) * 6 ) / ( (u_val('spell_level', 'spell: electrokinetic_paralysis') * 0.25 ) + 3) ) * 10000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_duration": { + "math": [ + "( ( ( (u_val('spell_level', 'spell: electrokinetic_paralysis') * 0.25 ) * 10 ) / ( (u_val('spell_level', 'spell: electrokinetic_paralysis') * 0.25 ) + 3) ) * 10000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_paralysis') * 0.6) + 1) * (scaling_factor(u_val('intelligence') ) ), 40)" + ] + }, + "max_range": 40, + "energy_source": "STAMINA", + "base_energy_cost": 5500, + "final_energy_cost": 2500, + "energy_increment": -150, + "base_casting_time": 150, + "final_casting_time": 75, + "casting_time_increment": -5, + "ignored_monster_species": [ "ROBOT", "NETHER", "NETHER_EMANATION", "LEECH_PLANT", "WORM", "PLANT", "FUNGUS", "SLIME", "PSI_NULL" ], + "learn_spells": { "electrokinetic_speed_boost": 9, "electrokinetic_revive": 16 } + }, + { + "id": "electrokinetic_lightning_bolt", + "type": "SPELL", + "name": "[Ψ]Electrocutioner", + "description": "Launch a bolt of lightning at a nearby target.", + "message": "You unleash a bolt of lightning.", + "teachable": false, + "valid_targets": [ "hostile", "ground", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "LOUD", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS" ], + "difficulty": 5, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "extra_effects": [ { "id": "psionic_drained_difficulty_five", "hit_self": true } ], + "shape": "line", + "damage_type": "electric", + "min_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_bolt') * 2) + 20) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_bolt') * 4) + 45) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_lightning_bolt') * 0.7) + 3) * (scaling_factor(u_val('intelligence') ) ), 50)" + ] + }, + "max_range": 50, + "field_id": "fd_electricity", + "min_field_intensity": 1, + "max_field_intensity": 2, + "field_chance": 1, + "energy_source": "STAMINA", + "base_energy_cost": 3500, + "final_energy_cost": 1200, + "energy_increment": -150, + "base_casting_time": 100, + "final_casting_time": 35, + "casting_time_increment": -6, + "sound_type": "combat", + "sound_description": "zzzzaaaaaapp!", + "ignored_monster_species": [ "PSI_NULL" ], + "learn_spells": { "electrokinetic_kill_robot": 7, "electrokinetic_lightning_aura": 12, "electrokinetic_lightning_blast": 14 } + }, + { + "id": "electrokinetic_speed_boost", + "type": "SPELL", + "name": "[Ψ]Neuro-acceleration", + "description": "You can improve the efficiency of your or an ally's nervous system, allowing for much faster response times. This also increases the target's ability to retain information.", + "//": "This does not increase intelligence for balance reasons.", + "message": "You enhance your target's neurons.", + "teachable": false, + "valid_targets": [ "self", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "RANDOM_DURATION", "NO_EXPLOSION_SFX" ], + "difficulty": 6, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "effect_electrokinetic_speed_boost", + "extra_effects": [ { "id": "psionic_drained_difficulty_six", "hit_self": true } ], + "shape": "blast", + "min_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_speed_boost') * 1500) + 9000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_speed_boost') * 2000) + 45000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": 1, + "energy_source": "STAMINA", + "base_energy_cost": 6000, + "final_energy_cost": 2750, + "energy_increment": -185, + "base_casting_time": 165, + "final_casting_time": 75, + "casting_time_increment": -5.5, + "learn_spells": { "electrokinetic_revive": 12 } + }, + { + "id": "electrokinetic_kill_robot", + "type": "SPELL", + "name": "[Ψ]Short Circuit", + "description": "Cause a massive power surge within a robot or cyborg, disabling it.", + "message": "You channel a surge of power into your target!", + "teachable": false, + "valid_targets": [ "hostile", "ground", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX", "PERCENTAGE_DAMAGE" ], + "difficulty": 7, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "extra_effects": [ + { "id": "psionic_drained_difficulty_seven", "hit_self": true }, + { "id": "electrokinetic_kill_robot_sparks", "hit_self": false } + ], + "shape": "blast", + "damage_type": "electric", + "min_damage": 150, + "max_damage": 150, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_kill_robot') * 0.7) + 1) * (scaling_factor(u_val('intelligence') ) ), 50)" + ] + }, + "max_range": 40, + "energy_source": "STAMINA", + "base_energy_cost": 7500, + "final_energy_cost": 4500, + "energy_increment": -125, + "base_casting_time": 75, + "final_casting_time": 30, + "casting_time_increment": -2.5, + "targeted_monster_species": [ "CYBORG", "ROBOT" ], + "ignored_monster_species": [ "PSI_NULL", "YRAX_CONSTRUCT" ], + "learn_spells": { "electrokinetic_lightning_blast": 8 } + }, + { + "id": "electrokinetic_kill_robot_sparks", + "type": "SPELL", + "name": "[Ψ]Short Circuit Lightning Burst", + "description": "Cause a burst of sparks near a short circuited target. It's a bug if you see this.", + "message": "", + "teachable": false, + "valid_targets": [ "ground", "hostile", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "NO_PROJECTILE", "LOUD", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX" ], + "difficulty": 7, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "emit", + "effect_str": "emit_shock_cloud", + "shape": "blast", + "damage_type": "electric", + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_kill_robot') * 0.4) + 1) * (scaling_factor(u_val('intelligence') ) ), 50)" + ] + }, + "max_range": 50, + "sound_type": "combat", + "sound_description": "zzzzaaaaaapp!", + "targeted_monster_species": [ "CYBORG", "ROBOT" ], + "ignored_monster_species": [ "YRAX_CONSTRUCT", "PSI_NULL" ] + }, + { + "id": "electrokinetic_lightning_aura", + "type": "SPELL", + "name": "[Ψ]Galvanic Aura", + "description": "Charge the air around you with power, unleashing blasts at anyone nearby. This power does not discriminate between friend and foe. It will also protect you from EMP attacks while active.", + "message": "The air around you hums with power.", + "teachable": false, + "valid_targets": [ "self" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "RANDOM_DURATION", "NO_EXPLOSION_SFX" ], + "difficulty": 8, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "effect_str": "effect_electrokinetic_lightning_aura", + "extra_effects": [ { "id": "psionic_drained_difficulty_eight", "hit_self": true } ], + "shape": "blast", + "min_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_aura') * 1500) + 6000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_duration": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_aura') * 2500) + 25000) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "energy_source": "STAMINA", + "base_energy_cost": 9000, + "final_energy_cost": 4500, + "energy_increment": -200, + "base_casting_time": 150, + "final_casting_time": 55, + "casting_time_increment": -8.5, + "learn_spells": { "electrokinetic_lightning_blast": 8 } + }, + { + "id": "electrokinetic_lightning_blast", + "type": "SPELL", + "name": "[Ψ]Ion Blast", + "description": "Launch a blast of lightning at a nearby target, causing a secondary explosion at the location.", + "message": "You unleash an explosive blast of lightning.", + "teachable": false, + "valid_targets": [ "hostile", "ground", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "LOUD", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS" ], + "difficulty": 9, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "attack", + "extra_effects": [ + { "id": "psionic_drained_difficulty_nine", "hit_self": true }, + { "id": "electrokinetic_lightning_blast_trail", "hit_self": false } + ], + "shape": "blast", + "damage_type": "electric", + "min_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 2) + 25) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 4.5) + 90) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 0.7) + 2) * (scaling_factor(u_val('intelligence') ) ), 50)" + ] + }, + "max_range": 50, + "min_aoe": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 0.25) + 1) * (scaling_factor(u_val('intelligence') ) ), 15)" + ] + }, + "field_id": "fd_electricity", + "min_field_intensity": 3, + "max_field_intensity": 7, + "field_chance": 1, + "energy_source": "STAMINA", + "base_energy_cost": 8500, + "final_energy_cost": 4000, + "energy_increment": -150, + "base_casting_time": 150, + "final_casting_time": 65, + "casting_time_increment": -6, + "sound_type": "combat", + "sound_description": "zzzzaaaaaapp!", + "ignored_monster_species": [ "PSI_NULL" ] + }, + { + "id": "electrokinetic_lightning_blast_trail", + "type": "SPELL", + "name": "[Ψ]Ion Blast Trail", + "description": "This causes the lightning bolt at the target location. It's a bug if you have it directly.", + "message": "", + "teachable": false, + "valid_targets": [ "hostile", "ground", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "LOUD", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS" ], + "effect": "attack", + "shape": "line", + "damage_type": "electric", + "min_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 0.5) + 5) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "max_damage": { + "math": [ + "( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 1.5) + 25) * (scaling_factor(u_val('intelligence') ) )" + ] + }, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 0.3) + 2) * (scaling_factor(u_val('intelligence') ) ), 50)" + ] + }, + "max_range": 50, + "min_aoe": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_lightning_blast') * 0.06) + 0) * (scaling_factor(u_val('intelligence') ) ), 1)" + ] + }, + "field_id": "fd_electricity", + "min_field_intensity": 3, + "max_field_intensity": 7, + "field_chance": 1 + }, + { + "id": "electrokinetic_revive", + "type": "SPELL", + "name": "[Ψ]Revivification", + "description": "Manipulate the nervous system of a corpse, causing it to rise and protect you. This protection will only last a short time.", + "message": "You charge a nearby corpse with lightning.", + "teachable": false, + "valid_targets": [ "hostile", "ground", "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "CONCENTRATE", "NO_HANDS", "NO_LEGS" ], + "difficulty": 10, + "max_level": { "math": [ "int_to_level(1)" ] }, + "effect": "revive", + "effect_str": "ZOMBIE", + "extra_effects": [ + { "id": "psionic_drained_difficulty_ten", "hit_self": true }, + { "id": "electrokinetic_revive_charm", "hit_self": false }, + { "id": "electrokinetic_revive_heal", "hit_self": false }, + { "id": "electrokinetic_revive_debuff", "hit_self": false } + ], + "shape": "blast", + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_revive') * 0.25) + 2) * (scaling_factor(u_val('intelligence') ) ), 40)" + ] + }, + "max_range": 50, + "energy_source": "STAMINA", + "base_energy_cost": 10000, + "final_energy_cost": 4500, + "energy_increment": -150, + "base_casting_time": 250, + "final_casting_time": 125, + "casting_time_increment": -6, + "ignored_monster_species": [ "PSI_NULL", "ZOMBIE" ] + }, + { + "id": "electrokinetic_revive_charm", + "type": "SPELL", + "name": "[Ψ]Revive Charm", + "description": "This turns the revived monster to your side. It's a bug if you have it.", + "message": "", + "teachable": false, + "valid_targets": [ "hostile", "ground" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "SILENT", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_SFX" ], + "effect": "charm_monster", + "shape": "blast", + "min_damage": 1500, + "max_damage": 1500, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_revive') * 0.25) + 2) * (scaling_factor(u_val('intelligence') ) ), 40)" + ] + }, + "min_duration": 360000, + "max_duration": 360000, + "//": "Long duration doesn't matter since the below spells will ensure the target dies", + "targeted_monster_species": [ "ZOMBIE" ] + }, + { + "id": "electrokinetic_revive_heal", + "type": "SPELL", + "name": "[Ψ]Revive Heal", + "description": "This heals the revivified target so it doesn't die basically immediately after rising. It's a bug if you have it.", + "message": "", + "teachable": false, + "valid_targets": [ "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "SILENT", "NO_LEGS", "NO_HANDS", "PERCENTAGE_DAMAGE", "NO_EXPLOSION_SFX" ], + "effect": "attack", + "shape": "blast", + "min_damage": -50, + "max_damage": -80, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_revive') * 0.25) + 2) * (scaling_factor(u_val('intelligence') ) ), 40)" + ] + }, + "targeted_monster_species": [ "ZOMBIE" ] + }, + { + "id": "electrokinetic_revive_debuff", + "type": "SPELL", + "name": "[Ψ]Revive Debuff", + "description": "This puts a debuff on the revived monster that will make sure it eventually dies. It's a bug if you have it.", + "message": "", + "teachable": false, + "valid_targets": [ "ally" ], + "spell_class": "ELECTROKINETIC", + "skill": "metaphysics", + "flags": [ "PSIONIC", "SILENT", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_SFX" ], + "effect": "attack", + "effect_str": "effect_electrokin_revive_debuff", + "shape": "blast", + "min_duration": 360000, + "max_duration": 360000, + "min_range": { + "math": [ + "min( ( (u_val('spell_level', 'spell: electrokinetic_revive') * 0.25) + 2) * (scaling_factor(u_val('intelligence') ) ), 40)" + ] + }, + "targeted_monster_species": [ "ZOMBIE" ] + } +] diff --git a/data/mods/MindOverMatter/powers/electrokinesis_eocs.json b/data/mods/MindOverMatter/powers/electrokinesis_eocs.json new file mode 100644 index 0000000000000..1e5d05fe25419 --- /dev/null +++ b/data/mods/MindOverMatter/powers/electrokinesis_eocs.json @@ -0,0 +1,93 @@ +[ + { + "type": "effect_on_condition", + "id": "EOC_ELECTROKIN_PERSONAL_BATTERY_INITIATE", + "condition": { "not": { "u_has_effect": "effect_electrokin_personal_battery" } }, + "effect": [ + { "u_message": "The hair on your arms stands up on end.", "type": "good" }, + { "run_eocs": [ "EOC_POWER_MAINTENANCE_PLUS_ONE", "EOC_ELECTROKIN_PERSONAL_BATTERY_SWITCHER" ] }, + { "u_add_effect": "effect_electrokin_personal_battery", "duration": "PERMANENT" }, + { "u_cast_spell": { "id": "psionic_drained_difficulty_three", "hit_self": true } }, + { + "queue_eocs": "EOC_ELECTROKIN_PERSONAL_BATTERY_DRAIN", + "time_in_future": [ + { + "math": [ + "min( ( ( (u_val('spell_level', 'spell: electrokinetic_personal_batter') * 45 ) + 600) * (scaling_factor(u_val('intelligence') ) ) ), 14400)" + ] + }, + { + "math": [ + "min( ( ( (u_val('spell_level', 'spell: electrokinetic_personal_battery') * 90 ) + 1800) * (scaling_factor(u_val('intelligence') ) ) ), 14400)" + ] + } + ] + } + ], + "false_effect": [ + { "u_remove_item_with": "electrokinetic_ups_1" }, + { "u_remove_item_with": "electrokinetic_ups_2" }, + { "u_remove_item_with": "electrokinetic_ups_3" }, + { "u_remove_item_with": "electrokinetic_ups_4" }, + { "u_remove_item_with": "electrokinetic_ups_5" }, + { "u_remove_item_with": "electrokinetic_ups_6" }, + { "u_lose_effect": "effect_electrokin_personal_battery" }, + { "run_eocs": "EOC_POWER_MAINTENANCE_MINUS_ONE" } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTROKIN_PERSONAL_BATTERY_SWITCHER", + "effect": { + "switch": { "math": [ "u_val('spell_level', 'spell: electrokinetic_personal_battery')" ] }, + "cases": [ + { "case": 0, "effect": [ { "u_spawn_item": "electrokinetic_ups_1", "suppress_message": true, "force_equip": true } ] }, + { + "case": 4, + "effect": [ { "u_spawn_item": "electrokinetic_ups_2", "suppress_message": true, "force_equip": true } ] + }, + { + "case": 8, + "effect": [ { "u_spawn_item": "electrokinetic_ups_3", "suppress_message": true, "force_equip": true } ] + }, + { + "case": 12, + "effect": [ { "u_spawn_item": "electrokinetic_ups_4", "suppress_message": true, "force_equip": true } ] + }, + { + "case": 16, + "effect": [ { "u_spawn_item": "electrokinetic_ups_5", "suppress_message": true, "force_equip": true } ] + }, + { + "case": 20, + "effect": [ { "u_spawn_item": "electrokinetic_ups_6", "suppress_message": true, "force_equip": true } ] + } + ] + } + }, + { + "type": "effect_on_condition", + "id": "EOC_ELECTROKIN_PERSONAL_BATTERY_DRAIN", + "condition": { "u_has_effect": "effect_electrokin_personal_battery" }, + "effect": [ + { "u_cast_spell": { "id": "psionic_maintenance_drained_difficulty_three", "hit_self": true } }, + { "run_eocs": "EOC_POWER_MAINTENANCE_CONCENTRATION_CHECK" }, + { + "queue_eocs": "EOC_ELECTROKIN_PERSONAL_BATTERY_DRAIN", + "time_in_future": [ + { + "math": [ + "min( ( ( (u_val('spell_level', 'spell: electrokinetic_personal_batter') * 45 ) + 600) * (scaling_factor(u_val('intelligence') ) ) ), 14400)" + ] + }, + { + "math": [ + "min( ( ( (u_val('spell_level', 'spell: electrokinetic_personal_battery') * 90 ) + 1800) * (scaling_factor(u_val('intelligence') ) ) ), 14400)" + ] + } + ] + } + ], + "false_effect": [ ] + } +] diff --git a/data/mods/MindOverMatter/recipes/practice/electrokinesis_practice.json b/data/mods/MindOverMatter/recipes/practice/electrokinesis_practice.json new file mode 100644 index 0000000000000..89181c7d857f8 --- /dev/null +++ b/data/mods/MindOverMatter/recipes/practice/electrokinesis_practice.json @@ -0,0 +1,659 @@ +[ + { + "id": "electrokinesis_practice", + "type": "nested_category", + "//": "XP for level 12 is 49417, for level 10 is 35279, for level 7 is 20514", + "activity_level": "LIGHT_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_METAPHYSICS", + "name": "contemplation: electrokinesis", + "description": "Recipes related to practicing electrokinesis.", + "skill_used": "metaphysics", + "nested_category_data": [ + "practice_electrokinetic_see_electric", + "practice_electrokinetic_shock_touch", + "practice_electrokinetic_zap_enemies", + "practice_electrokinetic_melee_attacks", + "practice_electrokinetic_personal_battery", + "practice_electrokinetic_paralysis", + "practice_electrokinetic_lightning_bolt", + "practice_electrokinetic_speed_boost", + "practice_electrokinetic_kill_robot", + "practice_electrokinetic_lightning_aura", + "practice_electrokinetic_lightning_blast", + "practice_electrokinetic_revive" + ], + "difficulty": 1 + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: spark sight", + "id": "practice_electrokinetic_see_electric", + "description": "Contemplate your powers and improve your ability to detect electrical creatures or robots.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 0, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_SPARK_SIGHT", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_see_electric')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_see_electric')", "<=", "(difficulty_one_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_see_electric')", "+=", "(contemplation_factor(1))" ] + }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(1)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_SPARK_SIGHT_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_see_electric')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: shock touch", + "id": "practice_electrokinetic_shock_touch", + "description": "Contemplate your powers and improve your ability to build up a charge in your hand and unleash it.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 0, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_SHOCK_TOUCH", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_shock_touch')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_shock_touch')", "<=", "(difficulty_one_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { "math": [ "u_val('spell_exp', 'spell: electrokinetic_shock_touch')", "+=", "(contemplation_factor(1))" ] }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(1)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_SHOCK_TOUCH_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_shock_touch')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: electrical discharge", + "id": "practice_electrokinetic_zap_enemies", + "description": "Contemplate your powers and improve your ability to electrocute those who attack you.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 1, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_ZAP_ENEMIES", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_zap_enemies')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_zap_enemies')", "<=", "(difficulty_two_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { "math": [ "u_val('spell_exp', 'spell: electrokinetic_zap_enemies')", "+=", "(contemplation_factor(1))" ] }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(2)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_ZAP_ENEMIES_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_zap_enemies')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: voltaic strikes", + "id": "practice_electrokinetic_melee_attacks", + "description": "Contemplate your powers and improve your ability to channel electrical current through your melee attacks.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 2, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_MELEE_ATTACKS", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_melee_attacks')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_melee_attacks')", "<=", "(difficulty_three_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_melee_attacks')", "+=", "(contemplation_factor(1))" ] + }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(3)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_MELEE_ATTACKS_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_melee_attacks')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: electron overflow", + "id": "practice_electrokinetic_personal_battery", + "description": "Contemplate your powers and improve your ability to fuel personal electronic devices with your powers.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 2, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTRO_PERSONAL_BATTERY", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_personal_battery')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_personal_battery')", "<=", "(difficulty_three_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_personal_battery')", "+=", "(contemplation_factor(1))" ] + }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(3)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTRO_PERSONAL_BATTERY_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_personal_battery')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: neural spasms", + "id": "practice_electrokinetic_paralysis", + "description": "Contemplate your powers and improve your ability to paralyze your targets.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 3, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_PARALYSIS", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_paralysis')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_paralysis')", "<=", "(difficulty_four_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { "math": [ "u_val('spell_exp', 'spell: electrokinetic_paralysis')", "+=", "(contemplation_factor(1))" ] }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(4)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_PARALYSIS_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_paralysis')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: electrocutioner", + "id": "practice_electrokinetic_lightning_bolt", + "description": "Contemplate your powers and improve your ability to unleash blasts of lightning.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 4, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_LIGHTNING_BOLT", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_bolt')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_lightning_bolt')", "<=", "(difficulty_five_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_lightning_bolt')", "+=", "(contemplation_factor(1))" ] + }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(5)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_LIGHTNING_BOLT_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_bolt')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: neuro-acceleration", + "id": "practice_electrokinetic_speed_boost", + "description": "Contemplate your powers and improve your ability to increase your or an ally's speed.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 5, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_SPEED_BOOST", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_speed_boost')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_speed_boost')", "<=", "(difficulty_six_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { "math": [ "u_val('spell_exp', 'spell: electrokinetic_speed_boost')", "+=", "(contemplation_factor(1))" ] }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(6)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_SPEED_BOOST_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_speed_boost')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: short circuit", + "id": "practice_electrokinetic_kill_robot", + "description": "Contemplate your powers and improve your ability to overload robots and cyborgs.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 6, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_KILL_ROBOT", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_kill_robot')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_kill_robot')", "<=", "(difficulty_seven_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { "math": [ "u_val('spell_exp', 'spell: electrokinetic_kill_robot')", "+=", "(contemplation_factor(1))" ] }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(7)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_KILL_ROBOT_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_kill_robot')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: galvanic aura", + "id": "practice_electrokinetic_lightning_aura", + "description": "Contemplate your powers and improve your ability to charge the nearby air to blast your enemies.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 7, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_LIGHTNING_AURA", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_aura')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_lightning_aura')", "<=", "(difficulty_eight_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_lightning_aura')", "+=", "(contemplation_factor(1))" ] + }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(8)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_LIGHTNING_AURA_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_aura')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: ion blast", + "id": "practice_electrokinetic_lightning_blast", + "description": "Contemplate your powers and improve your ability to unleash enormous blasts of lightning.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 8, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_LIGHTNING_BLAST", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_blast')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_lightning_blast')", "<=", "(difficulty_nine_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_lightning_blast')", "+=", "(contemplation_factor(1))" ] + }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(9)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_LIGHTNING_BLAST_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_lightning_blast')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "name": "contemplation: revivification", + "id": "practice_electrokinetic_revive", + "description": "Contemplate your powers and improve your ability to make the dead move again briefly.", + "category": "CC_*", + "subcategory": "CSC_*_NESTED", + "skill_used": "metaphysics", + "difficulty": 9, + "time": "30 m", + "autolearn": false, + "tools": [ [ [ "matrix_crystal_drained", -1 ] ] ], + "components": [ [ [ "matrix_crystal_electrokin_dust", 1 ] ] ], + "flags": [ "SECRET", "BLIND_HARD" ], + "result_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_REVIVE", + "condition": { + "and": [ + { "math": [ "u_val('spell_level', 'spell: electrokinetic_revive')", ">=", "1" ] }, + { + "math": [ "u_val('spell_exp', 'spell: electrokinetic_revive')", "<=", "(difficulty_ten_contemplation(1))" ] + } + ] + }, + "effect": [ + { "u_message": "You spend some time meditating and contemplating your powers and emerge with new knowledge." }, + { "math": [ "u_val('spell_exp', 'spell: electrokinetic_revive')", "+=", "(contemplation_factor(1))" ] }, + { "math": [ "u_val('vitamin', 'name:vitamin_psionic_drain')", "+=", "rng( 0,2 )" ] }, + { "math": [ "u_val('stored_kcal')", "-=", "psionics_contemplation_kcal_cost(10)" ] }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": { + "run_eocs": [ + { + "id": "EOC_PRACTICE_ELECTROKIN_REVIVE_FALSE", + "condition": { "math": [ "u_val('spell_level', 'spell: electrokinetic_revive')", ">=", "1" ] }, + "effect": [ + { "u_message": "Your knowledge of your powers is so deep that mere contemplation is of no further use to you." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ], + "false_effect": [ + { "u_message": "Without even a basic understanding of the power, your meditation is nothing but idle musings." }, + { "run_eocs": "EOC_PSI_PRACTICE_FOCUS_MOD" } + ] + } + ] + } + } + ] + } +] diff --git a/doc/JSON_FLAGS.md b/doc/JSON_FLAGS.md index c452d30e22e8e..26ff91a5d5f74 100644 --- a/doc/JSON_FLAGS.md +++ b/doc/JSON_FLAGS.md @@ -383,6 +383,7 @@ Some armor flags, such as `WATCH` and `ALARMCLOCK` are compatible with other ite - ```DOWNED_RECOVERY``` Always has 50% chance to recover from downing, regardless of limb scores / stats. - ```ECTOTHERM``` For ectothermic mutations, like `COLDBLOOD4` and `DRAGONBLOOD3` (Black Dragon from Magiclysm). - ```ELECTRIC_IMMUNE``` You are immune to electric damage. +- ```EMP_IMMUNE`` You bionic power cannot be drained and your vulnerable electronics cannot be broken during an EMP blast. - ```ENHANCED_VISION``` Increases the scouting range, similarly to `ZOOM` item flag - ```EYE_MEMBRANE``` Lets you see underwater. - ```FEATHER_FALL``` You are immune to fall damage. diff --git a/src/explosion.cpp b/src/explosion.cpp index 669d033decb16..a2575e8000368 100644 --- a/src/explosion.cpp +++ b/src/explosion.cpp @@ -80,6 +80,7 @@ static const itype_id itype_e_handcuffs( "e_handcuffs" ); static const itype_id itype_mininuke_act( "mininuke_act" ); static const itype_id itype_rm13_armor_on( "rm13_armor_on" ); +static const json_character_flag json_flag_EMP_IMMUNE( "EMP_IMMUNE" ); static const json_character_flag json_flag_GLARE_RESIST( "GLARE_RESIST" ); static const mon_flag_str_id mon_flag_ELECTRIC_FIELD( "ELECTRIC_FIELD" ); @@ -750,7 +751,8 @@ void emp_blast( const tripoint &p ) } if( player_character.posx() == p.x && player_character.posy() == p.y && player_character.posz() == p.z ) { - if( player_character.get_power_level() > 0_kJ ) { + if( player_character.get_power_level() > 0_kJ && + !player_character.has_flag( json_flag_EMP_IMMUNE ) ) { add_msg( m_bad, _( "The EMP blast drains your power." ) ); int max_drain = ( player_character.get_power_level() > 1000_kJ ? 1000 : units::to_kilojoule( player_character.get_power_level() ) ); @@ -770,7 +772,8 @@ void emp_blast( const tripoint &p ) for( item_location &it : player_character.all_items_loc() ) { // Render any electronic stuff in player's possession non-functional if( it->has_flag( flag_ELECTRONIC ) && !it->is_broken() && - get_option( "EMP_DISABLE_ELECTRONICS" ) ) { + get_option( "EMP_DISABLE_ELECTRONICS" ) && + !player_character.has_flag( json_flag_EMP_IMMUNE ) ) { add_msg( m_bad, _( "The EMP blast fries your %s!" ), it->tname() ); it->deactivate(); it->set_flag( flag_ITEM_BROKEN );