Skip to content

Commit

Permalink
[MOM] Add some Teleporter Powers (CleverRaven#78903)
Browse files Browse the repository at this point in the history
* Add External Gateway Power + Infrastructure

* Add reactive displacement concentration power

* Add Loci Establishment + Loci Technique Powers

* help messages for loci technique use

* Adjust external gateway power to teleport everything next to player to location and add force_safe as a teleport option

* styling pass

* Change external gateway name to dilated gateway to better match function

* extra wording changes

* Add reactive displacement to feral teleporters tier 2+3

* Give triffid teleporter power too

* increase stamina cost for dilated gateway
  • Loading branch information
b3brodie authored Jan 5, 2025
1 parent 500df91 commit 76d49c0
Show file tree
Hide file tree
Showing 19 changed files with 1,115 additions and 69 deletions.
18 changes: 18 additions & 0 deletions data/mods/MindOverMatter/effectoncondition/eoc_learn_recipes.json
Original file line number Diff line number Diff line change
Expand Up @@ -951,6 +951,12 @@
"condition": { "and": [ { "u_has_trait": "TELEPORTER" }, { "math": [ "u_spell_level('teleport_displacement') >= 0" ] } ] },
"effect": [ { "u_learn_recipe": "practice_teleport_displacement" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_CHECK_GAMEBEGIN_TELEPORTER_RECIPE_REACTIVE_DISPLACEMENT",
"condition": { "and": [ { "u_has_trait": "TELEPORTER" }, { "math": [ "u_spell_level('teleport_reactive_displacement') >= 0" ] } ] },
"effect": [ { "u_learn_recipe": "practice_teleport_reactive_displacement" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_CHECK_GAMEBEGIN_TELEPORTER_RECIPE_COLLAPSE",
Expand All @@ -969,6 +975,18 @@
"condition": { "and": [ { "u_has_trait": "TELEPORTER" }, { "math": [ "u_spell_level('teleport_banish') >= 0" ] } ] },
"effect": [ { "u_learn_recipe": "practice_teleport_banish" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_CHECK_GAMEBEGIN_TELEPORTER_RECIPE_LOCI_ESTABLISHMENT",
"condition": { "and": [ { "u_has_trait": "TELEPORTER" }, { "math": [ "u_spell_level('teleport_loci_establishment') >= 0" ] } ] },
"effect": [ { "u_learn_recipe": "practice_teleport_loci_establishment" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_CHECK_GAMEBEGIN_TELEPORTER_RECIPE_LOCI_TECHNIQUE",
"condition": { "and": [ { "u_has_trait": "TELEPORTER" }, { "math": [ "u_spell_level('teleport_loci_technique') >= 0" ] } ] },
"effect": [ { "u_learn_recipe": "practice_teleport_loci_technique" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_CHECK_GAMEBEGIN_TELEPORTER_RECIPE_GATEWAY",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@
"EOC_TELEPATH_REMOVE_SENSE_MINDS",
"EOC_TELEPORT_REMOVE_EPHEMERAL_WALK",
"EOC_TELEPORT_REMOVE_STRIDE",
"EOC_TELEPORT_REMOVE_REACTIVE_DISPLACEMENT",
"EOC_VITAKIN_REMOVE_SLOW_BLEEDING",
"EOC_VITAKIN_REMOVE_CONCENTRATED_HEALING",
"EOC_VITAKIN_REMOVE_HEALTH_POWER",
Expand Down Expand Up @@ -409,6 +410,8 @@
"EOC_TELEPATH_REMOVE_SENSE_MINDS",
"EOC_TELEPORT_REMOVE_EPHEMERAL_WALK",
"EOC_TELEPORT_REMOVE_STRIDE",
"EOC_TELEPORT_REMOVE_REACTIVE_DISPLACEMENT",
"EOC_TELEPORT_REMOVE_LOCI_ESTABLISHMENT",
"EOC_VITAKIN_REMOVE_SLOW_BLEEDING",
"EOC_VITAKIN_REMOVE_CONCENTRATED_HEALING",
"EOC_VITAKIN_REMOVE_HEALTH_POWER",
Expand Down Expand Up @@ -469,6 +472,8 @@
"Sense Minds",
"Ephemeral Walk",
"Extended Stride",
"Reactive Displacement",
"Loci Establishment",
"Coagulation",
"Leukocyte Accumulation",
"Healthy Glow",
Expand Down Expand Up @@ -545,6 +550,7 @@
"EOC_TELEPATH_REMOVE_SENSE_MINDS",
"EOC_TELEPORT_REMOVE_EPHEMERAL_WALK",
"EOC_TELEPORT_REMOVE_STRIDE",
"EOC_TELEPORT_REMOVE_REACTIVE_DISPLACEMENT",
"EOC_VITAKIN_REMOVE_SLOW_BLEEDING",
"EOC_VITAKIN_REMOVE_CONCENTRATED_HEALING",
"EOC_VITAKIN_REMOVE_HEALTH_POWER",
Expand Down
9 changes: 9 additions & 0 deletions data/mods/MindOverMatter/effects/effects_monster.json
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,15 @@
"show_in_info": true,
"max_intensity": 20
},
{
"type": "effect_type",
"id": "effect_teleport_reactive_displacement_monster",
"name": [ "Reactive Displacement" ],
"desc": [ "You will automatically teleport enemies that strike you away from yourself." ],
"show_in_info": true,
"rating": "good",
"enchantments": [ { "hit_me_effect": [ { "id": "teleport_reactive_displacement_monster_teleport" } ] } ]
},
{
"type": "effect_type",
"id": "effect_riftwalker_teleport",
Expand Down
2 changes: 2 additions & 0 deletions data/mods/MindOverMatter/effects/effects_penalty.json
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,8 @@
"effect_telepath_network_effect",
"effect_teleport_ephemeral_walk",
"effect_teleport_stride",
"effect_teleport_reactive_displacement",
"effect_teleport_loci_establishment",
"effect_vita_health",
"effect_vitakin_purge_rads",
"effect_vitakin_purge_rads_sideeffects",
Expand Down
17 changes: 17 additions & 0 deletions data/mods/MindOverMatter/effects/effects_psionic.json
Original file line number Diff line number Diff line change
Expand Up @@ -2139,6 +2139,23 @@
}
]
},
{
"type": "effect_type",
"id": "effect_teleport_reactive_displacement",
"name": [ "Reactive Displacement" ],
"desc": [ "You will automatically teleport enemies that strike you away from yourself." ],
"remove_message": "The surrounding matter feels real again.",
"rating": "good",
"enchantments": [ { "hit_me_effect": [ { "id": "teleport_reactive_displacement_teleport" } ] } ]
},
{
"type": "effect_type",
"id": "effect_teleport_loci_establishment",
"name": [ "Loci Establishment" ],
"desc": [ "You are concentrating on your locus. You can teleport there at will with the [Ψ]Loci Technique." ],
"remove_message": "You've forgotten your locus!.",
"rating": "good"
},
{
"type": "effect_type",
"id": "effect_teleport_slow",
Expand Down
7 changes: 6 additions & 1 deletion data/mods/MindOverMatter/hobbies.json
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,9 @@
{ "id": "teleport_displacement", "level": 5 },
{ "id": "teleport_stride", "level": 8 },
{ "id": "teleport_phase", "level": 11 },
{ "id": "teleport_farstep", "level": 5 }
{ "id": "teleport_farstep", "level": 5 },
{ "id": "teleport_loci_establishment", "level": 2 },
{ "id": "teleport_loci_technique", "level": 2 }
]
},
{
Expand All @@ -438,12 +440,15 @@
{ "id": "teleport_blink", "level": 11 },
{ "id": "teleport_slow", "level": 12 },
{ "id": "teleport_displacement", "level": 10 },
{ "id": "teleport_reactive_displacement", "level": 5 },
{ "id": "teleport_stride", "level": 12 },
{ "id": "teleport_phase", "level": 12 },
{ "id": "teleport_ephemeral_walk", "level": 4 },
{ "id": "teleport_collapse", "level": 7 },
{ "id": "teleport_farstep", "level": 10 },
{ "id": "teleport_banish", "level": 6 },
{ "id": "teleport_loci_establishment", "level": 5 },
{ "id": "teleport_loci_technique", "level": 5 },
{ "id": "teleport_gateway", "level": 4 }
]
},
Expand Down
26 changes: 26 additions & 0 deletions data/mods/MindOverMatter/monsters/feral_psychics.json
Original file line number Diff line number Diff line change
Expand Up @@ -1249,6 +1249,19 @@
"miss_msg_u": "%s reaches for you but you avoid their touch!",
"miss_msg_npc": "%s reaches for <npcname> but they dodge!"
},
{
"id": "psi_porter2_reactive_displacement",
"type": "spell",
"spell_data": { "id": "teleporter_reactive_displacement_monster" },
"cooldown": 1,
"condition": {
"and": [
{ "not": { "u_has_flag": "NO_PSIONICS" } },
{ "not": { "u_has_effect": "effect_teleport_reactive_displacement_monster" } }
]
},
"monster_message": "The space around %1$s distorts."
},
{
"type": "leap",
"cooldown": { "math": [ "1 + rand(2)" ] },
Expand Down Expand Up @@ -1314,6 +1327,19 @@
"condition": { "not": { "u_has_flag": "NO_PSIONICS" } },
"monster_message": "%1$s touches %3$s and the world around %3$s wavers."
},
{
"id": "psi_porter3_reactive_displacement",
"type": "spell",
"spell_data": { "id": "teleporter_reactive_displacement_monster" },
"cooldown": 1,
"condition": {
"and": [
{ "not": { "u_has_flag": "NO_PSIONICS" } },
{ "not": { "u_has_effect": "effect_teleport_reactive_displacement_monster" } }
]
},
"monster_message": "The space around %1$s distorts."
},
{
"type": "leap",
"cooldown": 1,
Expand Down
49 changes: 49 additions & 0 deletions data/mods/MindOverMatter/monsters/monsters_spells.json
Original file line number Diff line number Diff line change
Expand Up @@ -1158,6 +1158,55 @@
"casting_time_increment": -4,
"ignored_monster_species": [ "PSI_NULL" ]
},
{
"type": "SPELL",
"id": "teleporter_reactive_displacement_monster",
"name": { "str": "Reactive Displacement Monster enemy check", "//~": "NO_I18N" },
"description": { "str": "Preps for using Reactive Displaccement when a hostile target is detected.", "//~": "NO_I18N" },
"flags": [ "SILENT", "NO_HANDS", "NO_LEGS", "MUST_HAVE_CLASS_TO_LEARN" ],
"valid_targets": [ "hostile" ],
"max_level": 1,
"effect": "attack",
"extra_effects": [ { "id": "teleporter_reactive_displacement_monster_self", "hit_self": true } ],
"shape": "blast",
"min_range": 60,
"max_range": 60
},
{
"type": "SPELL",
"id": "teleporter_reactive_displacement_monster_self",
"name": { "str": "Reactive Displacement Monster give Effect", "//~": "NO_I18N" },
"description": { "str": "Grants the Reactive Displacement effect to a monster.", "//~": "NO_I18N" },
"flags": [ "NO_HANDS", "NO_LEGS", "MUST_HAVE_CLASS_TO_LEARN", "RANDOM_DURATION" ],
"valid_targets": [ "self" ],
"max_level": 1,
"effect": "attack",
"effect_str": "effect_teleport_reactive_displacement_monster",
"shape": "blast",
"min_duration": 12000,
"max_duration": 42000
},
{
"id": "teleport_reactive_displacement_monster_teleport",
"type": "SPELL",
"name": { "str": "Reactive Displacement Monster Teleport", "//~": "NO_I18N" },
"description": { "str": "Teleports Attackers.", "//~": "NO_I18N" },
"teachable": false,
"valid_targets": [ "ally", "hostile" ],
"spell_class": "TELEPORTER",
"skill": "metaphysics",
"flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX" ],
"difficulty": 0,
"max_level": 0,
"effect": "attack",
"shape": "blast",
"damage_type": "psi_teleporter_teleporting_damage",
"min_damage": 1,
"max_damage": 1,
"min_range": 1,
"energy_source": "NONE",
"ignored_monster_species": [ "PSI_NULL" ]
},
{
"id": "teleporter_breach_monster",
"type": "SPELL",
Expand Down
13 changes: 13 additions & 0 deletions data/mods/MindOverMatter/monsters/triffids.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,19 @@
"condition": { "not": { "u_has_flag": "NO_PSIONICS" } },
"message": "%1$s vanishes and reappears elsewhere!"
},
{
"id": "psi_porter3_reactive_displacement",
"type": "spell",
"spell_data": { "id": "teleporter_reactive_displacement_monster" },
"cooldown": 1,
"condition": {
"and": [
{ "not": { "u_has_flag": "NO_PSIONICS" } },
{ "not": { "u_has_effect": "effect_teleport_reactive_displacement_monster" } }
]
},
"monster_message": "The space around %1$s distorts."
},
{
"id": "psi_triffid_teleporter_ally_teleport",
"type": "spell",
Expand Down
111 changes: 110 additions & 1 deletion data/mods/MindOverMatter/powers/learning_eocs/teleportation.json
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,40 @@
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_TELEPORT_LEARNING_REACTIVE_DISPLACEMENT",
"recurrence": [
{ "math": [ "jmath_teleportation_learning_eocs_modifiers(global_tier_two_power_learning_time_low)" ] },
{ "math": [ "jmath_teleportation_learning_eocs_modifiers(global_tier_two_power_learning_time_high)" ] }
],
"condition": {
"and": [
{ "u_has_trait": "TELEPORTER" },
{ "math": [ "u_vitamin('vitamin_psi_learning_counter') == 1" ] },
{
"or": [
{ "test_eoc": "EOC_CONDITION_ODDS_OF_RANDOM_TIER_TWO_POWER_INSIGHT" },
{ "and": [ { "math": [ "u_spell_level('teleport_displacement') >= 5" ] } ] }
]
},
{ "test_eoc": "EOC_PSI_LEARNING_BANNED_EFFECTS" },
{ "math": [ "u_spell_level('teleport_reactive_displacement') <= 0" ] },
{ "not": { "u_know_recipe": "practice_teleport_reactive_displacement" } }
]
},
"deactivate_condition": {
"or": [ { "not": { "u_has_trait": "TELEPORTER" } }, { "math": [ "u_spell_level('teleport_reactive_displacement') >= 1" ] } ]
},
"effect": [
{ "math": [ "u_vitamin('vitamin_psi_learning_counter') = 0" ] },
{ "u_learn_recipe": "practice_teleport_reactive_displacement" },
{
"u_message": "Use of your powers has led to an insight. You could automatically teleport away attacking enemies, if you can figure out the technique.",
"popup": true
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_TELEPORT_LEARNING_COLLAPSE",
Expand Down Expand Up @@ -293,6 +327,42 @@
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_TELEPORT_LEARNING_LOCI_ESTABLISHMENT",
"recurrence": [
{ "math": [ "jmath_teleportation_learning_eocs_modifiers(global_tier_two_power_learning_time_low)" ] },
{ "math": [ "jmath_teleportation_learning_eocs_modifiers(global_tier_two_power_learning_time_high)" ] }
],
"condition": {
"and": [
{ "u_has_trait": "TELEPORTER" },
{ "math": [ "u_vitamin('vitamin_psi_learning_counter') == 1" ] },
{
"or": [
{ "test_eoc": "EOC_CONDITION_ODDS_OF_RANDOM_TIER_TWO_POWER_INSIGHT" },
{
"and": [ { "math": [ "u_spell_level('teleport_stride') >= 6" ] }, { "math": [ "u_spell_level('teleport_farstep') >= 6" ] } ]
}
]
},
{ "test_eoc": "EOC_PSI_LEARNING_BANNED_EFFECTS" },
{ "math": [ "u_spell_level('teleport_loci_establishment') <= 0" ] },
{ "not": { "u_know_recipe": "practice_teleport_loci_establishment" } }
]
},
"deactivate_condition": {
"or": [ { "not": { "u_has_trait": "TELEPORTER" } }, { "math": [ "u_spell_level('teleport_loci_establishment') >= 1" ] } ]
},
"effect": [
{ "math": [ "u_vitamin('vitamin_psi_learning_counter') = 0" ] },
{ "u_learn_recipe": "practice_teleport_loci_establishment" },
{
"u_message": "Use of your powers has led to an insight. You could concentrate on a specific location and teleport there at will.",
"popup": true
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_TELEPORT_LEARNING_GATEWAY",
Expand All @@ -308,7 +378,10 @@
"or": [
{ "test_eoc": "EOC_CONDITION_ODDS_OF_RANDOM_TIER_THREE_POWER_INSIGHT" },
{
"and": [ { "math": [ "u_spell_level('teleport_stride') >= 10" ] }, { "math": [ "u_spell_level('teleport_farstep') >= 10" ] } ]
"and": [
{ "math": [ "u_spell_level('teleport_loci_establishment') >= 6" ] },
{ "math": [ "u_spell_level('teleport_farstep') >= 10" ] }
]
}
]
},
Expand All @@ -327,6 +400,42 @@
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_TELEPORT_LEARNING_dilated_gateway",
"recurrence": [
{ "math": [ "jmath_teleportation_learning_eocs_modifiers(global_tier_three_power_learning_time_low)" ] },
{ "math": [ "jmath_teleportation_learning_eocs_modifiers(global_tier_three_power_learning_time_high)" ] }
],
"condition": {
"and": [
{ "u_has_trait": "TELEPORTER" },
{ "math": [ "u_vitamin('vitamin_psi_learning_counter') == 1" ] },
{
"or": [
{ "test_eoc": "EOC_CONDITION_ODDS_OF_RANDOM_TIER_THREE_POWER_INSIGHT" },
{
"and": [ { "math": [ "u_spell_level('teleport_gateway') >= 8" ] }, { "math": [ "u_spell_level('teleport_banish') >= 2" ] } ]
}
]
},
{ "test_eoc": "EOC_PSI_LEARNING_BANNED_EFFECTS" },
{ "math": [ "u_spell_level('teleport_dilated_gateway') <= 0" ] },
{ "not": { "u_know_recipe": "practice_teleport_dilated_gateway" } }
]
},
"deactivate_condition": {
"or": [ { "not": { "u_has_trait": "TELEPORTER" } }, { "math": [ "u_spell_level('teleport_dilated_gateway') >= 1" ] } ]
},
"effect": [
{ "math": [ "u_vitamin('vitamin_psi_learning_counter') = 0" ] },
{ "u_learn_recipe": "practice_teleport_dilated_gateway" },
{
"u_message": "Use of your powers has led to an insight. Just as you can teleport yourself to memorized locations, you can also teleport other beings to those same locations alongside you.",
"popup": true
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_TELEPORT_LEARNING_BREACH",
Expand Down
Loading

0 comments on commit 76d49c0

Please sign in to comment.