Skip to content

Commit

Permalink
[Xedra Evolved] Add Homullus mutations (#72205)
Browse files Browse the repository at this point in the history
* Initial commit

* Update data/mods/Xedra_Evolved/mutations/paraclesians/homullus_mutations.json

Co-authored-by: Anton Simakov <[email protected]>

* Update data/mods/Xedra_Evolved/mutations/paraclesians/homullus_mutations.json

Co-authored-by: Anton Simakov <[email protected]>

* Update data/mods/Xedra_Evolved/mutations/paraclesians/homullus_mutations.json

Co-authored-by: Anton Simakov <[email protected]>

* Add +bionic regen mutations

* Move in_civilization conditions to one EoC, reference elsewhere

* Add Echoes of the Streets recurrence EoC

* Finalize in_city checker EoC

* or -> and

* Add A Face in the Crowd

* HUMAN but not ZOMBIE

* Add No Trace Yet I Wish and Backstage

* Add Running to Marathon

* Final fixes

* Increase anger relation reduction

---------

Co-authored-by: Anton Simakov <[email protected]>
  • Loading branch information
Standing-Storm and GuardianDll authored Mar 7, 2024
1 parent de75029 commit d861825
Show file tree
Hide file tree
Showing 5 changed files with 441 additions and 8 deletions.
14 changes: 14 additions & 0 deletions data/mods/Xedra_Evolved/effects/effects.json
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,20 @@
{ "values": [ { "value": "MOTION_VISION_RANGE", "add": { "math": [ "u_val('strength') + u_val('perception')" ] } } ] }
]
},
{
"type": "effect_type",
"id": "telepathic_ignorance",
"//": "id is hardcoded, used by the Homullus spell A Face in the Crowd",
"name": [ "" ],
"desc": [ "" ]
},
{
"type": "effect_type",
"id": "telepathic_ignorance_self",
"//": "id is hardcoded, used by the Homullus spell A Face in the Crowd",
"name": [ "" ],
"desc": [ "" ]
},
{
"type": "effect_type",
"id": "effect_salamander_levitation",
Expand Down
110 changes: 110 additions & 0 deletions data/mods/Xedra_Evolved/mutations/paraclesians/homullus_eocs.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,107 @@
[
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_IN_CIVILIZATION_CHECKER_CONDITION",
"//": "map_in_city cannot check talker location directly, so this is a substitute for enchantment conditions until that is possible. It does work on random roads in the middle of nowhere, but that's not such a bad thing.",
"condition": {
"or": [
{
"or": [
{ "u_near_om_location": "FACTION_CAMP_ANY", "range": 6 },
{ "u_near_om_location": "evac_center_18", "range": 6 },
{ "u_near_om_location": "isolated_road_field_0", "range": 6 },
{ "u_near_om_location": "lumbermill_0_0_ocu", "range": 6 },
{ "u_near_om_location": "ranch_camp_41", "range": 6 },
{ "u_near_om_location": "godco_5", "range": 6 },
{ "u_near_om_location": "smallscrapyard_ocu", "range": 4 },
{ "u_near_om_location": "robofachq_surface_entrance", "range": 6 }
]
},
{
"and": [
{
"or": [
{ "u_near_om_location": "road_curved", "range": 3 },
{ "u_near_om_location": "road_four_way", "range": 3 },
{ "u_near_om_location": "road_tee", "range": 3 },
{ "u_near_om_location": "road_straight", "range": 3 },
{ "u_near_om_location": "road_end", "range": 3 },
{ "u_near_om_location": "road_sw", "range": 3 },
{ "u_near_om_location": "road_ne", "range": 3 },
{ "u_near_om_location": "road_ew", "range": 3 },
{ "u_near_om_location": "road_ns", "range": 3 },
{ "u_near_om_location": "road_nesw", "range": 3 },
{ "u_near_om_location": "road", "range": 3 },
{ "u_near_om_location": "dirt_road", "range": 3 },
{ "u_near_om_location": "subway", "range": 3 }
]
},
{
"and": [
{ "not": { "u_at_om_location": "field" } },
{ "not": { "u_at_om_location": "forest" } },
{ "not": { "u_at_om_location": "forest_thick" } },
{ "not": { "u_at_om_location": "forest_water" } },
{ "not": { "u_at_om_location": "lake_surface" } },
{ "not": { "u_at_om_location": "river_center" } }
]
}
]
}
]
},
"effect": [ ]
},
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_NO_TRACE_ON",
"condition": { "not": { "u_has_trait": "NO_TRACE_YET_I_WISH_active" } },
"effect": [ { "u_add_trait": "NO_TRACE_YET_I_WISH_active" }, { "u_message": "Your body stops producing scent.", "type": "good" } ],
"false_effect": [
{ "u_lose_trait": "NO_TRACE_YET_I_WISH_active" },
{ "u_message": "Your body begins producing scent.", "type": "neutral" }
]
},
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_BACKSTAGE_ON",
"condition": { "not": { "u_has_trait": "HOMULLUS_BACKSTAGE_active" } },
"effect": [
{ "u_add_trait": "HOMULLUS_BACKSTAGE_active" },
{ "u_message": "You seem to fade into the background.", "type": "good" }
],
"false_effect": [ { "u_lose_trait": "HOMULLUS_BACKSTAGE_active" }, { "u_message": "You become more noticeable.", "type": "neutral" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_RUNNING_GIVE_STAMINA",
"eoc_type": "EVENT",
"required_event": "avatar_moves",
"condition": {
"and": [ { "u_has_trait": "HOMULLUS_THE_HUNTER2" }, { "compare_string": [ "run", { "context_val": "movement_mode" } ] } ]
},
"effect": [ { "math": [ "u_val('stamina')", "+=", "rng(40,65)" ] } ]
},
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_INVISIBLE_TO_HUMANS",
"condition": {
"or": [
"u_is_npc",
{
"or": [ { "u_has_species": "FERAL" }, { "and": [ { "not": { "u_has_species": "ZOMBIE" } }, { "u_has_species": "HUMAN" } ] } ]
}
]
},
"effect": [
{
"u_add_effect": "telepathic_ignorance",
"duration": {
"math": [ "( 6000 + (u_spell_level('homullus_invisible_to_humans_spell') * 3000) ) * scaling_factor(u_val('intelligence') )" ]
}
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_DREAMWALKER_GAIN_DREAMDROSS",
Expand Down Expand Up @@ -59,6 +162,13 @@
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_HOMULLUS_GAIN_BIONIC_POWER_IN_CITIES",
"recurrence": "30 seconds",
"condition": { "or": [ { "u_has_any_trait": [ "HOMULLUS_GAIN_BIONIC_POWER", "HOMULLUS_GAIN_BIONIC_POWER_AND_MANA" ] } ] },
"effect": [ { "math": [ "u_val('power')", "+=", "energy('1 kJ') + (energy('1 kJ') * u_has_trait('THRESH_HOMULLUS'))" ] } ]
},
{
"type": "effect_on_condition",
"id": "HOMULLUS_MIGRATE_TO_MIMIMIZED_MUTATIONS",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,63 @@
[
{
"id": "homullus_invisible_to_humans_spell",
"type": "SPELL",
"name": "A Face in the Crowd",
"description": "Though the teeming masses of humanity are gone, the Homullus can evoke their anonymizing essence with magick, rendering them invisible to any humans affected by the spell.",
"valid_targets": [ "hostile", "ally" ],
"spell_class": "HOMULLUS",
"flags": [ "VERBAL", "SOMATIC", "NO_HANDS", "IGNORE_WALLS" ],
"teachable": false,
"difficulty": 6,
"max_level": { "math": [ "int_to_level(1)" ] },
"effect": "effect_on_condition",
"effect_str": "EOC_HOMULLUS_INVISIBLE_TO_HUMANS",
"extra_effects": [ { "id": "homullus_invisible_to_humans_spell_self", "hit_self": true } ],
"shape": "blast",
"min_duration": {
"math": [ "( 6000 + (u_spell_level('homullus_invisible_to_humans_spell') * 3000) ) * scaling_factor(u_val('intelligence') )" ]
},
"max_duration": {
"math": [ "( 6000 + (u_spell_level('homullus_invisible_to_humans_spell') * 3000) ) * scaling_factor(u_val('intelligence') )" ]
},
"min_aoe": {
"math": [
"min( ( ( (u_spell_level('homullus_invisible_to_humans_spell') * 1) + 3) * (scaling_factor(u_val('intelligence') ) ) ), 25)"
]
},
"max_aoe": {
"math": [
"min( ( ( (u_spell_level('homullus_invisible_to_humans_spell') * 1) + 3) * (scaling_factor(u_val('intelligence') ) ) ), 25)"
]
},
"energy_source": "MANA",
"base_energy_cost": 400,
"final_energy_cost": 200,
"energy_increment": -10,
"base_casting_time": 250,
"final_casting_time": 75,
"casting_time_increment": -5
},
{
"id": "homullus_invisible_to_humans_spell_self",
"type": "SPELL",
"name": "A Face in the Crowd Self",
"description": "Puts an effect on you so anyone affected by A Face in the Crowd knows to ignore you. It's a bug if you have this directly.",
"message": "",
"spell_class": "HOMULLUS",
"teachable": false,
"valid_targets": [ "self" ],
"flags": [ "SILENT", "NO_HANDS", "NO_LEGS" ],
"effect": "attack",
"effect_str": "telepathic_ignorance_self",
"shape": "blast",
"min_duration": {
"math": [ "( 6000 + (u_spell_level('homullus_invisible_to_humans_spell') * 3000) ) * scaling_factor(u_val('intelligence') )" ]
},
"max_duration": {
"math": [ "( 6000 + (u_spell_level('homullus_invisible_to_humans_spell') * 3000) ) * scaling_factor(u_val('intelligence') )" ]
}
},
{
"id": "homullus_cultivate_goblin_fruit",
"type": "SPELL",
Expand Down
Loading

0 comments on commit d861825

Please sign in to comment.