From c8c37e691a73c7e92cd29fdf4feab9dc4b18a2f1 Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Tue, 29 Aug 2023 20:31:46 -0500 Subject: [PATCH] [Magiclysm] Add seven more spells (+ monsters + lab special) (#67914) * Initial commit * Add "AIR_SPIRIT" species * Dictionary updates * Fixes * Change druid and feral radiation mage spells * Various fixes * Lab location tweaks * Fix feral radiation mage summoning * Give Dimensionalist spells, add Knowing the Day and the Hour to some wilderness professions --- data/mods/Magiclysm/Spells/animist.json | 29 ++- data/mods/Magiclysm/Spells/biomancer.json | 42 +++++ data/mods/Magiclysm/Spells/classless.json | 19 ++ data/mods/Magiclysm/Spells/druid.json | 74 ++++---- data/mods/Magiclysm/Spells/feral_wizards.json | 171 ++++++++++++++++++ data/mods/Magiclysm/Spells/magus.json | 55 ++++++ data/mods/Magiclysm/effects/effects.json | 147 ++++++--------- data/mods/Magiclysm/emitter.json | 16 +- data/mods/Magiclysm/field.json | 53 +++--- .../Magiclysm/itemgroups/death_drops.json | 25 +++ .../mods/Magiclysm/itemgroups/itemgroups.json | 38 +++- .../mods/Magiclysm/itemgroups/spellbooks.json | 9 +- .../Magiclysm/items/enchanted_clothes.json | 28 +++ data/mods/Magiclysm/items/spell_scrolls.json | 63 +++++++ data/mods/Magiclysm/items/spellbooks.json | 25 ++- data/mods/Magiclysm/monstergroups.json | 26 +++ .../Magiclysm/monsters/feral_wizards.json | 150 +++++++++++++++ data/mods/Magiclysm/monsters/mics.json | 41 +++++ data/mods/Magiclysm/professions.json | 16 +- .../requirements/spell_components.json | 15 ++ data/mods/Magiclysm/species.json | 7 + data/mods/Magiclysm/traits/classes.json | 3 +- .../Magiclysm/worldgen/labs/microlab.json | 72 ++++++++ tools/spell_checker/dictionary.txt | 7 +- 24 files changed, 946 insertions(+), 185 deletions(-) create mode 100644 data/mods/Magiclysm/Spells/feral_wizards.json create mode 100644 data/mods/Magiclysm/monsters/feral_wizards.json create mode 100644 data/mods/Magiclysm/worldgen/labs/microlab.json diff --git a/data/mods/Magiclysm/Spells/animist.json b/data/mods/Magiclysm/Spells/animist.json index e4ab7cfb4d838..9ff026745a868 100644 --- a/data/mods/Magiclysm/Spells/animist.json +++ b/data/mods/Magiclysm/Spells/animist.json @@ -715,7 +715,7 @@ "id": "animist_summon_decaying_boneclub", "type": "SPELL", "name": { "str": "Decaying Boneclub" }, - "description": "This spell links your live blood to the dead blood & bones, creating a club hungry for the flesh of the living.", + "description": "This spell links your living blood to dead blood & bones, creating a club hungry for the flesh of the living.", "effect": "spawn_item", "effect_str": "decaying_boneclub", "shape": "blast", @@ -739,7 +739,7 @@ "id": "animist_summon_decaying_boneclub_plus", "type": "SPELL", "name": { "str": "Improved Decaying Boneclub" }, - "description": "This spell links your live blood to the dead blood & bones, creating a club hungry for the flesh of the living. Now you know this spell like the back of your hand, and start to design your own version.", + "description": "This spell links your living blood to dead blood & bones, creating a club hungry for the flesh of the living. Now you know this spell like the back of your hand, and have started to design your own version.", "effect": "spawn_item", "effect_str": "decaying_boneclub", "shape": "blast", @@ -862,5 +862,30 @@ "max_duration": 900000, "duration_increment": 60000, "base_casting_time": 1500 + }, + { + "id": "animist_summon_watcher", + "type": "SPELL", + "name": { "str": "Summon Watcher Spirit" }, + "description": "Summon a watcher spirit, whose senses overlap with your own and through whose eyes you can see. Although they are spirits, they are fragile and dissipate easily in the face of any assault.", + "flags": [ "SOMATIC", "CONCENTRATE", "VERBAL", "NO_PROJECTILE" ], + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_watcher_spirit", + "shape": "blast", + "valid_targets": [ "ground" ], + "difficulty": 3, + "max_level": 15, + "min_damage": 1, + "max_damage": 1, + "min_range": 3, + "max_range": 20, + "range_increment": 1.1, + "min_duration": 24000, + "max_duration": 360000, + "duration_increment": 24000, + "energy_source": "MANA", + "base_casting_time": 500, + "base_energy_cost": 150 } ] diff --git a/data/mods/Magiclysm/Spells/biomancer.json b/data/mods/Magiclysm/Spells/biomancer.json index 856adf41ad180..35510faa03052 100644 --- a/data/mods/Magiclysm/Spells/biomancer.json +++ b/data/mods/Magiclysm/Spells/biomancer.json @@ -483,5 +483,47 @@ { "u_lose_trait": "BIO_GIANT_GROWTH" }, { "math": [ "u_val('stored_kcal')", "-=", "100000" ] } ] + }, + { + "id": "biomancer_remove_instability", + "type": "SPELL", + "name": "Restore Genetic Stability", + "description": "The scroll said that this spell is for \"Curing the aftereffects of XE037 overexposure\", whatever that means. According the scroll, the spell should be allowed to run its course before reapplication", + "valid_targets": [ "self", "ally" ], + "spell_class": "BIOMANCER", + "components": "spell_components_remove_instability", + "flags": [ "VERBAL", "SOMATIC" ], + "effect": "attack", + "effect_str": "effect_biomancer_remove_instability", + "shape": "blast", + "difficulty": 10, + "max_level": 15, + "energy_source": "MANA", + "min_range": 1, + "base_energy_cost": 1500, + "base_casting_time": 180000, + "min_duration": 4500000, + "max_duration": 45000000, + "duration_increment": 2700000 + }, + { + "id": "biomancer_carrion_feast", + "type": "SPELL", + "name": "Carrion Feast", + "description": "Alter your digestive system to consume rotten food with no ill effects. This is either a truly ancient spell or otherwise must have been the product of some university thaumaturgical research department.", + "valid_targets": [ "self" ], + "spell_class": "BIOMANCER", + "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC" ], + "effect": "attack", + "effect_str": "effect_biomancer_carrion_feast", + "shape": "blast", + "difficulty": 3, + "energy_source": "MANA", + "max_level": 10, + "min_duration": 6000, + "max_duration": 36000, + "duration_increment": 2800, + "base_energy_cost": 250, + "base_casting_time": 1500 } ] diff --git a/data/mods/Magiclysm/Spells/classless.json b/data/mods/Magiclysm/Spells/classless.json index 2e09f4c71777f..93f92cca81705 100644 --- a/data/mods/Magiclysm/Spells/classless.json +++ b/data/mods/Magiclysm/Spells/classless.json @@ -443,5 +443,24 @@ "max_field_intensity": 1, "field_chance": 1, "energy_source": "MANA" + }, + { + "id": "classless_watch_spell", + "type": "SPELL", + "name": "Knowing the Day and the Hour", + "description": "Probably the single greatest example of technology rendering magic obsolete, this spell allows you know exactly what time it is.", + "valid_targets": [ "self" ], + "flags": [ "VERBAL", "SOMATIC" ], + "effect": "attack", + "effect_str": "effect_classless_watch", + "shape": "blast", + "difficulty": 1, + "max_level": 12, + "min_duration": 720000, + "max_duration": 8640000, + "duration_increment": 720000, + "energy_source": "MANA", + "base_energy_cost": 150, + "base_casting_time": 6000 } ] diff --git a/data/mods/Magiclysm/Spells/druid.json b/data/mods/Magiclysm/Spells/druid.json index b286233805e96..aca599813a88f 100644 --- a/data/mods/Magiclysm/Spells/druid.json +++ b/data/mods/Magiclysm/Spells/druid.json @@ -458,10 +458,10 @@ "id": "druid_natures_commune", "type": "SPELL", "name": "Nature's Commune", - "description": "You concentrate on the nature around you and commune with it, improving your health and calming the nearby wildlife. This spell may only be cast outdoors.", + "description": "You concentrate on the nature around you and commune with it, improving your health and calming the nearby wildlife.", "valid_targets": [ "self" ], - "effect": "effect_on_condition", - "effect_str": "EOC_NATURE_COMMUNE", + "effect": "attack", + "effect_str": "natures_commune", "shape": "blast", "flags": [ "CONCENTRATE", "SOMATIC", "VERBAL", "NO_LEGS", "NO_HANDS" ], "energy_source": "MANA", @@ -472,43 +472,9 @@ "final_energy_cost": 400, "energy_increment": 10, "max_level": 20, - "min_duration": 30000, - "max_duration": 360000, - "duration_increment": 16500 - }, - { - "type": "effect_on_condition", - "id": "EOC_NATURE_COMMUNE", - "condition": { - "and": [ - "u_is_outside", - { "not": { "u_near_om_location": "road_curved", "range": 1 } }, - { "not": { "u_near_om_location": "road_four_way", "range": 1 } }, - { "not": { "u_near_om_location": "road_tee", "range": 1 } }, - { "not": { "u_near_om_location": "road_straight", "range": 1 } }, - { "not": { "u_near_om_location": "road_end", "range": 1 } }, - { "not": { "u_near_om_location": "road_sw", "range": 1 } }, - { "not": { "u_near_om_location": "road_ne", "range": 1 } }, - { "not": { "u_near_om_location": "road_ew", "range": 1 } }, - { "not": { "u_near_om_location": "road_ns", "range": 1 } }, - { "not": { "u_near_om_location": "road_nesw", "range": 1 } }, - { "not": { "u_near_om_location": "road", "range": 1 } } - ] - }, - "effect": [ - { - "u_add_effect": "natures_commune", - "duration": { "math": [ "( 300 + (u_val('spell_level', 'spell: druid_natures_commune') * 165)) " ] } - }, - { - "u_add_morale": "morale_forest_unity", - "bonus": 10, - "max_bonus": 15, - "duration": { "math": [ "( 300 + (u_val('spell_level', 'spell: druid_natures_commune') * 165) )" ] }, - "decay_start": { "math": [ "(( 300 + (u_val('spell_level', 'spell: druid_natures_commune') * 165) ) / 2)" ] } - } - ], - "false_effect": [ { "u_message": "You must be surrounded by nature to commune with nature", "type": "bad" } ] + "min_duration": 10000, + "max_duration": 40000, + "duration_increment": 2000 }, { "id": "druid_growth", @@ -678,5 +644,33 @@ "type": "effect_on_condition", "id": "EOC_LOSE_WHISPER_LEAVES", "effect": [ { "u_lose_trait": "TREE_COMMUNION" } ] + }, + { + "id": "druid_beguile_savage_beast", + "type": "SPELL", + "name": "Beguiling the Savage Beast", + "description": "Using your connection to nature, you can sway an animal to your service. This spell even works on mutated animals.", + "valid_targets": [ "hostile" ], + "flags": [ "VERBAL", "SOMATIC", "SILENT" ], + "effect": "charm_monster", + "shape": "blast", + "spell_class": "DRUID", + "difficulty": 9, + "max_level": 15, + "min_damage": 30, + "max_damage": 400, + "damage_increment": 25, + "min_range": 5, + "max_range": 30, + "range_increment": 1.67, + "base_casting_time": 150, + "energy_source": "MANA", + "base_energy_cost": 900, + "final_energy_cost": 600, + "energy_increment": -20, + "min_duration": 30000, + "max_duration": 90000, + "duration_increment": 4000, + "targeted_monster_species": [ "MAMMAL", "BIRD" ] } ] diff --git a/data/mods/Magiclysm/Spells/feral_wizards.json b/data/mods/Magiclysm/Spells/feral_wizards.json new file mode 100644 index 0000000000000..3f08d7e7794b8 --- /dev/null +++ b/data/mods/Magiclysm/Spells/feral_wizards.json @@ -0,0 +1,171 @@ +[ + { + "id": "mirror_image_rad_mage", + "type": "SPELL", + "name": "Mirror Image Radiation Mage", + "description": "This spell summons duplicates of the radiation mage. It's a bug if you have it.", + "valid_targets": [ "ground" ], + "effect": "summon", + "effect_str": "mon_mirror_image_rad_mage", + "shape": "blast", + "max_level": 2, + "min_damage": 3, + "max_damage": 5, + "damage_increment": 1, + "min_range": 4, + "max_range": 8, + "range_increment": 2, + "min_aoe": 3, + "max_aoe": 3, + "min_duration": 2000 + }, + { + "id": "feral_rad_mage_rad_spell", + "type": "SPELL", + "name": "Create Rads Radiation Mage", + "description": "This spell creates radiation gas around a target. It's a bug if you have it.", + "valid_targets": [ "hostile" ], + "effect": "emit", + "effect_str": "emit_rad_cloud", + "shape": "blast", + "max_level": 10, + "min_range": 5, + "max_range": 15, + "range_increment": 1 + }, + { + "id": "feral_rad_mage_summon_spell", + "type": "SPELL", + "name": "Summon Zombie ", + "description": "A spell for the feral rad mage to summon a zombie. It's a bug if you have this.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "WONDER", "NO_PROJECTILE" ], + "max_level": 1, + "min_damage": 1, + "max_damage": 1, + "min_range": 10, + "max_range": 10, + "message": "", + "shape": "blast", + "effect": "attack", + "extra_effects": [ + { "id": "feral_animist_summon_zombie" }, + { "id": "feral_animist_summon_zombie" }, + { "id": "feral_animist_summon_zombie" }, + { "id": "feral_animist_summon_zombie" }, + { "id": "feral_animist_summon_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_tough_zombie" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_brute" }, + { "id": "feral_animist_summon_zombie_hulk" } + ] + }, + { + "id": "feral_animist_summon_zombie", + "type": "SPELL", + "name": "Summon Zombie ", + "description": "A spell for the feral rad mage to summon a normal zombie. It's a bug if you have this.", + "valid_targets": [ "ground" ], + "flags": [ "HOSTILE_SUMMON", "LOUD", "NO_PROJECTILE" ], + "min_damage": 1, + "max_damage": 1, + "min_aoe": 3, + "max_aoe": 5, + "min_range": 10, + "max_range": 10, + "min_duration": 30000, + "max_duration": 30000, + "shape": "blast", + "effect": "summon", + "effect_str": "mon_zombie", + "sound_description": "a roar" + }, + { + "id": "feral_animist_summon_tough_zombie", + "type": "SPELL", + "name": "Summon Tough Zombie", + "description": "A spell for the feral rad mage to summon a tough zombie brute. It's a bug if you have this.", + "valid_targets": [ "ground" ], + "flags": [ "HOSTILE_SUMMON", "LOUD", "NO_PROJECTILE" ], + "min_damage": 1, + "max_damage": 1, + "min_aoe": 3, + "max_aoe": 5, + "min_range": 10, + "max_range": 10, + "min_duration": 30000, + "max_duration": 30000, + "shape": "blast", + "effect": "summon", + "effect_str": "mon_zombie_tough", + "sound_description": "a roar" + }, + { + "id": "feral_animist_summon_zombie_brute", + "type": "SPELL", + "name": "Summon Zombie Brute", + "description": "A spell for the feral rad mage to summon a zombie brute. It's a bug if you have this.", + "valid_targets": [ "ground" ], + "flags": [ "HOSTILE_SUMMON", "LOUD", "NO_PROJECTILE" ], + "min_damage": 1, + "max_damage": 1, + "min_aoe": 3, + "max_aoe": 5, + "min_range": 10, + "max_range": 10, + "min_duration": 30000, + "max_duration": 30000, + "shape": "blast", + "effect": "summon", + "effect_str": "mon_zombie_brute", + "sound_description": "a roar" + }, + { + "id": "feral_animist_summon_zombie_hulk", + "type": "SPELL", + "name": "Radiation Mage Summon Zombie", + "description": "A spell for the feral rad mage to summon a zombie hulk. They probably won't cast this--but good luck if they do.", + "valid_targets": [ "ground" ], + "flags": [ "HOSTILE_SUMMON", "LOUD", "NO_PROJECTILE" ], + "min_damage": 1, + "max_damage": 1, + "min_aoe": 3, + "max_aoe": 5, + "min_range": 10, + "max_range": 10, + "min_duration": 30000, + "max_duration": 30000, + "shape": "blast", + "effect": "summon", + "effect_str": "mon_zombie_hulk", + "sound_description": "a roar" + }, + { + "id": "feral_rad_mage_swap_spell", + "type": "SPELL", + "name": "Change Places with mirror image", + "description": "The spell for the feral radiation mage swapping places with a mirror image. It's a bug if you have it.", + "valid_targets": [ "ally" ], + "targeted_monster_ids": [ "mon_mirror_image_rad_mage" ], + "flags": [ "NO_LEGS", "LOUD", "SOMATIC", "SWAP_POS", "NO_PROJECTILE" ], + "effect": "attack", + "shape": "blast", + "max_level": 20, + "min_range": 5, + "max_range": 15, + "range_increment": 1.0 + } +] diff --git a/data/mods/Magiclysm/Spells/magus.json b/data/mods/Magiclysm/Spells/magus.json index 628e014b5a8eb..70f05bc94beaf 100644 --- a/data/mods/Magiclysm/Spells/magus.json +++ b/data/mods/Magiclysm/Spells/magus.json @@ -512,5 +512,60 @@ "energy_source": "MANA", "base_energy_cost": 250, "base_casting_time": 250 + }, + { + "id": "magus_teleport_mark", + "type": "SPELL", + "name": "Magus's Mark", + "description": "Mark a particular patch of ground to allow you to return to it later.", + "valid_targets": [ "self" ], + "spell_class": "MAGUS", + "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC" ], + "effect": "effect_on_condition", + "effect_str": "EOC_MAGUS_MARK", + "components": "spell_components_magus_mark", + "shape": "blast", + "difficulty": 5, + "max_level": 10, + "energy_source": "MANA", + "base_energy_cost": 2000, + "base_casting_time": 90000 + }, + { + "type": "effect_on_condition", + "id": "EOC_MAGUS_MARK", + "effect": [ + { "u_location_variable": { "u_val": "magus_teleport_mark" }, "min_radius": 0, "max_radius": 0 }, + { + "u_message": "As you make the gestures and recite the incantation, a brief glow fills your surroundings.", + "type": "good" + } + ] + }, + { + "id": "magus_word_of_recall", + "type": "SPELL", + "name": "Word of Recall", + "description": "Immediately return to the place you marked with Magus's Mark, no matter how far away it is.", + "valid_targets": [ "self" ], + "spell_class": "MAGUS", + "flags": [ "VERBAL", "SOMATIC" ], + "effect": "effect_on_condition", + "effect_str": "EOC_MAGUS_RECALL", + "components": "spell_components_word_of_recall", + "shape": "blast", + "difficulty": 8, + "max_level": 15, + "energy_source": "MANA", + "base_energy_cost": 400, + "base_casting_time": 100 + }, + { + "id": "EOC_MAGUS_RECALL", + "type": "effect_on_condition", + "effect": [ + { "u_message": "You shout out the word of recall and suddenly you are somewhere else.", "type": "good" }, + { "u_teleport": { "u_val": "magus_teleport_mark" } } + ] } ] diff --git a/data/mods/Magiclysm/effects/effects.json b/data/mods/Magiclysm/effects/effects.json index 79e8f8878cc78..2c9f0ee7dcd2b 100644 --- a/data/mods/Magiclysm/effects/effects.json +++ b/data/mods/Magiclysm/effects/effects.json @@ -380,10 +380,11 @@ "name": [ "Nature's Commune" ], "desc": [ "You can feel Mother Nature welcoming you, revitalizing your body and calming the natural fauna around you." ], "apply_message": "A warm embrace surrounds you, like that of a mother with her child.", - "remove_message": "Your communion with Mother Nature fades.", + "remove_message": "Your commune with Mother Nature fades.", "rating": "good", - "max_duration": "120 m", - "base_mods": { "health_min": [ 1 ], "health_chance": [ 40 ], "h_mod_min": [ 1 ], "h_mod_chance": [ 80 ], "health_tick": [ 30 ] } + "max_duration": "20 m", + "//": "No morale_mod is currently possible in effects, but this effect should give +5/+10 morale whenever that it's implemented.", + "base_mods": { "health_min": [ 1 ], "health_chance": [ 40 ], "h_mod_min": [ 1 ], "h_mod_chance": [ 80 ] } }, { "type": "effect_type", @@ -502,12 +503,18 @@ "id": "electric_waves", "type": "effect_type", "name": [ "Electric Waves" ], - "desc": [ "Your body will release a massive electric charges when you attack monsters." ], + "desc": [ "Your body throw a massive electric charges when you attack monsters." ], "apply_message": "A powerful energy streams out of your hands.", - "remove_message": "The energy streams calm down.", + "remove_message": "Energy streams calm down.", "rating": "good", "show_intensity": false, - "enchantments": [ "enchant_stormshaper_electric_waves" ] + "//": "When #61693 will be resolved (or, in other words, the spell will start to throw electric waves, as it says), the ITEM_DAMAGE_ELEC must be removed, and the spell description must be edited. Alternatively, the effect may be moved into electric gloves, instead of their flat bonus.", + "enchantments": [ + { + "hit_me_effect": [ { "id": "electric_waves_damage", "once_in": 3 } ], + "values": [ { "value": "ITEM_DAMAGE_ELEC", "add": { "u_val": "spell_level", "spell": "electric_waves" } } ] + } + ] }, { "id": "electric_arts", @@ -724,105 +731,53 @@ ] }, { + "id": "effect_biomancer_remove_instability", "type": "effect_type", - "id": "effect_sense_outsiders", - "name": [ "Sense Outsider" ], - "desc": [ "You can sense the presence of things that should not be." ], - "apply_message": "", - "remove_message": "Your awareness of outsiders fades.", - "rating": "good", - "enchantments": [ - { - "values": [ - { - "value": "SIGHT_RANGE_NETHER", - "add": { "math": [ "(( u_val('spell_level', 'spell: animist_sense_outsiders') * 2.5) + 3)" ] } - } - ] - } - ] - }, - { - "type": "effect_type", - "id": "effect_kelvinist_anti_cold", - "name": [ "Cloak of Warmth" ], - "desc": [ "The air around you is warmer thanks to your magic." ], - "apply_message": "", - "remove_message": "A cool breeze hits your skin.", - "rating": "good", - "enchantments": [ - { - "emitter": "emit_kelvinist_anti_cold", - "values": [ - { "value": "CLIMATE_CONTROL_HEAT", "add": 50 }, - { - "value": "ARMOR_COLD", - "add": { "math": [ "( u_val('spell_level', 'spell: kelvinist_anti_cold') * -1)" ] } - } - ] - } - ] - }, - { - "type": "effect_type", - "id": "effect_kelvinist_anti_heat", - "name": [ "Cloak of Chill" ], - "desc": [ "The air around you is cooler thanks to your magic." ], - "apply_message": "", - "remove_message": "A warm breeze hits your skin.", - "rating": "good", - "enchantments": [ - { - "emitter": "emit_kelvinist_anti_heat", - "values": [ - { "value": "CLIMATE_CONTROL_CHILL", "add": 50 }, - { - "value": "ARMOR_HEAT", - "add": { "math": [ "( u_val('spell_level', 'spell: kelvinist_anti_heat') * -1)" ] } - } - ] - } - ] - }, - { - "type": "effect_type", - "id": "effect_magus_slowfall", - "name": [ "Slowfall" ], - "desc": [ "You won't hit the ground nearly as hard anymore." ], - "apply_message": "", - "remove_message": "You can feel gravity take hold of you again.", + "name": [ "Increased Stability" ], + "desc": [ + "You are overcoming the aftereffects of XE037 overexposure.", + "You were just overcoming the aftereffects of XE037 overexposure but now you feel awful!" + ], + "apply_message": "You feel…strange.", + "remove_message": "The strange feeling passes and you feel more like yourself.", "rating": "good", - "enchantments": [ - { - "values": [ - { - "value": "FALL_DAMAGE", - "multiply": { "math": [ "(( u_val('spell_level', 'spell: magus_slowfall') * -0.01) - 0.9 )" ] } - } - ] - } - ] + "max_intensity": 2, + "show_intensity": false, + "vitamins": [ { "vitamin": "instability", "rate": [ [ -1, -1 ] ], "tick": [ "30 m" ] } ], + "scaling_mods": { "speed_mod": [ -25 ], "str_mod": [ -5 ], "dex_mod": [ -5 ], "int_mod": [ -5 ], "per_mod": [ -5 ] }, + "limb_score_mods": [ + { "limb_score": "manip", "modifier": 1, "scaling": -0.3 }, + { "limb_score": "block", "modifier": 1.0, "scaling": -0.2 }, + { "limb_score": "vision", "modifier": 1.0, "scaling": -0.05 }, + { "limb_score": "reaction", "modifier": 1, "scaling": -0.3 }, + { "limb_score": "move_speed", "modifier": 1.0, "scaling": -0.05 }, + { "limb_score": "balance", "modifier": 1, "scaling": -0.2 }, + { "limb_score": "footing", "modifier": 1, "scaling": -0.3 }, + { "limb_score": "swim", "modifier": 1.0, "scaling": -0.2 } + ], + "flags": [ "EFFECT_LIMB_SCORE_MOD" ] }, { + "id": "effect_biomancer_carrion_feast", "type": "effect_type", - "id": "effect_magus_spiderclimb", - "name": [ "Spider Climb" ], - "desc": [ "You can quickly ascend sheer surfaces." ], - "apply_message": "", - "remove_message": "Your enhanced climbing ability vanishes.", + "name": [ "Carrion Feast" ], + "desc": [ "You can eat rotten food without any trouble, if you can stand the taste." ], + "apply_message": "Your have a hunger for some overly-aged meat.", + "remove_message": "You can't believe you even considered eating that! Yuck!", "rating": "good", - "flags": [ "CLIMB_NO_LADDER", "WALL_CLING" ] + "show_intensity": false, + "flags": [ "IMMUNE_SPOIL", "PARAIMMUNE" ], + "blocks_effects": [ "foodpoison" ], + "vitamins": [ { "vitamin": "mutant_toxin", "rate": [ [ -1, -1 ] ], "absorb_mult": [ 0.5 ], "tick": [ "30 s" ] } ] }, { + "id": "effect_classless_watch", "type": "effect_type", - "id": "effect_biomancer_swim_speed", - "name": [ "Frog Limbs" ], - "desc": [ "Your hands and feet have grown webbing, enabling faster swimming." ], - "//": "Minor stamina regen to help with swimming. If people want to cast this spell as a stamina buff, they're welcome to do it and deal with their froggy limbs.", + "name": [ "Know the Day and the Hour" ], + "desc": [ "You know exactly what time it is." ], "apply_message": "", - "remove_message": "With an unpleasant twisting sensation your hands and feet return to normal.", - "rating": "good", - "flags": [ "WEBBED_HANDS", "WEBBED_FEET" ], - "base_mods": { "stamina_min": [ 10 ] } + "remove_message": "You perfect sense of time fades away.", + "max_duration": "24 hours", + "flags": [ "WATCH" ] } ] diff --git a/data/mods/Magiclysm/emitter.json b/data/mods/Magiclysm/emitter.json index 84fb92c50caf7..cd724ce8b11b1 100644 --- a/data/mods/Magiclysm/emitter.json +++ b/data/mods/Magiclysm/emitter.json @@ -53,19 +53,17 @@ "chance": 100 }, { - "id": "emit_kelvinist_anti_heat", + "id": "emit_rad_mage", "type": "emit", - "field": "fd_kelvinist_cold", - "intensity": 3, - "qty": 300, - "chance": 100 + "field": "fd_rad_mage_aura", + "intensity": 1, + "qty": 4 }, { - "id": "emit_kelvinist_anti_cold", + "id": "emit_rad_mage_cloud", "type": "emit", - "field": "fd_kelvinist_warmth", + "field": "fd_rad_mage_aura", "intensity": 3, - "qty": 300, - "chance": 100 + "qty": 100 } ] diff --git a/data/mods/Magiclysm/field.json b/data/mods/Magiclysm/field.json index 0b5487edc1e13..ae879e9fe2dcc 100644 --- a/data/mods/Magiclysm/field.json +++ b/data/mods/Magiclysm/field.json @@ -141,33 +141,38 @@ "looks_like": "fd_fog" }, { - "id": "fd_kelvinist_warmth", + "id": "fd_rad_mage_aura", "type": "field_type", "intensity_levels": [ - { "name": "heated air", "sym": "&", "convection_temperature_mod": 7 }, - { "color": "yellow", "convection_temperature_mod": 15 }, - { "color": "red", "convection_temperature_mod": 30 } - ], - "decay_amount_factor": 5, - "percent_spread": 50, - "outdoor_age_speedup": "15 minutes", - "priority": 7, - "half_life": "30 minutes", - "phase": "gas" - }, - { - "id": "fd_kelvinist_cold", - "type": "field_type", - "intensity_levels": [ - { "name": "chill air", "sym": "&", "convection_temperature_mod": -7 }, - { "color": "blue", "convection_temperature_mod": -15 }, - { "color": "cyan", "convection_temperature_mod": -30 } + { "name": "hazy cloud", "sym": "8", "dangerous": true, "translucency": 10, "extra_radiation_max": 10 }, + { + "name": "radioactive gas", + "color": "light_green", + "extra_radiation_max": 15, + "radiation_hurt_damage_min": 1, + "radiation_hurt_damage_max": 2, + "radiation_hurt_message": "This radioactive gas burns!" + }, + { + "name": "thick radioactive gas", + "color": "green", + "transparent": false, + "extra_radiation_max": 20, + "radiation_hurt_damage_min": 1, + "radiation_hurt_damage_max": 3, + "radiation_hurt_message": "This radioactive gas burns!" + } ], "decay_amount_factor": 5, - "percent_spread": 50, - "outdoor_age_speedup": "15 minutes", - "priority": 7, - "half_life": "30 minutes", - "phase": "gas" + "percent_spread": 15, + "outdoor_age_speedup": "1 minutes", + "dirty_transparency_cache": true, + "has_fume": true, + "priority": 8, + "half_life": "100 minutes", + "phase": "gas", + "display_items": false, + "display_field": true, + "looks_like": "fd_nuke_gas" } ] diff --git a/data/mods/Magiclysm/itemgroups/death_drops.json b/data/mods/Magiclysm/itemgroups/death_drops.json index 447bd37073afc..b28c264835082 100644 --- a/data/mods/Magiclysm/itemgroups/death_drops.json +++ b/data/mods/Magiclysm/itemgroups/death_drops.json @@ -27,5 +27,30 @@ "id": "default_zombie_items_pockets", "copy-from": "default_zombie_items_pockets", "extend": { "entries": [ { "item": "denarius", "prob": 7 } ] } + }, + { + "type": "item_group", + "subtype": "collection", + "//": "items carried by a XEDRA research thaumaturge prior to zombification. Magical trinkets, reagents, etc.", + "id": "mon_zombie_research_thaumaturge_death_drops", + "entries": [ + { "group": "lab_shoes", "damage": [ 1, 4 ] }, + { "group": "lab_torso_research_thaumaturge", "damage": [ 1, 4 ] }, + { "group": "lab_pants", "damage": [ 1, 4 ] }, + { "group": "underwear", "damage": [ 1, 4 ] }, + { + "collection": [ + { "group": "potions_common", "prob": 50 }, + { "group": "potions_uncommon", "prob": 20 }, + { "group": "enchanted_rings_common", "prob": 20 }, + { "group": "enchanted_wands_lesser", "prob": 20 }, + { "group": "magical_reagents", "prob": 80, "count-min": 1, "count-max": 5 }, + { "group": "textbooks", "prob": 25 }, + { "group": "lab_files_generic", "prob": 15 }, + { "item": "crystallized_mana", "prob": 35, "charges": [ 1, 5 ] } + ] + }, + { "group": "wallets_science", "damage": [ 1, 4 ], "prob": 5 } + ] } ] diff --git a/data/mods/Magiclysm/itemgroups/itemgroups.json b/data/mods/Magiclysm/itemgroups/itemgroups.json index b942b20960c5e..49c3ee9c48e20 100644 --- a/data/mods/Magiclysm/itemgroups/itemgroups.json +++ b/data/mods/Magiclysm/itemgroups/itemgroups.json @@ -21,7 +21,7 @@ "type": "item_group", "id": "homebooks", "copy-from": "homebooks", - "extend": { "items": [ { "group": "spellbook_loot_0", "prob": 4 }, { "item": "history_botanical_enchantment", "prob": 2 } ] } + "extend": { "items": [ { "group": "spellbook_loot_0", "prob": 4 } ] } }, { "type": "item_group", @@ -1034,7 +1034,8 @@ { "item": "spell_scroll_animist_sense_outsiders", "prob": 30 }, { "item": "spell_scroll_summon_undead", "prob": 50 }, { "item": "spell_scroll_necrotic_gaze", "prob": 50 }, - { "item": "spell_scroll_summon_wisps", "prob": 50 } + { "item": "spell_scroll_summon_wisps", "prob": 50 }, + { "item": "spell_scroll_animist_summon_watcher", "prob": 50 } ], "prob": 45 }, @@ -1222,7 +1223,8 @@ { "item": "spell_scroll_pain_split", "prob": 50 }, { "item": "spell_scroll_bio_grotesque", "prob": 50 }, { "item": "spell_scroll_biomancer_coagulant_weave", "prob": 50 }, - { "item": "spell_scroll_bio_fleshpouch", "prob": 50 } + { "item": "spell_scroll_bio_fleshpouch", "prob": 50 }, + { "item": "spell_scroll_biomancer_carrion_feast", "prob": 25 } ], "prob": 35 }, @@ -1271,7 +1273,8 @@ { "item": "spell_scroll_recover_fatigue", "prob": 100 }, { "item": "spell_scroll_druidic_regrowth", "prob": 100 }, { "item": "spell_scroll_druidic_healing", "prob": 100 }, - { "item": "spell_scroll_druid_bandage", "prob": 100 } + { "item": "spell_scroll_druid_bandage", "prob": 100 }, + { "item": "spell_scroll_druid_beguile_savage_beast", "prob": 100 } ], "prob": 10 } @@ -1524,5 +1527,32 @@ { "item": "glow_dust", "prob": 10, "count": [ 4, 6 ] }, { "item": "stirge_proboscis", "prob": 25 } ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "lab_torso_research_thaumaturge", + "items": [ + [ "coat_lab", 20 ], + [ "coat_lab", 20 ], + [ "coat_lab", 20 ], + [ "coat_lab", 20 ], + [ "tshirt", 80 ], + [ "longshirt", 80 ], + [ "polo_shirt", 65 ], + [ "dress_shirt", 60 ], + [ "dress", 70 ], + [ "sweatshirt", 75 ], + [ "sweater", 75 ], + [ "turtleneck", 25 ], + [ "turtleneck_shirt", 25 ], + [ "hoodie", 65 ], + [ "jumpsuit", 20 ], + [ "badge_doctor", 10 ], + [ "hazmat_suit", 5 ], + [ "cleansuit", 10 ], + { "item": "coat_lab_plus_one", "prob": 20 }, + { "item": "coat_lab_plus_two", "prob": 5 } + ] } ] diff --git a/data/mods/Magiclysm/itemgroups/spellbooks.json b/data/mods/Magiclysm/itemgroups/spellbooks.json index 60846d986c0ea..1957100aa1011 100644 --- a/data/mods/Magiclysm/itemgroups/spellbooks.json +++ b/data/mods/Magiclysm/itemgroups/spellbooks.json @@ -27,6 +27,7 @@ [ "spell_scroll_chilling_touch", 50 ], [ "spell_scroll_magic_missile", 50 ], [ "spell_scroll_bleed", 50 ], + [ "spell_scroll_classless_watch_spell", 30 ], [ "spell_scroll_disruption_bolt", 50 ], [ "spell_scroll_shocking_lash", 50 ], [ "spell_scroll_electric_arts", 50 ], @@ -51,6 +52,7 @@ "type": "item_group", "items": [ [ "spell_scroll_sound_bomb", 35 ], + [ "spell_scroll_animist_summon_watcher", 30 ], [ "spell_scroll_pain_split", 25 ], [ "spell_scroll_bio_grotesque", 40 ], [ "spell_scroll_bio_fleshpouch", 30 ], @@ -98,6 +100,7 @@ [ "spell_scroll_repelling_arc", 30 ], [ "spell_scroll_knock", 35 ], [ "spell_scroll_caustic_aura", 30 ], + [ "spell_scroll_biomancer_carrion_feast", 20 ], [ "spell_scroll_impactsling", 20 ], [ "spell_scroll_boneclub", 20 ], [ "spell_scroll_flamesword", 35 ], @@ -139,6 +142,7 @@ [ "spell_scroll_magus_haste", 50 ], [ "spell_scroll_magus_mana_beam", 35 ], [ "spell_scroll_magus_escape", 50 ], + [ "spell_scroll_magus_teleport_mark", 25 ], [ "spell_scroll_cats_grace", 50 ], [ "spell_scroll_eagles_sight", 50 ], [ "spell_scroll_ogres_strength", 50 ], @@ -171,6 +175,7 @@ "type": "item_group", "items": [ [ "spell_scroll_magus_mana_blast", 50 ], + [ "spell_scroll_magus_word_of_recall", 25 ], [ "lightning_storm_scroll", 50 ], [ "spell_scroll_vacuum_decompression", 50 ], [ "spell_scroll_invisibility", 10 ], @@ -180,6 +185,7 @@ [ "spell_scroll_druidic_healing", 20 ], [ "spell_scroll_summon_magic_motorcycle", 5 ], [ "bio_sneeze_beam", 50 ], + [ "spell_scroll_druid_beguile_savage_beast", 10 ], [ "spell_scroll_banishment_lesser", 30 ], [ "spell_scroll_nova_flare", 25 ], [ "spell_scroll_freezing_touch", 40 ], @@ -224,7 +230,8 @@ [ "bioelectricity", 60 ], [ "animist_spirits", 60 ], [ "wizard_advanced", 60 ], - [ "stat_up_spellbook", 45 ] + [ "stat_up_spellbook", 45 ], + [ "magic_movement_book", 30 ] ] }, { diff --git a/data/mods/Magiclysm/items/enchanted_clothes.json b/data/mods/Magiclysm/items/enchanted_clothes.json index 0023a2ecbad17..9b24595eb6430 100644 --- a/data/mods/Magiclysm/items/enchanted_clothes.json +++ b/data/mods/Magiclysm/items/enchanted_clothes.json @@ -89,5 +89,33 @@ "armor": [ { "encumbrance": 2, "coverage": 95, "covers": [ "leg_l", "leg_r" ] } ], "material_thickness": 0.5, "flags": [ "VARSIZE", "FANCY", "WATER_FRIENDLY" ] + }, + { + "id": "coat_lab_plus_one", + "copy-from": "coat_lab", + "type": "ARMOR", + "name": { "str_sp": "enchanted lab coat" }, + "looks_like": "coat_lab", + "description": "A long white coat with several large pockets, with a pentagram on the lapel and a few orichalcum threads sewn into the seams. Perfect for the stylish-but-effective academic mage.", + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "REGEN_MANA", "multiply": 0.4 } ] } ] + } + }, + { + "id": "coat_lab_plus_two", + "copy-from": "coat_lab", + "type": "ARMOR", + "name": { "str_sp": "enspelled lab coat" }, + "looks_like": "coat_lab", + "description": "A long white coat with several large pockets, with a pentagram on the lapel and orichalcum and mithril threads sewn into the seams. A director of thaumaturgical research would have worn this or something like this before the Cataclysm.", + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "REGEN_MANA", "multiply": 0.5 }, { "value": "MAX_MANA", "add": 500 } ] + } + ] + } } ] diff --git a/data/mods/Magiclysm/items/spell_scrolls.json b/data/mods/Magiclysm/items/spell_scrolls.json index ccfc439b88857..e8a5890691eea 100644 --- a/data/mods/Magiclysm/items/spell_scrolls.json +++ b/data/mods/Magiclysm/items/spell_scrolls.json @@ -1482,5 +1482,68 @@ "name": { "str": "Scroll of Giant Growth", "str_pl": "Scrolls of Giant Growth" }, "description": "Grow to enormous size and crush your enemies.", "use_action": { "type": "learn_spell", "spells": [ "biomancer_giant_growth" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_biomancer_remove_instability", + "//": "Biomancer spell", + "name": { "str": "Formula of Restore Genetic Stability", "str_pl": "Formulae of Restore Genetic Stability" }, + "description": "This research paper has an extremely complicated series of formulae with various genetic interspersed. It claims that the spell will cure the aftereffects of XE037 overexposure.", + "use_action": { "type": "learn_spell", "spells": [ "biomancer_remove_instability" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_biomancer_carrion_feast", + "//": "Biomancer spell", + "name": { "str": "Scroll of Carrion Feast", "str_pl": "Scrolls of Carrion Feast" }, + "description": "Eat rotten food with no ill effects. It doesn't make it taste any better, though.", + "use_action": { "type": "learn_spell", "spells": [ "biomancer_carrion_feast" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_classless_watch_spell", + "//": "Classless spell", + "name": { "str": "Scroll of Knowing the Day and the Hour", "str_pl": "Scrolls of Knowing the Day and the Hour" }, + "description": "Cast this spell to know exactly what time it is. You're amazed anyone is still making these scrolls; this spell might as well be a museum piece.", + "use_action": { "type": "learn_spell", "spells": [ "classless_watch_spell" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_teleport_mark", + "//": "Magus spell", + "name": { "str": "Scroll of Magus's Mark", "str_pl": "Scrolls of Magus's Mark" }, + "description": "Mark an area to be aetherically resonant so that you can easily find it later; for example, by using the Word of Recall spell.", + "use_action": { "type": "learn_spell", "spells": [ "magus_teleport_mark" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_word_of_recall", + "//": "Magus spell", + "name": { "str": "Scroll of Word of Recall", "str_pl": "Scrolls of Word of Recall" }, + "description": "The counterpart to Magus's Mark, reciting this simple spell will instantly return you to wherever it was that you cast that spell.", + "use_action": { "type": "learn_spell", "spells": [ "magus_word_of_recall" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_animist_summon_watcher", + "//": "Animist spell", + "name": { "str": "Scroll of Summon Watcher Spirit", "str_pl": "Scrolls of Summon Watcher Spirit" }, + "description": "Summon a spirit through whose eyes you can see. This spell was frowned upon pre-Cataclysm due to the potential for misuse, but its many legitimate uses kept it on the curriculum at major universities' thaumaturgical studies departments.", + "use_action": { "type": "learn_spell", "spells": [ "animist_summon_watcher" ] } + }, + { + "type": "BOOK", + "copy-from": "spell_scroll", + "id": "spell_scroll_druid_beguile_savage_beast", + "//": "Druid spell", + "name": { "str": "Scroll of Beguiling the Savage Beast", "str_pl": "Scrolls of Beguiling the Savage Beast" }, + "description": "Charm an animal into your service for a time. They don't even technically have to be savage!", + "use_action": { "type": "learn_spell", "spells": [ "druid_beguile_savage_beast" ] } } ] diff --git a/data/mods/Magiclysm/items/spellbooks.json b/data/mods/Magiclysm/items/spellbooks.json index 0342ead3c934b..553ab398bbf56 100644 --- a/data/mods/Magiclysm/items/spellbooks.json +++ b/data/mods/Magiclysm/items/spellbooks.json @@ -34,7 +34,7 @@ "type": "BOOK", "category": "manuals", "name": { "str": "A Beginner's Guide to Magic", "str_pl": "copies of A Beginner's Guide to Magic" }, - "//": "2 Magus, 1 classless spell", + "//": "2 Magus, 3 classless spell", "description": "You would describe this as more like a pamphlet than a spellbook, but it seems to have at least one interesting spell you can use.", "weight": "585 g", "volume": "250 ml", @@ -43,7 +43,10 @@ "looks_like": "cookbook", "symbol": "?", "color": "light_red", - "use_action": { "type": "learn_spell", "spells": [ "magic_missile", "phase_door", "create_atomic_light", "sound_bomb" ] } + "use_action": { + "type": "learn_spell", + "spells": [ "magic_missile", "phase_door", "create_atomic_light", "sound_bomb", "classless_watch_spell" ] + } }, { "id": "novice_stormshaper_book", @@ -670,5 +673,23 @@ "symbol": "?", "color": "yellow", "use_action": { "type": "learn_spell", "spells": [ "cats_grace", "ogres_strength", "foxs_cunning", "eagles_sight" ] } + }, + { + "id": "magic_movement_book", + "type": "BOOK", + "name": { "str": "Wherever You've Gone, There You Can Be", "str_pl": "copies of Wherever You've Gone, There You Can Be" }, + "//": "3 Magus spells, 1 Technomancer spell", + "description": "A very sarcastically-written guide to using magic to get into and out of places you absolutely are not supposed to be.", + "weight": "1200 g", + "volume": "2500 ml", + "price": 7500, + "material": [ "paper" ], + "looks_like": "cookbook", + "symbol": "?", + "color": "brown", + "use_action": { + "type": "learn_spell", + "spells": [ "magus_teleport_mark", "magus_word_of_recall", "magus_spiderclimb", "quantum_tunnel_lesser" ] + } } ] diff --git a/data/mods/Magiclysm/monstergroups.json b/data/mods/Magiclysm/monstergroups.json index 81c3ec3370fa6..58eaa32f814a8 100644 --- a/data/mods/Magiclysm/monstergroups.json +++ b/data/mods/Magiclysm/monstergroups.json @@ -86,6 +86,32 @@ { "monster": "mon_yulecat_zombie_brute", "weight": 5, "cost_multiplier": 30, "starts": "30 days" } ] }, + { + "type": "monstergroup", + "name": "GROUP_LAB", + "monsters": [ { "monster": "mon_feral_lab_magician", "weight": 25, "cost_multiplier": 5 } ] + }, + { + "type": "monstergroup", + "name": "GROUP_LAB_SURFACE", + "monsters": [ + { "monster": "mon_feral_lab_magician", "weight": 25, "cost_multiplier": 5 }, + { "monster": "mon_feral_radiation_mage", "weight": 2, "cost_multiplier": 10 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_MICROLAB", + "monsters": [ { "monster": "mon_feral_lab_magician", "weight": 2, "cost_multiplier": 5 } ] + }, + { + "type": "monstergroup", + "name": "GROUP_LAB_RESEARCHERS", + "monsters": [ + { "monster": "mon_feral_lab_magician", "weight": 20, "cost_multiplier": 5 }, + { "monster": "mon_feral_radiation_mage", "weight": 1, "cost_multiplier": 10 } + ] + }, { "type": "monstergroup", "name": "GROUP_POLYMORPH_SHADOW", diff --git a/data/mods/Magiclysm/monsters/feral_wizards.json b/data/mods/Magiclysm/monsters/feral_wizards.json new file mode 100644 index 0000000000000..10b98c6108583 --- /dev/null +++ b/data/mods/Magiclysm/monsters/feral_wizards.json @@ -0,0 +1,150 @@ +[ + { + "id": "mon_feral_lab_magician", + "type": "MONSTER", + "name": { "str": "feral thaumaturgical researcher" }, + "description": "A researcher with the look of the stereotypical academic mage, their lab coat bearing an arcane sigil on the breast pocket. The bloodshot eyes and constant muttering, accompanied by the occasional gesture that releases a burst of sparks, tell you that research is currently far from their minds.", + "default_faction": "zombie", + "looks_like": "chud", + "bodytype": "human", + "species": [ "HUMAN" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "flesh" ], + "symbol": "@", + "color": "cyan", + "aggression": 30, + "morale": 100, + "melee_skill": 2, + "melee_dice": 1, + "melee_dice_sides": 3, + "weakpoint_sets": [ "wps_humanoid_body" ], + "families": [ "prof_intro_biology", "prof_physiology" ], + "dodge": 1, + "harvest": "human", + "dissect": "dissect_human_sample_single", + "vision_day": 30, + "vision_night": 3, + "path_settings": { "max_dist": 30, "allow_open_doors": true, "avoid_traps": true, "avoid_sharp": true }, + "special_attacks": [ + { + "id": "feral_thaum_sci_spell_magicmissile", + "type": "spell", + "spell_data": { "id": "magic_missile", "min_level": 3 }, + "cooldown": 10, + "monster_message": "%1$s screams out a word of power!" + }, + { + "id": "feral_thaum_sci_spell_blindflash", + "type": "spell", + "spell_data": { "id": "blinding_flash", "min_level": 0 }, + "cooldown": 15, + "monster_message": "%1$s gestures and light explodes everywhere!" + }, + { + "id": "smash", + "move_cost": 80, + "cooldown": 10, + "damage_max_instance": [ { "damage_type": "bash", "amount": 15, "armor_penetration": 10 } ], + "hitsize_min": 12, + "range": 8, + "throw_strength": 40, + "blockable": false, + "hit_dmg_u": "%1$s gestures at you and a powerful force hurls you through the air!", + "hit_dmg_npc": "%1$s gestures at and a powerful force hurls them through the air!", + "miss_msg_u": "%s gestures at you, and you feel a crushing pressure for a moment before the feeling vanishes!", + "miss_msg_npc": "%s gestures at but nothing happens!" + } + ], + "death_drops": "mon_zombie_research_thaumaturge_death_drops", + "upgrades": { "half_life": 90, "into_group": "GROUP_ZOMBIE_UPGRADE" }, + "zombify_into": "mon_zombie", + "fungalize_into": "mon_feral_human_pipe_fungal_infected", + "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], + "flags": [ "SEES", "HEARS", "SMELLS", "WARM", "BASHES", "GROUP_BASH", "HUMAN", "CAN_OPEN_DOORS", "PATH_AVOID_DANGER_1" ] + }, + { + "id": "mon_feral_radiation_mage", + "type": "MONSTER", + "name": { "str": "feral radiation mage" }, + "description": "A research thaumaturge with the international radiation danger symbol in front of a pentagram on their lab coat. If you had a geiger counter active, it would probably be going crazy right now.", + "default_faction": "zombie", + "looks_like": "chud", + "bodytype": "human", + "species": [ "HUMAN" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "flesh" ], + "symbol": "@", + "color": "cyan", + "aggression": 30, + "morale": 100, + "melee_skill": 2, + "melee_dice": 1, + "melee_dice_sides": 3, + "weakpoint_sets": [ "wps_humanoid_body" ], + "families": [ "prof_intro_biology", "prof_physiology" ], + "dodge": 1, + "harvest": "human", + "emit_fields": [ { "emit_id": "emit_rad_leak", "delay": "5 s" } ], + "dissect": "dissect_human_sample_single", + "vision_day": 30, + "vision_night": 3, + "path_settings": { "max_dist": 30, "allow_open_doors": true, "avoid_traps": true, "avoid_sharp": true }, + "special_attacks": [ + { + "id": "feral_rad_mage_wall_of_fog", + "type": "spell", + "spell_data": { "id": "stormshaper_wall_of_fog", "min_level": 3 }, + "cooldown": 15, + "monster_message": "%1$s gestures and a sudden force slams you to the ground!" + }, + { + "id": "feral_rad_mage_rad_attack", + "type": "spell", + "spell_data": { "id": "feral_rad_mage_rad_spell", "min_level": 5 }, + "cooldown": 25, + "monster_message": "%1$s makes arcane motions and the air is filled with burning gas!" + }, + { + "id": "feral_thaum_sci_spell_mirrorimage", + "type": "spell", + "spell_data": { "id": "mirror_image_rad_mage", "min_level": 0 }, + "cooldown": 15, + "monster_message": "%1$s smiles and duplicates appear!" + }, + { + "id": "feral_thaum_sci_spell_summon_zombie", + "type": "spell", + "spell_data": { "id": "feral_rad_mage_summon_spell", "min_level": 0 }, + "cooldown": 30, + "monster_message": "%1$s intones words of power and a corpse claws its way out of the ground!" + } + ], + "death_drops": { + "subtype": "collection", + "items": [ { "item": "wrapped_rad_badge", "prob": 80 }, { "group": "mon_zombie_research_thaumaturge_death_drops", "prob": 100 } ] + }, + "upgrades": { "half_life": 90, "into_group": "GROUP_ZOMBIE_UPGRADE" }, + "zombify_into": "mon_zombie", + "fungalize_into": "mon_feral_human_pipe_fungal_infected", + "anger_triggers": [ "FRIEND_DIED", "FRIEND_ATTACKED", "HURT" ], + "//": "NO_BREATHE is required so it doesn't kill itself with its own radiation field", + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "WARM", + "BASHES", + "GROUP_BASH", + "NO_BREATHE", + "HUMAN", + "CAN_OPEN_DOORS", + "PATH_AVOID_DANGER_1" + ] + } +] diff --git a/data/mods/Magiclysm/monsters/mics.json b/data/mods/Magiclysm/monsters/mics.json index c6cc3185c528a..472b6acf11142 100644 --- a/data/mods/Magiclysm/monsters/mics.json +++ b/data/mods/Magiclysm/monsters/mics.json @@ -23,6 +23,19 @@ "death_function": { "message": "The %s disappears.", "corpse_type": "NO_CORPSE" }, "flags": [ "FLIES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] }, + { + "id": "mon_mirror_image_rad_mage", + "type": "MONSTER", + "copy-from": "mon_mirror_image", + "looks_like": "mon_feral_radiation_mage", + "name": "feral radiation mage", + "description": "A research thaumaturge with the international radiation danger symbol in front of a pentagram on their lab coat. If you had a geiger counter active, it would probably be going crazy right now.", + "default_faction": "zombie", + "species": [ "UNKNOWN" ], + "special_attacks": [ [ "DISAPPEAR", 20 ] ], + "anger_triggers": [ "STALK" ], + "flags": [ "FLIES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] + }, { "id": "mon_animated_blade", "type": "MONSTER", @@ -75,5 +88,33 @@ "special_attacks": [ [ "DISAPPEAR", 2000 ] ], "death_function": { "message": "", "corpse_type": "NO_CORPSE" }, "flags": [ "FLIES", "SEES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] + }, + { + "id": "mon_watcher_spirit", + "type": "MONSTER", + "name": "watcher spirit", + "description": "A summoned watcher spirit, translucent and barely visible. It gazes all around itself.", + "default_faction": "player", + "bodytype": "blob", + "species": [ "AIR_SPIRIT" ], + "volume": "1500 ml", + "weight": "136 g", + "hp": 20, + "speed": 160, + "material": [ "wind" ], + "symbol": "o", + "color": "white", + "aggression": -10, + "morale": 40, + "melee_skill": 1, + "melee_dice": 1, + "melee_dice_sides": 1, + "dodge": 9, + "vision_day": 30, + "vision_night": 30, + "harvest": "exempt", + "anger_triggers": [ ], + "death_function": { "message": "The %s dissipates in a gust of wind!", "corpse_type": "NO_CORPSE" }, + "flags": [ "SEES", "HEARS", "FLIES", "PATH_AVOID_DANGER_1", "CAMOUFLAGE", "HARDTOSHOOT", "NOGIB", "NOHEAD", "NO_BREATHE" ] } ] diff --git a/data/mods/Magiclysm/professions.json b/data/mods/Magiclysm/professions.json index 1d3b925a09045..9d6ff5039c4fe 100644 --- a/data/mods/Magiclysm/professions.json +++ b/data/mods/Magiclysm/professions.json @@ -280,7 +280,7 @@ "id": "ranger", "name": "Introspectionist", "description": "You segregated yourself from society because you wanted to concentrate on improving yourself. It was you and your best friend, but now the apocalypse won't leave you alone.", - "spells": [ { "id": "magic_missile", "level": 4 } ], + "spells": [ { "id": "magic_missile", "level": 4 }, { "id": "classless_watch_spell", "level": 2 } ], "points": 4, "skills": [ { "level": 2, "name": "survival" }, { "level": 1, "name": "firstaid" } ], "traits": [ "MAGUS" ], @@ -393,6 +393,8 @@ { "id": "phase_door", "level": 10 }, { "id": "dimension_door", "level": 2 }, { "id": "translocate_self", "level": 5 }, + { "id": "magus_teleport_mark", "level": 6 }, + { "id": "magus_word_of_recall", "level": 4 }, { "id": "magus_escape", "level": 3 }, { "id": "gravity_well", "level": 2 } ], @@ -494,7 +496,8 @@ "spells": [ { "id": "eshaper_spawn_tools", "level": 3 }, { "id": "move_earth", "level": 2 }, - { "id": "earthshaper_pillar", "level": 1 } + { "id": "earthshaper_pillar", "level": 1 }, + { "id": "classless_watch_spell", "level": 1 } ], "traits": [ "EARTHSHAPER" ], "items": { @@ -544,7 +547,8 @@ { "id": "druid_feralform", "level": 4 }, { "id": "summon_wolf_druid", "level": 3 }, { "id": "purify_seed", "level": 3 }, - { "id": "dark_sight", "level": 2 } + { "id": "dark_sight", "level": 2 }, + { "id": "classless_watch_spell", "level": 1 } ], "skills": [ { "level": 4, "name": "survival" }, { "level": 3, "name": "spellcraft" } ], "traits": [ "ANIMALEMPATH", "SLOWREADER", "DRUID" ], @@ -573,7 +577,8 @@ { "id": "druid_naturebow1", "level": 4 }, { "id": "druid_natures_commune", "level": 3 }, { "id": "purify_seed", "level": 2 }, - { "id": "druid_veggrasp", "level": 1 } + { "id": "druid_veggrasp", "level": 1 }, + { "id": "classless_watch_spell", "level": 2 } ], "skills": [ { "level": 2, "name": "survival" }, @@ -830,7 +835,8 @@ "spells": [ { "id": "druidic_healing", "level": 4 }, { "id": "purify_seed", "level": 4 }, - { "id": "druid_woodshaft", "level": 3 } + { "id": "druid_woodshaft", "level": 3 }, + { "id": "classless_watch_spell", "level": 2 } ], "skills": [ { "level": 4, "name": "survival" }, diff --git a/data/mods/Magiclysm/requirements/spell_components.json b/data/mods/Magiclysm/requirements/spell_components.json index 8ee7d2b049977..363c064478ab5 100644 --- a/data/mods/Magiclysm/requirements/spell_components.json +++ b/data/mods/Magiclysm/requirements/spell_components.json @@ -135,5 +135,20 @@ ], [ [ "alder_bark", 1 ], [ "tanbark", 1 ], [ "birchbark", 1 ], [ "willowbark", 1 ] ] ] + }, + { + "id": "spell_components_magus_mark", + "type": "requirement", + "components": [ [ [ "crystallized_mana", 10 ] ] ] + }, + { + "id": "spell_components_word_of_recall", + "type": "requirement", + "components": [ [ [ "crystallized_mana", 1 ] ] ] + }, + { + "id": "spell_components_remove_instability", + "type": "requirement", + "components": [ [ [ "purifier", 1 ] ] ] } ] diff --git a/data/mods/Magiclysm/species.json b/data/mods/Magiclysm/species.json index ae2b7113f41e6..f47f92584a4fa 100644 --- a/data/mods/Magiclysm/species.json +++ b/data/mods/Magiclysm/species.json @@ -46,5 +46,12 @@ "id": "OGRE", "description": "a monstrous, powerful humanoid", "anger_triggers": [ "HURT", "FRIEND_ATTACKED", "PLAYER_WEAK" ] + }, + { + "type": "SPECIES", + "id": "AIR_SPIRIT", + "description": "A magical being of wind and rain.", + "anger_triggers": [ "HURT", "FRIEND_ATTACKED" ], + "bleeds": "fd_cold_air1" } ] diff --git a/data/mods/Magiclysm/traits/classes.json b/data/mods/Magiclysm/traits/classes.json index 18d18ac8e0d54..9014ec6f28ba8 100644 --- a/data/mods/Magiclysm/traits/classes.json +++ b/data/mods/Magiclysm/traits/classes.json @@ -21,7 +21,8 @@ "purifiable": false, "valid": false, "cancels": [ "MAGUS" ], - "spells_learned": [ [ "create_rune_animist", 0 ] ] + "spells_learned": [ [ "create_rune_animist", 0 ] ], + "moncams": [ [ "mon_watcher_spirit", 30 ] ] }, { "type": "mutation", diff --git a/data/mods/Magiclysm/worldgen/labs/microlab.json b/data/mods/Magiclysm/worldgen/labs/microlab.json new file mode 100644 index 0000000000000..0f1b35f1ac0ac --- /dev/null +++ b/data/mods/Magiclysm/worldgen/labs/microlab.json @@ -0,0 +1,72 @@ +[ + { + "type": "mapgen", + "nested_mapgen_id": "microlab_generic_tile", + "//": "XEDRA magical research location", + "weight": 750, + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " | cc 2 2 cc | ", + " | |^^| |cccc ", + " ||||||||||||||||||||c ", + " |------------------|6 ", + " |-UUUUdd6- -|r ", + "|||-β h 6- ¢¢¢¢ -||2", + " |-β 2 ¢ØØ¢ -| ", + " |-β 2 ¢ØØ¢ -|c ", + " |-☿h - ¢¢¢¢ -|c ", + " |-BB -ββ☿ -| ", + "2|G---22-------------|||", + " 5 -| ", + " 5 -| ", + "|||-------- --------|||", + " |-dddddd- -llii ~-|c ", + " |-h h h- 2 ~-| ", + " |- - --------| ", + " c|- 3 2 U-|c ", + "|||-dh h- - U-|||", + " c|-6dBBBd- -ββ U-|F ", + " c|------------------|F ", + " c||||||||||||||||||||||", + " cccc|c |^^| | cc ", + " c|c 2 2 | " + ], + "palettes": [ "microlab" ], + "terrain": { "G": "t_card_science", "Ø": "t_rock_floor", "¢": "t_rock_floor" }, + "furniture": { "☿": "f_alembic", "β": "f_magic_bench", "Ø": "f_magic_circle" }, + "place_item": [ + { "item": "spell_scroll_biomancer_remove_instability", "x": 12, "y": 9, "chance": 100 }, + { "item": "candle", "x": 15, "y": 5, "chance": 100 }, + { "item": "candle", "x": 15, "y": 8, "chance": 100 }, + { "item": "candle", "x": 18, "y": 5, "chance": 100 }, + { "item": "candle", "x": 18, "y": 8, "chance": 100 } + ], + "items": { + "B": [ + { "item": "magic_shop_books", "chance": 33, "repeat": [ 1, 3 ] }, + { "item": "magus_items", "chance": 20, "repeat": [ 1, 2 ] } + ], + "β": { "item": "magic_tools_and_loot", "chance": 75 }, + "U": [ + { "item": "magic_shop_clothes", "chance": 20 }, + { "item": "enchanted_worn_items", "chance": 20 }, + { "item": "enchanted_small_items", "chance": 10 } + ], + "l": [ + { "item": "lab_shoes", "chance": 50, "repeat": [ 2, 3 ] }, + { "item": "lab_torso_research_thaumaturge", "chance": 50, "repeat": [ 2, 3 ] }, + { "item": "lab_pants", "chance": 50, "repeat": [ 2, 3 ] }, + { "item": "underwear", "chance": 50, "repeat": [ 2, 3 ] } + ] + }, + "place_monster": [ + { "monster": "mon_feral_lab_magician", "chance": 33, "x": [ 5, 17 ], "y": [ 4, 19 ], "repeat": [ 2, 4 ] }, + { "monster": "mon_feral_lab_magician", "chance": 100, "x": [ 5, 16 ], "y": [ 4, 9 ], "repeat": [ 1, 2 ] }, + { "monster": "mon_feral_radiation_mage", "chance": 100, "x": [ 12, 18 ], "y": [ 4, 9 ] } + ], + "place_monsters": [ { "monster": "GROUP_LAB", "chance": 2, "x": [ 2, 21 ], "y": [ 2, 21 ], "repeat": [ 1, 5 ] } ] + } + } +] diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 630f5b11f4433..75ebe492faf70 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -27,9 +27,12 @@ aeroctinus aerofoil aeterna aetheric +aetherically affordability affordably afterbirth +aftereffect +aftereffects afterglow afterimage afterlife @@ -1491,6 +1494,8 @@ intermixed interwar intimidatingly intolerances +intone +intones intoxications intoxicative inulin @@ -2980,7 +2985,7 @@ teshuvah testbed tetradrachm tetrahedron -th +thaumaturge thaumaturgical thawb themm