Skip to content

Commit aba42e7

Browse files
[Magiclysm] Add a few more spells (#83088)
* Initial commit * Spelling and terrain fix * Add The Last Embrace spell scroll * Add Monstrous Grasp * Fix Sorcerer's Hand? * Give up, use EoC selector
1 parent 981f09c commit aba42e7

File tree

6 files changed

+172
-10
lines changed

6 files changed

+172
-10
lines changed

data/mods/Magiclysm/Spells/biomancer.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,5 +839,27 @@
839839
"base_energy_cost": 1200,
840840
"extra_effects": [ { "id": "eoc_enhancement_setup", "hit_self": true }, { "id": "biomantic_pain_caused_light", "hit_self": true } ],
841841
"base_casting_time": 6000
842+
},
843+
{
844+
"id": "biomancer_pull_items_from_distance",
845+
"type": "SPELL",
846+
"name": "Monstrous Grasp",
847+
"description": "Extend a tentacle with a myriad of grasping appendages, grasping an item and dragging it back to you. This spell is slightly painful due to the rapidity of the transformation.",
848+
"valid_targets": [ "ally", "hostile", "item", "ground" ],
849+
"spell_class": "BIOMANCER",
850+
"flags": [ "TRANSFORMATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC", "NO_HANDS" ],
851+
"extra_effects": [ { "id": "eoc_transformation_setup", "hit_self": true }, { "id": "biomantic_pain_caused_light", "hit_self": true } ],
852+
"difficulty": 4,
853+
"max_level": 10,
854+
"effect": "pickup",
855+
"shape": "blast",
856+
"min_damage": { "math": [ "350 - (u_spell_level('biomancer_pull_items_from_distance') * 12)" ] },
857+
"max_damage": { "math": [ "350 - (u_spell_level('biomancer_pull_items_from_distance') * 12)" ] },
858+
"min_range": 3,
859+
"max_range": 8,
860+
"range_increment": 0.5,
861+
"magic_type": "magiclysm_generic_magic",
862+
"base_energy_cost": 100,
863+
"base_casting_time": 150
842864
}
843865
]

data/mods/Magiclysm/Spells/earthshaper.json

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,5 +1316,67 @@
13161316
"else": { "u_message": "You must be on the living earth to use Earth Gate.", "type": "bad" }
13171317
}
13181318
]
1319+
},
1320+
{
1321+
"id": "earthshaper_remove_corpses",
1322+
"type": "SPELL",
1323+
"name": "The Last Embrace",
1324+
"description": "A truly ancient spell, its use attested in funeral rites from prehistoric times, The Last Embrace causes all bodies within its area of effect to sink within the living earth, coming to rest in a natural tomb. It only works on earth or stone.",
1325+
"valid_targets": [ "self" ],
1326+
"flags": [ "CHANNELING_SPELL", "SOMATIC", "LOUD", "NO_PROJECTILE" ],
1327+
"extra_effects": [ { "id": "eoc_channeling_setup", "hit_self": true } ],
1328+
"effect": "effect_on_condition",
1329+
"effect_str": "EOC_EARTHSHAPER_REMOVE_CORPSES",
1330+
"shape": "blast",
1331+
"difficulty": 4,
1332+
"spell_class": "EARTHSHAPER",
1333+
"teachable": false,
1334+
"max_level": 15,
1335+
"magic_type": "magiclysm_generic_magic",
1336+
"base_energy_cost": 150,
1337+
"final_energy_cost": 50,
1338+
"energy_increment": -7,
1339+
"base_casting_time": 1200
1340+
},
1341+
{
1342+
"type": "effect_on_condition",
1343+
"id": "EOC_EARTHSHAPER_REMOVE_CORPSES",
1344+
"effect": [
1345+
{
1346+
"u_query_tile": "line_of_sight",
1347+
"target_var": { "context_val": "earthshaper_target_point" },
1348+
"range": { "math": [ "(u_spell_level('earthshaper_remove_corpses') + 3)" ] },
1349+
"z_level": false,
1350+
"message": "Select diggable ground."
1351+
},
1352+
{
1353+
"u_map_run_eocs": [
1354+
{
1355+
"id": "EOC_EARTHSHAPER_REMOVE_CORPSES_PER_TILE",
1356+
"effect": [
1357+
{
1358+
"u_map_run_item_eocs": "all",
1359+
"loc": { "context_val": "earthshaper_digging_point" },
1360+
"min_radius": 0,
1361+
"max_radius": 0,
1362+
"search_data": [ { "flags": [ "CORPSE" ] } ],
1363+
"true_eocs": [ { "id": "EOC_EARTHSHAPER_REMOVE_CORPSES_HIT_CORPSES", "effect": [ "npc_die" ] } ]
1364+
}
1365+
]
1366+
}
1367+
],
1368+
"range": { "math": [ "( (u_spell_level('earthshaper_remove_corpses') * 0.15) + 1)" ] },
1369+
"store_coordinates_in": { "context_val": "earthshaper_digging_point" },
1370+
"stop_at_first": false,
1371+
"target_var": { "context_val": "earthshaper_target_point" },
1372+
"condition": {
1373+
"or": [
1374+
{ "map_terrain_id": "t_rock_floor_no_roof", "loc": { "context_val": "earthshaper_target_point" } },
1375+
{ "map_terrain_id": "t_rock_floor", "loc": { "context_val": "earthshaper_target_point" } },
1376+
{ "map_terrain_with_flag": "DIGGABLE", "loc": { "context_val": "earthshaper_target_point" } }
1377+
]
1378+
}
1379+
}
1380+
]
13191381
}
13201382
]

