Skip to content

Commit

Permalink
[Magiclysm] Add some new high Difficulty spells (#78582)
Browse files Browse the repository at this point in the history
* Initial commit

* Tweaks

* Treant grabbing

* Change mana cost

* Raise Awakening of the Forest Guardian Difficulty

* Add Flames of the Apocalypse

* Add missing RANDOM_DAMAGE to Flames of the Apocalypse
  • Loading branch information
Standing-Storm authored Dec 19, 2024
1 parent 26eb173 commit 657ea3e
Show file tree
Hide file tree
Showing 14 changed files with 526 additions and 6 deletions.
111 changes: 111 additions & 0 deletions data/mods/Magiclysm/Spells/druid.json
Original file line number Diff line number Diff line change
Expand Up @@ -1420,5 +1420,116 @@
"//": "EoC to summon because summoned comestibles don't have timers",
"id": "EOC_DRUID_GOODBERRY",
"effect": [ { "u_spawn_item": "item_druid_goodberry", "count": 1, "suppress_message": true } ]
},
{
"id": "druid_create_temporary_spring",
"type": "SPELL",
"name": "Fountain of the Depths",
"description": "Call to the waters beneath the earth and bring them to the surface, creating a natural spring. The waters will subside when the spell's duration ends.",
"flags": [ "CHANNELING_SPELL", "CONCENTRATE", "SILENT", "VERBAL" ],
"valid_targets": [ "self" ],
"spell_class": "DRUID",
"difficulty": 9,
"max_level": 15,
"effect": "effect_on_condition",
"effect_str": "EOC_DRUID_TEMPORARY_SPRING",
"shape": "blast",
"min_duration": 30000,
"max_duration": 255000,
"duration_increment": 15000,
"energy_source": "MANA",
"base_casting_time": 9000,
"base_energy_cost": 750,
"extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ]
},
{
"type": "effect_on_condition",
"id": "EOC_DRUID_TEMPORARY_SPRING",
"effect": [
{
"if": {
"u_query_tile": "around",
"target_var": { "global_val": "druid_temporary_spring_location" },
"message": "Select natural earth:"
},
"then": {
"if": { "map_terrain_with_flag": "DIGGABLE", "loc": { "global_val": "druid_temporary_spring_location" } },
"then": [
{
"u_transform_radius": 0,
"ter_furn_transform": "ter_druid_create_spring",
"target_var": { "global_val": "druid_temporary_spring_location" }
},
{
"u_transform_radius": 60,
"ter_furn_transform": "ter_druid_remove_spring",
"target_var": { "global_val": "druid_temporary_spring_location" },
"time_in_future": {
"math": [ "( (u_spell_level('druid_create_temporary_spring') * 150) + 300 ) * ( channeling_proficiency_modifier() )" ]
}
}
],
"else": { "u_message": "You can only call up a spring on natural earth." }
},
"else": { "u_message": "Canceled" }
}
]
},
{
"id": "druid_turn_tree_into_treant",
"type": "SPELL",
"name": "Awakening of the Forest Guardian",
"description": "Grant a nearby tree awareness and mobility, letting it shake free from the soil and rise up to crush your enemies. It will root itself again when the spell expires.\n\nYou must be <color_yellow>standing next to a tree</color> for the spell to take effect.",
"flags": [ "TRANSFORMATION_SPELL", "CONCENTRATE", "SILENT", "VERBAL" ],
"valid_targets": [ "self" ],
"spell_class": "DRUID",
"difficulty": 12,
"max_level": 20,
"effect": "effect_on_condition",
"effect_str": "EOC_DRUID_TREE_AWAKENING",
"shape": "blast",
"min_duration": 15000,
"max_duration": 155000,
"duration_increment": 7000,
"energy_source": "MANA",
"base_casting_time": 500,
"base_energy_cost": 850,
"extra_effects": [ { "id": "eoc_transformation_setup", "hit_self": true } ]
},
{
"type": "effect_on_condition",
"id": "EOC_DRUID_TREE_AWAKENING",
"effect": [
{
"u_map_run_eocs": [
{
"id": "EOC_DRUID_TREE_AWAKENING_ACTION",
"effect": [
{
"u_transform_radius": 0,
"ter_furn_transform": "ter_druid_tree_guardian_turn",
"target_var": { "context_val": "druid_tree_awakening_check" }
},
{
"u_spawn_monster": "mon_treant_druid",
"real_count": 1,
"min_radius": 0,
"max_radius": 0,
"temporary_drop_items": true,
"lifespan": {
"math": [ "( (u_spell_level('druid_turn_tree_into_treant') * 70) + 150 ) * ( transformation_proficiency_modifier() )" ]
},
"target_var": { "context_val": "druid_tree_awakening_check" }
}
],
"false_effect": { "u_message": "You need to be standing next to a tree to awaken it.", "type": "bad" }
}
],
"range": 1,
"store_coordinates_in": { "context_val": "druid_tree_awakening_check" },
"stop_at_first": true,
"condition": { "map_terrain_with_flag": "TREE", "loc": { "context_val": "druid_tree_awakening_check" } }
}
]
}
]
50 changes: 50 additions & 0 deletions data/mods/Magiclysm/Spells/earthshaper.json
Original file line number Diff line number Diff line change
Expand Up @@ -1274,5 +1274,55 @@
]
}
]
},
{
"id": "earthshaper_diggable_teleport",
"type": "SPELL",
"name": "Earth Gate",
"description": "While standing on natural earth, sink into it and emerge from any other patch of natural earth within the spell's range.",
"message": "",
"valid_targets": [ "self" ],
"flags": [ "CONVEYANCE_SPELL", "VERBAL", "SOMATIC", "SILENT" ],
"effect": "effect_on_condition",
"effect_str": "EOC_EARTHSHAPER_EARTH_GATE_TELEPORT_CHECK",
"extra_effects": [ { "id": "eoc_conveyance_setup", "hit_self": true } ],
"shape": "blast",
"difficulty": 8,
"spell_class": "EARTHSHAPER",
"teachable": false,
"max_level": 20,
"energy_source": "MANA",
"base_energy_cost": 650,
"base_casting_time": 250
},
{
"type": "effect_on_condition",
"id": "EOC_EARTHSHAPER_EARTH_GATE_TELEPORT_CHECK",
"effect": [
{
"if": { "u_is_on_terrain_with_flag": "DIGGABLE" },
"then": [
{
"if": {
"u_query_tile": "line_of_sight",
"target_var": { "global_val": "earthshaper_earth_gate_location" },
"range": { "math": [ "( (u_spell_level('earthshaper_diggable_teleport') * 2) + 3) * conveyance_proficiency_modifier()" ] },
"z_level": false,
"message": "Select nearby earth to gate to."
},
"then": {
"if": { "map_terrain_with_flag": "DIGGABLE", "loc": { "global_val": "earthshaper_earth_gate_location" } },
"then": [
{ "u_teleport": { "global_val": "earthshaper_earth_gate_location" }, "force": true },
{ "u_message": "You sink into the earth and re-emerge nearby.", "type": "neutral" }
],
"else": { "u_message": "You must select a patch of earth to transport to." }
},
"else": { "u_message": "Canceled" }
}
],
"else": { "u_message": "You must be on the living earth to use Earth Gate.", "type": "bad" }
}
]
}
]
63 changes: 63 additions & 0 deletions data/mods/Magiclysm/Spells/kelvinist.json
Original file line number Diff line number Diff line change
Expand Up @@ -772,5 +772,68 @@
]
}
]
},
{
"id": "kelvinist_set_everyone_on_fire",
"type": "SPELL",
"name": "Flames of the Apocalypse",
"description": "Force a large amount of burning mana into every hostile target affected by the spell, causing them to explode in flames. Knowledge of this spell required licensing and registration before the Cataclysm, but you're pretty sure the ATF isn't going to be hassling you any time soon.",
"valid_targets": [ "hostile", "ground" ],
"spell_class": "KELVINIST",
"flags": [ "EVOCATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC" ],
"effect": "effect_on_condition",
"effect_str": "EOC_KELVINIST_SET_EVERYONE_ON_FIRE",
"components": "spell_components_kelvinist_set_everyone_on_fire",
"extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
"shape": "blast",
"difficulty": 15,
"max_level": 25,
"min_range": 5,
"max_range": 30,
"range_increment": 1,
"min_aoe": 2,
"max_aoe": 12,
"aoe_increment": 0.5,
"energy_source": "MANA",
"base_energy_cost": 1000,
"base_casting_time": 500
},
{
"type": "effect_on_condition",
"id": "EOC_KELVINIST_SET_EVERYONE_ON_FIRE",
"condition": "has_alpha",
"effect": [
{ "math": [ "u_kelvinist_explosion_level = n_spell_level('kelvinist_set_everyone_on_fire')" ] },
{
"u_cast_spell": {
"id": "kelvinist_set_everyone_on_fire_secondary",
"min_level": { "math": [ "u_kelvinist_explosion_level" ] },
"hit_self": true
}
}
]
},
{
"id": "kelvinist_set_everyone_on_fire_secondary",
"type": "SPELL",
"name": { "str": "Flames of the Apocalypse Target", "//~": "NO_I18N" },
"description": { "str": "Stop hitting yourself (with the flames of the apocalypse). You should never see this.", "//~": "NO_I18N" },
"valid_targets": [ "self", "ground", "ally", "hostile" ],
"flags": [ "EVOCATION_SPELL", "RANDOM_DAMAGE", "CONCENTRATE", "VERBAL", "SOMATIC", "SPLIT_DAMAGE" ],
"effect": "attack",
"effect_str": "onfire",
"shape": "blast",
"max_level": 25,
"min_damage": { "math": [ "(u_kelvinist_explosion_level * 4) + 25" ] },
"max_damage": { "math": [ "(u_kelvinist_explosion_level * 10) + 45" ] },
"damage_type": "heat",
"min_duration": 1000,
"max_duration": 2500,
"min_aoe": { "math": [ "(u_kelvinist_explosion_level * 0.333) + 0" ] },
"max_aoe": { "math": [ "(u_kelvinist_explosion_level * 0.333) + 0" ] },
"field_id": "fd_fire",
"min_field_intensity": 2,
"max_field_intensity": 3,
"field_chance": 2
}
]
26 changes: 25 additions & 1 deletion data/mods/Magiclysm/Spells/magus.json
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@
"effect": "ter_transform",
"effect_str": "ter_magus_permanent_light",
"shape": "blast",
"flags": [ "CONJURATION_SPELL", "SOMATIC", "VERBAL" ],
"flags": [ "CONJURATION_SPELL", "CONCENTRATE", "SOMATIC", "VERBAL" ],
"components": "spell_components_magus_permanent_light",
"max_level": 15,
"spell_class": "MAGUS",
Expand All @@ -804,5 +804,29 @@
"final_energy_cost": 1500,
"energy_increment": -75,
"extra_effects": [ { "id": "eoc_summon_setup", "hit_self": true } ]
},
{
"id": "magus_cannot_move_attack_or_damage_target",
"type": "SPELL",
"name": "Adamantine Gaol",
"description": "Create an impenetrable shell of force around the target, preventing them from moving or acting for the spell's duration. The shell works in two directions and the target is also immune to all harm.\n\nAdamantine Gaol <color_yellow>cannot be dispelled</color>.",
"valid_targets": [ "ally", "hostile", "self" ],
"flags": [ "EVOCATION_SPELL", "VERBAL", "SOMATIC" ],
"extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
"effect": "attack",
"effect_str": "effect_magus_cannot_move_attack_or_damage_target",
"shape": "blast",
"spell_class": "MAGUS",
"energy_source": "MANA",
"difficulty": 10,
"base_casting_time": 75,
"base_energy_cost": 750,
"max_level": 20,
"min_range": 5,
"max_range": 30,
"range_increment": 1.5,
"min_duration": 600,
"max_duration": 2500,
"duration_increment": 100
}
]
10 changes: 10 additions & 0 deletions data/mods/Magiclysm/effects/effects.json
Original file line number Diff line number Diff line change
Expand Up @@ -1578,6 +1578,16 @@
"enchantments": [ { "values": [ { "value": "ATTACK_NOISE", "multiply": -1 }, { "value": "FOOTSTEP_NOISE", "multiply": -1 } ] } ],
"flags": [ "MUTE" ]
},
{
"type": "effect_type",
"id": "effect_magus_cannot_move_attack_or_damage_target",
"name": [ "Adamantine Gaol" ],
"desc": [ "You are totally immobile and invulnerable." ],
"rating": "bad",
"show_in_info": true,
"remove_message": "You can move again.",
"flags": [ "CANNOT_ATTACK", "CANNOT_MOVE", "CANNOT_TAKE_DAMAGE" ]
},
{
"type": "effect_type",
"id": "effect_druid_traverse_the_wilds",
Expand Down
16 changes: 16 additions & 0 deletions data/mods/Magiclysm/furniture_and_terrain/terrain_druid.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,21 @@
"ter_set": "t_dirt",
"items": [ { "item": "splinter", "count": [ 2, 5 ] } ]
}
},
{
"type": "terrain",
"id": "t_water_moving_sh_druid",
"//": "Exists to prevent spamming the fountain of the depths spell and only having one tile transform back.",
"name": "flowing shallow water",
"description": "The streaming water isn't too deep here. With a watertight container, you could gather fresh water from here. Not safe to drink as is, although probably safer than stagnant water.",
"looks_like": "t_water_moving_sh",
"symbol": "~",
"color": "light_blue",
"move_cost": 6,
"flags": [ "TRANSPARENT", "LIQUID", "NO_SCENT", "SWIMMABLE", "FISHABLE", "CURRENT", "SHALLOW_WATER" ],
"connect_groups": "WATER",
"connects_to": "WATER",
"liquid_source": { "id": "water" },
"examine_action": "water_source"
}
]
23 changes: 19 additions & 4 deletions data/mods/Magiclysm/itemgroups/itemgroups.json
Original file line number Diff line number Diff line change
Expand Up @@ -1242,7 +1242,13 @@
],
"prob": 10
},
{ "distribution": [ { "item": "recovery_spellbook", "prob": 10 } ], "prob": 5 }
{
"distribution": [
{ "item": "spell_scroll_magus_cannot_move_attack_or_damage_target", "prob": 10 },
{ "item": "recovery_spellbook", "prob": 10 }
],
"prob": 5
}
]
},
{
Expand Down Expand Up @@ -1345,7 +1351,8 @@
{ "item": "spell_scroll_nova_flare", "prob": 50 },
{ "item": "spell_scroll_cone_cold", "prob": 50 },
{ "item": "spell_scroll_hoary_blast", "prob": 50 },
{ "item": "spell_scroll_kelvinist_no_emotion_spell", "prob": 20 }
{ "item": "spell_scroll_kelvinist_no_emotion_spell", "prob": 20 },
{ "item": "spell_scroll_kelvinist_set_everyone_on_fire", "prob": 2 }
],
"prob": 10
}
Expand Down Expand Up @@ -1442,7 +1449,8 @@
{ "item": "spell_scroll_eshaper_shardstorm", "prob": 50 },
{ "item": "spell_scroll_earthshaper_reveal_world_map", "prob": 25 },
{ "item": "spell_scroll_earthshaper_granite_aegis", "prob": 20 },
{ "item": "spell_scroll_earthshaper_sleep_in_earth", "prob": 20 }
{ "item": "spell_scroll_earthshaper_sleep_in_earth", "prob": 20 },
{ "item": "spell_scroll_earthshaper_diggable_teleport", "prob": 30 }
],
"prob": 10
}
Expand Down Expand Up @@ -1546,9 +1554,16 @@
{ "item": "spell_scroll_druidic_regrowth", "prob": 100 },
{ "item": "spell_scroll_druidic_healing", "prob": 100 },
{ "item": "spell_scroll_druid_beguile_savage_beast", "prob": 75 },
{ "item": "spell_scroll_druid_renew_forest_spell", "prob": 50 }
{ "item": "spell_scroll_druid_create_temporary_spring", "prob": 75 }
],
"prob": 10
},
{
"distribution": [
{ "item": "spell_scroll_druid_renew_forest_spell", "prob": 50 },
{ "item": "spell_scroll_druid_turn_tree_into_treant", "prob": 25 }
],
"prob": 5
}
]
},
Expand Down
5 changes: 5 additions & 0 deletions data/mods/Magiclysm/itemgroups/spellbooks.json
Original file line number Diff line number Diff line change
Expand Up @@ -236,18 +236,23 @@
[ "spell_scroll_obfuscated_body", 10 ],
[ "spell_scroll_shape_of_dust", 30 ],
[ "spell_scroll_summon_eshaper_golem", 30 ],
[ "spell_scroll_earthshaper_diggable_teleport", 25 ],
[ "spell_scroll_druidic_healing", 20 ],
[ "spell_scroll_druid_turn_tree_into_treant", 5 ],
[ "spell_scroll_summon_magic_motorcycle", 5 ],
[ "spell_scroll_animist_spirit_walking", 10 ],
[ "spell_scroll_magus_haste", 50 ],
[ "spell_scroll_magus_permanent_light", 30 ],
[ "spell_scroll_magus_cannot_move_attack_or_damage_target", 10 ],
[ "bio_sneeze_beam", 50 ],
[ "spell_scroll_druid_beguile_savage_beast", 10 ],
[ "spell_scroll_druid_thornskin", 20 ],
[ "spell_scroll_druid_create_temporary_spring", 10 ],
[ "spell_scroll_druid_renew_forest_spell", 5 ],
[ "spell_scroll_kelvinist_no_emotion_spell", 5 ],
[ "spell_scroll_banishment_lesser", 30 ],
[ "spell_scroll_nova_flare", 25 ],
[ "spell_scroll_kelvinist_set_everyone_on_fire", 3 ],
[ "spell_scroll_magus_diamond_imbuement", 10 ],
[ "spell_scroll_freezing_touch", 40 ],
[ "spell_scroll_focused_bolt", 4 ],
Expand Down
Loading

0 comments on commit 657ea3e

Please sign in to comment.