data/mods/Magiclysm/Spells/magus.json

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -646,20 +646,15 @@
646646
"type": "SPELL",
647647
"name": "Sorcerer's Hand",
648648
"description": "Pull a target or set of items to you.",
649-
"valid_targets": [ "ally", "hostile", "item", "ground" ],
649+
"valid_targets": [ "self" ],
650650
"spell_class": "MAGUS",
651651
"flags": [ "EVOCATION_SPELL", "CONCENTRATE", "VERBAL", "SOMATIC", "NO_HANDS" ],
652652
"extra_effects": [ { "id": "eoc_evocation_setup", "hit_self": true } ],
653653
"difficulty": 2,
654654
"max_level": 10,
655-
"effect": "directed_push",
655+
"effect": "effect_on_condition",
656+
"effect_str": "EOC_MAGUS_FAR_HAND_PULL",
656657
"shape": "blast",
657-
"min_damage": -1,
658-
"max_damage": -10,
659-
"damage_increment": -1,
660-
"min_range": 1,
661-
"max_range": 10,
662-
"range_increment": 1,
663658
"magic_type": "magiclysm_generic_magic",
664659
"base_energy_cost": 200,
665660
"final_energy_cost": 50,
@@ -668,6 +663,65 @@
668663
"final_casting_time": 50,
669664
"casting_time_increment": -10
670665
},
666+
{
667+
"type": "effect_on_condition",
668+
"id": "EOC_MAGUS_FAR_HAND_PULL",
669+
"effect": [
670+
{
671+
"run_eoc_selector": [ "EOC_MAGUS_FAR_HAND_PULL_ITEM", "EOC_MAGUS_FAR_HAND_PULL_CREATURE" ],
672+
"names": [ "Grab Item", "Pull Creature" ],
673+
"keys": [ "a", "b" ],
674+
"allow_cancel": true,
675+
"descriptions": [ "Pick up an item and pull it to you", "Target a creature and pull it toward you" ]
676+
}
677+
]
678+
},
679+
{
680+
"type": "effect_on_condition",
681+
"id": "EOC_MAGUS_FAR_HAND_PULL_ITEM",
682+
"effect": [ { "u_cast_spell": { "id": "magus_far_hand_pull_items" }, "targeted": true } ]
683+
},
684+
{
685+
"type": "effect_on_condition",
686+
"id": "EOC_MAGUS_FAR_HAND_PULL_CREATURE",
687+
"effect": [ { "u_cast_spell": { "id": "magus_far_hand_pull_creatures" }, "targeted": true } ]
688+
},
689+
{
690+
"id": "magus_far_hand_pull_creatures",
691+
"type": "SPELL",
692+
"name": { "str": "Sorcerer's Hand Creature", "//~": "NO_I18N" },
693+
"description": { "str": "Pull a target to you.", "//~": "NO_I18N" },
694+
"valid_targets": [ "ally", "hostile" ],
695+
"spell_class": "MAGUS",
696+
"flags": [ "CONCENTRATE", "VERBAL", "SOMATIC", "NO_HANDS" ],
697+
"difficulty": 2,
698+
"max_level": 10,
699+
"effect": "directed_push",
700+
"shape": "blast",
701+
"min_damage": { "math": [ "u_spell_level('magus_far_hand_pull') * -1" ] },
702+
"max_damage": { "math": [ "u_spell_level('magus_far_hand_pull') * -1" ] },
703+
"min_range": { "math": [ "(u_spell_level('magus_far_hand_pull') * 1) + 3" ] },
704+
"max_range": { "math": [ "(u_spell_level('magus_far_hand_pull') * 1) + 3" ] },
705+
"magic_type": "magiclysm_generic_magic"
706+
},
707+
{
708+
"id": "magus_far_hand_pull_items",
709+
"type": "SPELL",
710+
"name": { "str": "Sorcerer's Hand Items", "//~": "NO_I18N" },
711+
"description": { "str": "Pull an items to you.", "//~": "NO_I18N" },
712+
"valid_targets": [ "ally", "hostile", "item", "ground" ],
713+
"spell_class": "MAGUS",
714+
"flags": [ "CONCENTRATE", "VERBAL", "SOMATIC", "NO_HANDS" ],
715+
"difficulty": 2,
716+
"max_level": 10,
717+
"effect": "pickup",
718+
"shape": "blast",
719+
"min_damage": { "math": [ "250 - (u_spell_level('magus_far_hand_pull') * 10)" ] },
720+
"max_damage": { "math": [ "250 - (u_spell_level('magus_far_hand_pull') * 10)" ] },
721+
"min_range": { "math": [ "(u_spell_level('magus_far_hand_pull') * 1) + 3" ] },
722+
"max_range": { "math": [ "(u_spell_level('magus_far_hand_pull') * 1) + 3" ] },
723+
"magic_type": "magiclysm_generic_magic"
724+
},
671725
{
672726
"id": "magus_ranged_increase",
673727
"type": "SPELL",

data/mods/Magiclysm/itemgroups/itemgroups.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,7 +1435,8 @@
14351435
{ "item": "spell_scroll_earthshaper_danger_sense", "prob": 50 },
14361436
{ "item": "spell_scroll_earthshaper_fortitude_of_stone", "prob": 50 },
14371437
{ "item": "spell_scroll_earthshaper_turning_of_earth", "prob": 50 },
1438-
{ "item": "spell_scroll_earthshaper_repair_metal_stone", "prob": 25 }
1438+
{ "item": "spell_scroll_earthshaper_repair_metal_stone", "prob": 25 },
1439+
{ "item": "spell_scroll_earthshaper_remove_corpses", "prob": 35 }
14391440
],
14401441
"prob": 45
14411442
},
@@ -1480,7 +1481,8 @@
14801481
{ "item": "spell_scroll_biomancer_visceral_projection", "prob": 50 },
14811482
{ "item": "spell_scroll_biomancer_swim_frog", "prob": 35 },
14821483
{ "item": "spell_scroll_biomancer_cure_disease_minor", "prob": 50 },
1483-
{ "item": "spell_scroll_biomancer_eat_tons_of_food", "prob": 30 }
1484+
{ "item": "spell_scroll_biomancer_eat_tons_of_food", "prob": 30 },
1485+
{ "item": "spell_scroll_biomancer_pull_items_from_distance", "prob": 30 }
14841486
],
14851487
"prob": 45
14861488
},

data/mods/Magiclysm/itemgroups/spellbooks.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
[ "spell_scroll_stonefist", 20 ],
2121
[ "spell_scroll_eshaper_piercing_bolt", 40 ],
2222
[ "spell_scroll_eshaper_rockbolt", 50 ],
23+
[ "spell_scroll_earthshaper_remove_corpses", 50 ],
2324
[ "spell_scroll_reactive_armor", 25 ],
2425
[ "spell_scroll_pertifying_touch", 25 ],
2526
[ "spell_scroll_kelvinist_firebolt", 40 ],
@@ -115,6 +116,7 @@
115116
[ "spell_scroll_electric_eye", 35 ],
116117
[ "spell_scroll_biomancer_swim_frog", 25 ],
117118
[ "spell_scroll_biomancer_slow_bleeding", 30 ],
119+
[ "spell_scroll_biomancer_pull_items_from_distance", 30 ],
118120
[ "spell_scroll_holy_blade", 25 ],
119121
[ "spell_scroll_technomancer_welder", 20 ],
120122
[ "spell_scroll_spirit_armor", 25 ],

data/mods/Magiclysm/items/spell_scrolls.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2468,5 +2468,25 @@
24682468
"name": { "str": "Scroll of Seeing the Unseen", "str_pl": "Scrolls of Seeing the Unseen" },
24692469
"description": "Detect nearby beings with your soul rather than your eyes, allowing you to see invisible creatures.",
24702470
"use_action": { "type": "learn_spell", "spells": [ "animist_see_invisibility" ] }
2471+
},
2472+
{
2473+
"type": "ITEM",
2474+
"subtypes": [ "BOOK" ],
2475+
"copy-from": "spell_scroll",
2476+
"id": "spell_scroll_earthshaper_remove_corpses",
2477+
"//": "Earthshaper spell",
2478+
"name": { "str": "Scroll of The Last Embrace", "str_pl": "Scrolls of The Last Embrace" },
2479+
"description": "Target a corpse and cause it to sink beneath the living earth. A staple of prehistoric funeral rites.",
2480+
"use_action": { "type": "learn_spell", "spells": [ "earthshaper_remove_corpses" ] }
2481+
},
2482+
{
2483+
"type": "ITEM",
2484+
"subtypes": [ "BOOK" ],
2485+
"copy-from": "spell_scroll",
2486+
"id": "spell_scroll_biomancer_pull_items_from_distance",
2487+
"//": "Biomancer spell",
2488+
"name": { "str": "Scroll of Monstrous Grasp", "str_pl": "Scrolls of Monstrous Grasp" },
2489+
"description": "Extend a tentacle to grab an item and drag it back to you. Disgusting but practical.",
2490+
"use_action": { "type": "learn_spell", "spells": [ "biomancer_pull_items_from_distance" ] }
24712491
}
24722492
]

0 commit comments

Comments
 (0)