From 7c3e3ff0257f58ec7b7a0f5970bcad32edf0d537 Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:44:54 -0500 Subject: [PATCH 01/11] In-repo Magical Nights Co-authorship provided to be extra safe on attribution Co-Authored-By: Chorus System <3629845+yay855@users.noreply.github.com> Co-Authored-By: Ithilrandir <29797910+ithilrandir@users.noreply.github.com> Co-Authored-By: arijust <54635208+arijust@users.noreply.github.com> --- .../Magical_Nights/MagicalNights_Items.png | Bin 0 -> 220887 bytes .../Magical_Nights/MagicalNights_Misc.png | Bin 0 -> 14601 bytes .../Magical_Nights/MagicalNights_Monsters.png | Bin 0 -> 76130 bytes .../Magical_Nights/MagicalNights_Tiles.png | Bin 0 -> 97438 bytes .../Magical_Nights/MagicalNights_huge.png | Bin 0 -> 17926 bytes .../Magical_Nights/MagicalNights_large.png | Bin 0 -> 132799 bytes .../MagicalNights_normal_offset.png | Bin 0 -> 1166 bytes data/mods/Magical_Nights/Spells/animist.json | 314 ++++ .../mods/Magical_Nights/Spells/biomancer.json | 372 +++++ .../mods/Magical_Nights/Spells/classless.json | 281 ++++ data/mods/Magical_Nights/Spells/debug.json | 234 +++ .../Magical_Nights/Spells/dragonbreath.json | 24 + data/mods/Magical_Nights/Spells/druid.json | 301 ++++ .../Magical_Nights/Spells/earthshaper.json | 390 +++++ .../mods/Magical_Nights/Spells/item_only.json | 108 ++ .../mods/Magical_Nights/Spells/kelvinist.json | 411 +++++ .../Spells/lizardfolk_shaman.json | 41 + data/mods/Magical_Nights/Spells/magus.json | 278 ++++ .../Magical_Nights/Spells/manatouched.json | 47 + .../Magical_Nights/Spells/monsterspells.json | 193 +++ .../Magical_Nights/Spells/stormshaper.json | 321 ++++ .../Magical_Nights/Spells/technomancer.json | 342 ++++ data/mods/Magical_Nights/bionics.json | 13 + data/mods/Magical_Nights/clothing_mods.json | 43 + .../Magical_Nights/construction_group.json | 7 + .../Magical_Nights/cooking_components.json | 21 + data/mods/Magical_Nights/effects/effects.json | 267 +++ .../Magical_Nights/effects/enchantments.json | 14 + data/mods/Magical_Nights/flags.json | 20 + data/mods/Magical_Nights/furniture.json | 226 +++ data/mods/Magical_Nights/harvest.json | 297 ++++ .../Magical_Nights/itemgroups/itemgroups.json | 998 +++++++++++ .../itemgroups/recipe_books.json | 21 + .../Magical_Nights/itemgroups/spellbooks.json | 216 +++ .../Magical_Nights/items/alchemy_items.json | 151 ++ .../mods/Magical_Nights/items/ammo_types.json | 44 + data/mods/Magical_Nights/items/archery.json | 51 + data/mods/Magical_Nights/items/armor.json | 108 ++ data/mods/Magical_Nights/items/bionics.json | 18 + .../items/black_dragon_items.json | 381 +++++ .../mods/Magical_Nights/items/books_lore.json | 50 + .../Magical_Nights/items/class_items.json | 302 ++++ .../Magical_Nights/items/comestibles.json | 87 + .../mods/Magical_Nights/items/constructs.json | 120 ++ .../items/enchanted/enchanted.json | 102 ++ .../items/enchanted/enchanted_belts.json | 157 ++ .../items/enchanted/enchanted_boots.json | 67 + .../items/enchanted/enchanted_bracers.json | 95 ++ .../items/enchanted/enchanted_gunmods.json | 123 ++ .../items/enchanted/enchanted_masks.json | 51 + .../items/enchanted/enchanted_melee.json | 842 ++++++++++ .../items/enchanted/enchanted_misc.json | 224 +++ .../items/enchanted/enchanted_ranged.json | 68 + .../items/enchanted/enchanted_rings.json | 318 ++++ .../items/enchanted/enchanted_tokens.json | 168 ++ .../items/enchanted/enchanted_tools.json | 134 ++ .../items/enchanted/enchanted_unarmed.json | 99 ++ .../items/enchanted/enchanted_wands.json | 349 ++++ .../Magical_Nights/items/ethereal_items.json | 608 +++++++ data/mods/Magical_Nights/items/fuel.json | 44 + .../Magical_Nights/items/mana_crystals.json | 40 + data/mods/Magical_Nights/items/materials.json | 229 +++ data/mods/Magical_Nights/items/melee.json | 178 ++ .../Magical_Nights/items/monster_weapons.json | 56 + data/mods/Magical_Nights/items/mutagen.json | 25 + .../mods/Magical_Nights/items/necromancy.json | 38 + data/mods/Magical_Nights/items/obsolete.json | 50 + data/mods/Magical_Nights/items/potions.json | 113 ++ .../Magical_Nights/items/recipe_books.json | 176 ++ .../Magical_Nights/items/spell_scrolls.json | 962 +++++++++++ .../mods/Magical_Nights/items/spellbooks.json | 432 +++++ data/mods/Magical_Nights/items/tools.json | 178 ++ .../Magical_Nights/items/vehicle/frames.json | 25 + .../items/vehicle/vehicle_parts.json | 18 + data/mods/Magical_Nights/lore.md | 35 + data/mods/Magical_Nights/magic_balance.md | 57 + data/mods/Magical_Nights/martialarts.json | 51 + data/mods/Magical_Nights/materials.json | 151 ++ data/mods/Magical_Nights/mod_tileset.json | 1478 +++++++++++++++++ data/mods/Magical_Nights/modinfo.json | 20 + data/mods/Magical_Nights/monster_attacks.json | 30 + .../mods/Magical_Nights/monster_factions.json | 31 + data/mods/Magical_Nights/monstergroups.json | 130 ++ .../Magical_Nights/monstergroups_egg.json | 7 + data/mods/Magical_Nights/monsters.json | 82 + .../Magical_Nights/monsters/demon_spider.json | 119 ++ data/mods/Magical_Nights/monsters/dragon.json | 156 ++ .../mods/Magical_Nights/monsters/goblins.json | 87 + data/mods/Magical_Nights/monsters/golems.json | 293 ++++ .../Magical_Nights/monsters/lizardfolk.json | 140 ++ .../Magical_Nights/monsters/monsterdrops.json | 77 + .../Magical_Nights/monsters/monsters.json | 345 ++++ data/mods/Magical_Nights/monsters/orcs.json | 89 + .../Magical_Nights/npc/TALK_HEALER_GREY.json | 51 + .../Magical_Nights/npc/TALK_OLD_MAGUS.json | 62 + .../Magical_Nights/npc/TALK_TECHNO_KID.json | 51 + data/mods/Magical_Nights/npc/classes.json | 79 + data/mods/Magical_Nights/npc/factions.json | 123 ++ data/mods/Magical_Nights/npc/items_worn.json | 15 + data/mods/Magical_Nights/npc/missiondef.json | 101 ++ data/mods/Magical_Nights/npc/npc.json | 38 + data/mods/Magical_Nights/obsolete.json | 19 + data/mods/Magical_Nights/professions.json | 269 +++ data/mods/Magical_Nights/qualities.json | 34 + data/mods/Magical_Nights/readme.md | 12 + data/mods/Magical_Nights/recipes.json | 33 + data/mods/Magical_Nights/recipes/alchemy.json | 67 + data/mods/Magical_Nights/recipes/armor.json | 122 ++ .../Magical_Nights/recipes/blacksmithing.json | 80 + .../Magical_Nights/recipes/construction.json | 20 + data/mods/Magical_Nights/recipes/cooking.json | 33 + .../recipes/deconstruction.json | 69 + .../Magical_Nights/recipes/dragon_black.json | 248 +++ .../Magical_Nights/recipes/enchanting.json | 723 ++++++++ .../Magical_Nights/recipes/magic_tools.json | 127 ++ .../Magical_Nights/recipes/materials.json | 93 ++ data/mods/Magical_Nights/recipes/mods.json | 68 + .../recipes/recipe_potions.json | 249 +++ data/mods/Magical_Nights/recipes/weapons.json | 501 ++++++ .../Magical_Nights/requirements/alchemy.json | 8 + .../requirements/cooking_components.json | 18 + .../requirements/spell_requirements.json | 23 + data/mods/Magical_Nights/scenarios.json | 36 + data/mods/Magical_Nights/species.json | 30 + data/mods/Magical_Nights/start_locations.json | 14 + .../ter_fur_transform/ter_fur_transform.json | 139 ++ data/mods/Magical_Nights/terrain.json | 64 + data/mods/Magical_Nights/tool_qualities.json | 7 + data/mods/Magical_Nights/traits/classes.json | 106 ++ .../Magical_Nights/traits/manatouched.json | 194 +++ data/mods/Magical_Nights/traits/mutation.json | 270 +++ data/mods/Magical_Nights/traps.json | 15 + .../Magical_Nights/vehicleparts/frames.json | 99 ++ .../vehicleparts/vehicle_parts.json | 8 + .../vehicles/summoned_vehicles.json | 80 + .../worldgen/black_dragon_lair.json | 491 ++++++ .../worldgen/demon_spider_lair.json | 79 + .../Magical_Nights/worldgen/forest_tomb.json | 134 ++ .../Magical_Nights/worldgen/goblin_camp.json | 104 ++ .../Magical_Nights/worldgen/lake_retreat.json | 487 ++++++ .../worldgen/magic_academy.json | 533 ++++++ .../worldgen/magic_basement.json | 117 ++ .../Magical_Nights/worldgen/magic_cabin.json | 167 ++ .../Magical_Nights/worldgen/magic_shop.json | 235 +++ .../worldgen/multitile_city_buildings.json | 63 + .../worldgen/nested_mapgen.json | 270 +++ .../Magical_Nights/worldgen/orc_camp.json | 101 ++ .../worldgen/overmap_specials.json | 194 +++ .../worldgen/overmap_terrain.json | 473 ++++++ .../worldgen/regional_overlay.json | 10 + .../worldgen/used_bookstore.json | 95 ++ .../worldgen/wizard-towers.json | 189 +++ 152 files changed, 24599 insertions(+) create mode 100644 data/mods/Magical_Nights/MagicalNights_Items.png create mode 100644 data/mods/Magical_Nights/MagicalNights_Misc.png create mode 100644 data/mods/Magical_Nights/MagicalNights_Monsters.png create mode 100644 data/mods/Magical_Nights/MagicalNights_Tiles.png create mode 100644 data/mods/Magical_Nights/MagicalNights_huge.png create mode 100644 data/mods/Magical_Nights/MagicalNights_large.png create mode 100644 data/mods/Magical_Nights/MagicalNights_normal_offset.png create mode 100644 data/mods/Magical_Nights/Spells/animist.json create mode 100644 data/mods/Magical_Nights/Spells/biomancer.json create mode 100644 data/mods/Magical_Nights/Spells/classless.json create mode 100644 data/mods/Magical_Nights/Spells/debug.json create mode 100644 data/mods/Magical_Nights/Spells/dragonbreath.json create mode 100644 data/mods/Magical_Nights/Spells/druid.json create mode 100644 data/mods/Magical_Nights/Spells/earthshaper.json create mode 100644 data/mods/Magical_Nights/Spells/item_only.json create mode 100644 data/mods/Magical_Nights/Spells/kelvinist.json create mode 100644 data/mods/Magical_Nights/Spells/lizardfolk_shaman.json create mode 100644 data/mods/Magical_Nights/Spells/magus.json create mode 100644 data/mods/Magical_Nights/Spells/manatouched.json create mode 100644 data/mods/Magical_Nights/Spells/monsterspells.json create mode 100644 data/mods/Magical_Nights/Spells/stormshaper.json create mode 100644 data/mods/Magical_Nights/Spells/technomancer.json create mode 100644 data/mods/Magical_Nights/bionics.json create mode 100644 data/mods/Magical_Nights/clothing_mods.json create mode 100644 data/mods/Magical_Nights/construction_group.json create mode 100644 data/mods/Magical_Nights/cooking_components.json create mode 100644 data/mods/Magical_Nights/effects/effects.json create mode 100644 data/mods/Magical_Nights/effects/enchantments.json create mode 100644 data/mods/Magical_Nights/flags.json create mode 100644 data/mods/Magical_Nights/furniture.json create mode 100644 data/mods/Magical_Nights/harvest.json create mode 100755 data/mods/Magical_Nights/itemgroups/itemgroups.json create mode 100644 data/mods/Magical_Nights/itemgroups/recipe_books.json create mode 100644 data/mods/Magical_Nights/itemgroups/spellbooks.json create mode 100644 data/mods/Magical_Nights/items/alchemy_items.json create mode 100644 data/mods/Magical_Nights/items/ammo_types.json create mode 100644 data/mods/Magical_Nights/items/archery.json create mode 100644 data/mods/Magical_Nights/items/armor.json create mode 100644 data/mods/Magical_Nights/items/bionics.json create mode 100644 data/mods/Magical_Nights/items/black_dragon_items.json create mode 100644 data/mods/Magical_Nights/items/books_lore.json create mode 100644 data/mods/Magical_Nights/items/class_items.json create mode 100644 data/mods/Magical_Nights/items/comestibles.json create mode 100644 data/mods/Magical_Nights/items/constructs.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_belts.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_boots.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_bracers.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_gunmods.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_masks.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_melee.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_misc.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_ranged.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_rings.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_tokens.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_tools.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_unarmed.json create mode 100644 data/mods/Magical_Nights/items/enchanted/enchanted_wands.json create mode 100644 data/mods/Magical_Nights/items/ethereal_items.json create mode 100644 data/mods/Magical_Nights/items/fuel.json create mode 100644 data/mods/Magical_Nights/items/mana_crystals.json create mode 100644 data/mods/Magical_Nights/items/materials.json create mode 100644 data/mods/Magical_Nights/items/melee.json create mode 100644 data/mods/Magical_Nights/items/monster_weapons.json create mode 100644 data/mods/Magical_Nights/items/mutagen.json create mode 100644 data/mods/Magical_Nights/items/necromancy.json create mode 100644 data/mods/Magical_Nights/items/obsolete.json create mode 100644 data/mods/Magical_Nights/items/potions.json create mode 100644 data/mods/Magical_Nights/items/recipe_books.json create mode 100644 data/mods/Magical_Nights/items/spell_scrolls.json create mode 100644 data/mods/Magical_Nights/items/spellbooks.json create mode 100644 data/mods/Magical_Nights/items/tools.json create mode 100644 data/mods/Magical_Nights/items/vehicle/frames.json create mode 100644 data/mods/Magical_Nights/items/vehicle/vehicle_parts.json create mode 100644 data/mods/Magical_Nights/lore.md create mode 100644 data/mods/Magical_Nights/magic_balance.md create mode 100644 data/mods/Magical_Nights/martialarts.json create mode 100644 data/mods/Magical_Nights/materials.json create mode 100644 data/mods/Magical_Nights/mod_tileset.json create mode 100644 data/mods/Magical_Nights/modinfo.json create mode 100644 data/mods/Magical_Nights/monster_attacks.json create mode 100755 data/mods/Magical_Nights/monster_factions.json create mode 100644 data/mods/Magical_Nights/monstergroups.json create mode 100644 data/mods/Magical_Nights/monstergroups_egg.json create mode 100644 data/mods/Magical_Nights/monsters.json create mode 100644 data/mods/Magical_Nights/monsters/demon_spider.json create mode 100644 data/mods/Magical_Nights/monsters/dragon.json create mode 100644 data/mods/Magical_Nights/monsters/goblins.json create mode 100644 data/mods/Magical_Nights/monsters/golems.json create mode 100644 data/mods/Magical_Nights/monsters/lizardfolk.json create mode 100755 data/mods/Magical_Nights/monsters/monsterdrops.json create mode 100644 data/mods/Magical_Nights/monsters/monsters.json create mode 100755 data/mods/Magical_Nights/monsters/orcs.json create mode 100644 data/mods/Magical_Nights/npc/TALK_HEALER_GREY.json create mode 100644 data/mods/Magical_Nights/npc/TALK_OLD_MAGUS.json create mode 100644 data/mods/Magical_Nights/npc/TALK_TECHNO_KID.json create mode 100644 data/mods/Magical_Nights/npc/classes.json create mode 100644 data/mods/Magical_Nights/npc/factions.json create mode 100644 data/mods/Magical_Nights/npc/items_worn.json create mode 100644 data/mods/Magical_Nights/npc/missiondef.json create mode 100644 data/mods/Magical_Nights/npc/npc.json create mode 100644 data/mods/Magical_Nights/obsolete.json create mode 100644 data/mods/Magical_Nights/professions.json create mode 100644 data/mods/Magical_Nights/qualities.json create mode 100644 data/mods/Magical_Nights/readme.md create mode 100644 data/mods/Magical_Nights/recipes.json create mode 100644 data/mods/Magical_Nights/recipes/alchemy.json create mode 100644 data/mods/Magical_Nights/recipes/armor.json create mode 100644 data/mods/Magical_Nights/recipes/blacksmithing.json create mode 100644 data/mods/Magical_Nights/recipes/construction.json create mode 100644 data/mods/Magical_Nights/recipes/cooking.json create mode 100644 data/mods/Magical_Nights/recipes/deconstruction.json create mode 100644 data/mods/Magical_Nights/recipes/dragon_black.json create mode 100644 data/mods/Magical_Nights/recipes/enchanting.json create mode 100644 data/mods/Magical_Nights/recipes/magic_tools.json create mode 100644 data/mods/Magical_Nights/recipes/materials.json create mode 100644 data/mods/Magical_Nights/recipes/mods.json create mode 100644 data/mods/Magical_Nights/recipes/recipe_potions.json create mode 100644 data/mods/Magical_Nights/recipes/weapons.json create mode 100644 data/mods/Magical_Nights/requirements/alchemy.json create mode 100644 data/mods/Magical_Nights/requirements/cooking_components.json create mode 100644 data/mods/Magical_Nights/requirements/spell_requirements.json create mode 100644 data/mods/Magical_Nights/scenarios.json create mode 100755 data/mods/Magical_Nights/species.json create mode 100644 data/mods/Magical_Nights/start_locations.json create mode 100644 data/mods/Magical_Nights/ter_fur_transform/ter_fur_transform.json create mode 100644 data/mods/Magical_Nights/terrain.json create mode 100644 data/mods/Magical_Nights/tool_qualities.json create mode 100644 data/mods/Magical_Nights/traits/classes.json create mode 100644 data/mods/Magical_Nights/traits/manatouched.json create mode 100755 data/mods/Magical_Nights/traits/mutation.json create mode 100644 data/mods/Magical_Nights/traps.json create mode 100644 data/mods/Magical_Nights/vehicleparts/frames.json create mode 100644 data/mods/Magical_Nights/vehicleparts/vehicle_parts.json create mode 100644 data/mods/Magical_Nights/vehicles/summoned_vehicles.json create mode 100644 data/mods/Magical_Nights/worldgen/black_dragon_lair.json create mode 100644 data/mods/Magical_Nights/worldgen/demon_spider_lair.json create mode 100644 data/mods/Magical_Nights/worldgen/forest_tomb.json create mode 100644 data/mods/Magical_Nights/worldgen/goblin_camp.json create mode 100644 data/mods/Magical_Nights/worldgen/lake_retreat.json create mode 100644 data/mods/Magical_Nights/worldgen/magic_academy.json create mode 100644 data/mods/Magical_Nights/worldgen/magic_basement.json create mode 100644 data/mods/Magical_Nights/worldgen/magic_cabin.json create mode 100644 data/mods/Magical_Nights/worldgen/magic_shop.json create mode 100644 data/mods/Magical_Nights/worldgen/multitile_city_buildings.json create mode 100644 data/mods/Magical_Nights/worldgen/nested_mapgen.json create mode 100755 data/mods/Magical_Nights/worldgen/orc_camp.json create mode 100644 data/mods/Magical_Nights/worldgen/overmap_specials.json create mode 100644 data/mods/Magical_Nights/worldgen/overmap_terrain.json create mode 100644 data/mods/Magical_Nights/worldgen/regional_overlay.json create mode 100644 data/mods/Magical_Nights/worldgen/used_bookstore.json create mode 100644 data/mods/Magical_Nights/worldgen/wizard-towers.json diff --git a/data/mods/Magical_Nights/MagicalNights_Items.png b/data/mods/Magical_Nights/MagicalNights_Items.png new file mode 100644 index 0000000000000000000000000000000000000000..6b85b4c13a3eb059190c05154f3b7b004063baca GIT binary patch literal 220887 zcmeFZbyOYAvN*ao?(Xgq+%34fCIola;O-XOLV^<@5L^SnH;^E~B}i~jfZzn(>^J25 z&bjBj`&;X+yWYLOzwRczrl+U6rc1iIx~eCyv@{ek(a6w1AP}aqlAI0*1P4@+KqyGS z1tfIx69fVi*t}4-RaSliLIIl4fd&K+`0*(K3I0bN0EYv^gW!SYbf92?;Xru6^(|2F zfc8iD$3g~1{Bx}Y>g0dd8-Y5@-!PB;d4Rr{z_lGHyg;1*xDEluA@;BLE(7()AIhIU zSq~cvFB@wbUk5LH8bxJwEzld_83IuLaeZv0;pG$&;p7npFmm(qi}G-batqP$2#Ip@ ziwbZ9gv6vHgGhlsw?F|G{l|EL+kgK4^PAS;J2V0KNC#P2EoE6*8g~yjTL)(w5Xdht zI89usUy9<3neKa?Cs?*PFNd`94=v>>oCxE!XlK!CMBf_UBB~pv6A&x*eq3K4wEWil z#XuifUmE8g^wP&&$14pF_J+Xlv!DBNitiPb?=k4zGn@8rZ$MuCf_xRFnIm;7@ARW^ zBjSXM(VF%>8}nk0uiF*F>U?<$c0!LPcs>xaBOx$sB2?uHo+6!&mYM8zYO*&r7ULG; zYvy=KZz|SSQT4p!Y-2xBn;NyF6yVo$_pU`CLQa>(! zgHDfVWs`ltKbYD_mqjBR5s&obL!Uz8^GE`8((jtL*NP@RYMif)3AsJki;yVe50GJz zYb%Cdt~1{dD8oUylFxatqI|-AW?puuP?iV7ArywQl^oQ43|rKk&Nbl(K)`T;C!RM^ zUxDZJ4NEI;w|r7dP|8Y>0J$R#)}g)KM97Xpn$_?{AzmTeb0m;bJ-Hz3_UWt|n^b=E7-V?Ph7i>F479M~qJ;{oF0AoNT;k zEN$!@T*c{*J9_A79IVCZ^aa$p)!k)n>>ZQ>JZy9WH1wh=>RmH!l}2F9!g@;py+{W#Px+ z>Pi2I;x8O>Hl9`<4(?tKZmu+sI4vyQyuHNf=z!-m{}`W(ySn;6(Yt#7%>{rTTz(er zTs)lITrMtL|JuXTOWp@S^7nxLk3Br~{M~K1bZk7`ygjUJE+m?SC-q-^TX%^gn3-0}Mc^tBcCHS$RJWPgzc!?(zMi)^1h~)}nu^Lj0D37W_8C9F{`7 zHXQtdwjvxB*1|R%+?G5dyxf8!mNquF|AI={)zizu)yn1(6@Z-60l;G+Y%9WVWhKPH z!^bZSpb+5Yu;j7j<>2Mx6|~~Fwc@e15cwArnjQ{-R$4g!>!==4Sp%r}g=_`+c)2Y( zM7S+@Ie?+@aaamk@ou*qWo;#@;O60C0f^JV#lp^p%iY!P&x1#X zi%M%Li_`IOa{ot*ma~PIEzm)nPR+s9+wVUf=sCF9=z3W^a+61hSD24afLjEhLqI^_ zUwS{c@$dvRQJn5?1N*1@qgX@%VgSZkJnAWc;7>b1i|8LK>gJ*6=H@I;_c)|~K2Zl| zlC_1Gg&bhd0et_o(|Z4~(;R@c=Kky5kC@cmtQ~Cq|G%Ig=MBwM03MLGl7pw0n}`3O zroSeWuFcE8?*6)UcK9=kXlVY-2T=>FzeewA;bUX{XPf}8zaClHTe#ZU0EXjlP5no^ z!~a1GglzfvtoV8PIfSgOMK}Pl3vpNqSPOCp@mN{|KLI`-OW}XV?&)Uhwlg~L0&6iK7MXN z4jvmGOAdZMJ_`;@OKWZpZW|#$&xL?F#P^r%{>j7tzf|%(Y6g$6D9`^zDn)pOEG%s- z1v#t)ZLK)?d4+^IgoSM^ID{>&1Z=GYM64`r|I+pUE-HC>^teSt1%yQT|1VO>BVsEk zA|N8d!6#%1*eweYD-K~>TMG^zek*HR!1(d=So~#d{#&Tz0hB~QkB3i`7od{&|DMM3 zS_%kR3t9nsDrn2Y!EY@B$kM_>h{Kl0%9_uXmz&4>Z%g;zMy1d{Y}x-ymQT4JSMq-t zqo-W|$z1&f@Gnb0FrWWw16&HgL*e?Ti}LqG2ZsDV`TN^U{!hMwhUR}?@?YZb|FY|U z+4W!Iz<&w&f3@p>+4W!Iz<&w&f3@qsja_K}5#+FO1vV(YKnMc`#mXKCfFN0_D$0SV zK>{GEe&cuiKntq7l7S}>uIqU$U|~dE2A~nyOIckW`3D*@Ap#%G<=iUJMCv8~!b{f8 z<#DeJ`cHu{{ctQ|5Qqk(EGMn!_x&*6KZx+#3T(}8_ee-=u^$hg$RLyEQ&C(IV$HYs z4<87hJX`1ZRY*wFD?f*eGgibK_vLNmL|Y@o~cZ#ArM{Hbeu%)p_&3#T62 zjBh-Tgj|zw!=o6sRgvyJ*2=_^Zvu<6yMuVA4)O(oGB-}yk zo7mkkbH_sn`U7%{GlK{-cGxer)oWf%%@ z`IEjR5Hl-5_7DO<=!atPP_8(Pp#!@_^Y586Z(G;ZLmE!#zJAReQu5S!epK>_I|(4A zvpEQPenL3^P1bQyb?2))qP&sOwouilFw+pCs&GmOVHlPiIQGVhF%>;3ywBCVKvmmX zYd-KIk13!_65)5v=^c!J>L3{B1)TB6f#Xm*X;AVxcj5If@1QdW!k)l0*`szSoQ9-0 zd00$nChu*hGnVa+@4|zZ3nr<4*5pZwPS}D(SR$LMCGl!QNz9r!ly55A(xMUu$x^F&LywL!p<4YdwYA+tywtN6(+UBdYq_aTy4 zv60o)>^i!-294Ir5eOIOcHM3>luvJrS+TiH2f2t$KVRzSYZyeQFc)&X2k6y*IDTRq za^R*`$Q#w@VTN&UX4oBh!7rpKVU*+d&~?FX3VsfM!*p`Y*DFD;1a=H#Fel(95w1i3 zw5LOWI;jh1o*vdQe+|`Cy9l5*-n!yyjDb@dkt$4=*mDp+yP!Dw0x<$ivrqM##_YbqN;2~)%F491@B#LYgvIk(!f zPu$-q&`@-Y-+qm1Xv=&pH1z}BeJ#S1c7u45Z5`%Ygm!^9IUn&H?NC6u*U=nX3#}9L z5bkS=r}i_H8;zHzd+j{<7lqs(VcV}vk5^)0t8d7r=ZFiBe$qE)`yTi|?Xu=*4LYDe z0&APl<0TCwlL|`Y|DvAXD6qx2$t<_waqd*`Hzd+hWFWJdKN5X738j8{*ZC@u|KrVr zR;U>w%x@BTp?mX^WSx4Uk*6hew?F0lYw%TGD%Pi8)J|+RV-LS9G*$Dr8YG2%S5AA+ z1z$-N`AJ(mlzuV${GzJ!Vp`R~!QowTu}mSaO}wz*35|=3i-o+lp1gLd4qcR#%9c+~ zZthZ$L}B@d4=hvOSGwzKtv|7lQUdqmsLRLwP$AQY{th=9kQ3~;+;cSdSDc2Z5H6~` zzRu$=|H_YJ#4cm0J-lIs&x*JZ8gM^E)?@0C4`_v1a)O_{tD$&m_OtKH#8rUgF;pIy zI6eGrO1v?eGHGp4EG@CA1CAG4SJX;4VOB$N8wSg~R}_D!KhHa@e+RbzEMX%I>JZ}B z;TL=j#g&CmQQ-fY(F9pu?S|q^aI8Q&-SS5O9^aWjg9-0j>-_SwWRaD}hpo05&8+U? z=SAulPhKevkCpFCN(1I_;ea~W`d7i+T;kW(Dz>@V@A15`u@$3B-apH9mL!-M3$yCl zpklKV573X){<(vdi+ofP+LRfO{2Lw_vD*3ix_!(R-=`zLv61&(Wo7-M^N;rA6<5W1 zZvuH~l<>;Rf|wX2x-=y?jXTm4-~K7=FtNR?`qs|0Y){z0C7%LF%lIu4E|Fz8H zq-)iGo`-RA_|XR}jQ-p8>2%IZnc=It!~g@7cJ!#h$&+aKD0C|ph!v*`6Rvxh9rmOT z#jntv$#-2ZQzX`{5~$&h2OMCC5Z6TQR}#{oTd&5~8~wa(H@RE>u0N5!o=xLq#J^Gy z_*`lU{F6`}PjoS2y0X_RVdqNP%W_>e5-J=!*)V{%JXj55zOf#@_9*V9UN0fe@&du& zjfAE>e$XIVVa5*b?mw|2-NT+Frw%sXVgATbA#jXLb}w6+CGsUp)ZMvAeY%q0HaHL(rHnL zMv87cPRzg^=|w+y?b|T!`BI*?%rnljvq`VnRDKhaLZIE`u4hMxp_ZDJ+qA`43uEv! z)8EeD+4cpTxgdXrh)|N%B6{vZTUCq_ zf52#?r#|M0>B46ryA->H$!tuV)Y2;S>@{_e#Y=`+_x552VnP$qz$hUOAps7n!y@gk^Ak!`J{yn^D}0a*s`T9y z*D(p}x+k@gb{#c4@u~$!JIP9>K8rSTbhusB)rm?BbjF;-z2-O;@ng2S&VsoFeb)!= zwOi*m*8@V`xXSA4-Hqc1pgbe&~HDDC9UK}D~`u=RUfToJo=2N z-%U?*P^>gT0msg-*MuN7mSLN@#I!>WH)|PXPJqvCp03KFXNakc^#{4TT}ZTyjx3A) zXzHfM$fg+-KlGbn<*Q6^9u4ol9JrCIrrAbx!pZQkgW}OGS>;MdwjS!Ft+{`An^gY@ zs=M+`3sVn=Ou&S#QC_DF`G)bE)18oKLr`)R7>_%K%df~GM*W(3+XmjD9)Sf zDLyje!QGDV z!%^nby@%OKbJY=3#`Mjrqs8kW9j7F=!8H}>62sT{N{m&%Hb>rE>M%3Z^*jX7rJ;}u zxt5ldDWK4j2)onxbWqA`v(J=+=xSM9<5%MNZK3!CsKQTt3Wm>eAXt;l~A-`gB};TWMy z>_V&n!Rs~3i@}Gc4{>;{xx_IT7Md(x;xTP7j`eY1Ez2#FFFJs77mQJFt={t-jdh$l za}IX-OCF82vFNR@8b{lCk{sJ+=dHQOm>+O)S-jLn5*iiFAU0d=6W~)ko!4(UEnMSc zXN8?7Tv^?@etJ-gPvFyNyLJ1-pqeZ`FPq+PWaM@PfHBiEc0Ihk~xc9u)x zqOPqyK5eG1=w?zHDTmtGEj7&DDA-fD?MZp%ep5^FO9PQ9cP%7G?EQ^Ol`f0BSlSxz zI^kwmFr$bSzw}3$mgfSCF0ScL@DJ_-_1^`rdaJire+1c%=PBFRFpBvcPDb_?4NXi8 z9$Zd;|NaD6|E9btSsAD7^;qI%bac|mk`%NF5Y=ZE+P$5;`l3)-mt1IN-hrM}diBvEPYdm8r2x@6&P7Y~kd0}SAahzw=7nN@8)Unq53Yo$I z30LbZoF@$39&+Mb1$WS~=V1l=fid~KAMxcJNX(?Q&)4sL7T76#r|3>fjXMtc8_kok zg#8$AnT0T8tw^R%(c#3j0aHV1E#gb9)F1KGRd{SBsMj1d=a*@452P>iXQQ<*aZ`tPlphbPQX#^`1|D_oF#cw>AX*{yo8=uveHli*?Xj z4Qx!85V#ExV`PG57HHv#nX&d#73IsFIrZl)lIfmjfVYx_)kB;pk`Te;Ztmp#V*NZ7 zwD|k>Rx@|a|I(}wliinq&`hAaqE z03(`hGc%eqxAQ=>3jn>Y@LXEhkUtjZG8RE>pIw@=&2~k1WW}7gz z$@#6@=GNP`+;JkF#onFhkG`5Haz#j327mE+O7rQBb4918D=Mjj#t|UaPQ+jdIw@0( zckkApB9k~q^uT@c^spE8igUyda|#Q!O8gib?xAHT!*6e{)=!S}vsZ|P*s^psklY$C zZYf*_$BpE9tWuT5EwM_T$WlCN11H}QZnGEa_Z&W~KJ)3)BxF}A z?7Y*o1p&@%taS;7T3UO0x97W)GQYLb8N+hA9(oO}qRi1T5CxWx~4Eif(?Svf%#qJ*Ql}o?h%>Qma@7PXP#W>S7VAa*t zjUL>3S5_9&*w`4Cse?jG(6Qng-UafaMVRZ>Vv)15vT80Zm7@@L5A!~lyCh!^_1v(Q zHMyC!?+)%*Ize2D<(@Y73F<|0;FN7p7I+hjkC=dSK}-jDS1KW1#PK={TPm~xgn_V!p}REzGN}Xue$|WVeAF`e zb)xTECu3kNBRu;FSIS3^_0O3qnn?1#~HWj08lq82EM5xN*d( zPk}-yRGLe3-aIwcYTdfVL2|<8zJ2h8AF8&>{bSr_9eWBLY;3ldevt$FC2X&q`+0X) z)5tmS^|yt9r#(l@EE@{z3MW3FUZNq^`gm>=6EQMPbkc5d-tVo+y! ztIVx^YD&7mr3&h}KNNFDd3o42@In7)ch_#f^ExANGU9H`9!x>Uj4z?Sq!OhK7EycT)UHj5}jRaa-l{ z6ecmgs=gi3Y}pbjGS7h9P;Zm++FGpEB@SmnBL)IA)R|_ksJIIBxk^0(#AnZ@yz`Y9 zWP~Yf@2^kkgoN}>x&j1Zu_*V?*WJJ{*$G$rZ#zY-BuDj63;2JfOcEr19_kI&#gsWY z=~%L%W&(TMX3|pTU9r1CAHBU`2XE%@0rJi+fOmnf;^FUq^BXHU1s33wb< za>ZOuFyDw{w$$hLa6J}X}0}a)VV(|?7CXYcDY=3yX401oDf}+wc+-;!Z}QM+NdKDC^U)Y$*ldQ zpFhXA4}GR9+qgmR)!?0%&FQx_#S6b%tCs6eAd_#X<^Hyuxa3bdTfTTn2M6 z%EX)zDv}rK3FvaO7|6Mc?dQ%_7)pJ>RF`>K;SiU|6fARUa`^OwqC&7v>$^^rJ%(ry zm67J*kq00ogh**LG&EuNbtwiC3^dmFTF;*4D2J40>by`zzX$w6if`Y(1sECSQt;Vg z5Sw_VEi^mevpui2Z~b49=_E1Rq$(QI<|48nmoqXhzK6MU z`Z4g99aTw_FUX0V>!G;s0xQaVcyr`>ar0x=x#@jqDv`)rt#sAMY+?wR$`8FX7B_3a zqik^UeFjWXy279qy`WXA_9ybG0aPbx20qyk$0?~1VZiNn1Q{(O8au@uuH~1kl)6$5AVirAE zp7mpaVR`?7JDNTj?GkNfk#4KVOeqGd$5n0Uu<;Hau7lHT#^IEbk8os}9&X>z&^L|~ zeS+xCO-n)7Ws+BNbTZlmz{XUMK>jvJLQKlT!($eK-+}2qZNvR7up@}UBp>)fY&O~( ziTqkT@b?P?@E!m4+Ud-^C`vaoLx>!#BR;92+}3irzE_l_iDzyU6zO2B_`yR~*9n8Z5&}B6L*hWtyZi3OTwG zoqj8O4pt(lPtwhYO!4olxCgE>*i-p?*Wf+4;%wKw)-j80VIkEW)nHTbDILSwB<4vg zcqW_?$AJ%IDvZHlmX(X;eS`CD%+4Ahq6SGB_YJ%xqF}@sQ$ux_i7S2r0!U3$ussEp z38FZLQRph$qzIM}W&eD2xoZm=Xj_2~r-r+PFhkl*vhg9FQTT-l9Ll*uc#QDjTlGDg z5S1V=Yg49`r!ANZDKTDlE=1wq8=$TzML(J^u$E4(PJRtq=cQlzB2H=&{2)%GTW5ccG1fBpt-A)|sV9Npw-E@3e+Y_4S!&W@fUvEh0WtRpEE|{IcxW2wryU+{%T+ zm8fvtpZXMhFH-mGLwcmHcwY9KIj)D+oozeET}9#J*RO@Njo&I5v>n^CmZ$9gVCK*< zH$WSOnz*jj!rcOK&x6-j?D(_6OhdTA|W$@ii z!Bk-vM>Fd{LB+SluqY50$@+A1uT7AgJ@uB(lCf<5YDq0V4r>}L)&Mg9c2N6S0!Kj+pV z!PT_S^StmCi`0Hk!+h9z^7ZNUG3Wfjsh_=rg9RiEdd_Kxbe z049IJKl?m?^xBrnk*k&N zq(Qv=xtTQ@x{*OVB5evz8cP)a$h-$(G{J%Hi8BH{MwbT&R6 z@0lPI;|jeRAp968xisf-GxRF0=lEKRYn1rV%|5-)qu$;e%^knS!6L_yfugpe6C9U1ZVZJ>Z<~K>?s(u@q@0n*&PprSe zYzUSf2Fz?esT{FYzBmnd%^bQGxFlp3_1+Qtdm}|a(Q~E)+|Cx~v}%8OpBK;a;?G;1}9%dk?-t(=lHSbjkharw><#E%+%ei^RhY$MYM3B5^7#E`fLB?d6jZE z@0|}MBhJpwP@-j2tgK29AE12~)T7i$m>mv*JK{(puW-StoJOCXAR#?31wksWFzm`> z*97{Y?2y*&^p=%FY_gjL-vBf0Y==lIiOW$e6Edu!T4b`kK^^hWnm?c5FmFWh|!gCZEDk}$O zlsJ-%$9?TiG>P$b)#rp5+C@ze;F*YlLB~xb1)TLt05(c&D8bzlEt33@g2n*TYh6}P zSF*v$&EEta2_efbBL;E%6FZ@*F#GMz;~Il&4Iil4b2h27WrJzSn?Rv$Q}2Tm&YO8% zw$@xZA@7Xhhby(fQGgN2s&2P-#dWm=M_3ZZE7}Rk!+i;PR z`w0j=lk(7!e=DPEN+d}e8(X88I3E$L57ad2se_HM_jKcY>)4;?5`{JH4Ci?sefmA> zsChY0rX$%UH?k;EW+T<_ZdO@9p`uNBL|Ykn7>!mkSQ&nyXCW5c+*H1f9fwISsHLy3 z`20Chnvz_@qBC%Eb={-wTALqJhIw-A#lqn@*1#^GFsbPB<=oWpd%XT7yg z#^1r`cio$+hMiAHQunNBDyAuT{o^cvhX-$TbTklY(4i3ZVzF#mtY7*C1ZBSi0azes zSZ&Z$wkEmMKLa)*3j10l4Hx1hHmzdr0AqXFZ+S;$*1@d6emf#&YxB@V0S(g_yyctD z1ClqCSy?62?oXWVv!+R)#oaf@R@?YP$YmrN;g;xf#w4=vk-Y`sxV6_+2-jDk=#b=m z0d{{|4&P8R~t);*??LFHD7ZVO(^jEh;)7?Hy-Se&Hx`dDH_~6;};p-^;{^HF` zaR)Q84F2`xC8o34<9T-=Kk7d4_C7=#;D^R@O4xnHcA@02i?H1lvFVK1WE3>ofRE$f zs`N*cGnjC(VhuWcYKDe}QdwD9e`~Qst+>8%ZOx5D#%^?&Vd9SAx)Yk=1&gho9s}mY zvU?W0C(v3a4{%K8z!yOFYOugpp8`r297FmU4yIt1s$f>%BYNwtUu_Y(? zV_1Gjb01xG#sOu6oe>_)^E|Ooe>Pr-P>1~z!y*my-$P8K%8zxl^;l`C&EmoLv|Q?* zPZ}McYbj=FxCHJ`y1JvoF=I)@MN>MCI>Xk)FKL%r^sjDi@u%NwyqihqJ@hKXq4T5L zzh95U1`_+I>WBt#0mVc`rE7uw2B~v3^FBC5{zl|k4h!M@{?}nQ9v1k1ajRKh~ z#v3@~_{F-=6F4P*RB_xze7%SG=3%pnx|{K*yczyWiuKlbOQK6|IP;Yc8iPCy{a1`b z(to{gdj#bncfpXqmYhMV`>x5%jO6wNn(6Mj!e(an@oU@8ATdnza`Z*8bIqd*^Y~lez4c6Kk?_%S zSizjpbI_7DWDU;mPCH&6?eHZ62>*g!Y6#(>-k=&vR&=^h>}mvW{o3SJ2bWQvKwqP< z{i(I=w&I2EW%NE#w(1{_W}w`k&+Kv~F14PZ&q3VcYf={P1~a}9T`hZJr=<9IvSo!m zU%!#>$TjU$T%nWf<_xm%(u(p8-MljMR~~X;{&6^V*GP$Y&*AP19`Dcc@m!%o{+uwh> z2=r9&gLBj~j*}U~0B>iOKWvh~zBYouJ{)VSo=cJz^{~6bh&AAjOwK^)yBzCDLaXbi zgVe|S4(Q=-b91IGqkrIt`F!ZFu#=#wYlwK$I@RY`6_Il~< zPp`1-Ol*^>l-r5PKzG|mExPUq*{_0ob4Y}E3=5` zdH<`tAk^l9t76#l9#dc4W-=8l?2L;*CZiqa7*STneTQ{z%NZJsxo1oTT`v)GHUsCV z;o%%1;+;?pIA>x|@Z&gb%c6v5;&D{sqQ$zpd~gFT#Pej>)Tv~+hQX#v4`oHZE1OVMAbK(Hsg6BdU|^9cfVRyfw(O{hcpr}y)!T#0A=*NGCSS{ zSW*AM8aL&Z%4DHx3#JH$lJeP}L>eU?JseSUSsyL8mA-%9J6F7zxOf-+@yq6ygq;X~ z^o5J@%R|RcWc05r=H=%7wFozh`;I$#J~@2R8!N~pN>%Cq)=u;l4Y8{OR4RuXF=4au zTups>x_O0Z!48xyC76o7o&6qU^?V@6Gc?(taZ4r3zxEk#7(dN725i^wv3RpvVLik{ zpX_Zfx-R&~+ph{#v$?;12`eSj>H1b$KAT=(EUVxl;J-MQ7i^2S*5M>-KuTcd>2yJC zyJ8BlFl{Pt#Q((2C0W=T9a*t#_9|1MLzOj6hmHU-Wl+}Cl!`><#;U6VI-wS0h$;Au zTHROa zP^+O-+GYQ}{La$>@}~fBgQw>Eac`{q5DnjeG~hHJde)7@IdQhs#7byaE_1E_=4bmm zqXbvW(N&x0iywE1vbfB~fgS7%KnwRmq14OJE$C>z*t`cMH&`bK)IyX*F7%601#NZz zD7(->rxpQaNrp=i{#geBZ_wOdJt%TMXMzShF#w&BQ_$H^8Hvkw~ODja7EgV85(o2k_zA( zE+AVTf0CE%xI8XfS|-4^%`b-DEs2ggpL6xr(R9Stw1b(~c^x9%_shqsX_1v(GztDS zGO$c52?MDBTCyY%T=~o}u(JUl{T#bu8NvF9>sN*Nuws1}SVOgX+WUpN`AwB%wA1vh zB&rsH{CI(QZh2uy&h)enlV(9;zXeGimH#&G5wK$Z*06gBG7Y)0sqMbqC*k=7d$?-@ z%FhV~bF3h~kYLv376Mn*)Uc=vZ*<6L;n?;or-Jp~Y2-l7J4uXdyV1A3k9>t*vEB5- z_}zayzIn)`mO{xH@+9!5eS2ZAVFA&K!6~(Qg@U0f zb>Te@yJnq!JfI1QJNBMyZ6sgVr*J@2SzLo~cQ!BI`7%@9gM9>y$I5(jNQHLaA8jLC zvsVtkh6uH0%A2{OirD>ve%i@SS*@nycps1WCaeCsW;zX`8ICC41R@DL;sFbZYgDz4 zUS%N_T05Rr$d!<0J~JLzjUQpD>wH_ek5@cJ@I4seDN~%$1A_9)I}Y@)U)VCt@kJ;j}j0aVmyyxNRkNw=O{Bqd5Wziqyduaa&X&*Bc8Ds$5-}Z_Gln4Vr9E=Zt=pwEz`uZSCH} z#iqO0j5Ma_W@reJg(8}v9~ zRC5l?`dNxL-lDF9(!6}FB~K=)@JM*1*Wxki=}_2J`!=E&R>{&(t@n0NrqiJeZO{*m zq^|{|;(VN0S*PsjRnP@vBReU;1Kcr%zwHs&)asX>gF04{M>b^Uy(t8d8PIw8nig7q z=_+7QhmYARYGW|8RQxs#t*G=Ov5%$Hj*D5J$hUu>H+F9z4ocH4w|X_dpYr|Y=`Bl> z?b!ZB>u?71`Rzg7Rp8j#a`z+|+zT{gl+MC>1cp+#2pHXu=u*j->pkupGPa{{Eq)cQ zYzV{u*cnEG0eWemqcgn`cwcyImn!*NXaxzzeB6ydj=L+~P)V|WDe3Z=@Uleomz;om z1w2Z#z{&aX>S#*H`SNbT1w0Y>%|uL4+_5?PXZKWY?Gu~WqdLEacbdL9#OZ^{jw zVG@bNm_~6y1KI#7QWN z5jcuZBxK~YZ4$t9GPFyR5ltX!EzQ7d%amEqXWH6?Z2zMc8nieY^pK*(!9T3!F16y?p@LZW-=N~9rek1zy}PNwz~ zxFK88j<}^nObfPy`oR!UH>6g^U2uPZMWLgay|?}B(KY!R6i{#ygMNeZaQkxKH# z9|Y-oQI0UUHs+q64df$g=SPwY`Z?H>$#=QYn9g&?$5fY0_0%$o+*SWJ=d6!*JL zJUv&#_#uWr0>&}_R{5;q1me5uU%u87i+Zp4n(HkBMO88a>J45bEOsJf;m#tY3^*k@ z9^R!H7HaohQtD^8>buOSy;FDaP0 zmYjgiFin=P$TafZZ=ZE!rKbK{oK8y;nOhgT`;^f8NVm|tB_5ZMpVRL_k1NNZ_!VFc zC2d4s%$&ncPGSD4Np^utI;o!BBzQF7T5W=d%7grGw8uIGA@etG<<(Dl(RPrRCU5Y* zq9TXt-nCLZBwxDzCL9YrTxdAGq9%v+0LxQ{(*yJJ?p`l4mq#x_*oWX1YBN}WrTAuy zGUK$qNpIL8c!3hj`UM^q%Pp=j|(=F0{!R?E>-YO{l%krU#D(sqTa z51(EtF~rX+Gf>cNV$-HY$J_Df@gkCL9BOjCg zg0pwc6XfpA3{tTZ687+im0x)TVDx6FV_)&?p>_StT>BDdXyHr(UM7nB0qhTEDx~Ch zDfYPh;_+qjn%jX)1&(1o{JmYV=IZ2!uSj+Z)lc+XU`U~1Y;~Q}lOccu4(Qe+^B&8O zcFtt|YO7cb(!R=PRRKo$X8@BvS3_c* z?5gX-Zx<`2>ZW7EX-!I^3Arw7xE6=d%|3dHz>s>(VA0=I8Ydi`j#*aF5EaJ<5SxDO z)2!cXb`Uca)@T7H3~t-wvY#{MSN9Q>3>CjFAjR?t5eY;b@gY}Z;$vZFo5=5F^jGBW zaS3uU^(H^^!*RsS#d6k`TSatl;eiB@lGEbyD|0I3@ypkhPRUk}rdaxH>8HOd@RK0M zN~wE{RcX7EuB(!j?4kfiorAxH6x4!O3JIIh0~8^f*7xqOQCfDss#m!pq4L zr`H5vem^m;J3LJ7U+X*3+k>H{`zMQV)JGXnV{QA)W8 z=|jO>T)#RedmUzx#gVt9^Yxc)duRS`D_)%W_g)m-)T^|gHCYG-PQGI|BQoS1eP(h7 z&KgtSa68*iD;r6{_2p!;s0FTqyX>$RuQjvm+hb-id1=xVB;cg9^`ai44G}e2GY%H* z3dfe*ddAwl4+3@q&UeSGhSM1vETRg&uK2F4y!W9JaMY`lNO^A(*lp>s+&YUs1@@RO zRSr7oMOF;%-DN==RH^Z=!?~AHxe3F$m;1eD|Akw?I;|gTTJkGRB+8}z4+g$?wBKoJ zY#m)e7oNSXRIX#!JRY4tW2t+XC%KXivNrnF8@ifzP0tO?%l?7J=gKk z!VMkgA3BPPn>bj8%{W+KPd-n(r$+kFeagj1+fRh#-S(dk)w~Pps^Y_;;)~IIh8Nr# z@*7tIuj}CSeF-ndzOe#(Ud@|g2&{lShe!8jM!y&KVr?5B*CloJC>v%Jehila^&77G zg1sV=An#e1xd^YB%L%&^Vk6=-R;qs=E*=^hp5q<`mrMEXdz!=tA!tbyj_3Q#gbtl- z4vm?)(@*f$w$)rlA3gdYO%saf*S$Zb&?e!u2~se>yd!ziUQ16&rbNk6OuB^|FEvvv zM-FAc{JpuPuRMLS;cW7tFI=-O-*QYD`1W_GaE=k*?MI7I%1MOlpfQ}}b}d37LBkYL z3YzycPgd+1ww!9g^l(MPomqrP3-ouLWlkt#G;qAThsZiYv2bdW^Y5w1@r0k*jOjCv zyn-2f_r(pmw5|*QVkP0X#{u149ltpxd(a*;c-in^m-iA$qA-Ok?eq7Y;M6W$I$`g9 zJ=4%DlWt($yN{^l+dJ{SXQ6@VvSy2VKM~BWna|@1#d<9n5zZVRX~qSuDrL zCvPu)j~sCu{+ew;>;u>Sxz6dSnZAv*XsMnT!1ELg!JI`>%{jxe;Ybho;yMw@d^nl<%Gt9V{Gb z&>yO&vB=Pp#T5l)xbNA4;WPt8E9ppHPT3p=U49`)L39$)t4h!C=65kJ4;JhtD#HCx zQxTaJhAeNdl>501K}&9sA);OHm0Z4@HLuGQgX2EvgFxMsrD>C*2=JdwCCOQeSCkz9 z-=Newp}Z@qbW8-jU=7zq1djL*H-5WdR>#M=^tm51tV864&Ag&Vc$6#%$PhhF&og&A zb1Xd_7Fj|+;%ea(CG>r% z2E|!MT5*sSLCDT_0%bp)n~b$Gf!R^QX!Y4T@Et&PY-5~rg4TlJb##~{gg#X3E_%1e z|9qGJsNoIB{7qB^g!ft8ec{7t;Z}Fx4Z~5-&#JR`k`KDZVq0Vn&D$@rmxnvrVByZ)r1?Q+7D1*)Wa3+gg{bMHP5j)3?LEv0i*>6+i*-s|U z3nshe-NW*#M!YWXtRpOh-o+(oeU|6m?4?#KV|*(UoRMJCVdO5%g6KHvbUo_yI}>z2 zH@{7fgMot<`%0n2e#(B7mYXbTAO;y&N-!}mL7JDoCu`FrbU0I}a$aP8q92nK9Fo~S zCW-RzJKyhHlWL*`7y(}oIygF70!Cadho2Scb}kQ`!K7YXUtizfV5W1D!VDI_M8(Ov zS)&8%mTT;AwT}b3(y;VPEmttf&O6^>rtGx2_FRnBUri;1o^hs3ee3^W>MO&djJmaF z=u%QZLXbv~P^1wAL^@PbU`Pp(mWCNbq$DI&q(PAGhM`lsyGy!jm^s_`J?HwqA6|Gp z0?xDcs=d~|?se45AL$R*SRGqx)h!BY#utqC*ui&$zC(z7eC7t_@gFv-!%IN_)eXQ9 z#1-9Uti3vJJX=}%X?iWX@lm;7N$ImN|0JI5OA3Ot87Wm9F_<`4{ zh0oLOLn?$dcO2<75zOJkE^L&-4B6;BSdMf#YO40f8vm2ghwcwP=0tJHn$bk%=gMc6 z>}fIcen8c>736?0!JQkE%15{rEo>wQ`JH>KDEEvO6@>B7BSE>}*_Zs?;|9aVu(qHp zspC{ro+gR8te@yeZ(~dEk&}1eJ`#QGc^Qe=jnDB6P^R`oZZU?)N+8{OA#SgjB(V)Ys(YWzZB__@H#u-!f zZ{=5Cc*#PZ+S=Lqu#geVzOR}A!?fDk<{^koyK`txQBih5!7g{1(KY))g79b2(VUo| zrHdUQcv-x%p|B;-h9)JM^{D51smofmE2q_I6N`!Xz7m36C0@W`zJAgnUWch@?#)YM zV|7#0`)dF#s0Tr#Hl)j3w_e6Sd~;^`lSS`j+!65{XW4SP+=fxeSLHVTjr%QP*@VA- zcXW_=0V2E8&&N&ozg2v3cd9H69mB3W+qvr_@>;zPedVi*Jb9_Xi)Gd8g2W7se}<*Y zH4m(PrlBajSD3VvNo{7hy-@#TB2 zO`*iEidx*4zVFwL_Jm|5FD7EgUQQY)dcG9Hj=?Jpo8#PjA5MHD!J7zMU^*6QMLVw> z4%!oLzTI39T$Om)qY=0`-??B2b3NDXI9l9MSxvX(X}e_}q$rhc?mks4#!OL|)##i8 z-3vWR$|*!TOJb2d@?UWH(GvreejYGUitN!Tdp|?))2(=_>#o!fMA2Q1w-5Xcm|A`> zDl50dr^~#4@j+%fl>zmnVn-h%SRUB4fXBBHp~lZAm2_F9DqP{Ha=rhBTR(>AiRoM7 z`ZJ=nv4%U&*T?X)@Vq{ksAx7N4fo|@`s^T9(1;+o^)%_P965&u6{d0N!727)stwfo zQPJ?GHPMF4g<0`Q=UktuZZ4h8emi$!cP5M@}tM$}}z7p5Pw z-Y66r_j@*$^NviOZF63^F(Cc?FE2nMG=l5m14P<*xI}@k;fG*IXrYV| z87KpoE`=gW2%oss zt8rCRwd(Susx*H8E+WV5(eFr5Uz@iGn=e+nNXXflr9T5 ztoLwA!N%O4MiQdqvKCBDx*Z3~?S|1=Uo0I7MHjYNmcLL!WX#b2D7;GEmjGU=LETsV8fCVOV_Ei_sx1Is z9yE<)$49uTjf_L{T9%48Eq1KL5426*z~w_(>S7wcl0A3hw81(N_{2)Kvp$Nq*Q(fB z*g?j$Agb>ch@+>20JS~$$%R+M5HezR)hLJu@>&imhzV6>`#5L64?!PZ=btLFQG_vX zMvN`F9=Bd%0HuS+o3Za0Y2CW_`tf#C@fo6Sc2+JVN{TJQ?3rvbHl_q4c$-*+k6#gG z(f@H(R)JG~s~jm$N-Gak3gU~B4f?E^O0W70M>bUxbYPi@Ll`9v?RzVEd#AImujRx= zbR&``OYBr4<~N4Sw{2_0H)g#X_pf}doFA>HG%adrxf8LcS$7>GUETV<3d>KzA9F$L zs2@Athw3e-FXkHZ)oZOw_;bl;kdd@{z8+SI(rb$3r?_thNg}UpHTI!0$^IfNM0H!i zbTB}H^v&^wm%4q|xrNO1!n_E}1@`QLg@*S_&-v_7<#BmSeH$y=iSGn$>0R;!y@KUk z)`N?Y&k1^?GKL<}5}OaV*=VpWb|(v0oWeWEniBG1UW=W3Ovmio341V~n`I?@IHFFN z&9zF%dgt-ae}#r@1O_ad{ITyZsI^O`o(wGa9?dmFyj92G5AO zfC2$dtH-tB@?(HJ!6H-kNR(uAKkCILp;~3iW=4|2n*1l;jGyjZ-_GI^@U*aX9%uEexA7cg`3*5%1;R`nY9~% zEdo&<)s!pbi%ijPKV@+1K|}-`YSY_-FvYK?PrL6NVQN46kP${P#eEel7Sio~6hIEA z{a9P#YsJgZ`uSdwJ4s4NduCoyqXBi&4f-+#ui9jkhL_=HIJNix3&`S&j>ayFy`T+`SUbVcoj`$pRXDBJ%)@VK9a z(GzRA; zwe5I^$ckb3z2FUO9CN~~XAvd+dwOM4V~40ILxERNG+7bE1AXZ+v*3!2S(-(^zecKB zO_W)U?C$5cjpz@&u&+%@Y;4@R$!0>M(|`S1xejhR4 z@v~_S7Zk1NfAgNDYF=d*UOA!= z%;k4Am46C9eJqZC!NgiA*^?hYJ^zSNOcDa*Mpj_39+TNl=6l2hWWvI&xomNtv;!3--CQoDaw8#cygR3<)Ie9z$p zmZ^djP-3Bi;fWA?C)2@rNclCRtBdxDf!~x=Erra7Gx)jhTnsik_X_jt7sq%JEG2#s zGbl&e4b#6_VJ9Sgj)juoAV%G4l4xq-Z1lw!FSz~QbUwd>V}UcG@oG6B0t-9sTQZoC zyOE)B38gt`rGaV8%C>UiC`+OcT_Qu2`*?b>5Z@QFce&KK@Gc42pWUjbi+fT;cJBBn z49O3@S{_R9co+rQA%IOfPTzWNKSH`oYNDx+X_;VnEHRJjvtTw@<-_-lIlxQ}cvumh+1++~<(b|rF{uai-fBNc+3^vT0^qs|KV zw%i?Pu=@=qQPWaukVfs-vZj=wQmDaO4&l2r0@rd(;!dsGMX)R8@|;VCzNn1=6JmJ- zip0=Kk~3_6mq$x4NO`{`%CI`)kES*paphr(;&d#;JwKrx7+4J9R^L&bc?smzANYT8 z8dRI`uUDByu@wBtz-#n-5w(A1{^U=ZvC(oBgGtnLhwZ@?PI($^#nq^Qwhs)ow)`b& znFIsA?SfX}B6J#GuP(dWq@L(WpKqm?K4CT=w!V1oK68xGlQdV8A3v(j6I0THT*z+i zJfUM_aVCNBVkvI2g`~Krh?+k~Xku~n9qDratE{TN>BXc4-HS#Z#d&;gA?B}_`R;d| zsgEZ7err}E-RL3%v+rh)8PAx#2^qWiv0XB~BhPAz)%eVe4qH1Re?0|$U`}zd%V_*2 zk_S57=J#;=VA?4UUchMvKgj0sILe>zr%E`NlE!T9@4`x>Y1=Kj|x;U_}_j*<}l#Q`7BeiM(C$h1LT zsbay#tv@&yg5^}~_Rj8Dizylx!u)D>FQ13Juz%J}IG%6H_6{z3`H21M*_AYRMo5EN z^{x^1e$-^ayj(n!+5F6%*r?ujwvSTQ_D%h+CF@(qE+XYGy%i`@O(9n`AI^@RTpCD` zy5D=ngFi55mQu1FBHBD~EBo@P`te-$D=dy%s1!Kba}SB}JKLQ}7+=HyNkdd|FY?;! zOd4dD#gRQQAS3(MiSkBRnPE4=SeWzkS&nOaWN@8mE^gzwhDv8(u; z(O1RQCHU23)+D1&BRY(xO{LWU-O2;ujDr}-5_YjC)0n7p;ZUo;UCb*x7$ZXPn{J)w z<@>>xouaWsiP8Gq$~vXdaTe^06E>)8Y935B;Q{Ga34~e*28r$CQftJbpS5IhxvCMo zVQsN5lrtqW@OQP*3 z$5rl6hQAa}eEeQ=#Lry3vzem~ZBtBLQBmRi{(XU=w)T_4n(?e{X4vH(DL*lK?TJd) ziq~0dQR81QMNxEN+I)!)yCm)^&Hu`_WvIj~1lh-S*=tx+NS?X8UBfXFvv57FD}7wC zf0L?!w_r0oUl849um6i~kyGR8`60jG`sddl@_sl^ecT&Q3`W`FMoSi32m(Tiq}-D3 zyOpf{!OmLVSJyaT=_g|s+cg&t4DWAqqXc*r+U7S z;QidW${sKPcn@V26{os6FeAoGO{|_BGd@0ER(n381r@;FxmdgDPu#y;b;y0X?73Uv z&DY<@z1<*uMZCg0u?ydhXXEy|ZS-1~Oe51`qOQ~N{M_Bou^t^Cc?Qp+t-k80c=y3> zPMqS^UmD6q*vU}}91}6V>9dZ!cdgyK;ZXNvB@Xd$(;gSSUS=)qu1C!Ee%oYUpr_el zHWu`nNp9a(pZaA|VK7j;J^x*j2y{%XhJTS3+s}!wVbl_Z+25l;54!Z|hiE+HBQJqP za@KbvjL;iWD4H*UIG{Od^wYaq4@iAe(LK>=Ok!R6eox)_XTGr5AkVc0Jp7_JcZB{D z(higaVhD;+*D!-l2TZ-Y;~ zGCOYWHrzPa^&H)!qobNI7{9}_s@o>G(e;#`EF$-6>gyR&27(4QGV1GpuCK4B=?r~J zURZJ@BfufR!2$zD;^N{jo&5AcRjdzYhtiO~5hC075u5GcUtLRpb!;4$*p5A@bXa)G zC?m6L8~0i4sgVqy(S-D?b$I52=lFuIw)S%Y+RU=D7!=Cq==fMLvCpHyn3uY@{3V3B z*>!a8<}2riCmM65#luS8*_FEoA)7yObrBoA^hFh@&3TvSd4{(S&KfD@S98YcPb7(% zyT78^wm*Z`gc0D+p_!`vkmny`r;&#szK0ob;Fs{Ix0xV$!#6W8`dMW4g4U_DT(#l~ zC?e7yS>C$)WQaEM`xjSN*F{Is>MS$iNCt;#Ks@p4*6AswSJLX*+S2jm=2i%gPOfH? zBhj-Sc23S98D>OInoc0r=T`(BY_=+-Cf8@XJ)-RkY4q@P`d?Ko7=K- z$kln`B}E;^zBTEp1)+OFm#pWpfSeybiHSV(Fy7%dxDvc!C@8z4t{Tv@tvMTDT6wYY z>C_?K!3mZO+pjoCCD654pH&Bc=}n;@Gpr@FeSK;RNxFMc>g6IsJ3~@u zEkzh}X-6DKihaj#g3gp*VeFESlxtqPOKc0j^}qkRxq5IHx@dx+hOqtDge-xS65g4XLVUX*SlRd z`n5a8XJ<)dw6wmKUM>JApxtyi_f`Ol@$BsEpG1eoZmILx$Ba~v@j|2CWGQcT{Q!XJ zJKD^MRIl>o+#Q!z+koNe)i|?5_85co>(Q*r=8w)JTJvE@_+wVL2$?PxKy(9&t2MJO;d9Z!XK5In1d-T;@U~qc4gK`FQe%=&L z7rxE{HU*3)xm$J)-IQN`=o`RX9nK(-SPqtS7kROWKAtFHSit9Zh$MNyK^Ger$Gv}7 zuT-ywTZj3OV5slS;8zxQna>{lSi$FKQM1^E)?pd9uVj-?-ri7=Ab&R^h*8MX0`U&=i{wr|U;bQqAICM4tFCF#qoqO6kN^pQyKAdhD0#oem}dTC+ZcQP~t*N&$r#mj%= zP;)eUi=XMoB^g8IMW;s{U7N;)t>C^3O#{Mnu-lR(h7eRQEtK=U*}DM_zNz!zLwU73 zDo4jQ4h~lP^9{fS)rT~;8W$x*MBI*lv(j`CJkxNOwg`)vc+tVerWu$|JR0QJ+z%eS zv{xmk=6djeV%|TtO$PTs#Oumt41iaWB_-r}W6I2A5Je(lNcG%aNis~_c{P}#NAc6+ z&$!TvKR?A{;^X6O+*$Xg%7TCr{5dd>njy3Ah#dIWie6^b_^IqEpL$eFns~pzDD3*FycAPpD4Bf%` zp{9m-+9+Ty;8#!8f)rUX%IVnZASnG@`2b>77&xFR{gcfILPjFL<#^hr=@hjcKAt2d zRwF*eC=*IDyni>dSRgXFBLg+^etWX<=7Xx2O}_*_{aTRU&BQh(Qyq16xG3Xs4&POk zTm3h_k^9nN5xer9x#izDZF7N2mUGUcfW?+g+-y ziV874>Akj09IS7u9BbdYEzHh#rdFhoEFdCM-MLc&;)0i#S66rU-80`eRrX2LE8 zWS|KB?HcGOX`L~kg<|M`pLF;LcUwB{m_H_`Tp#Ht1&9n^>*$zO82mOwM*mW_&c&&k z@$K07JCL$u{Mz>VAvLjrx#Yf)1)81&@921i+r+KTSBNNK@pfuur4E;hGY1zW{A*4< z_Tt>BHsNm|4lNi1Xkf?Z1mplyrD~AVB06ZJ`^>aKzQ!+h==o68A(>vCvo- zVQ$X0^-|$>5Ktlrw_|{0%bZp^()PAgPq8w`t~8EN zz2JUkA$S|$UNhRx3e^0aq@+j0_^TJOaP+(-?+MY}QpnKK!UI^j*eDp_x=3gKa^ee| z12JDULWWsJSGWElVq^;^YQzW{6>=_RUwsi%RPb(lXl-Ze5bA6KDUy(J*N{5**?EcJ z2Sk*~(n*7`?2$RLxQw;)xx?qv(_RFhe4m<3kfwP4I$ywS@!$uyoyaE+vBvN`VngtZU#}S#ZfRz zrxc?W_#dwQld8Z3>bcV;)1fPvZ zLg1!bVQomDx_YKqsIhqj&PDbt5ra}sZ|@x*Cvkra2u88ACz?~$PUbJ|yatk`S{oh2 zJ)s=lH=Lg6wKyK#hzFI@@f&JtYRj0VSf`rG%J{1*F9QPuFe2Y|k!Q&7K$nqGrtPO2AmVhNaMnf7IngaL3C9^8M9(lD-=I9w! z;l-jQU=wz5?KO3=_Tj>(G33Gf#OT9LvyxuO+1`AB&UhDg+Moo4zR__5DK8~ef&K6X zr!}yvL_k57_KAtWW{Ezrqj>tN_CU*PeR|!M3IoozJ=(B!_)yO~J&|kZp#96@W34g_#sr2e z)WmhPwc8uc=Mz_x3v+W{&W;e0^{nDFmFr`aeqt`9N;9@Bc;PQzDJQ3>|5VR5OT!M$ zgRw!0AR=_(wBZT{Z{83FwX%k5fuC*Javh$U`t75urA2OBVFjN{^h+!EQ1*WIelpa~iilcs&Nb^3Vzx<~ z&RiVS79u6`;h!bZwV0Z(+&;?#87l+wcWG%ALwAW)V2Fn4zYY!#x*pI^Erav(PhXSM zj$HL=RJ5SxG_EK2o;hR`&=loOml^D2EN(fS39SkK-3Ydyolxt#%r2=+xUVym4=e`{sD$1-nw-v1EK#bVKfSb5|i0oD7fM>;6`|xq~d$5C06;aYYNehdPxRc_+XQG z`Cfd4Vr>#Aw6q~|q*D9>7>gFC{p>uanK>Oa0+(>m_lykNh4GIG2*}Qx&tBC_)OTY zdbZrO6>kL4X1HEe?n&P`Z`|*GY3x6?c8nD%(w;H@O8phlbRgwe; zk5+aFZ-z)8{!l%zBCh>#V=n^4MMO||zr}$uOG&3;%1)t5F$N*Pv^A^ZfDVkCUV_vw;G~!bAhKwcLW1+^74@lIl&dBK;tRn-Ys4>9^ zg~!z7!hl>siRhnf6UcjNN2=j>$Rq_c+gg0s@g&7eQsV@#*RPRR0r+i~l8AMYqWu{A zZz6KHNk4aU56TIt^4hlZn>7h;aYP|oH&y0_oltp@d@t(}Yc$rT%OcG12Akvxj}R|F zv4l&WwJrS--b0TJ(=V$_f>g)D<0()fGL2M*6p@x#5u3U{)UH)eWnEqT!O_gzig;;j zYa9E;&$K(t91B$>w7$6KKCG+llr15HvU+p=`BniXi;p3UZ^ACru{BvyBcEK^!?T{ql&Xy1pgd>is zf|Nniw%c)&w9n5R-T~~VDWOb{p0D6no8G)|NVO7ZYyR~M8{=`)NsY&fP3Q26IKZDE zO^?cf>yL>h2hOJ!1LtzDmJSx#{`O^wJu8$Qd^kQ~{+rN&uC#P?@dcE9`m7BeQAeVTdTN=L8mD>ml~G&a9&9W z$ZJdl6an3Cdwcuj?%69|UofW8Zf0s?BBMp{8HyHk!T&;wbupT2xibrQePGsPyx1$# zibSKteC~h8ABS;DG+t(r_Lk;P6`Nv@=^BPSp-AJQihzALkg87GxH!CUQ8JJ=b|0jQ zKvJicoI1YIg~LaNkNfN9e^`~C-o7B9xx?I<-j+@dNf#faJ;8Y+5p1n?p^`Us*^3EM zD8k%1u*kJXb<>`x$@`sBl=Qt|$YLm^(bCcRwF=FNxf(4;_F_MKE8JmZ=WimzO^7O& zmN&Ap8a^*lcud#gsE_b)aw;*~%_+D}D@T4LP~1fi^z|_o%1z{aL*fL_*a^4W>b^Ob zvyCAJt3&^b1+am)zs+&OB&u?-TQLW2bHTiKD^5;M28V}R*b@xXT|d4lw}$wV&9HkIG^DCjKbhPeb5|#?RRxzhH&t^`hmIb$Sz#1(`aCW z4%ceabblT9GUK3EVEuH|df|J6+J4Biwvg;$N`4p$Lh!~5)u9XN+fhM6a(uj~`Agyr zzxSzG^cuXu{0wSGEH>p{v*N`GdWVx6hr{Ni_m!q^N*piBzE{?&%f#w=-3I< z2L=TEsiYz}$9yuZyFO3Juf21;c7Cl7WE)1)*`WC^$v5caSm)1>@F+B@)8Q7Qe_)%n zV;J>Y4@39^6B2$y8bjRF7-4#iMMXvBc(C{kT--|;7Vtj1UGs2rE3sV4wlgxzJK}?L z2o$+bOJY`{2Zr0)%miDO1b%W5YJTnh0ww**`pAd&B1R|r%k!a{Z)&(_)sQ6+!ajKwAk?>bEj=@lKVERUoFeCdVk1}39S-w zDt^JIDT2oz14sE0B4AF>6n+<*J40dW@c-o}f=3421p@{&KA zjq!SjxM*c>YaRBqQMPd}48vk`^Vl%jMW5|ArWeBs!z>m2a^!{nQ!88 z4Wvk?9345g&qoe{q$K8sF2RaL`SWW*XP7B^tB~!qt zcU;onBwd}7a6*-{PgA-s6Wj)c(n>H|M-atj_ukSkohw?hP`T$)=tGbNe@!-QAr>cc&~L4d+ZawOF(nn5;!LDB9q-0)f$=HFm~X>p#Z2h}6b8)HoL)G64=T zdW+w_Ff=suwLj8K`*-3E$p`mPRXD_ox8r4jef=Uo>D);>wq^onrQ5 z$4dCWKXwa^Moy$fpnNgykI_7L{p?LJ{NaYv9GwL^@=75$kuBHRl~+LqsNpoZpwW9R zPQc6kW-LCDo^j76Hto`|{BGsnpT(o=XofjMVbFiWk7m3hDIMLT%paKvC;TZ#5q%R7L!qqF7QryC}jbUSAVfysh~*m^{3rqWqhJ3Ks=C)vb&$yn`TfoMRq= z*AH=%@h+~n%-%oLFO@efr09l&MGp+hT(~$l-%j6xy1gE@WTZL-uFSh|dAz|h+SoD% zGc?TS!flyb7#V4;d_NQGjC`F02PK=(H`>)#?}Zc7sR-PWGrQ||t0aEU?%OrPxg4$) z6C0wElkc^&P`!Npx(#$4W9D7j@91h88}|p0KK&Mg=;{ckzjJW6o2YEc?k*|XrWze1 zhB-20puBfYqb+6C!Z6e?dU#%bUJl+Sfz-|2ooCN)3C*PBnsNEe#x>0is)$DnsGiNWntkx#8lg4ABu#oUeaYp&ajlCR^eb_;UlPprv(@A>HWCt}ySx^sf5(E8kG~tB z6FzTCZyl#x)nZo|FIH5Ct$SO4lc?3q{@^uEVag zDqC0A-+YCp@XLx4jnSZQ!LGYkASwvo?*f(kK6{T{MMTm>HbWE*u$sx*%;bgW)XOW$ z37?4)eXi~G+?s+xP&gOEt|jQ_Nk}>r6!c!=3jMHf+P6bUCSM!&mgXGm21v72oT%jz zboKRF=08DaOCbNhhXUVKGgCX5WEwY;z5A`9_H(t`Q>dT^s&WsJ|J;OZ%ulFyL_MHF zLySNpGu3bmG2z~73Wo0}O$C6p_H zOzUyd(xeB}#S{dp_y@Yj=lhS^w|K^yQmTzDpGYiPmbQ)e1GxC2<~FB@hzQ|D`{mdU zg8MaOHBC@9raKk~wT!ZLYodAp37z>Ms^xI?x6gR)%mb?#W?X7PXiyMuE%cxe--e_p z+v4_U6Lu214;uZ@rEwBIekGdO^LmXUabhr{^#`v zt8lEJ`1J!P!>8A_0A?!>u=cgj4MJy>}tf?hn^m-uzdB-j$(a~Ze|$J%4n z*SmONBE5!cIh9sAFR2GjzQEN@*Fw`%3~26H62MW_xh&vzG3;bd8>qtf@L@YBgP&gy z*;crAgrstq87u52tFL_!3|!Fwx%bXxf^MOqnDIf1rrjMPnfLD>f>Lv4ZZ1*AP#18T z|Jwx%`2_mYpaBxWC?Wii3W6&jVplDB)P!AhMSR@X>5X51C&j3QER5%)eSCVo*o?|O&PWW?ixGYz)1@ceXWa_BLs1XF8`FDTN) z2%~ult7V-ivoFrO!R~?r9by5B>TUq#RzAwCbrX+6nv?9={ObPCk(;4|PUS)M`sI}C zk>@M+o?}KKHQ~aZkDD(L_13hpijY`{XY)r~oPcJVY{o9k>`Xdbpt3$eq`kVfW%qPMh?1#IW{&@u^BH4o<8k8$u!p4H6vXBks z<*)g;xtn+0Qut|5&1viEVv~g{#08|ED4$H<1BE@$K8M;bNWdajA~0qqKpTtm z1i8TffUWf0T!-V;-9BT74Fndm#Q$Lvlv_WU2;}s8{ZZE8z(D~DI=q0TFUm4pRLlS3 zrTRq1j;lCyaBF!rO_p3Bu@BH2P}~jz^+RSd0*g3AzN+W}4K+1K1;pOky6XX!)%_o; zZ#^5XpJdb6deqX`RCUQi)!8V(nT||Ng%}rc zGTi1#Mu1mj5m>C8vCk+hRNo3;0vC=FGu#OnTnbRZVR5eRybf1){a$*Yt*s5{Ld7K{ zx(5b0rKOq5roK#Ux0{t%=sx11blcU|(V+-e0M+b&ol6|4k6WsG?Xv1WMFk5wK(7KI z9$CI-iU8Zay1w=oeQc_v)UBDGnV&gHMyHUu^>ls4zApUVqN?%nU-gb4i7#{6P-nj9 z*VEm7A9UE~=Z!so^eZU?)BqJEtL@o|2=zF~X_ds|xvcG87zyVc1~uJ+m57fkg-p5g&Q+kA77-U4JDb$L zJ8FjlL&PjpM1Xj1Yj-!RxcGqT`8#0qGW7w!7O}`u{*9C{y|U30{|HxCzm2?}+mAM; z>TEl;DVw4ql`$jDC@6UNDh{EfkNMIC1!GG9^&*=Vl@0*~aZs=YG?*Tcmz7;_%W8PZ z2qZxZ{UeT4A8x} zTTg({_x9}9`;&T0EqnKR6WiL( z8l#Cw2!Xbbr1|cku+C*IwV`Ex?j8a`a0t*djfkBr_aDL}1#q?&R z@d;;YxiD3L$|J#BcwiNU=XODr!sFy2XM8G%{gCk?fUm9YRxRitm?=VLZ%GRM*$}1; z@3;mPtDB~q5QSSeh$pRlO|Fbcl47&=P_}okt2-d<_rA5fdsCR74;b4Y2x4Yu4GsAw zwsbroH-_aZy&2?Q#KfDSXps$s{b?r?XO_(u{CF~6=N?1P}Kq# zXNz8Y9!5PhHKk-@!+q=4tzi4_W~5YmdyS1xy}Z5SLccUOKLdQO@&kykKa?#$oi0pF zbe>MY2KN2VB>>e%8W)ZqGUa>$4!eu&wg97Hno1;wfVBwN7AOR$t&&*$JU4$dE)52% zdcrxb7)f_s?1bomtv7)V(eUu2+B6HE z6Z2xxA;Lcqk|BHW%OCFwn=Kv4K)l7+QzZf~;!4R93wqMp41dNV5Rla|>d z+*FO3G{CFG$>)O-I@Td72y7S361QUMkk;OoetyiqyMTmIk0(LoPA3Dkt;?o1cXzc7 zEW(hvn8%OgE5PYw9uoD!Ckl;vT!Mpg+UWi@zK)tm;(;E!l0ds?3>~2$z>kiPFCTgg zS_=VfettJ6Cr6XI28>s!S|UnEwpKq9^8q(FICjT@m|6J1bRHvCprZn4sl<~a0DcG@ z32;FG`vtXifnG-q%-NLaDf>QU0+Oq7**H3zaR^(ujGD4@v*-#;h*(Kzf6L5w)zTuH zud~fv`1CLthb*&g%|?J0EO}JO_=om!s{`|TAXq0mNA&dcysmq*2HqKfaloMh|Dno3 z>D6#A1;ESg`M?-3kk`a^R$(FEos9(0nEH2$`{$G-fgq^>o2KaK=wd0FG`TW8Ai!9s zrxnF6G(hil2-Pbm>|{BRS6J8qQY1&wXvy@ymm;(zcWy`x6%}zSosnR-6)61x7)p{8MQ0advC^n37*GN{Cg8L7u$-KqhXrop6)O9z z<1MC;;DMShX;?c;tsu8OPtnB8_xm))wc#+GH&{T8!6{iD4|I2@0WTK&a**mHVsvmY zHR=We0B=}}Zgm<WHNbU6e05R*W-s@ zjNHVNRyQ_cVq#iTC-SOwRg{$x9wT=nI|I6)0BZ&i1VcTdYm3s)x23g@;h{o8LM9;A zA{iMOi6A*OoTJpt-xF!>!+^s%IXz`(Ps?qP5>5;UoNQcT5O82J%uPT{fDHT1uMMbb z&sBCD)}pKU9bzMr2h!3oB`hik9|h#ie;bNg&|VPmfL{dxFK!?7y<4_VlhvWLkTdXF z=_6bJ_5xCe1p>qgFn-{zIjM-!Mz+9`yBUPHzeM}~^-!cA=%OvLGF=it@NYAaeOQjP z==u=vwn8J~13ZaWL-Nm`41eA}2Edxb+k~2$3y{{D(9R4Tpu1oh7Jw{8c0RU~U99&! zw$Mt7egGJ|LDde+A0j0s1#lBuFJH=n$N(@ez_$Ta6a20UVk_9DNAYTDDpa$Qk~a}V zJXi4~GfVdmAO3l6xBdB>)_<`mS=7m_>-g>gkn6Gb*Lj=KS=OJH+v0+)GKC`-D&| zyny?06X@7b&3Y_<#G_xJyU$Ff*-=RS6`}_m_?tH~+&!%x-sPna0k-BWOgY%BCTtYEfeV;r2_idPrk_GO zBN$&D;miMC`&!01ec6H5#VfWNiZZMN5498_u?Jbc!~<34 ze;}{bhqK?Gog3ADfrVTHHncZd)1Z^@>+1^+o}4H!ij5GYC*2k;W+f)ViE$J|RJ9+o z&}hHk4Gl)N4h{(*35g53Qe*Nt@E47bmM;d|P|d4m1nI(oy=WR3D8G6|3HtY;*EK~& z8a4e^U=5Z4E$FYh%zJKxTkQ-FzR=aBX_Z2FBfLK|sB~Xsd;Gh|#eiKeLtvjK7gag{ zGXgs=U)8SjzlGPz9Wu=A{37!2*TptPrRSd&k0_h&5#V@WZqD!EzJ{PQi(gUV5?Y$n zBkDonVaH7ZcoN`}K2P*IGk^6!bgO!K`Cgd&_)- zH&hgZIu2_+4iW`979l!994ufuV3*nNPc^`hxwyDeQ&SP3c?@>`{Ud|^04CulV05j|nUmTB zS;J3dUBr`G-=f0)yvrC8{jmop`cRxh1uQ#Mo7wOO>jAzGn`wbUxWdXU@ub^8ip?f6 z8AF=-`bt12fYJbEZy(b&FbM73&)&Uo;%hj0Iq$J@OZfeCTax>O&kncAx*&g)f)0DP zCyI1M&%C|8@1Q;F=K5c0NM+R@#-yOwfZJBO+YC+;EYAG%w#-=$b(DZqjnfvlAp-2H zVgD#wKzhO`JYgd0B+8)7Z47kNti*A#$^Q$zH(fsFbw7ri-p$n1bXY-p^zSPs`sN#n z|U=QfBruta%fms+_yvn;BTnIo|kNDYzR}W zeKcbwr;DBrrS+F+x)-hh?k3Npkih)}fLC5~iDu&#@dJlZG?9^T{Oz&TZ6GcnB*2&0 z(@H9xZ=LNgv$#YuHSc?F#C#8%=3P``VwgfkT52k!Y9_pODHYUP zGlmp}=(1{Se}wTjimu2qzp6*S62r7MXox#4;{e~Lyk2Du=jk$TTPMw=LO}s~{U>my zJ6UcZS9=l3s4eran#~~P78}f9x^zh_cCZJ%UGL4zjx^oqPg3T<0JZMeo2#q&o13Rs zX?GXgRsOwyWo6~7`p4;pjvZg_{$9lS7xrRpabmjVxu`&lNuAifV@v?ij~DZ~5CB04 zkjDPpl@j^A4d)osGp=^Le=jl!)P%c1ylKAsgbpOEz%zo+nr~1Mx;s-9sZ8lyW2l^- z0@5^#M^2z`2Qavd62CmKKM&C!us7idZiE##%f-Q5FfDC z+6K3cP#v7(&CLzCq0ib^$$nXOtBd=yLSyXVAI4Wpkl6QGJ-c<+jrjbcsM8x409kv; z_@$4%8nTmmfpEmYjxvs%65CXp$7qnk&g^o4wG|+l_Pd^0c#w$X?c66^fl>_;4YhF!m8Z z7D5iKUQ1n26~Sx!koDF>ELo`6dT=a;z~{6?fuomN+^?>HLP9+@lH98oKN55C@MM&f zeC_2&{?vu}#))aWha#f?EH8q8C%k;(x7A1xwdgppR~ zklDI8T(R|uQBhF=dDG^p7yEu@Ljz;cgoN<~CbI~W<71wVb}!$*6C*wDoC*{!Ye#i< zRqpW_NH}SijWnyVKN0LfK-CFg0RAN@%T53ipvTK$7?{ng!$#qmwjG=>miTwlA@j%%DDlos^jva93V?j~?^)nps3U3tF?a_^S|EJpHzYm_| zgND(c4ds|am49;|K9_3=ASoZ*a#f7ZtoCh(>Boae8M=JAQ#RlXx+#MI*>;jMVJ-CW zo^XcQBDj5n8)$BBuE$!OZY<5GCxEOU7*Ok$t1}1$nPhW8(kRn^xq>-io>0t>bdc?3 z&!ANPkr(04Im^k(%|2WhN?R2Z5)sLpLoOTs-c;r$^jZTsX-(&xTx4Ak5cy=Ixi`f{ zrEKj418Wf6G1ar>GVU5R%ecE&2|3J5PVJwA(&CHL?;sZ-)NH|H zNo%#Q;t_+I3CId+29W~X83Adt;_Uy>^c6r+z2E!0bR&&|lr)l(Qi~XLcZ)RAox6ZE z2olmIB7Ep>SP&#dTBN%>msocHm+yamGs^(8b7$|q_kB-1=XuTn1ECHp`Da!*7=`s5 zmw}F+KAX**@)M7V0T;`>*dsiP8Uwr=c_h#^gT@H{n3n!{Z#f9D2q2B$aY&y<&+MlH zQNw22F@wH*V?8bW-%g~~IKXKAg)NnhQQFAzX8yMd#cH1$b2D4-GwX>ISwR zK*Fva-c(BcCcO$+4r~bdA!UW$eu>E7>k^A{Ud|#cS=rj>9N`#PCwQ7+K0s*w6T_xy zetiGZx5JEW-#k#y6}Lo+!uHk_6ULaXtEKgglRPxJ>(E;pNEV<__^S*$Jgl9A1IoG8 zVl6N#I!gsW*S@?fGt3L$m*wq;zAVy)^$0K!SsA`fVl7ILV~=UBNnn%(5JO-*2F7ZP zlE*4PM)a6Y487`2V7uC@Y7!sQq-0x|? zd`)4^%}uWd|%@4117o&PQn~ICKDP3vtS%nlmUq0pKsNq-8a+TnBZ1F?|1pYAoQ(x!_jZ{`i5DHS%Kvvt-*BfJQbpHZ)94RUaa*%8zz- z8t#}{r^Wz9-TWK#;!$5*SZiqNqXb8Zq(4 z|BOvkI)Z&+C6fAY+Clb%04<;#(A5ugWZb+NKDQNHou}0hUah{s+Kb2Xd*pkGn!Z zQ;e?@jKD;pe(N;TxAO8mT#I0z!?|BTzy$n<`2a_)L)jM+&I0ZM`%wkuMSKps_56jnDqd#5=_^u{`48(cl}0u(GIii#(rbFY*ZzMS{{l!k@|K#Syo)T{P6&*CZ2 z7CQC7O4r-FkL`_0_igbeGEdwMLlcMH{n1pffLWEkBA&7rM;EYW_^^>IF~BhXRE7p~ z4Jx-m(ZPlX;I)qb$j2{sYlr!iOV1hkut2OKC?NihaN>|+V1xL20jaTc5piSwYk-PP z@zqCIb3d=fP)n^?+u6wpShlag_5cPdg^$~9j1|ZOqo|n6^`d-!5Mp7_12eQg_Lt#u z!*1W3WswF(18f5Jm2(x@jG@!K3Q5&J8~es0IDDPgmhEQzz+MEfMI2n*)O|Clnf*(p zGQhe2Hb>vi*t_MapFZr&VGz*t`K7f7P2~z%Ib5frO$uNqu!g<<$M^$fcRzOgm4?^o zyN*ReeSOsOiz7FEef@RMm+HGjCG1GeWK`4v^wggPOJHf4Wi(4H0RVF+mX}8XbMgxj z?Wj`u-+$c>4ZugbwwSOy)==7%5g^;oJEi;1bW6s>-->1<2eCoSfbQGC?vx_vva=Gb zPVmtGb9t)1;|0uIj06fDwA&;MQVM{O_$*=>jY4Rdn&wF1I7;wjyg(}nEdXrL}dzr#*0l-U| z28{1OK7K%FO#-r|*PI~0FigHrP6PuLNFbu{(c*+ufU>P0TL9{5y%~wbDHoFwSO)fk zb+VP;NUUAf)Yg6$%jX+?s#L5?j)SX?=+yZg;u&$HxcdaK1q0uHd9akfIJm~XM?PLk zbKB43$^{uBO{*Q@s_B+iHeCM=WD+f@|KO=wZYiHXe#^K)%m5ZD|&CIXyK!eLCk@g+KSpEr2HX?(jpP&w7HE z^G$+BrA(ghZ)N&Bmo+C3w7@i>;eo5v)Z+MiAbqAxljxiopYWFo@GGW9VvlWaW+p8$ z<;tF&+%H^)-xX6_vxUGx{#m>k5FIHvy5e#HI=*grGCI`!%WctIq&LICD>|}y#}dMN z8s&vtT{E~sQdEHkKuwF@bihnP6^F)$svuz>ZxN0V2Z!wfa=7w{p)>e6?dGVDk*kQx z9F7=nZVjlWp;_HKTFq@cR`5raaWuK_+y3PqWkgk(pM{U2JI(^>-N{a*RzL>l8$z$T z1^AIYs8MhpCJ8XMson3-_ZTiQ1fl?vUs&?}qONJ-)X(U%m?rev)#;t`{*YoL-(J}5>Pz#5-i979)d7vQU9iuo@5d~0K?h0oJvBY`?HCm8PU&I3E^?6_N| z;X~I95Udn;g^nWMW3Rf#xeBN-(Z2rtb1#zS5kdH@pL!7Q=~dG*rVPnJ#z2;po@zr~ zRo#99pnM3RHuoL(;?Xl5oQUOrza-6bvl@U{m2?@kPR2*62SIry8oB=>p;v#Tq++-o z*WqRp%2$70iN1n;3L>+nctd7QMvvp_iStyBn(Q_Gqo-Kda$q^EFJviiu)N-8k3RlI zZ1tE7i}^Ws7IO&Xl>*)@LaplZUeh#nj~(Aoj&utReR7AChnpAeOV+!rza>dgg4K6^ zJw?sH#v$jYXu97K0q|6@@88XUO7c1g`Rvj!+k2-&04H*K=!-u8FVH*Ki!Qu0p)m_; zN^&6s{hJpT-MUpM_(_g-^B0(`I%|Ju>itdf5P^BRn* z93^LRkb;fuVu(c&Qo04bt@(qKZdyg&W%BsZ((ilycc4#ziq_+7L-D205m6KcFVPd> zs0YFNz`lB}R5VaKv=auPDOAtU-0&YQ5^iwOoljli=S`h=w19$_K;Me# zX=6tAdTnZkyGRFCNKcy5ty8{I4(6F>FtfAf2G>;+yAp_RYmrUtdxT+OWo}VXZ$y>~ zXBLZnLU%3wb~@oA3ObZgA^p4pv|BD-pV++c_rkhz9z?!87mt22qTMCJ3^J;SNgrVH zzIP3^5$ybJe8XL(k~Lu3)Wj+*oDyp|yQ3@S%$fhaISvN&x644p&HFRDVBQ}cVRr%R zww}ib{nd4Mlyb}nv0G-DlW_SdJk3L=w^aS1o{fBrO&u4g;+Ik?@ z71#8)4WF#O5-~&F+$yZ#5ZK@)fon(sc&rViq53B2KdgvQ!jq2#W64WdA?`HSRN!Ax zlPPJRNG0t?kbB;DBTLW*f-a!T+h)rW{CbU$<=Ha{zcbb_9O9oJMa?xm3^UsRe!~Z$ z3|c8)f%ztvs$>F<4Atxt+I=zP=pDy|@7D^&sxMgo5K@(i$-jx~J?= zeAx8MOkJPlH~mG!H@h{O2Tf9u_G28LCau}mK6<;Mp<#J95~!8=_(0M!Gn0mQ=`U*d z!*CZy7>heGyV_It4JCp=G-)Bxi`D3IA?~9yo&J zwW3K<-v}T7>>5UwmOkT6B@N#r&!vNV{j$wPAm?B3nlW_-F;Y_Y0=pGh#qZA%fC$)c z?pH|(r~lP~;Y_TY0o-O*R}prhl>{D~F!Nt>!WVEmJD-BV@F+Uzet$Z~S@-!Nsua{@KL|Cx8xc^MHTG?FEtdKj}=W|rQO zGEwW^_c`y^=CGghFz~lh%<#WD#3TOSW=6@5hY{6)HPmXeyy3>bkk*CSJ1wVmLvIpC z$R+HaV2@deh=dXDsPLU6n|1R&B61B$%PUiTG)9Dn$pTYg8oDI#aMDJprLR#PVa!5i zTpV1kP-WU69YBjsY5Cy;KmaO!m%sqzCE&G`SU^52v_l6Vyh}Dfl=?8j=wD}0+q_PE zg9ukF+99T^7e7JJYsk0ep5+VVHNO!%bomXaa_{hCvrijHU^lV=kAy?54YRn=VFk+L zM@R(~?M??uuRkZaaH6_E~`W+2t$>9x+sRlhlE{Rln% zr5h(KgCzn7D#o+sX-+<-QPBJQ5%%?e_1M|WMPB^lbiUi>c=&zP-a)z?)FvVz#ZrEk z5O5{>R_mL9^Tt!6jwU*qKRIBF`KEr5ue-%N@;}iOnBI=ZJxz4BU}fjt$mINsji7d7 zcV;GgE-uVz5ISCp;FX5|nbv{1A%%s}JOZ2vgAeXGyv1(D_VqmZxQdBv;Gz6E+$ey=*CE=FlRIV3x)_GRWOy_to!_rE?*P)z!~}yTSE#Pn9(_ znQsg;>NA5$4KvbC;*l_Vc!3JNUmPGl0j(59idn`v@P*03n1u)mt4I+<^eVw--Cz4a z5xo00gD|u%R=GGV{3^Rmt3j^G5COrmENB1|P;ERYeeRAOFoxS~K0C7AydW!5yzD8duBhw9 z@QA*i{q#CI>e(GaeQ&mjAKh~AQ7;*{K@@7+W@7b=j{o#y+M9B5X1?X4Gwji9S`yEn zh$0$bCe?!(HHF^1cxT+evf6vP73D>=Mt8toe>ntZB*!;6s0#e!L}XcvTj?j@lbvm`MMHd1FAByIQ>qO2v#z#i*>MAhX)3j zgoMZ+?SlbR;C8k#_(Zt?dNYg%)Om)Y$mGETe@31Oi|@pYPE1(V4DD}fbfui0UA;`- zsAa%ub@4kGNa2+^ExXW~cN$|j7b|EEj$`3s zQ1xIOO56w;CMx`#Yhawht^btj(i&OyW5mF_;uV2Ac9*GfEq=pO4kiUw6ggRw3x$de&@vCh|bA_6-Mr3HoO`@2|If5gLjmc=F+7^rywgrAGE_6?v*7ya1Jc7VSqCCIT`UN#h(k(Se_FOmaIg#z%zXpArsvT@#=wAr#Em*P#&=fm&@H%u z7_5?gl1@(moR>0Bu7)y)w(mq!lkPAC49;v*Thu$M$X2_kTyg=XT3O!GEmz|xUJOA? zTU7411;Ij}T-hUlK<=~*9jIh*Zucdwqppt_NvfXlJLTzQ<@H*~F}!e{x5<6W6Qixs z$?ISF-zue;m~W0}T{$9^Vs(9&dgS1y^ecFp>`<#_)3bV^Gs46#ybNke{v=CF{(NS9 ztWSM?hm>05=^~YiEMLRLzrpeoZGPvRgBYdJ8Xb%)|2_6AUt;0bM97?J70Toc{npj5 zosLK!i%1u!w^!6OvI#?&YFYLz#qLOp$R0wq`B?)$=ec;)q%JYmzjWj3@ac#P zM%fX)*T`0uJ4>V7pbz2{E=ACif>PQo__^11%)|oF(|#PGI@_`UyNiLu7qIwEZvpG? z?hDBfprxbZ!GxEwSg3X|`*G&8t|}`A4*{nC3aVNWArE$RSPvmyDaEj>akuJb+r09E z;8@zPoV9vBT9V@KGjf)OZ{+ys28XbVVMAE3Hrd#I2VA*aG_R|DvouQbl1M(c9n~_? z(P5ycZ}(pIL6_MxGp!EdwpAa!5Ug=si*ojKSd0@Y3#ZXPTy}$-YE;1gqL5fn5bzxS|AEw1{nLGBf@8L8$*f%;p2Y;k*$D}$Cmn)+@D7w2C`poh zMR3v-(NGisxA5zQIi^5z5|(w140JHo`neI?t>Ivj=XUHD8Cla)P)vjC>M$Qn-baxo z*i;+zIq^fJvU#8}+SiH6l@im_?@}bN^nbP%;l;}gVF!65GZ8mMQ!Qu*FO$Fyl5YQR zgH-!=z|m8gB!2V_Gc@ockv78ZDa_k!(INv zxltDFQ{Gm%8av*f{36&OflWPK~^&GU)j zGP)cPh?Rcm{m2LNp?=w5O(NjQ?Y+Wn{OT`uBJ0x*%kweYYH>Ach7w++Gf%}X1`nd1GWDebmS_n z+!JDfb*OxkF)!G_@Vu{`%gz2vUC-QvZUsV(H zX+xj@Zjjbm-ggjZ54ZsYO!^{6ejnAxyyrD;1jNYW`(8r!CGS{PbW`nm7huuxm!PvN z5!8L}s4Vn$Wv5@F70MXkeYoOo!w$`n3J17gT7TF)xb72IHaERcz2nbnyn@n0$tDb5}q8`fBe@Ux9qB z58U;>v$VF`@jT!4F5auqd3&(oE**H*9(nDtY>d#~#XSAzP?z`~_nP$aVU+eVmY~Gd za)GIEzk0S0l!@Ke-LcbHi=$C_HYLDM&~ewuRhJ}10rqPiPr}k!<>?TZaDOK1hSi!c z>HPrzH$$DezFsM@<7JM2{r7Um)2RbLdqBQL23F)uA+nW2A)`(KpC%Txe$MMG_;_*R zJ}*~!GFqdK?q6zP89br2A1h&9IhoT~^{xGimxj4j?@&z{RT^QYO%_otJ_Sq8Gb1FU z@8MH1C$7?92`8l7`h{jfy1S#x6*Q^7*Ojr-Q)IAbCl3GK`NM|wF~a`jcSMOfX3RK zPd?D4$-{Ou@k{Wyy|6Fi_2yW2=Vj0ie~u_DgU3hLJNOfjX{^;}8QxbNyQWYH*$;HE z=E`)pqfr~5_lWnyhf4w8@cX!&JGQbuMA3k8*phO8iKb;oc*#;n27pNr&KzT|pqHNX z=M}q@r){(Y=Zdn(T1(I2tDNavqyKbZ2IWN@F%8&k^`2*5E%QPgw6{j?Pr74hOa%cz z0ut*%`<4B89|M6`n)o(#*oB&-$uE{2${h_8*ABNon{4$IH?=&~-ZoaPZ-YzfC4bSF zcN@~`y;$!}(aHcRII*#HS!pHbCiYLP8asF)CxT7>H5i*2rrR^Y&;83Y}Xq(Jakm=XB5CYM8faN?Pwyz%@!fQHpGk| zE-^>aeA~a%>{K*Y*uxzmg>otm`nrem;%A(LD&KV@zgQLb%f{1wQ}qcs28?Mc0Zivi ze|HlX8{4!1ls;kuKp}o_YMAVepQ?xe;DR{+SWTrx%1>A=7!0tFB=@A z5oeoHW4q}hqr_I&qeh@e_3U?98R3)tSzk>nDb0OUNyC~?ms$C!92@>xf403 zzKEmVdcR|g>a&q;Iw$d!aI4eYODuG5)7|^}e+tOIBCNY#I>&H4Z*1a<6LfC^@FU%K z#(2K}y<=7tkpfKKD1NSg~(LcWvPY1gU9 zYJA4T&$<+=+%D%)Ou3Zj2iu*$a&I0}aT(y?bwqwd573zM47=rV9sf9hb7SPc1duAG z>D#n5q@0|bb4~E0NP!;UziDbMTu4g8P;&F?Edi!*YbrHO6(=uW zZaZ`oQ9wpUM)>(@jQKd;qK>~usfa_2`=kNE-sP~M(;F}j$e(`*)1`XuqwKr&kA(s&{r4MYd4QNpXwIa!!Dg&rKvejE3w z2E_E^9FZpW`IV@~Ul9@yZ<+nCYH980J|VxeywcChB{bH*&a)7!PE>L%w+Yhr$#)dC z!6V5D56IKc^l5p!#b@Pek}PZ}>)4_OCFGnfIr=V?uocgP9NC&2E3qhG_ zzKL<$<9O+^JdUCgiFQ$)<|lZ|-|v-QOe<x}44l@>V@G49m9m;NV=Qtqq5a$Jr1 zaSXU-o7ka=yZ>CvhU0YJ$u(oE<=#Zj6eDzHmgD%{HcfZ)s-9WkrQ=s=$;9n9{Oy9% zlvGTC^@6#AK8;(0_vYt_@ebehLizZh1AS?Bu2Xextf>%|=emi}r8Z>ct1@`j)|VdH#o?&;5!~rb9ImxMKel)8IMxAD5+f zzJwGRG-uZCV`G2OMarcQUfczG##S>Hl{Xh*AvPxcBZc9;-f!zC&!2cz1W(#~Sx%I2 z4Qh&Anm1r*#EC2CFr09=(4&2{FM@($GPRHSH*74hg_quUNFdC9d2I#U8HGjyh1F>;&Dfp1LZzJYeAxhW~E&P;c zn3PrpYLB~eUtsECZ|P(DZ3_IvVIa8<5C&VE<+YNpY%2$(;=_-4HOr=@#5bMTrT<}v zsr3)3e-^#+quf$&jdfnU6IdH8il=fY84v#G4~;fic$axYn%EKW&KX=RbhbNJlsc(V>RjTPF?Sujue~@vbV|hQYIsTdbLji&bA}U%@h{%Lsd=em|23HL zuQ+*W{m@QMCQO!n$`?{cu+a-QdJ2D6yF%3iQf2oFilqKKfRa8}TZX)|*;v^eR181% zBfQhb5O^ZD?b>P@g;Rll3 z-F9xSz521T$k1FW&b|t^jt?J%(3{}Ma3`dU~Gt}B~Bo9;(pRkmpN3` zOB$d=p0asgrhA#(9{gX<>_>os52%mYaiV8*MX+7HF2TVZ1YIJSZ8JZvK3tYc*Q@Xs zX=wjc*A(@qwtM_yn{X*pFzVs}W026r6V#ew+J)RFM8OQ!nt)Upz~%D2h6P&qy7psj z-T5|!00-E*G+s2pspNz(#79kVf(&_h1{L*d_^6c9X$Ie+e@N#S5^y!{#v{F1|A`ti{869V+6YM1%2P8$t29+?c) zB?I!+(|#VM=H`{>cGxrN%PVh?ZR>|yN z!bRXa$H8PIrGr}>b94^XlA76=JUN$)O_y8>FhJ*~`$G>9RVfHKz~od^y4H9Q7JPEK z#73?SbZaR{pA#e^!lrnFg=WXjzx9xDf*8}2aFluHZ8DCMZn+FMV&*@m^yKYO-_w^| zDHR23J|Ya0D7_z`e;#Kwzz7hjK$B;fDO>AK76;dc6URWG(CS*gqPtITs$^8_Y}nOZ z%zd|ZHG6-Frs;(E=OsU&@9TnxF4hDf9o8)_gl#a=;F^u_&sLB8p%v-kW!v7H!Q;QX z*Lm|-c)XVJxl5hd`YSbz#5Ql}+QXrFB(E#TeVa|0Q4~Wupf;K}cwlZi>c~v@hKL{< zA`|YK4~=EJbRXDWarAX!>WHrW91^#_ENX|$Kbz;jTgxk+<9j&I;iQtBBc2?pG3$}y z^0|~WVk|a20h*f9qlAdrGYu)8Yz7E7*rIb^cLihd?01#34^ZVZPX#F?gBO7sN^PXM zDIUZDbD${H^c;W60g1R38OFmWwmD5o{hcckpM7BR>Q&gLwby>tiJ8e^W*2%dsjZ9w zc4p~t@Cm-}JRLWlR)=QWUH;I#OvMUe0TH`amMZl*?#y15(iNKP>Oz{<^Uyc)iMns~ zGN_jSb~Zdc^I1%Qb1N^>GWEvs=zu9JFR6b(X_PvD5r*|CqK%&~cq^;fC15FsI8a{! zd5G<54~dfYk`k;q`}sRVAsX(jhP1zmA{Sl^wapnZ8OJdt3ZXpU@(lAuXZY+L+ySr4 zN{Eb#YE$o#g3?7;3@c>t`vLkT2{=U+!>hy0ob5Uw3ADLQioW6cz!31yDJWUjWlyQ^ z%)AizI>9^V>?$4@I{M|s&mH)}#oAEEX}EB?7Jba`iH_OH!jf`)dPyN9W#nFs2) z^RuYv+Bq-B$(Mf9Y2!lm*yC-1GJ(tY^{Oe>6HL5xogZ_Ew{Gv^tFBT+YX$1JU6s|e z(ZsgEtsY^O17B$*3<=)mxh@aZ)1{`Azb0q-&rKJ8auF}y!D}CL1+=~ z5ki5$YuDKsJzhqu+9oN-VQ>`k_XeaBkR*jCGE zE>1yJX@!|w@x=W3a>q_bZ41hN?In)%sEuXep}$-I`)u zq4u@x_*gWZOYt?u^~@ezW7=Zz_?F(c?=m4z+&uZepm4=xhBQKK#lJA-5Jzw1gm8O? z?HQg6h0Y|tuN8Ts-&+-OA{PqJk=m=Q@@P&SaEf=Aq4rA0>@AviA?0UEai8cADg6BC z2RrHa!M)d@?*+kHeNf^m<|Y8iG3a{cb`rq^vh0&SQ-O&{qXf$$AI%w+Copkg#HUuz zSgHQCx~y9sQsqMaNvIlhmSX!}Ig@xI*-YYcweC{O?)ZPNvW)xHipg__e`9H&D8x zL#d|x)J1sK3o~F;u@4J|Ng-)|iF;cvYiLS)AeO4LNSXEjKeVi<_~BCSQN++_jB6Ki z2(o-0pn8=BMk~E*R_ubdy^NP-YfKhHb*Mge$v)jWb{gV-hH*m2s5|WmMg{XP05|Wr z$-AgCN}U!bYmVVbI+j-zDB^c3CVCy5$niOz~(qv*?~oi<5ZsD7=!eft{aT=}L5 zafE-SbZk~LGV)|#vP!)oH7g`g^!2WN>X{EP4H0675zMxON#x9>_j57V(#BP}upPPa z`g0N%C!$6PV+D-d<5qw)ytbIlY|#&_Ds5D?IF$rJi|#*1!CZ5yv{%Kv^K`DdC@OnU z_~a-2_rVG6wdyp8SrBQq_^$~$OghKqPmY^ooJE1Z2!Fk#d=0tw_YW97R-QNiuke5$ zBtFSVLn`1-@v6^YN|SM+eAE?e0r2Dh9a?e)Rp<@>$&sX63p63y)(=I;%Hjj7VRbA6 zZ>9t#=Oqv!hnyyA^P5v3vW(u0fH=!VHx<^1wP2J`goSiS+%~P|(GAJW;QGaY02P&$Ax&1MN9!9#+dode%G7ph>CkDL;O!V(3)ZjkykJ4HQx zq2NhYDAQ~i=Jh5}stxAfO60ojGULNnJtoJwE1X4;*YPj`CPifbo-o zH(y3`Qc|X!d1w(#!{D~MvXuMT1l4IuVC7WQ6hmpq`Kvwbr;ylmYVTi&N)3|Cx8Q}9 zmAtQCx87oGB^(pN>hFPJKc#hP*Nf`#)}W=%b;_zy|7O7=g@Oc}x&I0(o+M?Tm`j%b z?P2D)ARmMjUM-jVP^z_W3+jQE8#p^%+T-{hj(-T3w35ekx%B3E4YwzjLiSZ=)uFN*li@OcQV?BQ= ztnsFYB#3;C-AXI-d1wdk-3Jiz*igk@h*r|8TY>$}^5~D0cw%?H?*?%43-IF&c&HZ<8 zUNI@5hMaPhAo+QuO^r^2ql#Rqhj|>=%GN={pi4Nq#ah9CuSmW9;-ylIGFdht^2EnG zVZ8bM`_!Cgu52B_i0>wz6aJ2bem^fw`xFXi-zOz2gE4;1-t>X4XOspM^`*u7*{WH;0%Y*?qkzr z3qW{6p~fOu&7$n$zgnITV>Q3SjLaFEG<{m)LsZ>kE@|;+G+((aB%4?Kjfn-vN3x>V zFPUprgsY^lo`7PTf)yNI5ePmtIy=mEidV$?^zayg79VqsPRd$Z`)pbL-%y*S?Ga6vMQMM|v8;;w|)&JS_JlyCL#efD1b z%+u>w)VO=rt2&SpA}j6qL~}&X9WhsQkRzNNg&#Y3bB4tXJz#0#vi=Zu!Taknb?N@5 zgAqKocQk&G=_3a9-4~v?IuDTjHoaIV0X*#_bkhJ_q7RnsQJ8B2tbLAR7ZPunG# zKAMh>%V=$zIJEzvtjx8%njWe+G+zrH^kBUcu2>a=^`cu*x;}^8)td;QpLN|t*Kwcm2c}EIY`7D=Jl}tegDq-`1)OO ze+@J{!tL(E<|VNL#-|KP@1%@9)wQG1D70^j!`A1V&?Kx2x=u6a_LKWBwHU4|ydc)>!fJBEs<6boJY{N>Bc2VoeX zO3Z~@C1F$t^>c|ws7Xb8NV9xwmSlQUVWMI&Sf?gr>MDJL9; zz++XE%x7D-6Mbe%e!b1N5_^DR^b5E_6wn?GqB_DcH=5zaK<|H6EG;z%FfL)X$;CY9 zPdGV}Einydh82t$1^DC`2)!>O3$L(rzhH%5RMpo~RaIm}DP2xY?edQmYI9_(;Y!%s z)4xPL>t^PCgeBeNwe#wG9*J#Am^_^QtjV7LKOIO*k;-C&(>q}!V!xJIfPj-#Cqai5(to+z&)l*vZUgFD3ezM5k-q)dFVK*De>I!~q z_k->A^nAe6&pKgtb)mzX3-HH%|Ne_r_>@Z-0-t~O#4m?*eb18* zb@F%DFXkFfgi@-KmEEMZ^@-*lIDyM3>L73zC_$SQ-1l#tl0duxnPg%-VfC2b5~vsZ zj~bnJ_$apqeoku?R7TAt-=yGPQd`sMX;Ir z2f4PeVd?KQqUi8TPGwTIs3|6%XV+gW@e<-tAEmGPypV0CNw7 zX24VL@14?7KiMAZ$n?LwTkVwu<0X)7YIv1>MLzgzXtB&Q1y)FHlxEN-;=!?p!CM1{ zaaxW7E#DlQC*249CfS~dm<9Yd1v-Fwox*th>c11yI6sz8&IxvVWuSJJLDYmY*Wqw~ z@GzuRl;#+I7CKB6Y$1+K^O@q`H=f1*jtb-v^7bI1GM*FaWB5o3dDwY&yF!L?J_O>m zvEz8GW;T>!*U`=6UQO^s0MN$)P~y2PcLM03X@~owRS-w#onzm~|s=N(rkGl6)NQ>W`7jSPz zvbV`~!(URZJc#NO=y`|UhrO)v3*T8)$VLBfN|@+$#5!zydoobhRPFam(53^$c)L6o z0@#C+Sb}^d@1Moqc7-_Rsp+_5%ESmN9jkBX8NSe<=(X7SgK9yRs8u7kdz`F)Z?&); z@S;j5>fRu09Z7$Dm7~3syTyn0WWZ>Ib{fX_3G8XyFwZX z<(Gfo5hp4_kp08D$Jy%4-Uf_Qi^gX+eVadl98Py$)Cpr{SI*MJi~u*V&R%fui1(DV zR&;<^BlCIRtyqG}_LtGZ=KA-dD8%zVo(s+2#cI_Srs)f6|6#pWc{D%OvlW(p%HIJ3 zg7j2H$jsIfEk=)m>@D#;{02jZ8+A5i;unB$a~XaODZnss>Vu>T_n{Ax6xM946OpSV z7x%SMS*db;n#x6`AlT(^J%7gMUwXiBT=M+5bNwGg3iAy{P7SLet?B8fE?-kY)V+sJRRc#Z=R5Pjr5; zec8010GEjiEr0&JREoY+ufES6s|uj)D%nGoeT?4puT@2({-XO&JpEF_+jt*76!rtINJ% z5yq=MS8$DahWC9O!|9TROTpW$fvA|^5zGDBfMD$U2wd{|87WB)MpwlMQbFX+H~0dP zvH|rvN+5HkTBzOJ`IoJ1`{2Fw+n+k(e&vLXQCfcWkcG*dYv(%>rBUi>VLq;HFraK5 zbJYXi)^NNevg|SAh?Mfa+u<1L$=bNSB|iS(H}yOjF9w$M zjJ^02B;wC_4-x*1Jl%ERjr;ozkJ0}y+7Ohtp1T`gNkJzoJG9lw{gRAvN3Nh@W4o6;?LMP4EPL6#0#@^f*DCl^2VRJ$`siiU zjm`2()@`9>ygOJWF2`l~)^)yWaXGCTCqajII{v#_Kg|J{h^7++lD$Bx=K%i^WHo?2+Pe z7+X8dhDQ$vPUeV>-*33qnm#v{mgJ_Wb$b4fe14LaDgo;WGZDo=eVzN{Bv9EIQu+)$ z1@izBLx!s95_}?}4d03PF@$G$_>=3d4%HIBUyBlgJ7iG>BPTQA>lzXR&AuebRp7|C zstUfWEiHp7sS@LNH?VF-4|^_a?8oBuYAior;S5`R^St3TV9WQAgRSi8Ex~m!j0#RS<_50pWxGjE2 ztr6I}+>Y=EV-!hZmZy8?aZ1S1JW;zM4V4hO9NqWdQrDB>M z3zvj(K0CtVrC$qMFSfU(dN=rNJ=XC}7dZt*`1_uSalqzi<@$!Q2X)2W zakoPUV>{6h8*wAL1k_BaH@-t$N2xR% z>$7K1E2UVgf3W6{94Ln>5BWR;yVVJ;sJwvuCLCDQdJSL?<3YXKp`Cdpl%DowEQheK zm+UU=TWO1ltdN-PfY8zxy)hL-uonT0VoW0E zPm?SX(jK9X@(fM18K+E5E9_S@_f?H^~Q9hUb=gX&hV*qAoIQx>`o{+4a< zIWRK8Ll30^(JmWtMXUO^2TueSUYoxYn?8FatxdF`6CNz6q?a1WUD*zR9%xQ02zDjv zuC3QeNZJ4y3UMqNMMxrq@`Y$x1;%MFUd?5JE@!%{KNFJAu|?ju zDncJ0jgP(Oqm>OMPeYY_2Wi~*fD8HY^?NibZy13S@?UloFK7N?l0!t8fH|aM$Z7u| z(f((zcgNLVejgv@mZ|+zvWggb2cEX$?wFf5_@|022crQ1cWO{L$zbBXHiPmEP|2!S z)kl^A?;_y!1;`PNE(gr-o|?eS$y{Q?<>d^P;lL&cm-OL}I@`Y8sWRO#bhs3)&Egkr zt+r~e>PhzbraO0h1~rOjVuqc2Q>AG+L|%JTr|V*yQGF!dkIGBVx&WW%?@^QHUSl1j zCtCPD+3M(e-?fj!$u+{MUW*dcp}?{|dA;uU9c>Acg>^p)S?+)lAVd5-xI&PC&50C7 zHzjf$LpiVz*l3pzvn0rhFtLIWFWu&c`zEQNFoZx`N`qYYEciC`XgkJH_wj$x%C?v9 zTAf~XliUj!{co!L_twh5^}w%m+qI5}U8?EtR%ZPHNmlS62T&fJzg#BOx_d=; z5$;^YaA1swLoc=UaeHlh^TWbHzvg~IHT4@@**#hvLyP1HL)ZQ}p5y`$-oIW2>;#&Z zJzN?>WqNszo3lbK-l9Bd2EO#|En&(Dv+Jwe6RlNXXT|cywH5!k(TP-!_TrX{x=~X)DX^Q zF1iSvz(I?CB|L^jkwjW1p6>g(O<#d?G6XcP+JyGHZlcp7m+Z`!r*MJIk8)7i z4;@N;_eyply$dvAu?s7$g?IH1``(t&Gh)Wzx&-*+Y~z+k+{KcE5KyLTS?Oca*Mg{l8Y;t;7st5Hr z(j&qD*%w8u2*K~)!HCIolUeXdj`f-gr@UCjS-ugWX%>E~pS&E00Y(GxVP4{G*~>O& zPzl+6U)i#(45@qevXR@dx5)@3v--#$ljl%Ksw6+-gi=q^>(1bpFTiUB(xhYVFDk&y z8K7;9VzGWPCH6Eak*NEkt@c>Y+!vmu7O6Z7*tMmpt$bQ@$!b9zbD1lu9LSLdD+D%oFk0aJ%<0h z$N!s^6|zoov^U@gN zI>R4`wcPfRi{4{?=PkqE70IJK4_SFohiIuDZMNh%1@~SMqZ<~*FZ*|kYak~KC|T3^8Dz*e*x1-q9J`(e&)2! z?{S-?qeMcZ>fr`{@)h{x1yvB!y*J%WIn-*TcqL5ZBU}+&$~L<-)jo<9{5FFi%}&fQ z38Rp9ooPSDxa@I(L4~Ew_P|?`Om4OP&JN=D4310V^Mr8Y%4*7+%6kiwb1k%Veu^JX z`J>LTG55)5+mrTUtTaWEd*2oh%bU!f`Tra4!onL@zAYAq`C>YDp5$98HAFujY&+9kIzH$l3Nr*tRMUnQQmt?MF&Z{GO@wm~<$E|^TV&d&- z@@cR?JAin;=aw}y@0)h~0O5D!ziAZqL85<;1x#%H%6aEzJuTc-;?tT1bDOxqu)MYQ z`qppJ1*~CBhfgALVl{Lf(m$j-aO8JcKdWIAg6~fw{!{rf`M$m$%knWE&O_h2nJB$G zQ%RcyMF%QUfeNqVM13UX4Y0nlV~yxVeDeSjD@!3Shdv)Ak(WJ?#dMNV^t;QeHmN~8 ze7z?+Nly%)N9d*OIvK??BXH~81-USlN3?N`*Z?qaJ_*s2jih8`sJ@Y(eBFCOb}`^0 zQ23;!RVWpf5!T{5mk7LnzUbrhUE#mn2c(udV1r6PLdk5jYpDynm zA*?i5&%8FMvnp0vd+|v8(Uvh`OEO`lTf#voKOD?RI*2^>oTe1>ZpzlFyMPUdu5JaI z^JOL;rh}~wKKau{kf8Llpb0v%h#)z-hG4nUInU>B>waX1^M0eG3-U{ z3e|s*dc@wlfZsd0NWk66H5>#z9u=3vR0BhKJKCRI`%?NThbo{iVq}Utj#B zc-9(6VRNOH?wWd=mY2`H$ejsaolQ~IFC0t-Umjj9zetYv$RJ&IQY7GHXbDlGRvWi#;uY;Otg5N|3}V1wha#EgQ8J`k*@bnnegI)*Ge z4O}0YGzz?W8Wi-vd;qru(OB-KV_DO>zl^{Zr=<8XGExNSG@6h{jJN^(7m`C1QK#zr z3Tk8q8-$BZ4}y4TQprma+JvGEeyubnYitQVO6ABuh?Zl}r@=Rlm#-}>602hn4Je3U z>F~Ip1Jb6=sWKg*QM|tdRmxh{UmP*Kb*M{$jV!H^h4Xa@lMoRT5O}}jk0ovf<_jQ! zEM9Ug{BxQ0w5cPe{rKQlVHyovQhzl-y*+5q zAotzjIMaKML*P8_%ld)zB!^dx;L7sP*WIh{5-cACN;O};_(0J8MO%u>$46*wyHvG$ z_D8pH1jcJErwBy=4@k`ic}cp>ABy+(nxF0#cabP#J3tC@AoIQz*x|$f6hU7NAcQWG z{kl?k-M8-rq&VyDclmT7tTUJZq0fyzU!K>#Jh^&V$;&4+=wX=RFB;WQrKM3-`t4we zw77>X*EmW8=UH)LYJ)-Q*h8L2f>De2q0>lkH=Ok?p`;$QQ zr8=eH_I8-);6+{zY^-BSVmyUjDlo{$U_E4|7o84zuQD#Rlwb4ziu#JHUbW*EJ|ui$ zmHzR$o-0p)R;$G!i*1%mbE(54AizY8DN?vd-hr z$!9dq@u|ZdKFEW7x*NnqdYrS%TT73AJn)?QuKMXu{9V8a%sZ-(%-d{Wmd=uU=jN|J4ZV@vFN15 zOXQ*p3@8hTNdi;h=8>=_emD<7`N(Ld0~$z{IE-gjiJjm@0|g~6py~w+mq6Fy`{Egf znXj?T%mePZ((BYuqH$yNjb9DgdKW!z<^Nn^6nIbPO$ZrK9!UR~Ui2cwR!DeYYbU|b zUa?f)zD24|+V-ep0g#K|YqSdbyS%ZXP@QiLp8?L18-bdC$CE?e=uGoR0M&7e<_{=O z=EP21FioVG^F!?NCW~eQH}qIrC7Mn5 z=cI>B<}Pb<6s~orO0j|TL;kWf_5_C5(xYpA?~f$XZ!05DE{_o6Np@`(_>D93bg$Pt2u=UmK{R%@Uw4EHd(0jWHnehtul z2nUQNkZRH?YlO_#DuBMec`M-fNsHo=4XgmD$Ue$N>E3oRufPBY&0P&Xxo84GO#e1S zXR0+B-~^sGUFs6(+`rtPtzwgCiHq!2cwz-;gUdFH5n174^*rYu8U0!Q#09AS)Uz;n zuW{1raMo8?zqzyjtD%L~FvnUYsEs~*S?+Scq^ufxI?A^ywET<)ECUUS=$xc7`quOE z=6X*a=>OP7nhj{77LHxGJbdKsK;ajQYTH#DtW1rAPlqmdgQoH0@#=7(kkQ-LF{k0q zz^dRd2uM(FcmT5RO-l6+DZI5#(IYL^S$=Gt=r;)1Ajkb60zrX+6l9@ zV^(&zP}|Mkh)eXo0=C@ETGak?P`D3Vf*Yk~wRS?n9FNZ_Q`Ysdaq#r?a&#XX@=7V=*!UJ0xc*QZ>zy0Qbo3NdD4R3z zXhyqVRl@FR?cRLrzg+a^y0O0GEcGBJw;PO)kBo8cjM-a_N%cJKE%2ViJRoXWPNn+8 z(PL2XIi^#z=0Fs7esoaU5(IY0p+!HK)`|*P%P7Q!&ix?C?P>g(UC^AqXT;ysr|B;b@TO;auEDX+)1ii!7!NZRvY+rt>QjBZV(G<)_nvIqH zE76er%g^xbtR(muu)cGF^*yBw$;n%@-lu9h{!oy}V13Bv?qKUYw*E0^@OvuenKEKR zdi*(jLftCjEyn4%qpz615sJ?G%%}cplCeZjF}VoNT4WdCXVTpy(2AxuUZzQZK|$31 z@7=ra1$JOdzaGK|)Z&IgLP={CRlSxkg>34-$6wJL&@zM4V#0-J zC%^h6UjE|#ZC6x&0-EXzLpD=J03;D*e0il_2yZ1*BC|S32dDdOTE~e(k2N)623af9 z?i=+bFU2L8b?9lgwGqEN-03()v(%tvbesCX|8X9ix^CD=Q+=2@M~Bg%f;fi#U2E%` zyilJ>m~INwAJ-(kiN_c^6K$FEXbN~5JUjuNodi+?2kG0^3rX{gk|^D-JQfanwUA$8 zFhH49MuCv^AY<;qq8zST@b$Ec2~d7c#EN-6>c2hTsAA?^m2|aq-l8h|CYI{vo$K_d zyU-&Dr9)(npKFKhIlV9SDAk2W#ZXk)EN|M;!oQ1$GHMDrq>4v?FT7bizPr5J#C#S| zvAYQUdbQ2-@9$DzrpqUVjg+pd_x2_MbOp#-WPE2x41?SCnaBS7$NLd z^AD`&B@1ijBji)Ciai$&4mA0rcwBmVINA)$rwvkS5M@yD??)CWSNVvOhvOkTJ$@cN zIppMJ*a}`LWUDI<-m3~pef*W{A+MOuTAuK1;B`8;mSfJ7CMfc`}mmS@1CwyoG z=Y_tgM=sp{R%*veQi%_qZu>-;Hbe9g>WXSBOJqrjd*hoV1wk(xtpt^!h3BkU?yXP6 zaqiY*uaQ!y6b|8xRlm6t%tiP4Q#x84g|Yx0f;`+55XA+SI(+Eb0z0I|bDz8iD*1D) z0@-KD_V_p{WZt13cJufAqim-)GERw;onnvBtiJam)8p?#fHZ_r9umm`vBQ?X*o~46 zpNsE6F)M=DDO3LM%5~0ywpcZY40!GMwcw3vNkC3Vbr6)DB3@02eNt12K?+-z7AfJe zL`Qg#9rFKw4*d24bVBS}6|Y@=T*D)t(1UYir40il`yKreAQSj$@*!pO4#^xUeO^q|CI zB2&w%c3LA!i4_8o9Yy0ENsnQIEmPvP5lo(#{UL|jc=>)b@C6wv^dsi7P}t((lCj@X zxINF#O}xD3A&Zo{IT#5;*izn+;DFNer&yXM+aEfpASYkP@@=%yA0!`0?YcaVVbx zB$)07FA}{Tri#jcWdHeSwM>@C6PxI z!lRr@Y(?nCvjwSXm^Q08gf6Y-*hY3}oI~R{ppF?M5$?A!&tI z{g-ywZ=9T*?m0l9Rk!MQ4?CD~(ZXSEs2f+S1^hcZY|z@h;t)GtZEOT4)ALC3$d>|n zf3dfj1Oh#D8Ms_EApZoZf+P=jXhOd)dlVHF)if_2R_b0ctvTH1X?=k_Qg{#j<5WH3%Juza9-!mdBVp>fF&WTIpidMJpojIM zAnkYPg8Gv&%pW}TQ^!}$O=owRIo%;J+T@+BEmr&$`#SSlc5Y8zm!{8+5^gRXV4%^r zK01jK)a$2#H_sGxJ9~aoS289Iairp!Y09GSdi(G_BwT5ss_8RI8*4q~PZ@ODk=HAt zIXV|nzS*H|h4c5Y0}>Lq+hf>|)ze3fE8&dU6TGRo>Y6ez)LTgNrQu@{o`iCw&q2^@ zQzo4pA&CU5Q(W4kHa`ZH;uNqSGw}JY1oes90$L{tgk0~K8ZRL&1^6cETMi&O!FTvQ zv>p`#hVfPl@}L_(tmhpe)_=AhwINLI-`0~V6+`3L|cjdenk9C z5PE(RnEb;5=vd0O9FBIFi)icnO^7<872gL4ag15I;kb<#S?8;i!kM`6-tUvQ*;r37cL8+8Q zB8xK4FASK2(a9y1gRp-YeU_92ycJK==xf~@9QVV8!F2PP1hGjXmBzdJSNQ>Zps$P_ zLr_s}!i1?P6*kA7%v^hn-lp(MV5=rOxT*Bj#^Z0=&8XECyzW^dv8*$9f^%YpSaOgF zK!EGtJUtoM3o3uYux`2_nrcAFIq}_;ft0!5)C!lMW~3`Ca>AKI(2OTOKB4c>XWjo< z%ES2PKNogal=mEOeJ>-jeqY*4clFL zMoyg`R~_AG{J&a&3l_2znX@+~mn!jtrhK9%ABj|(kIv>@_GL1lp68O4t}*ee7=iW7 zLkDPA+}krByR@{0Hw!puhDbf&=$;>b_r!R2*9S(?1E~B!jip+yI6t7e_iI)2?1VzA zBSa`n<$briILA|Z5#twUi^2#yQ98-Hb8(;FGHG&(u|)|9j@|v|dm#(QaXPv~2Ko_3 z{u>8TyC^JxCWG0$l{I$8%0BaMC|M3}`-ha7NU zAJtGpuKT9j0Rw@W3$kdr7(zuWOgVE9Osmn8WT z7KQ#)r2Yzh0}{E|%^mjo55?^6!7c=oUJG&gaww9EW&< zc2be*{+DqAk(g*+0xpk^=(RP9FNwb${_Xx`w#5{y;0=rFJ5w7Jy?FNkeDb@Pqzb)X zPAUc1HQ;6<+t5Yn|8C~VsX;HvomIg??R8J43PP^IUZqDHNL;`|Se!frY=4#r41U|V z^E9voHf1J`PEL)se;mqQ_szZg);Opp>p{z3LEShJ7u>%$U2Pe2+8N+nXR7{CBCo%r za6UyX2k%WXxrM0ILMLiM?QD(hp~W>$Ony~ikHeR-d2ffUzZ*UwBI(pq z#~tVT+ZV+)m$BtjlWNCMc+szHulcILCI2Nt9I=><61>h8yJB>en*rSP10lG79I<+i z7nhj$YN5dq(CNp5D`y+OF`vh*I_=b7e!>c?j=@q*dfT44N>34QcyyZ}&$5e}o1K}^ zyCVjMHC#*{uavc)0qzNpr#J87`*j`(d;8HXf%e8)!r`&LwNgq?HX-1yfV?(2kJIZU zW*-n)Zjm&%2lBTdB(5tAhFe{qhbM&ZM3h}8fR;QchK@_p71i!n1H6T@;l3MBL!oxb zw8+gShY_yyRvcr8E8E_6j`Y^f3iwaST2xu$)o*gsTVM5-CQJc!K8nWRZ}swA(Q44v z6c#(E7Nt2ZuyIY|#9OQB#SVkY}aB$TPjWEQdP;dzA6!qIbi@^DnR z+rnHSD2iVF{eyU=$l|Y&(dpEb_m}o3rJ05%!Rei@az&v-{?o7bF6d?AQU#%U-fKY7 z{bO%)CR0WRN#nYtF8kk{;Wk29Wx0d3i_N(g-A*2SyRN}@-2pko z#KbGlOu_S69AH?B9|wc*1CV`l=>b)n|t<8yfRO3eRYKJoWN zzQzfZ^d_nk16sRIi>R7ncAq2B`-!?gM|Jl7xT7{K@ z%=$@xmRhfNnYxK<;gRXPma~POkQ20r+x~FOjMBmtqAg8AQpK~fW@tz~$F_+%9e_+5UO(B+F4Kel`fVz&xEBow<12~QiR8?@b+ZTR}A(TT*R|LigqeDF2loruv3 zv9+J|fgnY70<7N%a%~K_m48GulS%n$xQtUyh(`jkp79G30v|E|jFZ{9l_gAHi!4C9 zIFCZ8;r2UsPnK$CN%?+Rr7VLJKRHFV_+g#E01Q+c>T1!fEA+PFF29T#85Ln&YGB*A z@Ok;2Ljgyeyv+p5_%~cu;iS2NosTNVP~eDFMrc#$lf~;NC*4!`i;h$PM#(R?cxE+Z zZ4V^?+xX_cKQVg>)_C-1IqD}F+U(S-He9bN9qW=AcR=G7{j;YE5HHkV=!C%{Y-mUR zArkF&CUBW=FXZnJgwyowJy54GU^xo3c{tx6t`44pM~DwwV8BzzBSoZ}+Kb~@UODaO z$JWi5kbyp|z*udaDJJj(kA4piuTPoc2$kXO?dnI)I;5&$gVTnihdg)$J$VPen>*<6 zjFj`bk>VX~^Z_cKMfW7#bpf<7q-17_XLaUFk$o;aJ@)DSrI$b%JYxOLvt_X?tywLK zf^j{I{>-GYp-r!%(NV>tH<6$(Z-XsJ@qnL+OwY1DFO#x&p>nefRS$i_iy+u zeH1rmo!5~VVnmf_ z)D8JIfYEn@a7H5NW@(iVuvq<(qe7#esSt8?xY~p7d(_X@7lMKWNl~%uH-~3vbikri z_z4U3;xrM>Jt&R|Bi3^Ke;1pI%xjn76B2Qgy!PIO5)XN1qCBnTCdkmIeVNBFZ>o3Q1YF#nQN14+=r4bgYVY?#X)jHLneP3t?F;}owW3=eOK?B8ysX4F8BqBg{$)Wqo?b7p#Tq-KY% zT&q1*z2g>N2(R^UGkIZZ`s3T{ssE&#kh!Buubub{47;tdeJGFvb1kUtrDO_tCiN>ldRG)tP&+MU`vqv(=pI@-~YYYvY+Ed zid3ejeiQ>%$7exzbGHazuz=8Z3Xk zp!~V^LVPhe96-m0z_#rwV`pB9PX+X1$J=D!XN35xf8`WQ%sR-)&599w#-NL_D54S5 zNP3Z)oE3GO={_%BGh}S0^14F5+^wAEo!zv7Whg{Q@o8;qdh4=B;zKC|GUpS2NIF%W zF{yc7mlGK)^<#cMKDH&e^dhqU{S}uj1TApz4YZ=Yt)vG*@JbYkBn%5 z@nS{FF1dmL!NQ$2ro3(%Fj0+_e;AkngDMPLD^I5oX{vQ zLUvFY0}{m^e9GRPP@BE@uAf!Xj+}*d?#l^`bu9rd6nq)pu(pqN^5M8sj{+|A6~{SK z@*vMjI^6yUA&L|Z#@O-8Q`eJqbF<9Hz5~6{7nHwGL`+S&4tWx9OT5JZM=Z2(;@Gdi z^Z&5!fgAjF0Ymn-XY5oFeE0v=@ff<@RLk2{H-9h2%l|t}FE`z|wSPR1zAYO224&HiOg=4(hYvz-h9EFPTv)zV z!r>fCY+uhOK3K`sTxZQ^EF4J}#yFN7RZI$p2;)EARYVdX&z*?u_;8a>%}>h2Uhhdt zqkPXR7nsZeMMZn4F_&3NWoaIN?lXg-p)UOVYHDhnY@X%2C3-yHJw3`ue1u`y|f zj2>&k!_N-&Mc*9b-L!t5u=bHyxA zOtCQ;Ozu_D(b1blU^IDx#qXb4j~5MyyuSLPbGZs%fxo@T)Hz2+4be=2?c$)xYw-ob zvp8|bI4a;jhFIiulVsd@%KOdF^I8bT`$g5Yp+xM&xq5i4OMdp^ps_CfX?^j3ew}Mk zt{?~zIBNL$Fs<~OmM2vK0V?hD8$#muAW*J89_vq;Ay=T+R1a2}@9}0q*l#a@OP36x z=ZpEB+VKBEsb^+3*dTl}Jo2h(Y8wD@ma17{G*W87=hG&k$y$TAb|0l}m2ey+WA%#P zV*r&Hm_7Z?fuf+I`&|pIpxsS!kMp;QlAXUB4d$nk57ivREJ$M|NY=gLusB+me-sso z%+0VrkDPJnUH73VHDbqyEI8>(I*-Za1PHr^NBF@uRH?7TN?vwf@un~{|OW& z09j(A!y&Bi@DF;TSzAwplQ~O>Z&WMs<=3d?VY2dikJi@4qKa|twhGd^Swdrcg<9}F zXpB^;p0(cxEk3Pr8mE@0n8q5Gr=lePs$Hl1i~`wXBDr%FsQ0L3>3pIq4z=iv>E?r@ zgW(0n-97nusw8l#NSNBD8fPkBBx}_qfTo_GH+{|eDdDBJy46HqKwHN|D2%PpNW&`m_4OsW;ct__OsI_rew05U%Lv}}qGW|Y$AwPFc)Rz1(Wcb7eQW^_ zzUQ*^7x+w#{T6bwc8#@4HHBY&d;F^!JZ^q++;0ZzZ9G477LkgJzp62lc9VZX`)mG> z@gyx9m~9s1EO-;JApo-NDPjBMrc)Gl=o|Y*>G58MJH>qqK!At}aqYo4G=e@`lIU@# zRr|Cr15Q6MHacZgrDMepeD6G37%PnaI8dul`yTcuodX zoe(By(1|&S2$iM18_{@6%=jDK84@?O7iUl*Ix|PbM5TBY?c2X9S;~xwSCeOqfI`sg znxMo4NDgR=V5wGcO?U;=p8<;M!6@-X2<1R{fyf!C@s}c|i@|`hsQl@l;gRtTFG7o} zOneIGYSh4gmqP1CSn$;$-)#sBM2;uHra8<$l+&Ebs`^g#KvZpD{lSfWH2$|g=nV~c z&l;>KUEcKzsJWjG2ul_P05S?HHi_2MEW1%Hbw^`|AoOM&sLL_JQH;JFeNDjM#8Apl z2*?009;(zNPaWr+Ll9G3-K!L|df3QpsJN}y`H3nR&RvKpK!(RQ$v#kr^ZqIYDMW-j z?Vx!qKPh;?1kE$jr#Wc|r5rBfzuc6^e{=9eoAY0ePY`Wi;8L<`i2TUMzmS%`hTV=+ z@*lR~%28cmj=)P_Rdbl$)F8bs|ch9HW&KmPK7y_~+ zK(Cx%-*s_v1y-in7iCCVdZ>`b_iUyV8L5ewS(c|$*2{WrAw6PH16^ple2m^?%oZ$5oOspI6&5@n~ERhnoHf=ck84Mn3WL%#wB(<9X|YePMqT5tloV=AvLEXd1opASiEZU2T~z_Y%xISKROq+IqgH;Fu2~&E?;dh z(!BAET8vMWU&=od?}L~f=4u}H63-e#0U^h=X>hlGF1gjpG5N~_cbyY)|+}0}Z0Mk4-rcd@S0aOFTp3FaF{)>JsFWg`H)jq5pv< zc4{gG1!liG_Q=x$@`fpSLDuhK^0<2VZb8LS4;639{8vmljIb5L%w<)Yt4Z?B_?C(3Oc+OpbVBF zh|@J@3P_wWUI_kmn~{|jl!NBt;*!C2^fNDne*c4P%RjDRN{Lp46?y;`DhGh4x%U2lP zK}{-W(4}v+xv7jRX()*2a-6IPZTxHxYf1nYLwwKEIPj839+Rg|7#)tf1K&hIPcE+x z7Z>h^??ZE~>Dszz3Ff?#wosl4T{|6*^2@aK;US#InET6^_qmdZ`CYduA)cQ#b+6Ey zX)hGan`v(ZxoJP|s<4Q1TdCW9ZJ{vsi}~=@98dNGF<^5E0oI2FKnVMp56zEd4vxD$ z-$~2N90H&#LjX0r?`(VYKUyjPc`R#BivarE{sgbiQ~==b660dMe*GE%TciQ?-o51;+xWNLI)vs1i>{KX#L<;kxItu>SQgKpj_%Fd6jCs$W#yQB;c8fK9HMaQ2dX==_AC%J>oR{Ndw7*nRTyGJz+o>gwuRs0gWFRHVN1DR9!c zeEVPfp0fcal;c}p8p2V*&pE-dWGq*zkXJuHfvqT6FEl90vC-GM`J+9SMD&uqss-li z*g`?CxLs8+)l&pkPS0GwD|vpa?)b3*tI;&F6Kxyk;(uN42ehk`)J z?EaI4r&Z%!ERj?kIlS%+oe^F~C2J=7jcnzl%aoX*_| z0N|c=hvnNFgMHHpE4>Otg%yT@9_j2GRTtV{42hI6rop*=Zcc20B@*zEK=Pby?#vHu z*m?J-fsQ1!%}&ssC(-_rk>%`gs4)m_o$%6<>SShFQyK?pKgq&s#S*J2o=l+_OI{nx zgm{pKxScfo6DB5S#^qeJ9bQK(duvnhU?1zrgipWob5?r%^qh|Q%|ZS0k|)#8K+#_8 z;H<2y-d_@{OV~(oIP!Fe8v}HKCpCaRs3oN}-+cRJ+VJ0k zfRRUYeU2J%X(}?V6s03xuSSsF2oH(?7Y-d@=V;A53we(|jK_Z{7itPpNQK`Ywd)EH zAIR#%;dNmEsxw>MoxKqQ@a`RW0#*%IFvX zh}}W}q%(g5mJT?1PYHdkrmOoOSQH@E-xgy@tORnHSOt}`Aa{Oc4+*v`^#TG(BY>b+ z{}=7-UX^2Dl~U>RXP8zSLvQe~5WEr0AtLnTiaQSyVj{5c*fU4H+bqK6sh>Aw;pFzJ z!W!*fi=5nFlAX*)4a*12B4n*LUnVebzYXaiqK;t)15{GEIja!&V^%PD4O0gDxxG9@ z8|-_%GFF4*>`n@s-(3&&yEecj-Ww{^VSNJ{>}w&)yTH3~9P%tLZrsf-Qm)l4)?IZr zNDa_?`BKyN)Pq6e=wGrK%V%dPlBPssnhTsXu&AF+mA?r3%;@VQH%WJ9C|jMGMK~q7 z$A1G3t3j0J1+mhDq5%defJ_Gz);*bNExf=0ZG9>H{;=a_BSGe3T=73~p%?bR$dhFz z3EM6LgI#=iH`v?qapcqiH0{&KU~|@j=L8{sD47f}J?~nIs$>?CZ$3q1TC``LsqVjy zLiad;^s;kZ^h9pg)Gs6+~Prh54WP#Zh`Q9i?SD!dRNipG%$LdvE$agkC}n!<5Hy`Vchv?m#t0h;h1(2=@aV5_=v9qC-JKb18*2A`dYyZNAZcluNl@H4p>U9r*~e)qVFjSI3=? z4`2+&2&I3y%kRGTnw<|-TOb^m6UpEy7-1ILO869}cC!m+jIotL0F3*Qec z$dDMIMVGoOebU#$|LVS?6z@sXf>+%StfXks(`}sHR`)Rl?-}}OOz0xAWLnP5gzga; z{ez!d{m!bZtT5Qyer6Xe=L87%d&O*ZINir%UYjG2$Dp(Gb7|_F_R(+MUOb>)N8hs( zN!fWpogO_G`?;Oc)EWlN;#~N?IFH{;H6`8D=H$2|VsuQ5GWs=af3B9+qw{i>d+k`0 z;6m#d`s4gq?Su@^d!FoMuk0DK`FD_vBX7~0CGX|c*2}A)Zmjvae0H2TVHvkn=TxN(JQPRL^$}@khdAJQ~q8P4o>`U z!mCCi$S?3UPmVKFy6-Ro$6hBa;=z*HnVkc56MgLpit(LSM1SSH2_EcwREcBhl%+cv z3#@0*(w+<_VK|l8*psGbdO}$Ke)|) z^?i20O(TOg8Kcd);QljvinUXJt+ID`7r=URAF+9|-p2$%W3WGhBaKJLK18z~$YA

&|Be@B zy5^BzS~NW85Li8{x{zlO7aE zEIloMvZq!;D3(g4rjhJ@6-Q$9;*bZiCOsR9c_tS03YZl0$TEo$z_U=-)lDLYCwAC2 z(MB8M4uV)s)Xgr(as|Jqgdum2NDbv5B1+d*tpHo5g*KMPD+?EeznYNHQ-RJ$f*Bo-TueaSz#o=nfbM0F;yEPp7hLZ$gHK9d{&cRKL*$+O%V6BY31U6y#rH(F#& zT8Br|1yO7<#nx^9*Blt{LdQY14i2h{qIN1^*C6#CMbz_R(V=V%!8q*u=*aOryN_4! z3%b|z|J4F?B>nOvJ?~oa!wJxCA4OQZO=dWdg?&8DtlDr;l6U)^mRhlwp$~ueju7xy zbbyK+;Bli5e;xlDQXyOpL_UB80As1Hp+PAoCKe6gj0k}usz|^Wp0)g)x+0G~TS!(7 zz2oZqgpcnj7;F^yW|nw;!t8N0y-AL6PJZSTrKgT*ej&k<@QL4bXT2b04LEvuhm_VT zbjQs0tgWx}E^rmOBdBq4|%1X6Wof?;fvj@A$^BZGODX50UXC{O_CoG98Lk-y@1iTv?%# z9U+>xIj5;2=%SWvSv;RJyO=_!K_Uc#?sEV^)8vyK)IdUoNrS+-v8b%#XHs zuWaX^9y(>RIE8qhvWU_EzDr3%Kl`^YPrU*@b~}a+B{FFOgrv>E4^%qegyc;U)C~Td zV|qV>TAA{!ME`TjT$i^2=EtbksjPSW%d}x?aV48>IJh?fTzmY9>ep;Y3NM;gc`S^S$OE)BJTVmo7DV*BY2D{mKF;H+T&H1Sx^2t1|RO7vlfmd-#%0@~dVP@?AG zGW{pwVE#sq3VmYYW=tiPl@t4_cKtLHt>sdb=S{mbNR;$L;g6VC+v=ylQUny9gg>64 zWTR$PRq){>zyXS%egA5_;Q2#IFHqXHlfVPoS7`}hx0i=^o*RTPM@L8W5ga&&f2~X9 zMnVBBDC&;_W3DkZV7o@V)kuE;&LPE@#Qc%OSrzo-QH4nYnCp(~`~ zEo9Mee_tcRFq`X7&x0J!6w7=j{`-LP+63R_92LOn)eY?J%9uJUM z>Y%`TNHhn97XuUIf`D9qKNfEKUI+PPVOr+C^&Fnba{~W$X!%%Dh)}Tm!|I8W>HhH} zq$?i<$kg6gplM@@CCQKB(h3zH)cyD6V=2;j6WG5#Z44b+IsZ9Qt9uC}|1IhH^wJMcB&)O0 z?%`2zw_>`1a=OI;3Ko({yYii;eOV)_4fpv;LHfS8B-f90bBD>nZ`)AMmxI+UW19hK z_G&t_g=3P(C2Ok>*g+R+V&ewv*4i%;(RY9S z(pF#rnpdM01iy<&5YBSHwqTwzWLg`HG8);RC}Y1Y1Smn^_G| zyN`@dv>!FGH?5g7m+k(zTq)0Y-a^KZWOuFAUGGbe$!-3K_2TkYuSweQG}q^PIb5P?;hGtE zY0l$+OCbCe0{SM1YhfIggXHXIOT;1ygXxG8YU6=)qC?d&shns{wfPLal@{B**o~{M zDb}0UzkTr=d)I8nm~$%AE1#X0mjD30<>XM}Obp!=t?X#fbNGy&+zQ`BS8<6_9LR-@ zogglIfsDK%hAV+q#A7cjri})T-}1r5BO)A^?*v zAoZoXImZY!%11kVuS4E>^~=6aH~1`&FDvQiNjRFrtCYo}$~O!0IM2mi^0d7>i0JGV za=yyodANGNf#{?O6%~U&^UpmI2RPLC1Gm224kh;|-+G>bZLpBg`yq?f;2@g?GK30s zbFL2`$obW62V0NC{uQhG%PGg-IO0cX{X_N)#C9y~9Ix6pv_G4P#dvVt+jGi4=X-j! z0Mu~Y5qhjm2L%nOp^kzZGe~vkUZPyiz+ta%9ifF zKj7Z@T2;GQoG5!h!BS9CqHJhrxXF$NqyvFkd2e+!Pl1O5V?()yz+K!mNHUk8cY67KyRojRj6KYm7Xm`P9 zSY*WYtfCD!{%r?T>ZCF3QwRR)Yrh^XG@n3N2H9Hq!#)&^iKrUJ^{1+}jl7rsEG0Dj zrDYwP;L%kEkVITCPT`5h2s`;GX{XPUl+=z)~%oazvOfp?gh9w?ZNm6~>NU*&%PeLBLGEuLR!#4&Wyc zgftX5eKx%xFn(ptnl^QM?);=v0ZlqoAl6R>Iy~B!_h(-Bm#Q+GXx3-t48Jt2g@%xw z{#vDD1k)-*Xb7U@@%KPvt6 z1zhYcA6?k$kVSj+ZLgJBn`dn*q2_fs|GcEa-DyUIkS%>VKeeZ{(wPcKRdFF4Dn5QG zXJIz;dLo`6L!QZ6upMy?JX}oxa25uH7PluWz^83ez|7aWaWH*px0%B;?4WYwzg7K`5`jT-!gig|3h$v%fc=)?EJYa_7a=imcw#S z*6FUQt1M$QNSFd&^OKZ*)vS1~?r$fNC%4NQ2U>MS`dpl-r7?UzFAS-GXe1LccKW|3 zbnv?}WSz3_Q7fIN_ia!FZO`Lhbuc0h{<`%;{*P=Tpqag!jgdeuiJ<@7Zs+9+2tyZGqWRxvR(p>l z-o%-pK7anaRRjX5B_17Xlz&(s{rlpW`vQ*z9dKiXQUt~U(HMBB%8%yTRTlp>O5*)w zosa;@XP^bcW{etR?xTf<@QVvi&y4O5ij~TR`heb}Z_)#<3$p<|*Hgd67=kk%rWq=(hS!cIw+CMMjF8Xh)O*0RyjSOh?BclAo{%bA!b3a4x`N$P3V=@ayMrf6kiZ;U8!mF-T5P3 z2{e@;l(}vOWA8!g{`;vPao|xD^&KHhHM4qcf~wE@?mB$9tBQP@6sWVS>Aqy|ac2T; zj+HkJeNxBUj$3Qsxa%5~mAlpn|Dg)K8aiCV0sa+=uUy+szy>BhOH|iOO>d!mf=rl< zbLAs`3~WVqy$;BKq{QhREdc-|d<33}{iG5yOw%uLLX&8UB~Qk_Vp5C6k6|*vit=g( znq|l#0bR&V=?D1+vl>9>7fs*9gx&a3Rb8I&8%(!Q{6wdCW+Wme21L_rw&*5$i~k_@ zq5JnOQC!-#0z@7Xtd=@YEJT!?rwB^1HBu}x)_B{w+cx1eMxgCOIr|pt<&ze=zvNdw zkF!qAM9VIEWF0FBGk^O5a{0J#yfQ{W(molk0()w5g=8KmJ6E^bRZO*&x_D;s@pugz zaRFM-K-ZL~IFn2QwShX^sPCeQ!lM6kLjxv4(iq(1(AW{3;8gu5ah^-#+JAujNei2` zpTDIOM_t>}3Ryr0(y7@D=oN|4^Y_0Z>@&3Dq9P*dGobFnW+#6XNlr!{o%F#K8(G<{ z=~A^6Z#K7}qg$m<#C~f@=*?$BDkNZ5jz><84SnDz*#@uIUC5X`V23hsP!a7vN`bT8 z-k%5W#^Wlh%PW6p24iE&F_ci^--QW~J&m2l=kTFEJ9W9o3YQ}i!UX~RGY%mJ&F3Wy zOe+vXSdsy#=YJ~|S&SGPsvzY_6R<((AQr-D?Y%$Im-9RMwT(D5(_rPEgFt>oG^S}8 z9C=HpY9d-zcFU@gk~z=i@l6MIG^J3cHQ!6_gKXNiuZ#%e#DnAep`jr>+=veVoCX@W zB2O$QMf?opcqT&iwWh|!ho@?miV@w0?F(00LHfuf7n#wL^AM@>ngcr%I_Ra36o{2E zM2W0;<{90M6-z&6D2zhCiNQfO{SV{9!Gl<&90@_P(3RTTkPe|}(89UTR^vTgIyO$U zdMh)i=$1R6yNEr|-|{Q{u(Gw*Z?4C}bNx_9FHz`f6`3Kh8DgDyZ7@FYPC?&$@Qw(6 zrK^PPKgQ+3_D3A-?F~#!u;lISOJO^;nN-*+*vnu`>-u3kp(7uu>+5S`5~9de*giZi z58;@bP~7ch16%y0TPV+-3V(rKh#htbxiJ~G%goi~qDeSo0LOh)roTG`@e&SpMa&Ac zC6n(tm$$eZxt=iK;u3_4Hbko>j16R8Qud*Ydp@=fl`K*c*Lx)PlS?!KDZS17laz{= z_r1SN*4c14Jkc4XEczc%X|zAv0RDiCG3sxeg0rmdel!p6yZ&C5Gw#R8Er zfHs>QV|iJH<+J?$Y78VYLeA>y>W1uuY+9EZ9y(=-x3ft*R_IcMl}qAquf7ZHyq-0~eXsTOl*JZn;#F%Th5MOa66MClGN*z@$C`6%397@9wi6v~c z`7I#M$LRY7RPMU%Xce}WC+#>1DlvS~24-N)e!)9A@EkSNesp3-+=XXZ|3j+i}q4ib1~y42ST)d7mELSOK+$09B3 z%4=&AE-o%yD`C<^o&9IN*eUKmvZJ2Tg8JWxq1;5-H%O4K;Ydc5ukWlJQD-irba(mz zKLufIRZt9UF-N&aPMU?Nv!+n#mbVdRD!tErbBTKEMItH!Dp&_!?@8O_4$7p&o4oeT zefPU!rui26cw_oSJ927M*m%|d?6i(>#b@b)eJ^Km(mJKItjy4$<-N4t&hFW8!_fII zqNdwXah(UvBQorXdxQE}Bv}VPv8k5=rfE{xOoaB6*_X5ZrOF-(Sy}N9`0oS6aZFRQ zv*Umo@mF<4P7fO|%}K{2z;YYv>rWnEWyHdd{qpy+R^ax(-z?5R+E^b^4wh_mgWY@Qb#nC$qChV%gb7_la|V)n9UHyyOy; z%zdNTi^48eDuBd%%;0aMU~u>$a)|UeeQcnLkCZy?fcY#}*nHPmLv38IVA}un-^*oQ zY}lfVOr$wUh>r(*c~hY@k?aq!;ofYt$%hs}zZc;1ZZ%so(Dn)kFA>ejTU*Yjw5~>) zPkf$pqzP%WNl}=i+X{6uEcQtw+3qRH$gG>ql5xG;R``I;_#cFpb5MWU8TM5#DAf-V|Wov!b_oNc9}MH+2Y!EB!w1 zg)O>66&2Am(+H%SO)*6H0$G8mX+?L0jWd)W-PL2}^!OgD3=~id-1BHJKwZC)B%#TB z7D2+JsfSRn(e!+Gxt;HEUhCr@$0&^u^@{IgjC0Ih1c(!Wye-By2lxd7Z+P;cAtU;h zG;+D^@X-$;Cci49UnWnp4Y3Akgo50Q+);ZE_}l&RrAmrh4z;c@%Z-mYV% ze}#d90+3_QDE+&InGQQ8Z;?sy4A{`sja%uFbl~5P3@fCRYxfCZLn_;29uN!J^hc4R z;2Y6nzMQrs&gXr6Kdm}CkWpd5Dc7LovsFyP$fIB+oR#O*1&z_k;RKdg{vjaX<`;<9 zzn;qp7{bk(CzE%wFGORoh0zix2VB3c)k&Q)Bt2HaSyFFZl)Ec3*KakKYY(UNp_wuKnHmDwI0}S{iu# z2Q~6p)BeX&m29oW<1FDbv#nkm!tpHP%l%?K;gG#=BTE&_V&A@g{rPa;b8kcDwyH6A zhnqiNcNQk&Cx!hT$N3peTO8<@YWA(9CHc^^SEP}i_XG$*Wf&=e7#zTF_ zFod_};s9=pn4D&(MAx)}b=8UGL*i zdT>kM2wIjU%`SsbF)RMXGK!JAQ*av`l z0Fl7wv@~z-$LwF%$E>5vqJe$DSyM}gU(;a`pQ%V#V@8~+=RnQ4%rCg>{pEM?*1y_W zdx^OY4T(J>qjqfcAdmtFzRN(NS1j8bPbP-?WxiZ_^m?QJAcLV^h=A-~W#OG{=pkcKt;vsSxlObB}OpsJ~WQ?DY3)omyKP zW}8H(*lWBc0qtMkW1-0jkMEq?1L?uZI4EM<#p%cJk)IF6?0qkNXMx+LFiBX`MW^{c z&OkY#)=tLC>aB|61~Xd9*-QuVU7-gbl%ElV9t>f)842sCGy888D1gITv&k>__{Br4 zn!6*_4(agVQd;Bfkw0{{9$DmRP0)Lan-jsMVC4cjfpr%WyInesoz^wi?aoU+Z12v2 zVfhRq5b+thy*a10oLJP(8o7|L(%_fio&8M`kB(g7-_)Eh5`J7Sz1@8AhQpR2+xKX{ zmPMYZclD`0OV!L@pcNB9RrvxyXMm*uI*l&mI6+K!F~h-$L*c5$y^g{cOKz};W+aI` zQO9~rkMCRKAh(Oqz%Jw)N_pbD7lwub=D=DAG!WmRt1yNYzB)g;&ZQnx0qN4`{N#V& z&QeA*YAkyfPNQR*0#Z0a<3K}M*R+VKfEpcn=HlW5h5V0cpSu|xbMw@|*TZL1GNoX_ z4U8Ukv=M7VHe#bAT}P(FYn6Y>ciNwy_PNHs>Iz6h9dpjOR-Pw^Dt6jHNv*GlL8Q0p zKXv6n->*8`?4tAPZbZ5`YNeFupPo3VM}Cr<$T>}fD4T@n8N;+iO$MhXn(;zgecL*i zafkr-XL4W7@O2B2k^=;i8@@lUtU@F=HVREoPd`oa4Vw>>^!dmU@yx~9N>j^+G-HAA z*)`&7M$e`Sni`W0gp9767<;9In01cxq;A;6kHIO~*-I?AMD+CZokdo97$1`$fZ78n z?Hlo(k_t#MIn?dI7+7*bz14P}#)b{JiklB#^w(e|-nOR*5(aV65{NOag5%4KJ6ZwvP|2 zUW%XZX*Ii=^Ly}mdAf)}2g7@OkW9W1!{@0K zraF)*94GHFvfkMoh%0YSL~b)-`W~#;_~$|Zr_8eYpVM<&XY=~ z^d~3fV`|8AMJaItI!8h8gO(h}iqG?95p`-uyWe9=9@XA+t(wDK$w;0toFi-3eZ;bH z@6?W9#;^_xG5bHfBAez_CY@R9%wUw-);(x&jwCejw99yfv+~DON3cB{H>6Dr=31ow#ZVGhEQo-QeG?7=RY0ff!*IfI} z6bQey$ho*QJ^96?#g_p-e&B`e^-cUjemA<`-q!8xfS2`>7YcnJE`hOz6*E7}8KQ zkiv;6sn);arl<*c`Q>Cn;Vd3psEV#l&%HX$FZ*q5xAJ_4W4Se3#1=mJU6j1S&{5d;|NRQ>q?KSNfbD`VtZFRiaGkUoKbMnVStNgu0C_*Oh`)S17(*z2WH!aN!5C}#D zN#N9}dfT?_&kuYoolfke>;xO1--;`Z?C!=mT|BAZiSqnPZ3DIBw4y|hvoZgFSb#&a zi`(xI1t9wd2+p8Y&1#y;b5d{;lj4{f#h7NrPGKf63c2RkI$Hny%n6`Ho7~o9tIITX zb0r7hd--)q(EQJ^8HOId!2uZ;a=g-`PtV@bNLvmPs$hnQO7<$C<P;e9NTK!K)$lofsGHlc@Sv;SE_w@J4jz zC(<^4W}>7anFR!r0CNvqeeJ;U!p6nj{Nj-JcjhABXT-|n&3})4 z<^v}dE4tDG@5v@YJTgCVa`s1Jo*hv}y|w~v1nIUT@vTTUGGHv2*|20JIwPA6u2>pSSGufo8W=V*nls z_>0tB-bYm9EBjPHIQl?h%Z5K*#N*W`qQpj(K=uw5Aio?4SoIT)f?^O_gGgXSZJmR% zCmHXcs^X6yQeL;*XS+Ed0{Cgyt>smKj8zDnRYymse_+7CjVjcv^hacRbSP=k}`---`)s=Z(hQs4suGHI?I+Wd?_f`k8t#F0F`rXEiJsaOUE8tFFp)itYb@o7A5RVxNQ-Nm7Om`37XGYjIxgfL4HHxj^!TU z@jQ?{^o=qk{_XQIWA2Q>!N$sOpUs-!I_q;BxwWq!sI}QRHOomcQ!AH_<%GmDOM2v4 zy&HaiDFXeMk67YH`&m|UF*}-X)2POvjih7Y2B)NIStZY4_DgVsK|=7gg-FDXG$_~< z?5Otfxx;wBqp*YB(91QWN%I6mKmw+O%%@#sW_7_S)Zi zc@s-;XlEoQQpA;J{&cbLft1btF;50z6(l{w#KgfXq4*;-*(iGqalLPVl=NhQN_&2M zZh-cE#^HLn!;PLo-}roHWHnSjO02-ULjD{go(db&;H?mbGyw4$!^*2fq1iW7|@PUdspn+Cs#4j8lJ_!U;ICJ-^?$jK?!*#LD8 z2nL3PtjGlu^H0BKW6J=eXSOF`mC|x-n0aGI0LFJ#7=}>;=K>e*gfUV!ETIz(q~mFw zZd`S2giKGT7!nCK3i)fAx|}>3+hYrJlj5mIz+DpJF7@WlPxjz0(xAk;#bfNND$zaw z3Ryw~YfXkm?GFR%$?N+u%t=JU#6n>k`Iw;B_0=WEBlJ(V!0K>PQl7AJzzrRL8c!or z!S+Ebh_{i%dNA*~{Amexg`@!p0Mx4W@aBRvmU{j$rMMP9jELl-N@fElNydb~5h0Phb zxPB^}1ax&P!HdpG9^HWloK-+p#i*UYL z32wsB-!XAxY1pj(0W{4WzNAl|MlU+E2?$J1ZD5t_l%G%fCY-KL48_~D_*g23XlY!aSo3wEyML?ZhVuL8%TABo54H^|V# z-PVXz1G9FoFAN*CwbghkFinhJ zfR7XO;>Ff$P0)fV=cjK3IGJ`r^D|WZ1qbpP^^*R?zjU|Vl2P-E^`3rleC^vp8zyK+ zZO+*J7FSZ;hzI6ev*C;($Bp*iJA!)Sl)-4h)M?dYXko!imVj5R{&!^4J}T)>_0@gLUJz*CvRPVC3O5oe?PF>A=1);Ci{ zDv!oUoovyVmsQ5_YDC`Wp{0}Dx>gvb9AcmC1h~WTBj-L(y1^b>Ktzh_A@E>&ATlUi zd`BCalamv|iUL#?HRE5P6^~_$1$H4)SYiMuy&)izkix3*f8Hf-eVd5Uyg}M zMNiIa6u?IF)6#Yr{+T26q`bTneMr!2Wb^xZNl6rdMnn6@Qo$m=`+$(qaK}C8zQtx> zV*0U$w5$a=gLe}W(Q1syK&UV4a7%DUof zdC6eslt~(>v=0h+F8~Y57SKs@880s@OUchaZDN^R+eu7Fz_i}@5%Cls6TqWXiS7aA zQGuuUvfNNjO%u%Ci}|F zEB#qX1vCF88W0T7Jj7xg9TD74H$MU7K1naku3gBO_BKF!fg5q|EtcdT{%c8(i;YF# zCTJr^Mn-_1o2_H#52vtvKoA1}Nz(4Xmtd#dpyTDorEHszG3PG1%3eV5;gzTY5X=XhoDrS`yk1iWzyXti^Gvg^}5ON5>rH7id5!36y#DnhK zPr4smqqvv95V-*)qI}i`0lqh?T-E+Q34?HVEe0)2A*8@B%)_F;Q ziT9|AjE=?zCJ%@Z{@2!=HUR|o9JQ$E=xCo?yVKP!K&5UD*fb@eobeUCRLtG}_l{1E z%A|Bd4{%m%Ld+`+;Qho(mA*Rz#&6%Aa#q(Hymf>;5QR?2V>7BKD@SK#W$8-Y1GW~e z`!DA0D1Qk6L^YE}ob??`)8hhEBhVTRCUAxT*+C+}<^TI%y!XK7^{!259+UXMb=`6* zu#eB3#O8rWRdiln3hiCCU2VO>qSX&(#XF8M$=|jab{u4-NUebl{ZFek zbmh3}Q^YOhl`k9yz^W*C&HArAhT8v&#o0@nzehK&F&hBdV`RFIlv?<&C`MH+W0BDe z-9a57dq;DpxUXMV^;2qR3iNW9k8>W^`Dq0eK1vyaK6ctPnQ?N}y|qvj{+sMHIHV#F ztj`lZE57_F$_)gQf`>G=QszNwkF5r;Ug~)&vV?DitLsMF8F>l|7MewMK%pVzZ{wcD ziO9oegXo(-NSS;tD*6K%f$!XE@Pk0_MuuJyH)dvRx$eYPmhxn}umI@{d#P{pD5&<~`dIoQaaLJb+3$Lxr2|{H0r?uWl)VIdUKi8a0y`uM^*a*nc+-M- z(hKz*&6E?*`SF4kf<5WD^!-6CvZ}I*cc>bt@BrwL7g_4wRxoMu7LDi5)oNt0Z5Z_J zfa{wRxl{Ak_zpQizJ(TtRB8o1<~7jLN2!$gY+F!?t~5xT8x4f_<~Iu~yN&2G zK~d^g*;b>=;9gs;Mot~aSzJ`VFSe`+th1eVKcaBd0RZwhStwe77a!Jc6OaCNDshX z#p;o{UEWI1kdl#kjsHyY<5;$+RtP-M3JF|MPeTVAXF<+i?!|->x_>m1ueGZnd&9Bf zG8dlupuTnJ4a0!Q7lgJ+0&4Sk;IpL9__;mx&NUed)Eb!H>62ImAtSbN7C#q;{`jE? z#DRwlZAC>)x|ER2oSdV22QT&n5TuZo0Wu&jS_(n3!?H1gs<&Kyk1CGXV{Tlrng zAEp?>jcN~-3PDl;p>gT&`E9*C1}yOL;-M%Uh4?ut?Wd)hp9}@A7-ba|Vp`ge7mc41sN{b zG(2P3lX9a@b`*#srHddrPkJ>{Skn2e2-c(T)&LbFiC4&2z*$Oo1EBKC)1ZI8y?e9S zA44PSnMpdp9$6(t;ASw-5Yp*&`8zdhF?(I zlAhYYNyEosr~EPNuLmQ`iaS5B^+-H9;uJVF5Y}-FrT@u+4mGP+D$>ExziF@QE?dvhc0ITChyA7an;}I>N9H<_xT?CgyS_=jyCZDd0n& zo-yBlKof9X7FScuJ`2;}8RxY2z83(JqWMTS834@Z5r>#5(;>~%2aQLre-^>8sLPmt zTJKx2=co6b8P;){{Qg0z@0F$7I}{&zXdLMeoEG61YmQ9PS63&<k_;LY!8w(I`Q|4W|e zpS>L*>&no&?1}gC zyKjvXwT?ab<=wc%R~W@LQk2zj!!NP{U?Y$V3*PdoapNBR;v<0Q`9;L`6|w;9P;^`dS1yTN>0vzXw;`1ZPuf#}rvBC;wjkp3N3q zC<+b8{|kyBnjX)UQVIWS+_SuE5$#IfO`sBT&-syPdL)%SB875eX~jTVVCn?y$9O=w z?9;c`iOgrqPnVODG8e~!*5ri{1M~%}ljVu9&D2l2npaMXfOoJ&Of&h8YAqq!N`q%x zYkTe0LkAbwvd`mnE)PL$S^YPXxPgyEL{DjA8`@*;-k%l(ond_3JAJdfZ>MP+nQWNX z_XPbn&GR4SaPr@o>yzg~-S4MUa&w z=L}=~vF3n?jdS>QQWpRM;8P%c>ZFOSKkpqK9rsNxxVM%$ZO3h=<~tk(se)tH7g}7h zftnE8O~QIWe2V(;{4lKe#>DPg^g=Ed?aT(C6P4NgrHP|b?0Tu=;r~P=64TQP8e2H4 zhMkDdvia4#P5z~lygS1=dTJ(Vad8C(Fs&k4lwky-QxMx-;oUpV^iT-br@|wGxfk{o z<(0KDDScK%^hQeh^?B?4mm2Yuj?HF2n3=u^uzZe{#A|0|GuluB3OxG5YkOrFfSZ-6|=3W%v~#wERt~5bbgtCdt!XtCrSQ` zZ1hsorGKymmo4U#qYTJiKrVj?^4Rquko&tKs1{Rpx%oY1htKgQmKM=-U3B4R4yw zDrNE_#+*DnZk1G2Ft7+{&NME3S$kEytadx<9FhS0?rSx%Z^F{%wWmvA)tXc!6G&?g zeSvm!x~Ast%?hf*LZ$mRT?0NSP(;_wlU50e3m)FOISN8POtC-atpniN!1;aFDFyY7Ra^|uxcZHN&^6MWdK!4jnHfP-~Vg14g`FnK|S&b=x1@%#ez$U zZ8B3mzvCiJjkTLFjA$X^wW^Af7 zWsJA^;P~S4-|8XU*&%tiy0J4)lk?;;>&vJyYof?Qji+CZWDkyLt!ww-{>}OmBxfRY za(uCZ_r%(O?guHmZpvrj$5@fGl>K>RaMQ$N`gF9GqbFJ#gv1prM-Kh zr}#mDxAbELl9Qg!7D+(+vqU2`poSnMN9KHQ59rSuO->jN8ou{LXHUF6ICICWSHuxRSE67Dmg^g9E22tAokxZJma@rtL^;~HXQ)`GW_h0H(c5LCe!eCg{Dw!C9ymd8FzNwChKdUGxo zbEHVE%X&~eiv~qb_4|13f`Bif&GH3^*IU&ZBNT1VI`AwBg-6rBH$pOF(l)hu&Vj)( z6K-?Yb&glRdj7b*27ps9vt6CkzSlyIbh$hEe;2m8U(cE}In8nn-2$=YpN2Y`#Q1pc z_p|^%;`gEVS@Dawj@$u$8{1ZGghzPfbLW2llOrq@V6gMXG9z)^$bLCvneoJq+von9 z{yDyR=A*|gJN&7rI%zvNUU;v(k&#jPc9j>?n)MgIG#y^^{h#GJuBH*8=G$u`KT+PI zEXzwfQXTt&xGu}c3`@zVj+5^zL&H{EB?e~FZ1X^4U(1Zn+r#xN*V*UoL*XAjm^M3+ zkLCqNQhDK#m%XJ6xwFX&xqtWXb?E#yFL0#%a9wSvq>2#RQ#u3pJYPId&EJFW-$JIc z=MC+gGcO}OIj-B__wP+T?8FcV3O?99o8LaCRV!jC85Kjyj!i%SK#%`x9H8YQbx+d% z8USw-B1lZda81J*#}^)%7oDW4E=T*+rh4pK3;M4PQ99j`U{yng7f=z@nu?mMq4)j0 zf1)oft$MGRnY*lE*2;|zR7h$->e|{YVq&dYhfA;bS0ulsAVua8^q{w?&uVl>vFH(U z8?N>Y($W^&dwb}Ub|NocnQZwL{5z+jLn{&8`cZWCpMp~mR_50%yn}3zuc8!k>kO!> zy2tj88tBj{T6E)9pr7NmGMkc{DJri8fo?G($Ic!FsE7DGbLMC;#P5+Uqr?6`wX`}rcKFj)vxMw%0U%D27kV|BSe_T$HApZh z9uXnX`Ny#Ih^3C-cnIH%7REooPute1B$)K=-=VWEG=%BQeu#{C4-* z?O4|-_l&w7M%M6R)^w3NI^Ja4dtR#x4Y`(Sxw&JZVD#uj`h8K>^+kt#a-jXEh4<{s zT+7t_{E6+6)RmjYz!rj(Horj?yS;4z-xCWoG_=ndf7;Ot+S|VXIi~0spoHtaH1BGF z1^|Kj0h;VTR9toSFOQ(nblzp3C6|QL2{}}!IeF-6t&*=4w8OVrZ3I^5PfCLu`hn5} zF`|ILHLF22&@rOGf(oCFL?tqIMjm$S5g9zM6jfC*w}ui;cu-A4?$`eh3()M^h=?DL zYHV!Gl=OCL&67!Uwm;0RcB$!XPl5e;_hRrEy+LhDZIbE>J-8ndjqUfr((0WyL%HbvGCkGsh_;b!DHjwyH8qrd&(YyaDV^po!yqj zi^~gf|4qo&^h~?;PclGGROLZDEKfm4=SdWxQ7S8&2e>4S_M;R4p?HkityAIEt7m}Y z>I!QOE+i;tMgc*sF92EyZ?X^mw>!2@9y@0Z-RJ{-8<8?(Vf?_(+15k?M@EVXIzqe6 z&z!1@-)R9L;hnXsw6qF`t+3P>%THcQuZo1}VP(DoO7n->zDG9sqg zvfsD!$l-7GWwYFaapPvEl|V|JCv7zcI7m_%L6_o+hRl-;lO)b@UiXP!oG|ubScfgr zRmH{S*syG+^S7PQ%E$n$`$NH5{6DG4iEF4B@)XMA^ZbmLl{F$B^^m`0$0Gssi%*nw zlFD@i)Yu6|AIe{MEC=Mvyut!*4j{Qhsr^OKN0*@K?Zn%;qebm6l4&t}`KNbzxv706 zBdK7(U0>mXy$Pn5_Dcd3m_YSF0N&!fsOazCt`@Ke*cSrqKd)Ji&p57t!cWfC%>zBi zy-^@h55F`4ueSSUFVFok4%kvb$l!)@oVCRZN=0ly!D-zI9=HvExESUCB512B1-uLS zuN1^FbH*ayXZSZbS2s$xJiK%|8xYHK4iWh@l)=(#`1fVHCNxz;QlITNkw4z&7*WNR z{$l$>bH*)wcmVA&DN%F!S~`b$j2XKkk>k@9Pk@RkNqkZS%5j13#mW+&QPR-l)J`9q zb{_q#0@b!1UA!V9QUwyRVE6QmIw}K0!(Sf`Yo&^t z1p-1)6R@)n=2D=E-wGrf8#Wf=E>vu(I2tK!$1O`0m6aO+9;2ya{F_-`;E9Bjlhgma zT~}A$(2$H*uEQ)XT|LwV0=8WW0iCqEv2nWXugBqJ=1(*dDa>jKAOY_Kqt+WwVBgVt zck4-?Llm(;5=q0iQ>)Ee6GB2oXOK*a*Fo@EN@-zFrX{}4pQ&?DhjbWwgDN8m2!UJ8 zkc!wQwuW~0_8yD&8Q#iBMn20AKK(2bk3AB@iI)>{^x0#oKCVv>VV{^}WMU&Ss7+gp z0w_Y$HZ|a4qU?t&@QwQKh`QL8zfrueKi9bygVZ5H-**U*=*tV9QWD@(@xY?-?})q@ zJn@xG*wWA=H8u5V(3Kt`ap4H_=AZZNPV%(v9tNM^c7E7_zdwN>{}V-JCndQXUq2Ie zOftv0yVXjMeo?L~=(VdobiTZ75po`9wq!`X7LoD++EtzLJ>b0JYJR`a<75b4Ml@I{yprGa$2 z_u(9%8RNH|tQPS3lPn71#ad9$Kh8x&To}NX7{kn6{<(Dx6`EZKi+rF9z_pJI?HGY& z@S;Qjd8yj%Q_;~ik@dRgtwcr{7euT9(?93m{z{+!|0hEuw zR;ijPr*V!w+@Tos-~92Z&!(PsG%1j%RSJ`0)BPR_n4n}p>?;CV6B1s2`au5vC-ogJ zlHQ$hy`dKXx*qtTog7_q>3KLcpG}@;nR? z2~zCZrwQWTW-cX#oJuD=FLvO8 zK@qpFtL4AY1fDGfYb{wc9b7{}))h4>ghV-f5jX+u3~#Rx4W^wq`Rjtsbc_U|VN7*x+3nd=|a4@6okg-a;y zkzWUPoOllJm)|zqh-Mp99^r;+)@)XG=+*DJ3jn(af5FtR9jv}r*%8}*-%60!6Re9W zEfkryVq9Zj*XnAzSn5>IIR4ey#K(ajnohwSw!tV~=LZxB6B`Ys_b;r9ez;ILp&xLqEVqc*!g=l?fG-o|7dYHnDW^1@%1=0HzMej z?$)y*-^_T$EDS~?YXlSIwDk1YWn^g6HTfHj0>(y)eDhYzwc#@o#P$yt3Im3J^IO+K zq(JdYFy&%{;;D+ML-c4tk>_^mTuPB`cDCkRGF$am8Jeh+CM=(q$X6oTl(xwA-gaaq zd&@=nFLuC9Qo>enbmSNt8(aQwMhAj{d2wf(NDSRa4>jq~LsDpb89Jp34%!}0_L+m4 z3_b4SOiQS!q=jL=$79#hqUo{u*2tz&)qzMq{YR4 zapJ}A7bjZJA9}Iqt%bh$0YKIOvvzTZQIy}iV72YK-!r`1r-P2rhIcb%Gb>y87DbOM zc5rm{DwDdm=bHoL-X#C}DFPkq**Q5Y$7J>y#OuxJK&;vM7#&N?2PKf@2ItBvvw#3H zIa=H|j~T=jMm~u>KVD(VF35sv=3>X*ZcUk_`XAIX`Op(!PQPC*0 z`lfa3B15yPT>HxpKxfj-++j2TjdJ;8_W@*MkWJg>hGwW%Q-0O(uRY~N5A+r1uCHN; z?`dk^g;nc`mTTL_MFO3CA{$)dr5T?K9GX2)&0T9foW%HhZjOYQI83*^7$DzFPU@R! zvx!0x5E+$5w z@LJK$P3Ro8RVA|C8OfyN=~;zYt0e@`ZpCSRycCS8t81BQFb&ot={L%tJp>4IKV)_K zX;@+Z+1fq^D3L}60&b9&y?9?(D%6YIwWuH3Rqfi^ynJVXw3A+*a- zX+*Erdik52d58XJ{^sW81q}hb$d|2$%bmXq3+G5zG8isrLa^{ir0Rp6Kno1@p9|T) z&5EBKT%fV@p(BzBBv1;4T2#Pa+}T;cZerSFJ0gN)Z6HnM?OUqK%F1WL!m(*-Z?;O_ zL8lvMU=RGJk0QU^Ds2L z?WS43etrJ+3s__K5|WU-$R0YlIY)w4mQnRoU86)fZ@D6NBz;1nr`G9r-^E~PotV<6 z5GCi!)!+V?t4RUYX|^ZpdP$Q_aRMSe9Tw8Bb7 z)jHqkC)m@SxHgy({njK?jsJ@3?w{P+cKLw#Wb!KJ){!G9$a_0`0LQBExIzWe5zRXI ziIA$Rs|z%m%}#YoO@k{yj1-iS_zptr&-G`-T44lw+Ka@$giE9243wg!L!-*%qSJGR z6~fp}$gw|>>YD+z2S82eoNh$|_YSaB&O7CreL2Fiu)+r9q|K#D4hH)_ddYO@>$9g8 zJzqVG#Bf1P@}S#d&nF;lPQiIc2b!;BlJjlq7b-{7O2*M;GskWE-bQ%s%?PL*|9ySu z*tE*|@#9C($pugaj#qz81P%a*2%zFAXTV9Gl0Ne4Uo5^GLcVLZlBY3O^cJ-0TSIae zyDdHjj1Xs1#Sdh>P*xTQ!Xvl5xjKdPrHI~IL-5iPgRlsAI}C6jajWT%5(Bhw^8f^u z+7qf-R=}JR9!o%xHbWOom5jGqk9ZO>@JSPJvo_}F+#cL=poS^pH2fP9$cV(y&*0Uip6>u}l9|c~Y@1DPXImiup_Dm!uHEu^NF)lTtv^M!Ims*v$7PmfT zh%eLyCFaEr3hKuo4}1uiBvJBcO-Y3wG8(HS?Uf4UH*el2%AZ|~Dp~a++FDom>u>xN z2xCMXra5j^agE7P&BVE?ho(H2e*d9w6`pB$w8VP!8+|KR+)=6f;jcMO;_X9udN;?h zgykwxQwtSi;=JbxOXmgDDz2`sV02wNG5N^W06-L|A&Rx?ztCw-sDvfX%)o>tBdsvx zKA4N7g*U=b5!zv^`bX+U2+?s=_3NI>BHAHr25 z-Iu0PxN;Vd1*vIhT((9ZbqYY5L4dNcw*CfmieO$vs|FsYvqE*ymdbF{IE?&0mlf;# zgoFZPM0%FO=NJipFED}2e4p|)xOT*$Dss38PcPcW@@6RmlBb| z!hs>H{mmr}5!qQjczq_7|6dpFPK(czGOkQqKW8I>LP2a#Y~x3?ch>HSZyD!~h=0av zUPNa+KyYi(@wX-?Av9-k^St=3(2gKWQA>V``}Qqy9UC}+yR9ZAMXS=(9 zP^wHO{$=2(&qLx~C|dYrl%cWyKKOgtYmEN;AX@4#utmF7;0C2UIN?OZ#H7s=>qcRU zaU6w{hjSC4;?zqKVt#Wyb2Fj_o!+?r?AbGAw$LpAi| zFWU+TMBRdIZkwfTzXW7#I2h937Nm6}gf9KK3DmoT5t`gT?c%y8BLYyeax&u)0WQoB z&JKMGN5V~7WS$+UGQ~$F~f)?x6N2CN}eAH3RhMT(%LJaa(NK(c;7^%VtVkX zYNx;?Focp}s9GWy%vDN(`tPmab&69{cb&(!PLsd*;^HC+ixhpG^ghDxb#ujL(ihQ* zh5>#d$K8`Zn1*W>SxoyA=r+RY8vA!ul`8cLU8d%50zxuQUIQb1l{f-YQiW`-^6T6= zkR@DoBk-M2fNe3^6d(zteO`xb+br!Lk|FBLjD_3?WcT>pDpAs!p8UmI6N#umfb{^Y zk0sVm-NItGo$kD!aidVFDK?le@qrxs9X3|0wIPuXK!Vpdr*>Y_5F00NBO?OnvrgT9 zzw;Vc?Ir5`RJv>!iuvxCh~zxN)IEybku*|r3?0kbRr~JxsNU0Y_r2Fwp-ZGoCo>pB zzKoy;nUWa>eG@@1_z~z8vwvF10;iYA`=^!4IC$u$7Jes(4D|yT#&GcOHf)azcHa1h z{iflVUdB|c^>fYhUUm2?#ac= z&hwl!{`cM;tG(rTD+?`qiTgW*6ya9w$ESg>t&Z?1+}4abJ6X}i6HJEpF`)3IHmrX(u)@*Ui>{^8XtnPV5#{=CleO&lF1;$xRp+L|G>L>ziYXV82X;U&~)EErs*_s#vJ^T*2fU zBi}f@VP+C(n93(Din%o-1WhPBP(srJTxgUcyy>N9kn<3eCo27 zey<5Pev%&}VX_0ss5_^&TPb}vVW`zhbWPoj+FQCs;@8ca+2XrqC$BS&sLr?pEb`k~ zN{jm_tli5hn5@&DtMjuud9s^Q%@J}Q{G6HHgW(b2x!g~>@mni~)78F9g^K#ML2 zh#7tb@<*VFbZa_2D1Dw9(q(+#Z=#=^{8U@BGX>yw>sOJ3UC2No4p@m5$qqgXylT8A zu8<$DbzYx7e&{=q1$ju;%pPAf73!~l2Xg)Ll3hY1eYIE1bzd5Rv*5(v*i98JE2pTa zn_*+!PMpd1Z0I#kDN{bnGypL+<) zXh|lX_B1dGk)}{vt`Lv^bL=ijRXB1zkcyIi+w@IjSM#;X?kg=yO1v^NrIcnwdJoD= z6%!v9x8!_>j+XYS8wo~*VqC-xf5tZsXVC$hEFeMeE^Yc85`W{JjQ#KR-!7a2*ZU?C zY$g`T#(v|7@`td&uly3VN{#7f)jSr>YH08gLz46s!GAqDzg{R!d4j6Wa=QOWT(_;G zgJ?lt&n@*lCus!J=PfD^|Ig?6+)P>>{c#cP^_M*N*^NeCUI z{Z0)xTKv%}uY3M$aHW1f6V5%*yX`c1bpE0A(2VkBMo4YD@@CeJw&=uo5l*5n!(sV{ zRy+t^cYbtYVj^}-Ow0nUcHN?kBjhEU+PPTOI15hdJtm@Q^|lalNapwJf)cO92Al?B zwx$|&>=;W6LJK6rZ~-sk!)p5q!vFF}b%J{mJcG?O{oq<+)R)Yw4G+|Isc6k^yU=6f zzEtsehnXs$x`CUe``GjXCJ-QIKLzAqnUd1d3c0bq{r4*gj)6$}W*ZSfeeJl{F-Li# z)d>1${$i!CUQK@fGj-iTceAN0!$`?2$-&FVl3f}YbAbbV#D3IPor&{nKqNSz+T5K~ zl$5>|utphDL2)ccU4ihml6R7al6^PWeJ_QkKaGz`IO$yRVx)2Y=AgbmoTWbeXefBl z>O~DH;n(9hegMukz>ghGnnkCbF`RtGm*e2z0K(6q_pW4Dc*CLW`wwasKQrl6J2D?0 z9xek=kyrF9R-r?=0W9D$ERnXy65q`MpPS58_g(Sn?&@;(ue~lSo+)^`8Od*Jphv;_}_-L2=9MggepNpkS z{NRo=7QEY>{pr)Ac~H|RNu8QlnVXCKT7eW863e0`+wF`;pSOkxIZp~i?IG1JL#c=^ zWyi_W3xCAqP5$g^<6vYWX(M4$HB-dxbo0bIvDn5$d_j_i!2>J@rzQW5uTU{D5_|~U z<$IdMBF{t>^m9avSu#RI&JIK6W8M7f?!_!}?vfTH@e%)?gPr8GEe7^_17E*5B) zv4C-JK){V|Jj@cWZ+4BwVaZ|SRTK8l{*>xjX|KKa{uhf%5IS>nbLW!{jVdRkDoC`O zO&4(0-YIj!*8RAQF5DT_HyrkJzo@)sm*V^!kBdumc}}+~D$C3F!P(nhYV0AG^1US0 z*58^vM^O+dQdIZE7X&^v*4@L8X%{Ur9sC41k)#EW3CQebeDX`xJ~_IJ(^Af#saYtR ztoB%0jmXl89lZjm^`t`mYRzwPe?c|rRE=6qAYL`V%MF%f#kqU;?sIQ%Z#5nCJmnp> zrz#Qqm;Slc?icH3(LF2&vu=a8;Jzc3j0N>}?!62BXEW7K_ z%T144sf|W`Jj^f8lcLU*mECu~luUYafMP;5e9`)Df2FX_lQpYA*{i3AUZ43)aqiI~ z;r-8h4|CH5N+&k*O&%0~#BK^Wop5(1mO z@_F;ji=lS6ddvRrBG2IfX7^A?i0V~b-B{COulN7Gv!tM)_-E#b>5FJW(leARY3dja zqKNSiUyaK+`Nlx8DFdls7p<%WXeQZz81d=;(pc%|?jS1bJTv`HBaYNW4;iBGNnu~o++mhN)%fvdUVorVYw z8wf{iGXC(DNp;FXu4zn37Ip>Wr>R-J%`k-+=cb#vlE9oDb-SdZcxkKwd98cw)_>VU zl;pHTP(qM~d!RS~P}~xr&_(+s6rR^ zW#M?=x5Reh*Dd=LSdLJrYwKwXrRwhMGY2s^jPii@>~aT+n;CDlxHgeEG(7vCgT=#k z0NW2mh5ucq4B7msAef@3ZZkTXE*07$!+FWS)2bXmCh56j0*t1wlw?F?muZ|s#D4qM)ny~;y*K`yCHgE0Q>+$;DUFkuzZ!q7_nO+~kw$@!ME72LYyv!D z>OqU&(`ISx1Au&YLtVH)z)o)m0y2FdPcCfx5P=INLyZ?hDk@P-c6Psi=WRHx7}HZS zr%*5^!KZA&MSm}U=)X5Ef|EM%#jf|tzA~3lHI01LeU-a97JYW4=qUW~^UIS;+;!LR#Lmyb zp_3&78cmBx{|ZwE)RH3Oc;+{{&vN-~XvIMf^{l_(N>oA09TbdyIA(`8zC-%Bct(|I%F^h^yM`PmD}4 z^72F9@&|%ZLcOA>6vJ9vgTv1MXbqkvq?&a;67va**5bXh@F#?2uplo#2rbw@wmn2e z1P5@KpIKQg=#ten&$Fk0O8I;Jv~)aRI6^{KTDdUf58bb0qsNEjXMH|N^PXQ6g0a3r zO*j`BpJe8o1U=|Fia5$arHhn#?nfsy(ynO^9(4+_6| z#a_D^KG6#IDd*~vAeql=*jgb-rB?>!w( z2(KNCw-`Abtk2u85O9FWso^4tx8mtaX&E@5?yRr0B4F<`7_liP`o78OzLD-!eXpry zhZECNrWTsKOj&zkq^weEd@){~EB4OXWB|9@ypM4_DI*xNpyz`THc9ypZDLGpLUGUo zW-ES4uXC2ldij=jtC4GKDNgAe83<<4U&K{9ya9*lp~rj;6ozsT&>TK1K>sLTH@;xI zWF-TpZVVKRpVf&+ZD~N><9Q^SB9oM$R2`3~%o^DJn67$POnYf!Yz1q`({((ku!G~g zk1|jAop7>%$W-^NK~oBS8p9(tlE~+YhWHc%8I=$8dI!oy=n^t2`KzQ#w(k@7Mv)q?i!TR3?uz$h*@O|Zul==d1b;TPk z?5~S(d^DpRh#Cy#pIy4Y>HN&cykV_GCp<%R21Yhp@vR#-r{gcI?#@*6{C<7Q7)zG) za%4O^#iqrQoYN3*KmM201^aif_~}!Km+&Bxt`G{xHdH_Ockt=OD3%2F-@hf}!fsn# zSOu0NA`3)nv9R7DgXl)Jv`5&v51_d(hrJain6oaNxN(stN#tS^6Ok-3Ev z8rC$M+gi$%;JW)ZVb<^&-4E&e9}9?N6a908Ml>38ihcbNBut%zCoHZ-bNtT{x>aO_=U+vvu zh}WXMC06Rdk@j*5A*ZSedO%qvbn6T1bduQICUVYQnG1Q`qrRjazwoewTJywxKCVqqM+Y)AsiNls<8-V6 z6wILu!GrUK)7~;ZC{@A3()!PxO1$o2?6}$Yy_@hLYdM;Kj8vJ5s+82UiXK6+TeK|? zKioB-q{V8E{bE~zRk)0CNnEyin8I^;2Y{`>WpKER)FztP41s!UVNn1yY@7L056jE? z-mO@`H{v;6B1Re>(JA0hA3Nu^1;+{6(VOMo^i3U!cBe?Pm_F}(OR7jWGiCbltagq+ z;Ci>(|7^+%ASb!SQT%N(JSOgHRWL0rEvG8PvXN)(iqckAm879$?e_G@2PHXYWxbP3 zYWJ-B%8WGk7X{zl>&-6hC}FATnG;16gG%;LGQP?6ze6H11&0F1hpvrLEo-fLCC}CA zMFP0TGX-MkE=utU*ayjRDkLgsg*Hw+mz z*b%RohKzW=N&|j|qG8%In>K+SQ4|w`@}HYn{C&v%$3pbt4oU#jQoIzwiQ0^qcPueA;Eg;-7)?krJ#PS=YxEkNu4Eb?M zvfjN-qu}DrO*w6cUKVmColP~PaoR*o#S_U$j#Wrhlt~Sdw&Jt zC?xa9oBP;cJs=xK4PhQmvn|_%RR%b!?cBHbhigJXzy6Tz3*ckN#6)Ief=dHxv z&#^SHuxk5(Fq0dZ&~m1MCElm?W8ePmzEn3$86e1XbO}WalJYUlKE`*>qKG81u2@+3 zl5Id#;ze4dC{CRyQ8H5^QsU%i+{G`V$CigK(Y}CL6hPxN z6`}+Wj!(Xl3NbVK9zGZ&V0`)lxviBX%wuZ{=`u1hs@Q5sC+9S<0p8QA+DfDki%V)= zE|Hh8TRwGkbPPL~*%p7r3N62p$iHZHs#58|eYpFqEA)Ki3eC%h8jY=ia&7neVSmG( z#q^I_`5}G`iM&6v2*T%} z&JAyW!uclJcK;4{e*ttTslVQ9w8Ean-PL7xcWqVC=EHrcp;PPg;W)n|F~!Ryaz=I; zk$^LD%nhyx;*!5R>h!m&0ByiSY!md9DRzLQrsor4xSb|3#9%hkmxz=zT4hl;rea}_ ztQ}Xm&NU`A^T$1@2IWVOepIjEtmd3}xmX&v;9f~eU_A}0B-?Ry4I#oGoAiE6jZV|T zxQiwULVB>3A>zow4ooPa>m3FxR~?;i-JzhhB;abk%QZjR28me>kHtZj0z^FOGbK!% zmp20Rc>P>^p@mXozoC}dH~HjmwL%e%8L{tzj*pCglzRig04db0hTUP260)!bj3+Ta zPR5*&O=&kwBC6FTO@^~QqT+e=nxgsj7>3Ld>mewaX z6>`_;o4}QY<}npI@=T=S@UOx7LN8fQ|0ZI_Ly@Yrc|@(C^Mid%vVaozKsBn>V)aT@ z&&vu(i$qc}M%vReEqo~$l2>H7RJ1rbb+}*UpbK>QW$GkIc+uY5JOe|7= zmxpc;ZbPcxh1Xuo=uv0;cNxzJpkL@J;ufO<0;lIRv^1Wph*ob`RSxj;L1$F;^5k_f zNCDyc4v$q!JowJ)s^S5&WU|oHa$O%ZSe4Dmj-)3D=B1vorSHG=j|gEor6TW+@>_jN zPWB6Z0@4#HFs^p!Gg#n*W-|aIYw76*&CWnj8#L6dYvix5EG+zE8!QM&;uF?g$$eys z2|!BI`R+Os8~7Tnb|IlH{c|C+KirGfR`)teOn(+ePA`3Jdx=PT39v%%W2;vVQ;0Dh zS$frp>Rak#i2XgnI`)4Xy(r-)(M`gIF4!@;deM57w$iD!FPX#ebiEW3vZH46}$)s2d%t^vod z^*+ykH>vr5^TK^-p?cK$% zS|br9{8Bc18NBC0)QGKV@!|{n;N9TKj4s3y5D&^vmwX74a$Qm8R87^%U(acbUEkl? z>B~_`0-y@}1CoQIqcSG#vjo5+`4fI2YI{NAJ2sy1n8thNfM~K*0YO`ve3uO$2WRvu zWY-?jwOjArQfw$W@GBQ-oeq23M$WgF4)TBey8ec=?C_?nnZB9YgXfQLqsgQ$YIpb> zU|boC(C*dIV|Qr4nFwW@^NatSs)woYaXG#yAYsFZ5kGbn_n#M_s-|wdoB0A4Zs)zU zr2CtddSi)@8lIb|mCmvw=@l&He&Jj9vD}WPR;a?$?ztVSmvf*IKdPSZ6lUc394op( z2J?9-U0RfC3 zZ*{5ezl?0-E1yFE4=0iP43+hcXa|JEdQaT<`IY(>M@|z(wP6?oF1m@uCk+A4XJ_X7 zZTkn?(+O>Kq8eXe;-oX@m!j5ldBykD(++r)%oeNL_@%F!<|)36IHh}wRo^4&z1iwH zeOoMS)byUJ&=Af;_dI|9+G%wNn~&zfIt@G19{J8sXr6qYNv}vsRq%aAKg6HWa?cX>c2JocG|MICU1|@{2uy78C!zH)b(Vh{IJRa1X zi4XEuM5m#Y{_x*Hx(Y^r39mKHmw33fQ;*~_)`n~JAF!Lu4i@v$7zCAZU`ZX%b22RS zPJ9l^;D5BKyJ9W5VC=#;mk_T0Coqi29hcGlp@nrSsoPZ#5#))h4}&7h{ZH2Xnf3m$ z{FH;ot9#);4DEblp39P!eAk7D?wXEitzU|A9#*^I$Tbty_+OTp8z}po?76JRetm!s z5c`hBDz#;$SORokelH$1y>pyFB$ofaIdLzf{*yGZV6j8N4u6$EGEr|W_Ho-eI#XtV-7Nyny2C1+2$^gOQAvZ*k5UmyfJzhlleM?%2J z@kc@h7=x{!fwwFLz2poGknwbjtT336;kh^{XYD=6TW@$Q;vW%B4eek2iOdy@iv4%Gw!77jkG(Dprvl6v8pQ_+Cz!FecDCr z4vC+cf>>o{j{`EYm%`W(K(F#0d74>BiOIe6pSRkmG^W0Xwf#jFZi)jr0e+xrrlz~+ zPTC}JfVa5yd)65t_`)FOz#%TFs;4(!Exs%qG|69X!rj&1MWEi>N~I?C!IWT9{o)Bw zM=E+pie)xCUPZ(936cE#DLqyhC6>Ag1)4GGj&9RQDrzeK)QENdmnplkZ;>EIHgGEv zezle&1+ZYJ7C}$hs`rN#S;QQE9?iI=xP2C{t?ljDf71A(bi6tN+!|R@07PK7Q>ej( zc5sq@2z#~~_<4cO+I-ao(6^4j2z~1v*{owMHV4r~;f#)6PD{B4g8(1KP0{l`A;Ozd zm@lb6!C3CAV&LZ&VAA)!v4%Ee5&`daA~_mvL~cHxqiRX6BbPk?Ix+MknMncrM=33Z zb)x!NiS2!s;DC0h3xO+MSI4@814S3pP)~F<%m`YbP=?Y`kCSRx=5cLfE7m`W)tcC_ zQ?#)&T9QS-S&4o7=`PzpZ=A}~Y{>)mtA_$mETTZQz|Nr%XWRl_^gLG)-342@pQG#t zvj-*~DQrE&4}S9!D&`VD=RyYV{Wvb1+&}=ajxoc0iibs)UodZl9uCKw+z>TKF{Okm z@tY9eX&%3$E(NdUHU-3^E?F6IZB;9zY{jXfj`exIGEkPAIB)0#u^ zMIy^7lQx7+)&=`Z$#KS`VVulU`w$MhtYOkfM*$f{ulcYgS2->o(t*t>|e&Yr-7n0y4Y=-7`H!%#^bf`_pA^iDH5Zn-M*v1+o zk}AeU?u2>p^iIv2Wpx*)%H_<7D+K_+?yQxb2Yg`t@tE2N^yjp{yy{7f$-gcx=pQn#qj zvXQ?hs$#fIQx6}fW)&D&&wC9v1~7;T2%c2UTqz=+R?2*q6ID`D0?!|`-?zLT&_uEY zi#0@CFDzs}&mLOX*(sow2Z~Mv1Oyj|ot+)x=3aLF?WjB|;- zWO!tgSLE*{EDyfaD+GHHSLmzC!R?gf<^7cVXCT8Ij6O|kI`VxQJId#c9_kM z3cJ6sxR_*er+G(H9SH%0lY>oPEGZT}x}cGKrn*zxaFi zP8Kg-GZz&VDd*&nuNXG@Q)fC%?h-SnrV^=QnsWI*%khhfikj=Lfdv3I_0XyP=%64Y zVD@s0>&pb09ctGJ254L)VEblgFROs1bi!KyuKB>!+jC86rd8(zU%Qd@UbZM%B7G!P z2~C*Z*3vA`V=UIkp99a@5+F97df9XsV5cZ#JIW2xJ;wh~tUfDunLb%uXb`UBXUY#Edt&__{P?Di;H$Gt{09%D`8e{qS2x8*;I3No(}JUQ`p|pj=|m0 z((JdETI0`a%i@OPD2c+uRYcLL2LSi-pg_A=1~M4wBT-jY(C0Q>Fab>w6kWr%yio%P zUmNhs(78}6YPRL#;sQH@UUZ2aoM+v{SPsHMtzN)%i?K)sr}X$7fnmnS$9I=texhH6 zLqGGCG1fCpLSJe+ReZkh8i`wP`lk(+#7v2l4=;$VaF&SaF_N)XGstQ#jtm$!COofGLDBkk*QdigMqZO$KTY`LTg! z0H*1=c9Pub>gJmA_5z`InDngcT&gImfx4#M68`}U}Sop4=-_n{^1aI%BkPsn|C^uoy ze$cB;E^s(gL>x@PGz^SiL&PK`up99G3BF>1e?SgEn( z8s-joUthbOt+=EdJ|TOa4*lCl@a3Np1n;c{4oOrX1)RcM|0Ncsehp<&aF1$a({2nB zXuttNRF|RGTu%BuKouJH9v30fayn!M?@zrgSV(tS>biS-!#x{MKP!ItaKEYPN>H4I zg#{q&e}7m6K&`R?3*l=SSh*b^a5>$)2ncVwsSG+V7H!*_!Zmq?616uNM9zQfPe7@p zN(ZRk%vKpPvG`s*pZ9hngD_85nE@KSyaQ7xA4}|B zkw0Db?lMjy06KeR`{y?&h-0!Lntxw11&`5(N5}lS z=bMP1tV>PyyNjzHm5RjCVR3PkwV5RXgWXfL!`bhRoxCVWCJQ*j7&>?OHKorOZXl+;vt4vB@Au6nguyqqR zDG0!+tf{SCTv%uZ52gfg$-s2+RotyX+|ba_7UV&z4xAs{uDyYs+C>K94uE;^5cFH` zJ#|@XyGGsIAPj4q7yUlx$)!E^u2)T4#ZSLiNRQ?DT(17iJVROmeDhqKp>d+dYGy+R zk@7F)|G*YOOKLJsxaJU@-9yM<(&78K)*EM^qSP{E`hhN0ZrI|S7cw#=L}`Qq7IY3G zjMFVX516;;u9va&N+g}q%Z=9-fN`<(uk*7=V|mn@Z5RAE>rst7o4)k{m?R7&NkR#- z#f~oHRRLcrvffC}&EIPl)$3DVFW&q;1cLhKCY}>%uD;aUs;Z=GehRlXOe(~SF5S+ z{i-PMAQ7W%c6G7|_y*`+`RX8S{#S8))ixuab6EzKu6LhzeI9xW7FrnqSQT;0c#qN7 z`$Ax92_6h6vnpf{#bjhe^Y+GHpYOxAZh418rDmOxdWD|Ea^BuGc+N%@)*1!X)#qM@ zb?&;_+eGLU>#BhIC=jZte6N}9uRYTm8#HRq;els|=-+yCPFIBgSz(hzY43M;(JLIZ z9rKEtT?fL?RACP7n1z-gshg7#ppWve$WYSvWFs&-T5aSIMT#e$nb3!ATXXvgqI}$aW2mQye`)5~-H^I4#Nl~v|F_`W6iEnk zP*C!Pfw^HW?p7`})WCyXsCX;jfa#?R*9@Uk>oHR#%ljYBkd~GfkEIFhLQ+%IE8w&w zyA#0=>{*@+q{+g}cf#YZ-)*@UTu*RC$>rNE29Z@CogBEhx^$m7j`b+zd;BabqXZdH z)J>D<(&WBha)qhI(wLi7FTc4J(n!~6vB7luofACCSj%cX^7WfH?It)CBG0-8N^*V%B==}0j3R5uYdgbv9r7T&xVH78OQqFSzuX8v%0x?Nv?>( z0tkM05L5Y*`#nzt?)g)hRzf=vh zQ!Ihi<8*!3e-!9(7lzxhge=!CmXKYJsJ_o#)`Qg@5t--u@`w%k8BNb%7r!_4d3~^p zjhnmc#|3~S0WS(Qz&HogzsjWvpa$ER@ZlNS4JhKY_sTYVTo>2#CnhC+Hs~4v`P<{3 z9U7UgQZI10T+p+CvtPW%X`Z)+ zEk?|VXRET6;w1|U1THRR7tYgS}ZF;B1M)=)UrTKTLhp*z+`=SId-yC~j+wwH6{jl2%u>U!xShILZy5z)n zl{nwo(J|gbppJ(Xg)Nf;`s>87^wa5Ij%gCo<9sDg7?P9Q4JACbl2cOhJ-ocEdbWqa z^P?~4>lvGwH!gRObcr-dsE_}T1)yCwaCRP6hE65%-#wp~B!jn>yR9eTg}A$pi-|c4 za_K+ZnQy$lC8!3w#SOt+G-yv<+}&5|9hgUnL8gpa<%c~_w3zo7Fd+UK2UbD=x#prxdx35kjAzAy0~ntf08+$Pz3 z`(l20xRo*`rc^7bowOZxbgk}58b*}aC>7qQgyeEzdTKH_$7_MX;`1+E&`ay>s4ZXj z0mSW->4;Y+0|$)~pD?Qz3|FG{GGA&`?fYf%uQy~nNkYCwYS|<)rOO(z zdQ1YvSPxStw78hqH$Wr-<=U6f(BF3vBErI_R0`CY?(+>kKU1YAmVl8+O@00H+@A#f z@nGV0{Yu;SP>xe&IqPcmb#Q&N_`8m-#tjcs5i-Fxv^5OeA;z%i1dS12>=#drTiSUp zlbUqTE6=l|WqftL9t|#cewxETeg!t=V}1MA=;vj1r`i<9-NnN(UwvaaoK%(98v#u^xXtpUODce4}LH zTXl6&kl+=n=GNa~+uKDTNd-hbN%x=lveJo)HlaI-_7ejGi>cG4ncmI{*`GD<1%!F3 zYSV>&gA}N~dGlm$y5wUzJvJm!oF$GNL&kP3>Zq0&_fohj6$gEjOl`Ha4~yE9URdb=$ZV zs(QTD-7Ge9c8+XE(mx7`+g`rOH?2G2QkH2YjbsSwe52!c)B7DyF6hY0yu^J|GcG>f zsjv9_0-Uc0yu1Y+h+;wS#ewEeB_#q^A)bDJ3{6aO3knLJ7RHb05~2(YQVlJ*cSg#s zth~sh`;NlG8ji}I5;p&~^D^)|TkESWrzy7_;JC`^ZhP@&+17EOOttaa+wWIS8|q*p z&w?oHZ_Wz{N$wmVthKi*Mnb%Od;|e)9NZuM0Eaxb3Z;3##``RKl*&O_`D7WSWzsHS zmLFl!o7k8U6Jyd;H%`nvee}xOie9E*W{!}Mkgjl*uH85g^|g`1qb8i7_;FTAF!|Z; zZ#T^cb{i@0uWlut1ei!o47yqvdq97gO)+Ck9o1TimmY&n3|;d^`8<>YCaEQJ@jwd7;`Ny`u%>~NVMXGn6Exj9=28^6cpvt?jveH&QDAT)-z^DRy z!>FjMDLh5Rt5QGm&&I2uhr!K*2L%uWC9D4L9!~P|AAJri-?0(vSH>J7t*ETf3u7h!jv%?Wz~;<8AG`^K4mX1{+BAIA#Jmc1>1s6RoW#{V3;~> z|8zh$+KpazFbdH+J{wbOT5o|GG`TWZadE{#OZ}st9OZw$gRyNdbjM1S^h*bo$e+9L z#nzAs?h}xA@RPAh{AAe{JSCTlx~H=m$P_gpJ@aK|;dQ9dCo@>3Ez{@$DmK;@r`fq7 zU6%bLz%o+M(!R8}w~xF`*yKiX6CYDk)3Ne_yz1O~=x-sopUIe~@#ZyjyoE8Y&lmSW zw_%i7MNO85f+Ewyb@-g$a6qhGb{?v7gec^ZVOF5O`4@D%wk=060k)xCF9mFdd%oYEC?h1#ZXQ=$UuzJSO@g*7mjhM%1qCdyz zd@7h-1%D}GD|oDzhTZY)NL~}ky8Zp8$RJsfL~w#Zdlv{**Q6W6ipH17-y1^W;W%(w zRaFIPDd|}QL&G5nTNhV%_GTnZbZf75wKe?O_3n%b>=G!SgFWEOK?_=Y@P*O&faL4xhp#s8P?bcykpf_I z8BiUEB)mi+)o<^m;j*XZX;HE#ds%ZwopI;;b900s7tqS*>5*%SYH6u(nD~tLn*ZR^ zW9+eHthSGQ@hK?awD_OMFaFgA(zfcugU$}h|088*Wo2>lulhT*v&xxKM`hsr>#0xZ zUEglf)zQ)UQZN!-BO9>R=W|Z`WTj!&AVVdI&ju?hL(GWipf5XmLt<@}SDBvrdB;-D z3d$v-+bqKpQ)(7~uG$E?_iC7TXMKmFkb+SQBeeML@d!|tqQ$|(bM$m}u8B!W=^e}0 ze)QytV(v)RkoAS9og~PD4$sckKvc8|%N$WFr#K#-fX6*Obv@1)@1H~Kf4!{2<_043`4xSDb>ihD16$3)>1=A^_1Mn{^;cD%J?|d zF4eI%@FIoBv8tgMwT|nIrtYzZ)vtx-*ub)_{?;juKgx~c=)Q&`2SM9#lv{4lsBx44 zURGJ0)`rwf%f#ANh+mwb|Kv^C4309DzN9Uye(k|-y+@h<@YGmkW+rH^AlMLX8u<>Z zD=VLPw?R3$0+Zz`xTAdSljL+(`t00~#b@+9pH$J_kybxuQ<wY?sOIeKJRc9J>$ZxD zip0cAYInjBTZHG*jT6)92Zh5M$ezt4Bq8ABLcE~!F>tBipLADyE)EpjQN&B6ew)eo6#$L<%V8XrD<$g&GL+pP>CV|{#jOx}f&@l3!p!axXLNW%D!bjBTMb6wGT zV%wLoe{&(lu4}F*>>nYhQ5<$+M_&^Yi|cB-=D+-aW6zC#kjqwE{YgmazVoQ^St3Th zi|&IxvT1J3qAh*N$q@%)KU)*~af$ssisnCmKF!E`UrgP@TS_R|ZoBT>BUq8e3@;4u zR?gA2nqPPir82X#^({Te0o!+qe8c7s^QMaZf|L%1RP4^`^Y^ zz-hYTmDZldo+z4hsOFj7^IDo={^+Cgq$Jhv=Ag3K8hyngZ2Q%h`ia5_Z-!d`*Of(n z_VYSAhAxr1L=KynRwaq9IK0a&!mcKVhYWcT_cK&{*oCa*Ow*E6HwDFCq<;iNv5hCc zG?6A+wtvGf;bn)yZ|^wl>W>6@cj2o4!`PpPL-~jA!}!=jktA8OR+2p->nKUGRY*}r z6h%yykYz@T7P1rBmr%q|A?r|f*@_e~cG-<}hFP9#-rw)%`F)??AJ6g3aj1iXx$k-1 zujRVV>%7i0t-$>{_W*11#kwdg-^2Qx?ec{;8qq_9>CAHXt;oLC?yhr~RqII)YTst@ zmn>Q#9U<^1d5yxx>fy{9Ty-42?Hi%*TK~C=`!S*IKKbpR&vloa z=P7$Q{(6DdYkUnXagg_wy|yjib9mpb!*9w$0Zt9l|Lg*Mg#T}^2o}ea-tOX8)xuG~ z-8fB+vxPA+iU0lSS47F16`3PPRKWa;(dV1yH}di$dJ`lQ?^qh>^J0c?CawCBGa z31D7wbMeTDBb?V_qg~9NK3@tgG%Oi6t0jr+>?#!*t*ai56FgN{Ifsey{_mcom@o1W z#Z?>`4Oy)0?4O{c6%-LcnsXZ3Fm+byS)g!G>NcPVCzdJ5{lUvLMLh!4JAY{lOBlCW zW;{}f((mqCNvs&Hc+yk2=X&dtR^I4zPWs4h3tiTM_R;%V6gM#+%+<3jtc=%L)=cwp za4|UxDk~s8by!oA;YAT5G|bl_~{5<2k|q@5mv zOhgY3g|rXe=+_cr3M1h+RMr==ks9+X=dZIr*)h1p>9fd@SX|%sX{8^V73?OsbF2~f z%zV+|ckQ+Z(@j<=#&U36?Mv1QGAbWO_X?6>t=bgX8hUx1085utZ9m{u2khhJZD6$8 zKtab4M5DmCCY{F9cA~4R3o$u0#k+t1nS1x-L01f!sCc8`fen0qal(hKZS3HlS)u#g zi`&H^@BGGk8}8E)g7hjHCXFl7mb&xTWZy4t%(m#@-bZVdSC)6*StTox*zltQl+H(} z0)^6=Ps!rKj%)0aEEIXvCx6fANk@K+A%%Y#36EoAet=J0y!&sZx9qWFU&gjj!5h|k zI}56|pYJ?6Y|PNcgofL~=5rxZG^OwTfpqQ7uUQ)+_uR>UK>WcMg!1u>UtG>^q)VIEQj}cIL<4F9{~4_*41FN~@@N0S0qeL zQ6wf6pxp~WCq$0r29qolnjjEUh(HF?^ld=T{f%3I~35Woy2;L_I+?b zob;!;)Nr4UAzD8?B$8Fv-CC%1t{G^5(oZroCBhSwq@@jX&z(Cr_!M8+hm4_1(GAI; zP~SW223bAFvs5>@J_iHkYDM&NTCJY&-Y1=^*$5jEOgdoc zBAwZ=hI$|L`gj^Suq5D!m0U*d1s9rFNjb;Klx>++)Fl2Gc2fbXQEgoO8){{FSMpR| zA^ms?wkhjDg*vQ%bS9nB|Kvx$eZQ=|$zhG`7E;UG9NYKpGZLYsq@?cg_dFC-{@}6L zqHQ9~(4F;J1DJ>~LmArvNZ$zyAuKa`@mpKZqUwHiGm{9oGCs8N88NSXOmN7dz>OQ6 z9rzD%Og*DyaU{#*VAG;|PJ&qVIwj|v1k%I==ia^Qr60{m5qcs70X{w_e%iDZ{VXk< zA~4lmH)Rp{N#wGs*`C)8RW*B2-S4YfYNCI!zqxC~xqC6sxu&72dhZ&Ze4&%_s;^IL z?M9`SVQ@4cLS+ZBY;fv74V|UCfeuRqKGEA4IYVFZJSJaUOOpGttVq>A-6O*Ez|dd@ z|FB8*>cD`cv;RiIXM2h>f49R8RJS;vrTdX0o@BfKJ^Ap>mb6LSj0Dfp6Rx?!!NAkl z(*AdKA(t`c#u zOl@-rv4{g(w_-2R7VKyqReM7m&Gs&NuZb77>6Vp;aQ(VYcySu;?C92C zF4#a%a_082Um)Stc|&YktPK%!dyY`(Khw7#N^mFBce!bO2n_R zxLZzT|Nn0mSHEGB=tOZp`DVI1=}5;J%#W1?_U8?h{_SO3N$QUoZ-E}aR)-0$@>b;J zd*mz_+$VLhQOI@2zh$^fZoqe|j!UMJu`2X`}3W+D{HTfhq;%VP1kSX?7 zyHQ(_R}_MdQef0mEREKGjdo$_EtA=?A74(!7W8b{FHnTxVcoYK6 zDTd+=P#gyC>>I_Q<_LIYfk;u@&bsbxiA;QyUV-w;n*cMmdn=SEQ4S%24e@cha_u{- zItNtY6+KH@>-qlZ@Te$_DGjT-(NPCCby{aJ?IlHktkj+n+>v25bcUm3%J1i%Z%cjR z?p7qz-AwiAbPu&k<MC$axW>=6H4*yATkrPJf2!uEq*4NU_ZJf7&V@MMmi1P0bL2S2LOsxp`Xf|w z6sYICD;v(#8R=&$!DfwiLjUspY3*Gh8|yTY8?>k;mjJID*=b~>DD^2+MOQJ!tnz<8 zF10^Kcp!PC&t{y~HwwFD!P>BuT5 z!mM#7s%v|LA#;cF8lxTN)~CX zS7BmedSti9i=|@rG5+Ps9u`KhGkS18l~?+lRp8HO+#>h->oksosZoo)pTYI(*FPEK z%SdI}_MkMyanfTeNYG+| zi-L;I9Y_Cre?B%T&RT#9I=lm7Zp~(7C>#kM8qk|KF*kR?*!ZO|CkH1d)96nNB-<#s zY~v;I%Kvj0GKUW%_KAskNGTc{8yEbOlX}My<3#{!7ja|5+VJf`DIWujQ^O(kdxCI_ zW8lY5B9lu4He8RICh7b5eC{N5(x0!2E+k;4?xfP-IG4M)DDr-yd)9fxm6P<5j6g z$>cGR!+}O!%B$82R<~6nL&G;uzwti;BZrSB+kAX{oV#~tqwttHxnsv(!2PECk8^@x zs#!pQ78soKGTf>GWtjnQiBX8T%BE4E4hHXCK$1CnG&Uv0O^Oz#;xJ3;{DDg3(0_m( zu~*&A$_R@e%84*rKHXI0Sotk2^{(!9>p(t9fG2W`f6?~O7IlGn8@<- zWykTC+hp?C#KboUGmGbAOAg|tNMSY~^vNHtSKQuCAgBurK`XEwKOKOVQom*Ujlt>8 zl=(&+1$#S{UEkAF1+nL#d5#?}mBbczs3#&Ic&ATc$DL`a7< zPB24TyrmnlkP{1YUW<8n|Gg&Mt6;>{O0Of}dcqQgq@9YBvABX8lBQ1k6PpCg8nFOY z1#J!c0Y&f`$PGn<+a%tc0xJRL!24j*ZaQRVX1gShXJOddCF+N({RqlbHH8l!Yxw@1 z!p(huUpY6_eu1i@#utEeiMw!&E{~FKZMAQEJ6@G?;%DTEy1*ne5*&!8+m~L6;GurI zAt)sD=j2biI;&x`jc3z2t6U^*PEg1sE{Mi`gO;+hhW@vTeojd=dL`HZ644)!d~W4f*?5Mg_fZ5C!-36I3i6PA%YFP>s!n(BHp&?(w`~PJE>$1A995YO)gzfL*?%O zZ~^l6SJl2D1^W9Zy$CrWeB&i6Y%uS0#ydlciYdEaNh7ASuz@Qq{s95WLFF#n3NPs} z$vPl={IIGGT!GPgrZTtea!UV8yr-Dpw}FAgZ~>){UQ-v+u{3fDeE1s(uh5&NS?v?v z)^Y=a%^B6~vq-EidwRNsyMW%i@>LN#$^}CkZlbic+=&MZyzTF$?|!FG%T2!$hOnLF zUpoK=ctt*R%ikT9r>8;EN8;$wXGuv(c`>yARkv3rs(02}ggA&(XOhPDeTq5ye^1b! zDZ&U$(5322_@WbA!60<`N*tLExf_E&X&uzb-XQe+qXKtyp#r{=1S}swICV+b-u!X@1nu=fw6f_>#Zc4 z*lh{b#bc+lhWo^<6^m-(Q)~*o$Vq@M2A?v9a;GA3E+lHhs2tpJSaK z^&1XfA*=I$JRd)rNYo0B6Ew}tYP6krKd)=65%t}^qV;x3XlV@=Q(j9UHYf2hq@gf^ ze?t~jwvr|vd6@}O7?!BQ#DP{sQWcl)AuEe(pIx~RDm~e$A61@L(}z^7lr&{?K8#L& zM%fjfQOEn_pZ2X1Yms_JAe)*RWPo|n0y)^#wCOX z_(AEnK3J3$VkbN*g}nPN@X0p^+T5JNlZMa}+{8R0S}6zThN(WWYfZ z%l=?$pf7Jfsf^X&bYcWb-IY@8##%$6DqH#RVMMHH^TMYgyXN9fT4>38 zeCcGkqtEg?_XOqFYfQE2XYJ>X?-Zkyq?uie_Wu7as7%bazBE2A$&Wa z;o^$BHQ7{{DJ0*;T%*$A9Z4MuS`i6M;4|Xx)zGt|MqQ^DbklpCpO|oe{W-~)d-Q1< zc9usRG^J$Rd+?+tqt%*9q^{QC=V1$J|e{L~LiF2p$gF^_X?rwkA-{6{k3YwfAjLq1ti7c}*Oe!)9 z=!0Su@b9UCu<73Kl1C7nE4%%YFU&(~X(h9Z`6JM1G?*(hnO<45teIu1Ahe{jXfLGG zAiB|`u3N_GyxW7lQNdE~7s^L@j9S@4b8Zk95NP>b>SSzUqWb5_$QMtIO|HUf^?SdS z8SD)xJ%Q8|el{|=Y)m8liHD-j<|zBh)>g~UpK*Yp+NPoYgmzPEzGl6xe9T;(k9s2p zop)YwI?9Bt%%c?B|8frDJ#V3_x;2w9KN2MF*HjoD8R-m)?sLaO!mbJh1|t>+%W`g1 z`+{9uf8)*v6?`eLgM85DWa8~NdcoTluUv8Fqrq5T>A>c=`z^*`Oq>w$y|l71fnAI= ztX|<3>#>Wk5Z)I3{`0m?IUlk}ePQ^jVZ>sCIM{mLx^);h1&2?ZxIC=Toj!}(3lk}x zy==^H-vcwqZ!&vtjzB`=2&5xu(n0kxT?c@zxw|`Rxo#(tQSAmM55vlO!yB06*REZ2 z{f7P5lQkG-5kbP)*S0gTWrz$#p3>oWC%%U6S)c0^Y=!%;kX2NGkl?nlPmiJ5- zWf@D)$v%TOYJS3_*ZNw)4jz0FKmPFC8%98z6UwFR*vP@RT%jeneBjO<()>`DhAU>R zZhJZ&GqD&VpkQkygSm-dK)`>co`qBjCVhL?Tj9Gi@{SZ?K->N5%&?gr_4TW07^h#! zD8c{I+KP87J^Jodqv#RJ|6i%0;=tK2|3TUHgV8CaBdrw|s*cDx7whuL!R%Ca6_Gt5 z_Jbl?W36#s=jF5<nX4atJiXs#ctwfn3W7_hjCm>}_i^uAjI$bg z6MZG8^{Ogupw=b|Y=d!k6O9f{4zZA#v?#Au*A^VQYqmGy|ta zK^O3r%M4To4BEQ7jxH4{rFhlGQ>no*w>hy`Y*<(rsC8#Tt?w@|y2Dg@-u);px;rhb zQPqCn)t4`)AQdVQW;!VB^k+A>XBnma8E5;Yl|2}dl|6qEZ+Ns1v$_{^30z8=mIE^l zjra`TdoJ6bk8S(OIT0?&T)wOxmzHLrAA$tv{%eOMH}jd4_)@1Uzot-hZ=|1IU5xsp z(*>j*GFb(DkHC^~=op{(r?BH9fjiA$TmXuOFF~`v!07f?Hf&z~`pT>Ab3cy#jV6fx z@2vEwoaCQ4eAZ9&cXSQWz}pm`Kw|TFyf8NSG$ew*0IUq_AE)}eKP75D%9EqPAeY{n zb?gVN&-oL&l+D$C3y<}s;qc-|iHK9Lr_7e^Yadc0@FVRHE@4(0*o98qdg1AhVxCNF znN6Hu{L>$vH01&)>o)>H0D;6K0LT2k#dGICw|?NK=7Crj+`>ihlXw~x#S>D+`{<*G zCs4E@m2q{tx6~C29GTsOjG?0Rnlzap-7zwCHvG!{@Ql_xMNos0d?<4e ziCa6-K+OOI5$b{Pa;+|?a=T_Omd0><0Odi3=NE_oU6zJI5j!xvVaVoFF(zbG$_%Py zRpvflJaVzb4wE>{KXb^m;-I@_+w2Wn-rIMN3c`Fs43?oypbw0RiN?zMPnYiYQ53&GV;YjN^A+i16ko4>aj1ZVP~67Yt!YDhF@du% z%@8`e8#Z2EO5@AR2Il5_fnjz;MkfDK?tI=81V8!$u{bt1)>K`TAzh7tgLlA?S)OX{ zezOaSq4+1bfrkZjV!StMlDN2Sd+S=U03FyGoIE@-FiI;c_kj%ccDI?MqZF`>7@06E zGJr>B2XGnND3`9(yQ{TT4nX@mdaj;9H-)$4CNsQ1U>ir=>CFypFA_8=YXEvX2|NIj zkXSuHNROT=ToDmZSeIjb54;(9yYdfRY<)U($Rs*fWgNm5TFRHbL_JPI=tKBD~jdX%-<6T)lYzL_!VCR#9$>(uM@#BmY4>M)Mldgczi;i90 zgLuaDq~fw)>fh=V_KZ61ken9UXp9lv;t&fQcb^q%$ct>^5X zb3VNJpDy$jhm^Z(Cq=O^HXqBhtz7@&=8M9pCT%-Brnc>pCVC-4DDXDyJsN9YJ=(<~ z>{%5IN7h4$_C;9OWpYB%{`qhCJH1l<9KgqxR8fh6&;<+;7*>Rkp1sY@;t88Zq_T4KR7axSB3a3<+?1cd7~I?K z2Vh5W)+zwnl2q2)4#!tHEn-g`6yFRa$`!M{inN8L8Tk33W@%>*NXQjvWbbPH=RHpuo`1$&^G%Fu?M6_x5UL{C|!suKVQiW zlC}C`>k*9#K`a*K<^55l|5S*`vtI{pUJ|~N`%y%r4ggVW0{9pv3o-%zx#1dAIAOE> znIC69D}teJ3|P}(eb^>ozdq#z{$7Fo7viXDr~xk>n&|S((_Hy5NA{Pvbc@0NyZHnK zTLHbhw@LvG@rHO=OPFe*ZT^U!tsS{>q*F6j$~686vBHqdr@t3=2OS+zeN0*SVfv>` z$I*oY!}S$EkF$5}SO)6o==c{U%7xl^{f3TM%QL1q$u7RGPxSFx4(_#Bp%?E?Yaek4 zjKV?~Q`U`li5h9$dOAUGjBDNc*Ahtk>{NY|D+I5#g$I^&7&ufIy{e=0 z^Br&?yMIMO)&ee-cZRFffVEao4{Ftx{B$@GhUBU3UqX=7Sqos-Co{3^VpLzi*ow}` zbEdz)aax-}%Wr~oO7+qwHF5-Z1Rw&RV0TVA=(@HO@9`pKWzW@pbn4C)AB6e(`iNT9 ziWRrZ%uNC&Z4YpbvNqY@E%K(OE{GmFR2i^w{L&545e`z;*IOmVhirEBwbd)$WIg$X zBqz5c3;Vz>M2v+`&Uf-&=Ia(E?r4?gQE!!Dg})Na6ldw_-H_2EpPqii{_LZB3Z`5i z&KMo-jU2o8OKt7zx=r3Tjre!(IDncM=iTl}A-M?lP08${&B|!8R;~UHrmZhcw=M7} z9dozKIZuC(aDn*wK=;S0<{B*q8ke3_D&V}3JIqlwG&{sPh*=n6<*>x;gy7_f!u#thg7CTsf@8y-cJ?86!j(A{vg&M};K6lksq89*2U zaGx<1Al|>CCe<9Kw z{G>|tV^(PV2<`1w#Arj-CDy0p6A~U0-QpgYhSU=WBk-#umPEPb-6GoBN-WCiLSCJF zAB{+*DbZdUf0I=z99?gSA}wUl$3J0dCSAK~s^3RbcX&$ZGy5Kj>4Wop24?7qn1UT? zz54#cJq{r^HSF_7{XvEcCo*NlqRd8#! zDJH)@D^Nc$U_(neX*t3>#lqmEt|kQqjxV35w6EqyM2iJ3sO%y7`H*9c&Fh__bf=>? z*?%^gx4nHw3%C}tsW;HO`k>mezrVl6b6Mf(^W9g|xJ2S!w=7h*$SKQf7M;1m zRn4p_Y9IE9V2(|X-PEl_zj!3Ed^C*OP4J|p3P>;AYnu`;r$?5y^-NXk8YfVSpddg$J$Iw_tjCsb_y`?*@z*68VF4 z;KJ+&rbKtW&8HyQA84vSbUk$Z;Rpc}z}n&NA{2h4VD*9O0}NCfUU4bO^w>DOIMC7Ud)-Jz#`ey4rj;ol?osNI+Uq59@c4ON>#c8l8MW>El|JMHOxpT3bJvcIP6jP3Mxi$VmqW-gR zCYDY+d+zKija?i(IQIx7v%i<5o$=H>fQ261nsjjq=r{u|zzLV(`h4`^)~|#@8>Kpe zSCl->Az6?Fc+&m#-^QEbdgyfa%rH`6Bw^l_H_0p3ZvLO$T_{<%bClH5-D)Fu0(cz) zrz#?kGikCYgJ{kkqUTw1`#^gu9?Z9(PvMj(9gfbcfL#Fs5>JSG%~5>4^0F_ps5R!? zxo7e;IPRl0$PYoV@(q-+7g#^1OWbiI7p1j>nLry(Jm89Wa6}py1No{-{ z`5GtUb-W^b=a}nG^Tpu5=S?C6I0UZ-MW=I5fgjG*APjVjzOY5tX-&7Zuy>HwTiKG` zxDJfm{}hb8#i@LdR`}sVNpa~VbW)d!!LMzeV+yq&?{+rwo{s-D+?sSV@8J~~En;|s z!a?);Rkgga)~9y+l>-PDz-Vr5qJes=h+c0`6bKPaJ{8aTUY5&DG>jz;(F+9_vGd&H zO%+OQPL$Z%y1G!KbUh;gXp+1JfAY-oHhLoJwJ)D~-{feb&fm z4cb6DrsPzaB9GC*FXqJX!ri;3Ny@OKd@tJCw!`)aB>&q$hGP5>3f6ykFXja0zLQJS z$>mcH-d#jqWO*N z+*~%i$H-qbo#^+*r%gp29ab-*%7Z?>L}3OTO=bq9V$H_!CshYa*6C+k@>68UbJHZQ z`lm$Mb)8K<-6-nWTenzqA86Qe&`U&=oYw0SU|V#i(^%f>uDjU>jbTl@CdikkvXJc^ zuGJ6EKTblTnGE=zfBZL=p4Y04%@FSOsg?o(i_4FnJTZQ;e8%0qNR;Z*RrTn@ZH@LA zWPL1BJw-JAH1Dct$l#!DSE{A~@G;rg*eIk4$!d(18-?@R^MWvXfe_;TH*3YBszE{Y ze3vcRZ%XR{Yzp%UC;<6X*!9VE(j7L68*$AP6qdT7ZXPl?g@vW

+byUMgu0`5EO zyK6Mi*Oq^Zuc^6ykPgi#e>jgRDOKEO6@v*|-Hu+gD)+#)ao$;`{u0W9>6#+T9Isxc z?t#aGofm_{5U_*sz`Ut-;OU#B9}IudbOe6;u}lQ)RF z4?=3EpvyZN&;Wow5DbSKU<9~L_%JODRYU=w5K-dPvKP>k$uWdo2ioFqQSgETxvI>S zXSN;ixtmUG&FR*u_`{??V}w9~60fCOV@2gNR-AK<;?CvaMRh5PBl#b;P_Sa|M0J;% zcTK4P00QOjzinslW;rZE3K9>ep|4UXpM+(gClzd9$~_ z*Z4KNbvg$-ji4dmh#QsNG&M;|e4X$8YAKeGE_#Nb*z#h@zMJY)t>T$DgH@E(MSVa1b;N&gj zRU@CRfUb0{j*^?-teTd+%TBsqx)f8hC*{O$4~1e)O-(TNGFtkOfJLWyEdFDyj*M3d z_M7Jl$!Uk_Ie-Hi3-9YqPJih0l$Y|f>qy+Y86!n!H2xPj=F6kJ&c@>#23Hdm?2Zz8 zF0Uhf{#|?+j=D|$fkA+h(7{OkTesfUq;?Okq5>Do3ilql>h$C6X*ZcKbIxO2_l*$M zeq~lsTs%=u%MTlPZY$^<2zXf{^0=+Yy8s3$@k)pt2bCcH;*j=BvlR8VHLDNY z=FQ7Fw`YnfpV76VO$l`^k1o_6(UROI;0cGPp>YGw_!3G2{>051*&e`kuzDg$_dgp#64E>{rsipBB09 zUjb~qIa>ed1K9=zrt4pO?9fhaDI;9Jb&^zF&iG@!xy#CI!pvVRe@$dlD9XX8ogKWt zGJ0C&R_i_*&EhmLY+--6j4#|x^VJwQcKrDG%GkGq%b=LaV7O@RM|a1M7g9|9{ZDly zDlM->&7CJNb~4?!BDbs1LAu2@Uc8@rE_^lN4Z=9cT>*$lc-r>7`wFTkNT0@C9b+Kg~4St|6u-_3h?Rwlhe`V!_O=8|f=Fv+p^4(QmGDn5p5@Pyg=Zjsg zGn13bQ^h;KAzFo<_FE#G0c9dv7lRjLy0;#wz{^uDnHGjiEF+M%Ka}6J2+*+o4bDf zIDW(VG>oYkDXx(Y_SPOx=mAqE<{_WW3APkQOj~@T`YIknRqJ4kU$yUIY!e}75vxY= z{fze**#Er9EGO(}Aod71cg=&2n-@Bi?i<`Ww)NMW2l)7tGa1;|(liJ;V$#z+(7}Nb zL(laIoF$ey^w!q%!t*JU52!G6Qx)}`#`c~6#=_VzqN62@=s)uGkGo_pq+j$`FcI{b z(lF7caf_achRk#y|8P`A`l4)j-72qxpM7plBVmj*v?E16t1i3S4Q(KJS8kL6UqFTx zUKEm04jDZ3XtV(VOM8$BRYCd1zI^`f!@GHPwo`IHX+=@%?&uTO<|Wzhe#!)pZnc^~ z?J8KEpP$$CTS}Fu6?G1-QmIrXt?LkOzHIWhpLYtz+0=c$evwQExUk?e)`&Rtn-w&-$VBKaoPUOqCiy-)U)F+`g;7ph@o51~Uz z9aB3yI~8)Y^7#M00jAX@TifHPb|=tnuKRpKze?*E?a(yJXoWErOCc%CSLX%pu8gOu zYGDK0UpJyY<}sr&WcN=D9^3^YyYj#B<*G$!4cB-4aeqw_d(`a%+I7uORz#v~t?{KS ztf7x{d`#LypsFT#>VBsDszdVV)}`_o*&J4$x4U|eWIom>2U43eedAt5N#VvSuS;8DJ$8>R1orPVkfZXvPwaspT>tzVUHBlIW*Gvj10b0xi_OIq1 z!+~TOBvieiCZV}K|7tat#bYqA@4|l{f$lGb;cvIm9pA68P6==}2XPqjclF4V$Tpu?7woop0?HCidx8_>lHtn zT&~adWcU*C#J>s)N*|_k?&XA%3O_eQIe*X3F@GE%Ydr`+)Ku5iIe)uODVvjcON#^RB9j#3D#r zwq$3m2VkJ}E;f`DNLhLPr8yVgXL)JLjz6L-K;c~R8ef_Ur|Gq44dLF>17yxwuja!i zEjn4h`0vOq%f&$K(nNW@y#9Xl^H zRLieVGy7b?cL*Oz;4^E%tr6akbjv6pdUJZ}F&NUam0Z<+15VOl%?q6jKu`N+d4g%Y z&2a7EZ0J;t_U+vWYL$;9`5TY!F8UXtyFsOr;eMUyb(YxvskBG}+nl6Z(-p+7y-Q|4 zNH@iv6Oh@=bZiNuED9@{uq9qNwebbNZ$!X_6ysl3w0s0xzz2zkI552;WEE zojbKCzjBO%xjXAvc;|qfVNR0Ic&5Wfp%z`+vn)D}Jo9~10PQnXwSivV7Xk!}!ytz| zj9eP2O#zIs=aY-YE-t}(pk)42v8Ts{GfcX#*9eaIKgphR^$HKyWoCR#n-v)u1FsW? z`o+&b}l*;lPIyX zEzP|=f_ubdFzJz~IRrZl==c{qGC5zWu1#}PWi-QnP0s@NFayTc^n&qC6jAp0$lniZ z1OpOWb$OBdW!?1(TJVBwqfUDFyGuEPr{J@4jRGrUec?~s4vh}BTe?LEgSHIOZY3CTwL#!t2-nab05wJejM2*TTokd^sn%r2J zkMd{6@ckmtcZIkYq7tO>d5;ye=!c?Ed=&4?J9cO3nv(k5Hbq$RKob))vnik#!<8*D z+^v!Ipo?g1W|kns67YB`n9hQ(UDK%h{idTnWt_w%p}sprre&nrL`hy?=`ZI2aoNeS z>Ws;jTDGTKOW#z(_TCg-X?iAq2p>3}_%r>q#^3r!!`1(ONncO)Kk~+I!b3xNeYWdU zUL-*}Ra|D3aE}^ou(?X)>EkA@&;iPx?j0`V8GibfwFVExg(9I~_E;loleWAsylA zNB9Lv3BhMFy#w9E-VCtgv_MGRzx2k1V66S*cn^Snz-U$MDysI@u@ zrH2-bIBb@B7B5-Riqn-`n>b6;PQVJ^#S*Pv7*nu;Oy`o!AJ3TXN%eTPxZytk^&oq_ zV;jodT>&cSUc2EiM>9CW^+92#J5sM3k@CSo*yeMq;tmjd*f)<`{xC z^28V0@*V_-cD7zj3^sm1k$Ga`I$QN1#ZR4{`iJIgNF#2Ply@DbEE-aZilhq>jgWdV z%;2C9aBy6S6aNF2pRYBM{pX~<-{+cT>}YseWnW+4u^h~kPS&ec@uA?&IKHe@F&}cb z69#N`VuX24X+X9XGene;`P4Hcf~mdOvdl~}F&As`pWV;z((O=V<-WD0CK@tBczAB@ z>wx*t@8K)B8>}C1xHW~$QT$FYZmj&bUqqe?UHB&N2C9OF0~vG%APEZ7-@)NMc^td+ zS96bygsN&B5SUq7qrfii>9c1A!-%fU=q5Qi6mzsRoGU}?!E!X(3AsmapC9#Fy7&Iq zaIq~67 zvOrz_Kn=n9`@j;1S5T^hdEV>oFI|)PgCy86D}?DHH_R;Ff=?}NGnfct$1ste41SuM zMzdWe$to=?xA=)@7PJx#;+e9f4^_2y~cT$z7QEYk1s@S z=f1?YmtsKcfOT`3&<%MVX?Pi91e`5sU8{j^WT4L7-(J6aS3^Irmd|svD5Y{LMqK;n z&wCoH83EnHHROs4e>mq{X$M&(l7&;4z<+vdoM=MR5BIY$$a$?pZ$$lV5TI9wDyiT4 z^AvSYbb*b;G!lXzOMHI(2<1jl@;?2z3?`>v64=b9l@0?fOvI?Tx+0s?12ujZ3zJKU z$y?cwIuxGm=JfOOXqmBn^|(oChRTVUz0~yXCxT=8*6u4c9Ns5xhHh8C3yXNd{R}0x zAD+oG#v!(Re-evEe0Zm}NX9w;afFFH@OJ|LU=o5_3CvbCp^cZ0rEg)wp{g1V1E2y- zKWl0FDmuN-adJ7@>tr(1o$fWi^P0jDA-ZD!jd`60_x@nC@Z?2`uFT)}#uR+&mJD${ zdCTxeqj6*yDV{L%{(rBhU*~9h{{?*?2Re4L?>`!NhrVDf4EGp(a6>MU#B9@Qt8vpj!N&m zaARCi?H}6ZIc!rHgHz2gbAO1VgZSZecZO2#;rPTGuWRcE(tgs49lFeSW=Uz{WJ}LY zE?9D>q!$a=h%WcPUevRr*L`jtDkU9?r}?}Y zsT6wGbcXj3p{f;ykw@)2;uXO5GS&WccF<|7=g$&YC4hlp=;)Xo%A)L0j|lg~8ZR6% zl2B8#?kvTSw~}0T0zZ>do-^s#P|WV$w`o#B^dhI+7}?AP6O$tPUYUss@9+H{lu>^1_)Y+tl{UD@5l0GCbXhX8M7`fQI0NZ9wkuXHbp-H>>-8GmR9Ot z(Qe}`sa~^T!rv7O@fKxrStIC_ysg7BE&Y3!9h)*-s2Xnjq*fu6X;D^;nA(|%Z zVQz(IJqCsv_|!_^akecuc%XA<-0os+zA6P$sg`vI;VN-x8ch~86nDlap_QPpGSo{h zj3D$kqPQvW$vzDcUjLzaH7aq|9$2)wCDZ-}N;mDsA!i2XDhdk1fYbuW$K*hf#kvS| zGeOq-HZLzWEv*ysm1DB9OcFpyFxx-JM@zL7uuWZ=K2BAq=WJ5I`?xDA2;qiR$<>$dYX)l(+w|aH7Ccy6T?~P}NOv_H=bY zq#h(^=vt2VnotWmI&=fxXC(YLZ1NtM*=II&BkEouujegc!G10Alw}?6X&P+pIJCl2 zLQKFjzOD|Ft2r?)tBm;0Yo{ZIKI=U1ORC;zC_d<@6#nUtZ1lZlq~hf|iQW3gR1wdh z6{FpW3!pX^8ifo`j}d4=@#rWI3&QJ){#}6TfIWCslxwnJ9EV#Q7$Dm{K~)hGG-}tc z2e=!}Ra=^AT>{myUrSF32fg_y$)k9=Rg2tJ_u&y6+j+t{ik&tSJeL?d@r4Uf_}2(Q zTOKAsgk;2&NiT*_7p(bUF5Yk(pP8xe#lh9y4c+mVZEao0HI(d{Ss&Uzr=Jp8N<$)F1+|+oRsuC8~clrQ@rVNwA zbzbuP1YIJWuBN+tw*C9}_(ZZX4s;XxN4$_^^xoflGA(NzbkK1khw!^e391-7WYxvA z!J11^BBK@aXEik3ur5Tx8_Lf!J3}>Rj^^7$>-?mdqx!W+eSVU0DIQw%+I3grF*g+y zq?&6ejbWWsdfF7?)DFi*mjtDgk5P9!;ny8_-eWsY5yZk!Gx#oS8eMoA>v9Sq1)1T; zEBB6|U6{J|-Nb+Pq5Sx9bE7crTAd)$OE!dbOjs}M8KrL2biW|x;rS%p`suC@^dj8k z$Bl&Rk;{6KM!w8Hr@wx#ESY1m_^Onyu|~f!dP72>dlDbFgUny6H>Tpcu-q%CTSdQ* z$G@)llxgX5ZaX(OyeRw9J^l#CA1|Lg?#KCFA&=L!T^rB2^YnM@?W$c;t2 zMH-tM^wJKny@V^;ex?(LTXbdj?=wx2v&Zp{ZwO01-Yv&gsJC)};y64hPgLZHNpY*v zpB%qN@$;hRvl0ES&q50Z3k|= ze5?~jH~&XJ*@Tr@$3v#uidABd3wiV;Fz(dS6%6hD3$)i>AK@O$n7l&Cha7R2FaNd) z3JcTF@Utb~sBY|$b7d{nQ`SK!me>2{!=k9NhNMZ z9s1WGs|NAM4zCCa18I`92_wa+$f5K}@r=I)8UHTjiDc#_h4&kZ>XI!gmRQe4T{XRN zL&z}S?~={p00e#<0zR@BEF8M7JZ!`x{G^g6!Df%G1-E-W#Nznh1*uwFdUofM^F z*=ef>ycw06bb-kKi?#QFifY@oMT-oQCFdYWlpvBrp@5($AV|&zBq%wjDg*>2Dk52u zh=70+BngF*vm`-Mk#h#2fTGr)wa>Ztp7;K1zqS9{r#1IBEU2~SoNJ6e`kbS8vpWIS zY_?f5S^?H1(%h|(GYJHjKL|Pcr5L-Td_A=Ez%~eL>O(&3SShlFNTS_*7BSqHr5mdC zcA!WH(=h1mW3rIIQ}=ehvO&>|6@QbA+0%E&B%~L&EFbHt)=s_ad7K;>5!E)_ct+R% zz9;|G@U`mJjwgoco?6V+Sa8+#nIJV6FAqb;IsgsptG~dS6aJm&N+m zQWMvqH**KqB)>W#*#17+HhRiRN3Y$E|M_n>VtO9=ti)zOawgw1HGP3{%dyU~Jm`>t1JuA#!dqnc;e!~8QmR)dWiCxO2>>omI%cUW1ziM=2Rp}FY_MoQPwL|hv zJurAnK97k56d?H6$<9Tr=`*Hg8?On-QRc1Rj6=p&X_0p~dk=neeD`J6HzY;yC1zYo zX73F*H^Wm&KlaNmo11ki&g-JWCE~4)DsKN%M9Mc^!W>U%@lIAd+}TlV0H78dn|`X> z{i(whC;22-cNY#>aWDBWF`6(Nf^fWoirKY|qe4a>)Xjsw^;t)w6)kij|784$U;Qy$ zv1f!L_21>A$a#tkJ^4{wM7v?1AK{$+UIoMK4u_8UCUk^O)cJ#Z6zB28EN<-B8cJ*#<=;tR zJ-&Tgr?9Ln_SLI!!;x}_ERH6{H#e;gt*%WFM3a3?A9_2K{|YOkGoK9|FbEu3e*Dw9 z5{4l&KRVa#F1X9xf{zCx~6{;-IK0UpLEn z!HJB&i7TETOCI37qXub!8l)jU`ym;=CI#3O4o_DmB zysGgo-6CDU&ZX(@=c>g^fbH~}ntsUHp_cAUWSX?yW3Kbw34J0@LsqJTTaeH4sX;&% zYS7YIj?| zkJH`2_Qb9fTnd@yLXkl7degmG=SE%F{ab4WJWuBRm~b4SsC-(OQ^JWC7(3ZW%fCue zR((Cu2VvX}$2s}<>N?uqg|zF27<7Hl;!!q94nWNlXL`9)6Jr*8rn$kCdt|j{)+6+L zHJ?$>!q?=a^tQ2r;C-jjh}eRIM?&X=XUCmJuI4OYM<%Qzxl;01}ctuSn%V$_411XQ^1lL z8bk;)?5HUET_@`9J;M(|KA5lc2?Xx**xL^-aW6zAD$7n10Q5rC8Feb`i#Z_2g510R zwdt0|ikTR$EFQhxiTdjoa`k{%B;+ToQ>09wK%bRwz-RdB8T`RA%KMXk?q95*6LysC z=7|~lkH)Zu*XDnn1y~su#g)CX^}%Jxz+l8vJh_TfTQmgY{5bHsmWehEopI6GW^mjs z*xzD8NEJRWs49PSjG5x64Ex$A1+R8Aurp8X4)%h6J%*E zzYGyj5gcnLR)ffDBa>^^FXi-`Ah8wlwcS8|%#;RI`^VYisL68kHq6=IR>ZR!xwA7r z=M&#(D7m-$gND=^9Z*+VYCTDQ>ZH`Hs#fEkFmOe@&MHrlzls@3oq4#~BVH#QDz&wR zc19o)ewG`qbTqm=?3xaY$eh2O9=hA|#Ggp5g~RFwR(rAok74UXT*!VV5_xvXYVM2JM)R$n z^$$yaU^FMh8!GLon@ZjyWckglfTLvXfu6lmC>JEV7j6_!HMX~bsou7$W2!BoD9h(S z|5*xBA;4FAU>~s0r}thF`QWW3$Le74$A9(){}2E1s_-#!wo=Hwb0w{Cp2gvN;MoSo z2e+|RzA(m$>&HmrtGNH(-y5UA6r}mGxae>bt|bIr2;I9+u3}2Gla5{`69~#7U&W4{ zfcU+F0;tV3IJfG1772GXW4GiLYkWZlHtUk~I2k{Ojy`-x&^XBS-$hm6@2k97kP-ww z7CR;mH7eyN{zpl*LQh@(bg{^-^ubcsrA;xl$N{vkKQXTGM%j1FRYkTpNg{-vdn%w> z#eZ-=;>td{<41CH^N+?`oPJ_(=zgobBALpI!%?=6MzQr%Smyt!je@9fGc$>+l-12< zyRH2L`6md`p~G?cfM|RTs|3k*Bcis5-2YWt{0UhWdxttM-aJt~JG~SyZYr~A`o6er z-SqK5d68XA!vfg(vs#0}8>vKOO_flB@k?0_>$BUi=z|w-9CLr4k$|+jRP_Ge4|y3f zM(>yf?(5u8`Xf~Na*h2`R^gUoVawW#D>xmt2s2Y4;#SAK#C<8_SWKn)k@ux*pJ-sT z7Ea4e6Ol#ztAnG-sd)iYz6racr17tjb7>#pB&4I%7XSFYEVf*4C+~aN^VBlw?U`NX z=aPR`genP!111*E^b&1@Zmb;NC-0?rfwn=?FEa=ZR5h$J~@WDvF945 zD#7*VP;d8%F+ZpJ5#-OMLrrbK+~CL9^5Zh?n_*mJawHy~j}-6+b<;~|at?}iyK()s zw50t>;>He^MerE;Fwq^Z8L<0te^vQr24>mWhqq8QL9S)yrV*F_1;|oMu{59i-#4EK zIhPXB9k<;r)VA~M-sl!C7rWFc|EsLstx5RPEKqvfyazgz@ zU&Z}2HgXB;w$+c3 zCoB8H(^=U^&Ozf8JNsB+vRzx+mD`cB_cwqdkvdb^5Cgx1KzW)n#{ z#k9zonMZXxLbYR=M=BFkOIQATwJ)EPw{ybid6*@Y3GiUpgn44&oPd>3o2^ypC64{u zI@QArX+(o+=bpy{0F37^UVk&DmA|i)6AqT zK7e#jo!&!*{C88wd|UXih-~41&5Ls9CL1ALg1`qO8`JhVJOBomxr9r9wdTX#CwmEY z!LV_K(YGJ*@VWd)f4!8>JVdPjCH8T8T<|tElBt?mH)F&Rk&=ozaL;l2eo%N>as6I0 z^zbANx~l2)4gx^;653TE0@`5^4Ar36VJP_5B$aC6@`DoS!7q;wQT*Jpy`y<7!g6}k z;>9wt4?vab>>oUKNLU?>%IfUE!(+mW2jTQJXK51J^N?ituo#c z#l`#|0PBB%+MubNB0U2YPRDviC;g~*gK1 ziF194e$@$nTK_U4>Js#C&}O_t-fIr)i-DHzuCxK9R6GyRYYGLT6g7ED)O#=S_a#Ks zoczB~>~pknD`fFHTYz|I!z9~>45!S9qTIzpPYE2jHGpeVB$KmXa{@xm#hvKun6|6$ z6kQ~c)lP^4a^c45jh8Jxh^Qo`>n;G(zCho~$^rkPJfeS{m><#s6<#S*D z>wfbnjlBjK#1)Bl!qzYTu`DVGODk`Jb2jgYyY1tfJYI}I8@8epUt9# zZRsNUWG4>!&pxkZ8|F`{q^xW8SbYhD0FJW3HE@QujEeH9iND{?A^$`0WiIL!K-0H^ zdb4}Y;k&n&1War9B0XJfIofQ~DCXK~q8cuS#`M$P5eod{A6nPB#?<;nHhdxx&7>*S zPZpS3({(lb$ud^NAyPWZRoa1~ms||0 zWWFW}^8Bsw=cI<2K;#rp>{~Ei55nv)W42~dy7O*+Vs^=`Jk50O2;#KLP?%j`#Jrpn zv%I`U^Ev&a($9WOSm#%8SdH5FC_mxnPQBLPe8+Fx_b&p-RQ|D!H8i6QUTFHuSQ+v7 zNTX%`2`w~z0aY4bCN_UupN>h`R=p`pf2|M&28qW@^YdE28wgpY$Hz64(2n1shX_{m zC4SJ`W)N0YtVF|xryCYo=&hzBzYAs2Ja-;ugTryh!dSUobfRZFC{5Czqj_9WS9|Gm zN}^H8So}KLM?c=P^`U8&#kqP#@y5L*o8pmhtoSd5?Y_zo7 zyFS?ZS(gf;eP#|avUSK5_q}&i+ zpPr5eP?hU6+WU7NUO_obqF>V>{}(Qu`NOKW40b&C=sTXAl+C76K?1?LqRd zf<4~Unv2IiWkLdSG;-eaj|9E~nm)H`p&=p2P=Gg8&h)#@rPdAE8^lZ|7feECMKEpk zfOfa0zV+qz2WT(XRq|{?JYa}^YM?>;^T49$P*ESh>fr|4k00<_@MuY5bVIj z9};Q>PXS%lc{Zp7{q>;5Z?O|9@*B>KM^$c;92C83H|DW=iA@OJ+{RqV%T~RV^7DP9 z=SmInz$^r)FFbvUYe}fYHkvMVt^gi>j}@m|_{!DtyqNPup6Tg75JF~aCz^+U{uJF7 z4*2Wwt^t^W?NNRkneVpwYMFdk=8^7got4h6r#Bkf4ZH(W@;9txYLnSuT?7Vd$H;!$ zJ8KA*jP2>4s9r35FIc)F}vyrLk&A~P6kr89M3EB2(Wi`qlDVwWZPm>s~ zdDEQ#7i`6L7N~ekCQU(IsXN*PD|zQsGg@R8x-cvgM= z)%Er6-DB#ilD!Pc3+y!Nv%=x-U*ntc=bu9V^ZXO%36)xajN4XFc$4*m&6oaG@zDQ< zqFcZw3;y9Hnh~QW1c0gU`Ez}HSnnj^&vKJa~bkvt|x{L2A1yGm|nMk z%=h?Tu*;7ESMr*G?)Yy1RpaN1`=-&TyXcf5gd#(j9a_gxd^A{yjvJ4daZO=wjsFKR z1G@JbVnMQ7>KofZjq-DL9-)h8S1v)fql%Zv)j!J|*uDy$`H}?nn0Jb)-|(WnEi$G8 zE%adr;3?XPZoHAAdkC(H6@<@=uYIW~cC2mtRj?TX%9ewo1Q3pjPWm2zMdZBgC*B*6 z)LBDW^(a4i3D#c>rgn{AMciiV{QdtXdH!>ep!PWo2aLyZ8zsx@}#Jt-XnQe&} zvXj%Zl()KPBfBQn52nOK`0z6=DoS(v9_o4<+7+{`!|pNYHMmO6%bn_c+vs+}t8X&n z<}9SQum_0H=dGbV*Emj8=pf#nCd93}s;-9^2o#WD-E)>H2y3Yp??ZT8e!T&Uc3eKc zNwx=A_*Mp$AAtG>IRg-!|C|Y;%hwiX1~hUs;6gZG!6gFAF7Lsmd@Aw$I^c#r(eGKw zTo~fV`SSAs6^TJ|9dXXDX0ae&$NEY^JhF~S5J#aaGl*)^miTg;b^-C^CCbX?M(dp` z#?Sv>amR&#Up5mO2mJECxnm{B`X<(xi*gV!#Dkr-##nYwn35>2IF7{mDUJFQzfg+} zn6lXZpflNc+I+$dEIw)YDdFOyQETVV!nFVgI<+<46R(MLjYAR5??_?UI|;o%9C)qd z+bCZ=sg=diM59`EU3e+&;xLr7OQ^~D9sfm1AKW{BJHN=(O4tM-dL!^eFBmHrR)QY~ zn@>s;;^Ze>7S`E#ozSwIku43W8G(#AG@;u@!&yU#Dmd2Hw<=Km0@~zb8n(+N-I%RNHob$l@KM?ijGy`!?Mv4YP2wx}syq-okx))@vjh(byLCDHj zMW4TQC0eL;U;Kn6?@Rz6Q+a&s`@b=@;!c5J*J1v&aQ`Gl|8~@=0t4y?#lOJyqb?&d zLMbpJj7-IQ8A{2}kkSgMuGe&o{5srzK>vfu4V6YZ(lFMM&>nlK^wDiA7AJ z1@qR#PLrSvT(?{zF%3p%Jy|@>MeF>Q1Cn@(es5~iHqpq6LVf%9B>{b|PQdiZ4nUYM z{y+P$H6~bV)_=aS1k>PuR?-czpt<#yKl4b%Y$+9=6D6`esNdHgToi>DxJv^ntC?$cJBnxQ1)Eb*lW}&pVsBUQfYywUsMD zee_Z=z=Ar??A^EKmVNk7lxmD?Q!mA1RDZ8;I$a^ulGcD8WT`)5u*qf zC&wNuo}Ps~ZmGXzZoE!E97J_v7A3IWbhSJ+@F?I>5zcdAYU za+sCKXO{xj)eTQ0=48HK-*}zKIvqsyxcvYGix)NbXHg|{rZfbbD%CCTsgSz!rmvy0 zR0@M6NFogFJ{mvS->uSjIlfeP(Dv^H%RJJMkovFN$>HOus z451@wdatSKFT1Aou#e`(#(ja5W=|fr$2!R;eFM6)jqtHP(SyMfbsgvc|gkKk4@6TcA-&_8amTVz!-@Z|VQEfc8CO}>1!{OAMKNlApT_EH8nml_Z z%AI_!o%Dym@oi=pxHVgmrWJTEdamG860_H3bzM1Pw;gyqo1#N)O}5`J`3BUq_lakp zSJr*s;lH4jcixTp8gM~NRSBqQ$wERW*-+iG%6m9;GLYVg5}ZSSpQCnVXYHA_-0^Nd zM>MM0k?(5TDbNu=C4BF-*tg@p8|w6NI+^`Vl=|tydwxQ2DA&J?bVe36NUL+CE+qV) zgmIK@4;G<(ZN&6qD6hMT@n{j7j6>p^H-zeefv2Om9a9Hw_1@y*Zs#2t(B(_YDEK=?-w5;iwN8cJm z(WTtgy#b%D&kEwfEL3kpKh)IJAXjH+3o=&Fs9scBO5)B61uNwroMFO~VfX?9oMeeS z?1&VKR(Eqt!VL8G$u_>uyi?Xiu}hA9gMlB8Pw#UCC{yaN!+Rg@0tTd!ARA23W4!n> zCp?sMEdbc(04cBg#>NDRX=xPApAQdd(KOUqswKtF$pVMK=Z7DOJps1%?(?k_@jP%n zaDAm-CZ^_3Ky8{>3t{@#?dc$FQBmFAd3*a!4KFVl@UTGIDYIcay<#^T!fsy4{Qe3w zJdyw%Pta%T=;ZWcY>XxRhq{pw!<8#nK+~-KHFhqOCIN7}Vq9SxiX{E|UgbmG|fKIsYx@C!3z&<&sU*-;KxVY*6sxo;lwWV}*C1&2C zPmEbH$FT$vU_iIZx2OFF(MNuKxHB-X#pys92TZI(dn_Ax;@2rD9iW>~=l1Ofz^3q# zgTqC3_HNLKqXSgaz*RRd;%#qjg7>s;XlUS%?t_bf*7sNY7SjFw{ZGZkH%`tgi;F`S zyRn3QSGI%2K3Ih2V|9os6P!5dw z#4`(&z=;#{Lzj+$#hZ0Mzi{{HTOyziB|llH*I1%`_io$|AS>G3tge{vu@iEPGWW0D z1)|rx2wF~sUE9BZ|4s$%G&Yt<0n+azP+tpP+WCV>FKnXyLe%q4fG^cD&bcv)T7> zQtxyOPe1xmDTe4NSzs0JDHwMjA0IbDeL@KIR-K{NH#WequRVMBj&s)BF5#{`D*uj> zvCHH-s6q>i>~yuoTCU_lnRGeJuP~C*2gB2C&_CNFbxAMwPQMWmqVc5tAWPgK;oMKaWb1Bb)e z7#ka3lass1$f&8K(>ZC~Fm>I?t7W;=5|;+cG&=K(W0SdgCtHmRs3)(lukY^d@xkHH zWQJRlc{&}25(&;>hXft;$pc|2iO~%Qa7aF{smaFo8j`jEb#i)&>;8UWPNOs$p_|o3 zklYGMBDShTIOpAQmyfs=NC6HFcdD?}Gcfq|qrP5Au@aQQ+IDucq~P66Lx8sxC_K$A zE&cr#u=-fWP8J&Rgq11E-8)~nea)&o9UR9{w>5^T=wZe$K8J9%{?A?=+uoxOUh7V<7CchUHV3W%{R5c1P%!P zbQL955P$>Nj#+s}LuSTSYQY$H=YRs~jc*?^2B_Juk%K4#JlBAQ2ykbQFo`G`rw3HTz!FJ{@pahOZM#sM^& zntw;kJ@;Mq_$Gw2#K}kX7TT=GuG(_;qg#*RjGmLb{-lC4Zd>P}Y&x>+apui+ppDoz z2?0J1hzJ3}u09aleiV$RfMGp1Lb&Nq)R-Pz zgz!6EO&{g|d#8(E0nRFFF`IF-wyWcib2fvt#t$3ucApHB$K8I?B9melo4wYU#!_WY z<`(thCJ1DrKs4_IIH(Q|!OsLA+%?~w>wcuJ9)F|{wD=}-b4wfmJcy5rtByV@=t8_< zxMyzO#RFlq1Kz8LhN^*|aoNs-#N8_Y+367wDadH>+tC9pD&Pn=zQr0Glm=m_)_d(@ zb#?XO_A~b9e-92G9v`CEiEjh zSgA&S|K10}rzQQBpcCE(gGrs&LLd-|M4o%|T7*PIPL7Vi#g_*eaImZxxk4I#owNHa z^~bGY#j0a3S9Ztwr$Pm|wmIzG&692IoAI@OnD^XT;JrbQgoVsb&(32Flpgs61 zbo=)0c0!Xq{ZT%c=+zOC|2hjGvPAn)5ms_knixM^C7b6dI7p`-nVJX9q}-i{tn-~D zn!)a01bS)xe~uGgQ&jb}b63Q^63#Yyz3Z31Hgxp}B*_99hu*}FLoZKH5bN^*D&V(( zd(1~{5_b-U8YgE9;JOEHT|S5Q7CL}(#Oq25aJk*@7u09fa>O}Rot^JPfb&Nv4HeY~ zpz(H1Ru)VGkZ+=BYHF&gs``aOAYk1+Jrq<_iz8im+v?ZcP5RIeY{n#EKuGj1P)-9H zuJ=t%8R+PcbcDccAs`fa=_%0Wd;!PpCFFtN0Su{!$H#@02>?XcpCRt=Ce^7tClk8+ zWH1jdh54=QB*(qc>w#z*Z%pyXcQw|)5}d-|L{}k@az2%pr@XKurW?KB9-X; z$Utggy7E!%mt8hS-j;D>i@B_ofbzSonM2UEK7`Z0t)bx?t$JIL^^=p6eGCo^69qN( zV}Q9ngZ2u=HXvv*M3LB}pUyzX&MvCV;polM48Ck0w$CU_0OJG@KtWSEFj~9}r0Z>- zv(V8sQ-f|x&{73%e+5W(jeqwj9ZV>(Bk3pzJe*E|HXc zaI`Q`EQo6)Bnt2F*_ucO?>bm`jX&pKaJc5=&dkpOsx_GVAd8N z#W#UX!^N^pGTuf67UN<5%aSq}yrW>uJU^z3x{R(q@$^+{HGWOpTguiTO zB_`5+Z)^k(V|kV}uAo70erYKZ1V13c1h8Bf&=3+869dW|bMHlxR-z&zo*wM&u@OZm zcGHj7dRzi45P%<#wIMdZO^Z z@JkLzaCtko_uEO4^F`RZ4|#{4Z-`LorN_UeSQX!cdWM7ouu!9&Ednh%H@~FSfK3wT z=YRg<1*xv|@qRk(QzE5actaEnu+N@V@Ss)BfL?SN{$QsW;KXW&a-9{a#b;KX11r9j z#o;>)&6@-5JiTO|Sn-}F{MUKXBWXIxC0%&u&}U9m4J%?tOXvfhW)Uc-CwF7 z1)~gp57owVnM zEafMti2_^C6CmK?^z>=#;CYEaO4z?!f9z;9$7 z#h%oB6}q$U28Mc%Sl@A!0_?y?1`*k5l{zP3shpODulA6%B0|52tV2az+tP@X>NFO+ zXYvj0*vWA>VFIb|`foARg7J%pq(2m_7a|5gFeI3uB0@Tas)Kr9vc|0@`jp_ZUZ$h; zo_@D50LfkbKS3V4B>gOoFN<_Mr}`T>uUg*-RL^HXT=NeK8Xg+@39My6(>)CI69b3s zbf6yx@QkCY>qijXugS|ZaC7&AoT_u@PHRU;$0WeZ-QC^k%MKon!$KK0pNq;uX@>uh z`ThZ7mzsC)QiJ|VFm1q{N>4|J9AL|c7dXUGzlvJ%Iu_bd)^(_OQgMBp!i<1~#ZYYB zwB)(P`QYyYa>r5US1#6HzL`{28(UazOw2$3)J9!ka(>(8>-CaQW5(+wkA&J=t!Zf<_M zHL-G_RY^O8fX?T?O}cJ;tCN&Pcyw@?YF$TIbw%biG(+3UZj14@@YKz}t{3UJ5HRrU zf?{GZ!1A@Yq$GbXr@q!o0t^cnC-s;;mY15pgH+z1Noi17#-TL+5Ymv#TGP!bAY4q&v07Jas1P~%;JVd4=M*nO*a&fCXs7qqHFFTF%fE5vPK+l37++{;~{ z8)@+&_B7U4ae|lwLM`h*@pQ{J!Ngz0-RsJ%fIRrMm~07A!mRnRd;?PGfdiNeZ)5*jKj6|y0>pHNL<+&+1a$IXT<j=I`W(f3T9?zc92*yC@D$HfHu9p#P*%`W=hHL1^}{M1=t$&5jr|M zKLEH6DE#pS_JfXVypGje6c4jC{i{MEBT%-1VFA7%+E7_ZiHkk`s`Kv7tv*ytGn%l9 z715j^Ek-;86g4OB8yGYLDa}bv1epK9FL$nF6c9WmHG#3@Kc?D@CE=yV@D#UuNnJ5J zyh^F=heYWSCf;joj3m~Qh0=9WIxrk4rqRZ}3yI{|25+q2R}$X5Qj!aHSBBWXsLM+e z4)Vj5I>mGW_BW@rMUqI2xmADrw2$hZ$PuUAdIMaOY8tM){QkW5)V8;`uP+1+>N6dI z=N${V!PDu5pez(q!|t}|Hd$3JHy37yvhSUpdk&zrt*yDpXgG5~o&);v08^A@pJKzz z!3)V`_nQ$Ps7y+dDH!5$V|6R#aq|B4e#BiBzQNV4(6Nrd8 zlG}ml1c6cil=n}S6NCE5#?+SY@ULI$4I527!1-RXUWL(M49m32Lz)h6 zzQe18`#>@)l0#TatndYh?8tRwA5vh7&^vC@xcg;DfQS(GN)*iA?_gCVIP1$FWoAp! zn!7vI>Cn3`DyOoLgd1v&%4|Bh=8GeY3(fqsdFeERX8rd4ifkaiqQyX7q!D<6*6-OO z`72sAc9f{(@psfz#&^@~eSI?Ueg&X~^X~(oh-Gp?|4~A7>ze|h4b6Rw5vL*Eg z89N>r;`+X<@dEv8@2!fGYmkH!M#<b8X)v)GFu6N`kK|rZarccYz%-_PIqL;ug#8;3FoYBDx?Qu`1YC~~AisFLuehWx6<6y1c zApdS7iI28GmI?Imx&t*pLjwcksB_!K-wGh$^r<~X+{x8-dD;*C7zl|EnjKzBPn+BK((4Sqs!uIEG8@}@vnziRZLQBnB%?-`sTC8u4?0^K%X^0S!Y;tn);9d>zn@`WkSRsn!5`=Am-anVK*1kI3 zBEnKC|l=G0|TfQ^Eq@~;v z83!OW_yW;!-9TuOiShlrtgN`U2f5$BXI8t2c_M`-mEfxfSJYW02?P)dk2BI&P2Svm z3YI&d8wFHVvw+Gf@IF$UkG^D9>z?~MJDbNgU@!5}@%HqiCr>ILbzM~9rUkFu)9LzT zpw|Jcy}37im0O}{g@EVhm`zaMI8e|UI)?=s90e{`y zo4D{%C313W87#ZI!Y38}z*u7MM+2yy3CR$Gzz^qKQfGd*&K`ry`Nfcgh=Ox60^6d= zkf>{QLZ79}gU&Xx8>U?WT4XK7ny&kzcuQgQf80#A-fx*BZsY0JnZS)wU&&^DwG#n6 z|Ezv1NcqRuChg8tT~c~FJAhL_D^IU+vAaCT#1dt3d>c@aQdHq!0oqmm!8?{b?BK3* z+>H1tN%&ey^RtN<=#s~WpNzit=pW&5Kc%els^gkz|An~r(wg)OiG2?Fb#;pMvm7tN zMx6ygvRFufb0fvdYJciDs3N1d13U2+oON||5iRyqEq0xWe2mP@_@tbvC!|*>vo3)7 zr9sO^t9ocKw2cl=M`6~CWg1-iD8K>(Gf9*v=kLCkyk#b4Q&dvI@WNioeO4U?WZs0u z#jS|H>*$gJA%8C>0t}~rfhuuMeh}`(!Sfq7=}$;o;a(1pD|C<^Vl_iVCdmHH6OI#F zlgg*=7L4SJV&Jzt7hgQjK}lx!sJU&ga3}>oiBkn=bXEOy8+E-x;2OrTi0Z1)tb z=AffZKESst;TFf?Y_%6^38UkIlCBDof)YIe-Ra=1DELCR-wQ&igFx-8R|rA~u=$>w zZ4QCWkHd#M5ns}Y-1HX>uFZ0aPi^sdMOIT$xu6)m8?nsmYurPCZAv#dECfiG3Ta6%0R<+#s+1QXKoV zSfOvXo68dS&1I*_TyCYg1dI*%G4}yN!$XilrBfox3lDw}$;!%NxBXBu&Eia(-b(rQ z_SS-;vd@GW9{{msm9x!Cys~ZHa_AM;#&T!ey_o4eh)KMh1qz=xsud5?Ue=GAhk(c7Ey1jTGZ+mI%T39rkMVr zaAYgg0a%n=xfUFv%xiNn_VT$N@qKF~$Y9e=*N!KH=7IlkM;x2iV(Rs9QhF-VJ%1H) zKD^<~q~CoUomcj|ElW9x;A41k|K$bf(C5hw47 z8o_kI$<75H!%x}Lb;W6tWm8CxBi`6bGQOFa(%$CAZ(At^KOYw*x+yLyKuzPJ&3Cqf z0;c(*PX87hiFKgpJeCn8>!M3;!C^U=QY2NJMN$D`>8`64ES;=7-dP#S!l zyL2;l_02c1wZXCEZel&{NwqWn^-?{PbTDSO>C*`j>q8-%X4+79iSnjX2mLUFb^%*7 zNMIm+03OV4tjtnW< zf6A-k)s$HLL*gFY=5a(3K4L228L9RUK_GyV$CW&Siv*!qzlCjv-!wibHSy{VNz`V? zlT!1VWlla~ZB7qjV8ZecfMCET|B+^>U9DjA|0d%%(cmWu*s8|>bllsr?GnlkegH0* z{TukF+Ql@b>JZcmpKTh`0gCx1dU`P7QqBf&-Jr*y`7hJ*z!#|POfoRb?GSFqQdn1= zhZVVjI>_3|WTGM+puYiPYV#^Vl?zr-0Om}|Yc7xz6HHit=M6C~&%u}8w#krZ6!(@h zPsXYS2??C#>VE?B7yXPNSYx6bsi4WR7O+4tz2%Gd0syXfV6zkNj7xC^hJ4Q^^?6!b zpKhdZ2^8=_e$(kbLRX+iZJOBw+TisBycpgqiTg zwT+U2m6n}jK-H%19-N+@I=-AW(o-zZI5uTRj+<8aM<_S+sa-%Wj|%z3+y z=#Ic%-EsAiP!RU`^hnaZ&J%f!mrF;|rvW7_A@N%kW2pmtm4Sb;Z4Am-)Q;q6PkI%o zHiH6xFx5dfA^2}f{q%JjTCjuX-pE3Z5hWzp(MYARd~+GFgFjtsDuMrs4Ulz?c(?+l zhUo@5Ag@Kl#B|p&>2lA~4VEFiWAa?JWbG{B>#S!=`l=voan+*$0)M01ztqNpUhh(X z)Kqa&eOM;-29RPXkxhM1u zak!&nX7gE3Md`}t1zne_N49M8Z(!y(V0b>Hwb!!j;;Ar-z^!PqQEJ8_rwo)LxGok|*|E3eAmjHJ0iXQs96O<>8G#GTJJIeEI)7Medn!obxo>%P zUynRPAb=*0Q_0a>CQoZn_(A^%(XJ#}J%Lx;-V`WC!n_=yUn|C+1?$+4OluWp6@Eo0cN|{$& zx_yz_VyuzHgUl$(PwnSIG*;YWDc0?v1oi!)LFScy?oj5)fCepIR=ze@do%$mHypL~ zLZ7@;<=$ZuGIT9PgN34fE(twRxLjGW|B0N21SgtYX`ONQ@;8MRBO_+RBnNquG|)=r zN90Z6si#D9bo_5#tldwc`M|-tc9~Dg@NvfI5euRHi(jvzc{E}CYGG{;$@Bk6eZFhw zPt`J?tjRk|Awg9*DY+y2t{fLxX-h+j4O};=W^G-0tbZS^ifhz+9eztNscl~K6I(M-@cebSkUKg z(y|*qCo84GdNV()fTG1w>dUpxvCAz|Dt3EBxib$aR%>8~JwKY!?DB(uMP1)1d~~Bb z*!;clJvl(C;!)Hs(g|JScjZXoD$pHofDDnCUGZ>7|nO`H?w*j@ym>mS4s z#ZTfJ2g|wZ3;$YGL9lf$MQ2ly|L`|#km^3hZX$(Loh$LZGgD*$%~!YV;i(G>)wQO_ z8{>S6PsfeNiiBa*nBhm+h3$Rl#NfY#KLnK>w}l9;CB_JKrM);iQok(uKuNMWbljm&t%=Ve^E|wdhqhIsnaCV^7Ckxf&L{z-l51p zLPcd&8KJBQdcT7fw+miDEf1r0!lhzKiJe$qFxYz_zp&HMv)YrBss4!EIwDJK&c5-~ z^2T439_%eqSqFpFI5F{r2JtC{I!b^LksiLLA8(Plh+6n z`F==R$JH$v#n`yWHl^H0R|Y!|T2pl3-mGUkcZXS+Qc+jkXv|rYm;1J5v^js zJm}Z<_j^7n&a$#cT&I_g%f+ z9v^R`6M`Eb$tx6~ue~4osB=$DC(*z7iNG6vO#y1Yirx@}=i&^4IZ=Yn39Pa*7$$f+ zuC&S8*tl)>M|l2+=49Uk+B^KaonkMVC8+FWh)wK~1lNhxqWwwip&y@N?`LmlwOS2b z&HW~L*qc>PV(@tEbCQCY7_@Ul%n}IRGO`IRn8518^c$VYP zr+K6!uWC$IqoW*_jpEg~PdM3^>f)+Cs}BCW{>9n^ncQQMHW1f-|C=~h$KM2!v@zvs zL^#dwrf4EWN~W%&<}shghbNI=CsaQ?xtVxy|8JwVM1|agy5_T6&AB~9%}mT0vvrDN zi78oO@^lV5HljhaBlb0akQ{|9|8*9CRV|ox&LCQaud}Py&MjnEI>Z3<<{zl|oQ&kj zX9rYLA$c+p*JE~`ovl;852%a{+Qw*=xG*PVcgncE6XD_fdw$$R_PO1j{U>{%eM04Sh9GXdt4r?MqblFnD~Fubkjt zw}9mCkbj0{9DAS4ciaS)aM6-C5Eiv}joyGpvJlx$p=7?0b~%_FkefK|bCm}Z`YolS1QS5Z|m z5mlB__(H6db^liDKjZQJ-qqvf;UOl)&{Y+0w)zR3!)kSL0$Yu@Dk7iJv$rSA`n7&H20iV?gRZ8FiHipdRaNIhe)NwpCTBw&HX z#ihv`ok|_7krLm?N4p=u;xa6tabcggw+j%xGI=yXswt1yir zNCNlmB3-NSu$KT+jTMwPSZ!K~^MvJ7{%=$W9sUkO&G^)Vx2X7M`;!&W$Y(&IQ7%8x zA(|Swr1iVndfsnnOfr7^bHh?5j3a&E zhr~~fg6F{O`4`4=4NjE&=np|Ax=;=S*f*FRhf)cw9)jH)c)Di4s2;ldd+U2Gbc+*Y z;!eEwWkEuNS2Hu^Q}%2#h34Dp#?R=-(Mrmo_iH)@6*WIo#T0{)Fll&os|r~XdlkBY z7Lkn7{-f?!o~zy1_+Z0TBho#oCwVraQB=)gkEHoWbFm>(I^3_tGD4HuvwrV`?Yd)j z(6QY>5^@3pozi?XH`#spms!JG#5I-!GSk%vI;&=V3>#5>zYv?B!TpVeH>PBLx7g~O z;+?MRKwUkv7g0^2zdxHOEK1$UJKjpr zll-kNI`ezp#pn?#`dW1m%jao zv72m8TJdgEup2|bciCX+r&_-h%>{|p$eY0DYG#P?49&1brDcJ+6-(*Q>b_2qt#Czd zjn6-g)sy2Ysm_yX!}pF|OYQ-CHJN&;7d$xAWn*6#ZC^2USc; zRXi`SX`I$I;UpjP0c{zh&T@{KO+YK5U?u*eXR@G)V27H|0`|XX^X;I#p-c zX!FrgBGoF_gi+sabP%cYyy+WC1$umpZM7E}-dDRi=J51A^}_rK zad*4kCYECF)A))C&{z3vlTGxl4UVFufi&z(*W=}^i^KPImERgreo0}%A{$i^Xb!|Gtpa%4zZ;9W-5JMXL5i-|G1T=5*Q3-YoVI+R1*zsgJRU$Krg zXWiI&&mpdMq|51SrFoH>MV*{;zeD-cHsf0(Q_wyQU3ID8LR7cl^uGH~8q_BF-|4-c z&C8D;54u*#pH{QQnNQsI4i7sbTk=}>)XB!LJxN)kYT&Gy&Sbn7g=-k)|<6zSU zi*OrBF{%jUlfika1}JEZr+VEG;m0~t6{U#iL_Jrl#u&%0TlTU$Ec$bf+>onm@MRUt ze4I`TH^KRJqd27;ZZEm9XwV{CKB@W0bz}fYxVa%c{lRV!v4?6t7u0hWG5FZgTAbSO z2R_5BGFEq4JYcJA=$_%*f39|df+mgJrWVqOZRZ&-j_|OeJ>j^$PU;p9U|UET<rbK_w7}kFLxDRXySKx z0PQJUvLE#1&`ny5A0s@xcww6+@9k=I;U7ZDMng!E3TzKO8VmTEOwX?8FMfYW2rGFG zYi+G_0)I@?U-}yFobAB1XN?2vf=s_N%QgdItLK3yQ}3RzN&Aot&W}Ova4i)0UVG&N z9%+<6vhT%T4^v5~+)bDB+84|oK4g#Ja|j;^NoR@`M%p6OJg zr=^z@lm3o(cTL-%MM{)Mr+Oalhwifh)`a^hUr>C`3_gY0viIeTs=zNP9Rk>Zbc67X zLgbUA{YPn8Sh>J)ZVt*nB&=pYsOtjk@y@gO>a46gs?Hp2x#`R!^qi@d-0XS$Pen8a9(fA!R#F~(?d zg*>NPbhGI6>*S7jTJ2FpYg~Wzs^f|Lz~TtMiHjpMc7+zC+^0WQY?$`*EJB26Cv^Ph z1N_}*=ghLfjA|UfM014@y2aqC%Nuac#R3_;xYwmYS8s~ohG8RE%ED66#;_AJLha=@tmpc8p(W2_7zaOApbqYGfPKjd=JMJsb}=P=CbbNj zFNPvwXeetUMvAfu8A4?l|MbtplBR0B$UvkYxZ+54{J!wv!s22OX|$lfvmljvlfuy( z$`Yq9vgSB@36-f)Dv+Em?;rIXpg;BLWDw0HD^UfPTi5kuebq)KSc{)RCLBlt(XQN| zUPIcu-bkGNA(U|gb_F*Vg#CBIV7e|U{>Sfn?lhaMCVoyITal|RCLT`1XA>zwRg4s)rF7qN)z^h%hvQ@tUo^z9|VAw z39d0u5ae=8y|r3~I;KmAZWnvYQ0iM(#$I&|c6x&9TNtzHw~Nya{Kr@5B}|98V;(+? zb4zau=gL^M13ukLX%=!=XFjQ8Lbx2j4T~;O))n#-`7i3Il*BSU$@F>(#C-IEm$#{` z2yY5~fH(mjyM>eS_Y?hP~_;e${0`Y4y`M_R}HR3gYi{MsX6 z@h1ht20!tSnPK_Wp3@^8-Xoa_eQP7Gz%Mh9)vHg&}8pCTU6l#2~8bAjVEmeobU+vSf3;hkm_(Dj79E zDbV`FFHlfKhg0R3o=?ey)qxPqNaC>6JIAG$hX|;SOw>Z3b6CZ2G1ql7xRW{wVpgQpRWo^76^u{IOo=X zxe=gFcyu$9#Xt9|+4?b;t?Fsl?#t!_t;Ex5fy(u))28D({QUPW=wm}jGwxALYoa}n zn+5`Q5gTKt3}*g@%Qo3oK@j`mst6|6r8^e0fBSeJ+3xiK59wiz0WLyqOqGe7>S7Qv zV9K`?^eUy3Ji%N3SRGCnwxy0--k9pQx=9_A@IyF_Y(|6;1Wl$+-YfETu!%d{x}#6) zpubvdi#8yo4!E6HdsrPs428nmS^C5vF6D{KiW?q_U5`#8irC<&XZtti3LxHaEiUl% zBqJ?E4YCtsk2~PhGbOav%znMl4#M3>0V|EgmVp7ealX<`khhlq`bc<57)9AzMq8(+`5(abkiJBmDjzwIOz znyx{9Et<_H8rHK;=_u>gd9mMa0(qu4Q#osj^J>O2lubt~N<`svW$DuDNZR0`%QDvD z?4oUe{pcVe>|eK!M@zm@82qtjG|lqutRph#bnR3`M9ijXuEwN-WU!YlC0Fr%k0Pfu z_dndzT4B%P%)eu49H?@JtA>+R+lPAR&bZi+?|hUl68Jo*3+NJf9EB|>BT zuO8nQ&Z47h8~X)Ga&i;MH#zIy#hm?+lM4=MB@i~K;Zy6UjS2* zf%9$~_XZV91&-$%ax_&Y6$ge-9c)Bn*==TS)^6z3M6jVp6T>*^ zA5iWGv6w_zbLWDtwtqy2`oH+N_qK#Hf6kNuHp`BHi&)4%U_3-vm){-wXg3hg2dfh! zCLj%@C0uL*!y;%#!(L5cB=b=wU5zn2RYYIz#=A?S?5Zj(OM+Bhy1&O}hQvNL>03Bg zE#ys8eKGoQddW^orb5OG%#~kn6i;jw^#YIvx{SFD$VM#D70&!cjoK2?%MHX%r2RSo z+JJ}(hK%B3jV$Uizc{9~woGXd;E){PX(Aal@mFPMUv`C&%A@VkiJXTvZt>iHQ-_|&SEX4ZaBf2`YTx!`M~OA^yWWuPhw9$)mb5o zX(zRaz}LbOo@P@7f^$#yu*AlJbX-bG*pP&hrjICU@z#bc247c z5FH#=A5#r`D_S_up_5QK5jQSf$O%&C?&#~2<&S}M4Pd=&EKCVl36N}5u`$(7k)SdT z7Ymy&>|-6G=Al{w1C#d90`WMaIceDKugf!^+ZVq+k=S_M=5Djv`;mn?67}mcjk}xS z&EO^_6W+fs_@=BG%SxE-fO$?|PF6kL@dT~E%Ye#)bQcX$W|-QMRmU2kW@*&PgL;?D z6AXk^xhA0WH_*rwtpVJV;#8HJ!*oCF$5(+X5wxne9hPtw7Mpjnty$erP?dmEx*Z*5_IRZ-*MJm>JknL!(+9 zVPYB05+FS6S|V}vdqEx+a>MU5Eeo1DI+R>R(J6A(Nk#4cLYIU2tg3=dp2%*0y+#@1n zo~u1=!rvn!xETx(4F0ywCgJo*WIT(Lji1}^IQan^#oPS(Zr|(3LQ^3%b`bvedjuKH zO`3x{DaWa7+llm;wyIATOV*iEIj9t75jBM=#Qn^FX~ZI*3!ZV>u`hcRR-;H<)O=^F zXZhYLQjX=~eJ=Q1ACG4kOzer5fk#U>jl2Bp$f9Mc*Ct#r-(Z()!*T zn;qWKBvX4-D393_0s$RVH8XB&8ymp%>3%Qj#1&~<6^iFtJ*IQ0%FtV{FB1RtHD9!* zgDTw)6Y1}AZ6-aw+s*fWUKo`RdQ~YDjsIV zEQdM{JzDQweaL&1U(CbUW<$)@h#?f99~{fd5@di)olUsjwZj=_;dOX>ENT!1g}0`! zU_e1V8o1`+C9e9$Sm4b~U!P0#3Lg_Aw&_|dWcqzF;_5vjx&jv#f%Lwadmvrd=8bqo z)2`0;@&WaJ8yu`H0_>Aobi~uH_b{dpAd$Z4^3(>mrYjM@S&}Q21nZZ6Po#gbPn(h+ z;89maP`t6U$+FuBT=k+JfD)AX0as=qH+^1!uOM_x!|xeVF@2 zRS*K!m0^)Hw;aOUJRH+=Geeh_qR#H%-`nI11f?TG&o#=I4F9lJ${5Xi|NFXtn`Q$9 zKXm`?g%}f&4iLa{*=igaaW3a769)j7B;%Xu`N2|CIdDx8rE0r@tuijQA)b+{LF{t@ zc2F3K8})#KCHyGE5TTlpNdco(C{=}VOx!bQ9Y&cVkPSAOZ14r@8zrMasm$j9z;wbgNHp{RkO^e-ZeVk?O;x};fzkjFZu_W-eb6&h= zAv`O?&DQx%atg9{^jZ0x?RWzH$SYnGQbBR?^zejxz=I`uxQG3h$8E9vYYt0tB*V{4 zgiL#d-pOn#0!f8XDzYzpmRmTk2#`g@& zcXVt@k$8QiYz)v}aWPj9yl6r8xFe0A3!A8Lqkdat2vQT^*1K#@{qY&UHaKDMjjhLa zh7rU3f_{8-xWXeWH0+5vt8bw0o2BV(`!9V2l11C6aqr*86!RYppcw^y9+M9YEzoj-FJ!i zQ#ya6Y5s`3+hqv;^iQj0Gz6u9sL zQOP9sh#Nx~M5mz22)gfl4AH=gGP_jbr5Cey!0TGLJE{XN9^nv&7nTe2tX0Q2^8tgm zy@#@~6z^Y&yx=GxS`j6tyinx`Z_HuC8MCXR=B|>_52YxLT6%G7Bq#skbm=j<`0Fby z(-5?P-FT{3f?eFKCBUe)MBc)LehetH1#=$+XP&g&J`E+8qGtX#1*=26s_>77x~(_Q zmM23}pH)5}4uhF6FvJu?49~&3-uTrI{6Po5gYd*AbkAns^iDMy35d_tgjfHnui?Lz zPZd=j&YirUmI&Zvv|}7sI_h!8syzT#gn%EyN6p`bca_)m2*Hia$7r3mi3>i0WQ7X8 zR!$OqeseN&imCc!hl_{TkeGu_|he0pNGED#-lJ(xBj?1?-cW(nc_nO+r**-j}V zNOC`zYQXZJde{LK&CL3Qmxo>uwzo$NQJ+P&^anU(4RJatYBy5nPDhrY9HQc(7v0B7 zuvomiVKtP;Jp$ZWQno_VK!Q=e80f4C_KN^QoQ!zfV<6epCx{7r&GOF_>$`_kEsg0J2~p|O%7P*D}re3U|x zcG_M{8b~AkQhS0NU#(wJuEs_8>q)x`Do&Wbix)~s$?jG|^m9jq6b}4T)&$Wqu1Qoi(eh>rVreR!!SBEJ zq{ZuU;P5u)dTu_pOG|Hfu~me)YmM$Zst72i+1lL{PsoZ01{C%IN93+1F0$H}qs{N; zf@{$YdH8No*8M_)-cLV-G;gePD3K*`QEan~=@-MoJ=aQx+u1Nu?!$@#6mu#`?a*J* z6!Eag7^&4*9JZYY$w{Sby9tp|&-zYK-;{pnf+kD~c)uy|IYwrky4#rIgg2s)`Jguu z(B2`fQ5JOu800amR+$?zdi&cL1YuxzN}sU)lTb!i%^?y`Ru2PT+))> zYzRzPQPg?Q2kG~y>J3dkOO}*Ovnf~yG2}&%#_ZUhsl*Kn3ef3}34mPq zpf}-2QzhenH}yGplXBlV)9%AAPQEHLCT5&FeLrm+Kt8>}D&;r%9spO^!ZFwPuSC`h zz-8F2`Cqd8I^*yYK%K%x{o#{rh`EekERVSS@1)P2g&s1&yI5Dc_I;15HtV`#X_C$? zTn_vXW)y+C+kX^dNWyzZp2OaQviVrPM60{B>;HUgfoDZ*F#EPswX4@sy`S|c_1Gt1tm2ZY}A>H+1 z8j=1x==SoWdVlpjS+5v5!h4-YszrF3yd`ZfnGxO`lte?u!>PjUgHW<^koHE#T<1 zyNF(Bur=ZE^q11|OKiy)>zaQX^j$|5Hdf1IrB*MP7WE|Zu3hQ83$bVy_{?E?apb!q z;86~8+Rb^Zo8%kq8O%at^C}xqtH&TH1v??f1f9>tl{l$Cys;+Wj=85uKwQHQX@19X zhcF`ehs)kcUkEd;RESHwDI5p(Ll(8<0kr)o zrGX5HW%PuWWdhe;oa#NS;U`Fy8ZXrF%>DP67zMtbEpWy@W6M!Lh0AECd)&&`lH!}X zFr-NS?w)3Mh=?Rrn?F4SdIxb0K?al}xf$|4xE(pO-bT6@ydrx z9>e*s?QG=K7wNGFOjq@lZ^<0)zhqXgqmvI@&S#SUMuEsjAH5|T9L8IsHl*-l)5w?& z!;4A|r?{U{f_+0l_O_asL+mX@3g|6GauR|fhK&FzScg`NHxnWLdtdt+2P*Xf^i%hS zt~zW~4WXR9mYFdMouRs$z)q|b(1Kd@j@(hmzOh+jwi z`|p2brhiXnmG&I(HxGwZqa@Ld7=>YYH4$YE0j1a)J29b(dJ*iy9aQw?^EY#KO-`8q zTHb)h&HrBOjGUGo$Xh~~z(?FC>E2~}w=OSmrY;v(PUTG-kQKA1A}jP>cXBy4OJQvK zJARi8jwPQpY{KlLp6+T7Zv)5Szt`k4TqLIm-BvG8RNxWX@p=aOPc*Bxi9pca(Nr>^Z2%4wOWRnMqgO;bpmpq z%Pf(aSeP+B8j4^hKZ95W_lDd~@38qQ>X8LgC0!T1dK1J4&B7kYggi$~8$9{IUUY^W z#UAXQA}xcU0_{4sD)?9=df&s$tDA;CYP6Ie1hM);@v`X}z5M3Fo}&OIqa2Q{cm4~| z#DqY_bq*CSkrL|ZOEiG+>t*avruAnangRb zgx_7*84jgaRPh=D3p6Afwla9* ze;5=v`T(7gZZ^UwrC;{?_f>6ukPf?!vGbW2w`GleKP@OhVkO3dXbXO51#Dc%@YYA1 znN3p$G}g7MdniNlG^hRd5$z8%O~N~O1Rx*=bazE6@r8hl5RhiCdN(Jr`rPg};Rw1; z@&WIfO8vQz$WwqkloKZYD)nC%KcGR;wy;Q;+b=0BR9HB5vYY${v=3W)>{1t>!;-ILD0TA5C_Z3tP- z+ZJ}eiAq8=5>!4iuE|QBfwa#;=`7~AeRUwn6Af>we*A)HFn;|M1;sX(5)4q9zMI9t z?;Y&dgQB)d9LM%weSuj<+({}BR3b4zCtdawP_vx`m8ANFX5G34~+m4Mfg_$cNti?AE(iq zr#tVpW_|>V`(u`)>4j}zO)KkkUBDY;a|YX1L_8iG%3mTq&x?;;e=c9ATlv$FJbC+4 z;P5D`3XJ^tN}{@tvVZ`=*4S2dGWuN|E~^0zg5Ir`lP-v1-o!5nl91tHLf?ThmXS`B zt-Rk|CdW~tRG`VK#J0%{uKSYb`XBE}3r0DW}$O&$mFj!ZEi&DJq|`~E!6(?1)`OaZI;NBwhWqUN5r3))8HOR_8_*dM~nRZJfZ z$db&ivy}N%5qX6A_E$dC{WxPE?qgXi%SC=lgEbSw;eg)V+1XiE1ytE`AO)N)f9<0~ zVJIlygGbmgtAMQ9>w(NMbPWJqqrFyv*2@n3jit-QIl6KXhsEtwxLLTryL+YCc>i2I z=mRhv{4c2A)SNqJCprw?RFo9TS4Iz6D;Cd>Js!C}oerk}uc zKP|acT$}uUBLcpXIx-rgQ$q;N#F?+J{FB~1DLM>^W}mV^H|%~oc;sXP4I_YP-VB=a zEw#=hgWY@-B}RA} zo%49wrXXI@fFe#%LxwYo+)0UTJU$KK!F1JQ3VL&tp5MR$O0$r^@;zGmk(}J~hsa~f z%r*iZ7DjT{5h4p51L%Cx<7!cX5` zGQkY2jt3fM%DIb-|yV%hy9=N)dO}zON$LBNubp>sz`& z8+cS0m~0?B!(!X}C@aJQuf=;dxZPV__!BEi?+~57o-O`&ssju5c>7Utkn>d!R9d|D zADaAg^Ha*JY`8z!9lvg;zqKI_GtmdAidC8l%X{M|tps&0TQIBY5cm%nkBpEiSRMVF zsh|gqZZp4nSmAf^5V-lhD@!=~Ji~w(Iwr8Z6dDWavRhRFH7@wlnR!0j9j0!ZlAgYO zM%W8UcSU_Os5v*3yxvAs@j-coK!uu!#KA0@&X>NLfKUhcgm>sexT?9SIi1zSHv`}i zdw8aEl=wo^-fijj&u`DT%h&ye)XnF-2^C^`@r>W)^)};%7OTWxgocKGf(}W@JAkvi zFlC0E%V*X(E{CNO+@+*xDm6bi4W5<(rnuT$xPK)E24p1;9N;ww<5HC|4;d z;&oS^$YlmenZpz{UMnniRzDTA=3H}R{>19L(&#tvll7WvjV6Pf!|VWT`2jq`F zy|tzgRC+)dIA&w@Q4V(jg5l16GbT=SmwF-ZIK+ejK8P(nUZU&;eUx>5Gwz5Z0jl@D zuoXH;Wzi>b`>6B+lRA*&oPsd2j5o#!qQ6Q!xit!5iY=F*Cw%1FatSEu_`mH7m^P9$ z%`u}*V^5Z&Gi=$C3Q=;Sf$x<7$!QwDDQ&|;^=z?tz=x5Vo24{87<(3P1{y`faWRSF z4Q>gqXIyroN|Gcmb-JD|xl=Na7!`XpK3zph4{9R;!Y6n+eW)hRLcA#ykb=KD3krPv z5;d0jwbN{wDWUcyhzv)e!nLo(_cC7V5o87{G?FzKg;wG0XQ?;iAJKX{!pxejD`dASh+o9USM2M|}z zG`?oE?9fF6O-L-FI&TQn<*^|=tG^qL&Ne5EY)wH)^k*$g_%P5bO-XxP#3Met`9ftk z%+BKoYVN#|-yW1fTlr*neV?ijrfsF_SKkdQ{v%*|hqKc75{#?C?#|DWPykosXmJBN zZNUmEMg#XmkNqFLfB<4I5L;~!SF&l{)>SFd9vA!AbE=$O%66dS46eU zm3gbO4%R+=tcp5lf)Mocl$KX7coTQfS&A$fBl89=L%VN#n0vOdcct9A`e)7nE%k8A z(q!3tJ>5`$Ts=o3`9EangZx^^BdP+62}zf5qdbgzleEi0zJwPC5J~VqkG!emAP^!E z9G_$H2@xu2{NnCJ1lYkJCJ%9R<-ovq0e8JMB79+TL6uMpnby!>If@mu9;ss6h15$_ zq|Kn(s&RwyQGFc~cW>(`R2 z{iqA@X{Mn5%qG=FZk#)?W=7c8&xK$nF-EM*__NgX^?+6SeSNY$`QSKyaCqQrT> zS1->+-MPc~A!|{4t9RW$h>E5%j~oDZ#i4&}-|vVE72v~6E_Ld6Djd)jcJe2P`_ zxd64sH88k+>ggM&e&5DgZ`st;-`9%K@8MP(INEbi-;*ON6%x*mpfma_0667t8#$LV*JfEOH8qRTU|Mmz(LtEAe3X*^VpU?f( zvYblL>jVNY>*DW*`yZxue0+RNosQ&hMiWgWFPhDs0P&rv6M6^xVzsKGLitiSDHfs7 zmJF(QT;bWrl0RYmp(wL>?-_hJXhzg-FjSu#oXdb8i^3WmBwYnmq%Oh;KH*xaUeiV; zN%x5o^#8RE&{{C&e(!EO_Q&93+pydGrLc%!FG`Nh`#{+E8&399er zW8@e$5cc*Encu?_%;$39A#iocMU3be$gGJ0A>y9Ae+Nlmbi`Ovf`uPgHDzJ;0gFKZ z%wYB$V%qcBJh@Gjw-9$fcgd@rn_-7iHU;N;-E2=ARlIM4yyYa6z!HEA%-f?#{^tlXj9k9J=WEvG?j@5V zO}OI_VN1o}??7x|Z$!5ZI}@3(-Sks^H!KLaw0d;!eH0DP%)Le-EI$8I$Upxy>u8zn zVij!LZJ0nwT1d89k*eymcA&X86-=>w+r!Fwj^i{u{nPP=hQmU>L0ZIa6*BL`Dfe`pBl$wh z&EMvJ5E-+S9V;1#{=EG4(t&01$%f2Q=<%^zpdXol$Krs$KcGntt-s!AtSISjNp;#u(mE@0k_qG`;se`2z1+})EBI5u!-W$)bzzc z>U_#a^06vbv|&GaiXIN0r){9*_x8J#r79C;+uhM3e3hcnC&zI-aDZ{e#lsU@W7{)pi=!Wib;OaBNXHZVo)%Tqhy^CB~lpxEn>*COm!1MPsV}ngg2ih<5(kK3t!nIBK$- zqO-8%jwKM$`(?x{>J^^{U>a1i&Eu%SYb4Pd3^2o!E2KTL?+H`EBej z@+4nJTM&mSJcJ{{QuaWg6~ip;2bw1A1fGP?I}Z0Ie!iV$`xG5C!!zZa-Y{K-#LRB7 zj^bu;Q7*{;o%#okZAObyDbsz|sz=fvR;dvNDCvO0Bu9fdQ3e=&eXvt0DgPybiHTBI&VKoW zFKp7pKi_r8l8fMd`NBZkO=W-(K(VejMDMhH6lTklonWfkkCZPk{`rRIW%?8Q;XGMg zR|9JOeoRmsCZ&V*NvRU-*JPEy(hV`SFq8qLJ2;^ec6vm=ff;-G19?U@Hf5O(DZe>+ zsS?j(J|{XdzHI)oKmIrNE6&~9*a&$A3>+YU?Zr{8V;P1zi47+-oLo`yj|OujKLUt5 zApq0$Qzm4)1D~}E;B03KJBqy^)sB?!eHJRfxUjWTQX`PaSTEx~GTVkN5d@!AuHHt_ z6C7c^>Qzqr3C-jD%V+K2V9at3H;nJRf{1<}M_k@@j_;*ORvUS{Q$zGfw6cvMT@9OlOS+n+-I%(wTm^~S z^`a*3*DROqI2y_-njNe|l?f?cMktUivU4chXcoJ@-$59Bvz_D?eCG0C`4A$%8|Zv& z<9E2Yz~tiCCW8g4DgQyJUgBZ<^}yOVm^|5`Z!l!o(0aJ(pDq#D{#(MZMvwLybh{So zoBlLwy~0~pHV{L4_6X#a!@YZVIsuqM7TB|A;h`l6HhhjzEr8bvprRaAbjO5&<#p6f z-FOp-B5UDB#*MI> z7_qX7g$o~U4TT3CF^g?qaqo)f*IAPd%t#pcZ&y}z9B|9pf=e&+<&QayKG58I=JoXM zUt&C1l{n#Bm_6*>$z8Qn9xGvQCrIn-ClLGXT!*Cuox}R8LbfCc3v(z+Zlh8v+A#J4 z{|65=tT$!O0z|zUc0bIP`xA3s`9IA0A5pTe^wOm$N0BxWyT0|m619Ei z4FVBNptY@C>(?D*8f2~tJ zJK*OJvf?#OWLY0+=Dg_cv7C2a(?^c=|7BSVm<_yn_s;SY=((HEk)?p;THC~DDCp?@ z5?B9JI+2QK?+LGs{Hj(wE?j>RS+>Ld9L9Blum)qA{>6X;UXWtSWPpQTEMbIKek%Uv zkLf7yG7_jh(*n}iS{HpMlY4in@eC7RmX}se)IL%m&Ue?JV$XMTOTq7b(KijhMPRqs zGRvj|t19UO&~lU7$0)11nwxA7GF2CmiQgbTaR%kWc-R`#96Q2GyzLgcF^%35peUhf|5h?NXSS2l<|oQUl}Zm z?9bz&-Kwcax8e=)nYPlcw+0m^l_`FqXwerGR&kD#1LhdYa6HQ-P7%Gss%?1EUM5cR zO9C8*^v@7AlT+O2loa}lJNdmj9Pf0v(#VIN9Uu3xHy&4(fpPNE#YV5GG8w2Fbst9; z6D6!~>diJdhij`r?O>Y!7-Mq?1r=mIf)eXR2AL=JE^~?1YB-E=^&KJV5M9K4y@*C= zL}GC~qqvas7^jKOMf!hbq+I{S8Qxc4@vvoOWe-21&D)0i@$cT1!goIH?Gx`#4O{RL zBpD#O<4mQ3jK&fed`C_;vU7Axz+*`HfPkZ;*1%U&RaH;$K@x?pbrxhEg6~{B1s*;6 z@yNVdP?Sd^61{#Je6S{8f`oGawZo)@^4*Ry7P)m<06{IxzY&CNNLtu zz8y3DG!P2u{1m;f2;rdd)HC1Rfq=m#RCk9rFVYSfIc~*^n-TEu3#VFFC}ZM1nZT6W z=)^LbJ0tAAT8fXi#HWm|y+os0-~hvMa!~N@e8-s%){#ewVAA6)QS4(6X54}z!ZF!5 zU0j^C;#^?fIIGJh!43Zg*-ZvcgVJJWH%dy~;*|=zN1!L(;4Kg`hQPTlg3-k6FO{@S zd|#?Ei*hi5yb2o#x7J9(*mm9Sl69+>p76ku6$U#jD7@hcMeyUAy)un-IA- zGOHH$c4~=!1}Ui_N?g#rmvldkcXwcub?0z+ErUL45RDJmJkit1a*Ky3OMS?P z1EyymR`Wa$0?z3np3TuFFTlwbwQ75pf?jOg(fesKk9s3o6&^jR^j!+iynlpFh)Q9K zgDk%z@{HrsV#h7+6>2Bgq3*9$So9q%w9Ek5Z@|9UlATg$3HL zqgJ`HjB|@^QxhW{^}L5mGDQVe-P1L;xxX(aI>9^VF2hTy1Tl6Bz*FmI{zT>wI7~)H zAp>>&iyIR(tiUBj;&Jv#HT99ads+LOn4KGvpB6{=CB|3zw&~0EdEQ%PrGly8MtaJS zZgOw8BMln$0gbP|tCVfQb>dGF%0@>gt5_@iey5h~RqZw;=GC0$y38 z{5Mu(78YXkG7zKjbQt-hrIiXCn+4*a&>nzLd;`u}by%qDBxvNnAYDE9vM=AgMdO!) z?H5Do@&v3}uVaLUr9Pqdmpg-DJPJG1#Q3ddrqDYhi$L6*Qq0WkO}xloqn=B;*W549!6TjBTVPeA8Oo;tSTRm6GFTxgkL{B23+n~( zq=hC&wOD5ms9CvJ`S2o_}d^t0#m%^4=p~VwJ2y(j}CK z8Ky$Czv+T%X%3N~vTvoA0t@#be~Pu8qHue{S5KJk0K>L&cz7r!z5E^r3nZEVL3G5e z7Q0>sl6a1)cV0Da&2ZN<&x^JUotRxdDgJ+7swEGsl;S zrgQ7D-CZ9w;y!Ph&_!h*PN*{@zu9QmtTamzUzvS&xV*!?($o5bJ~s8RhbcLJle3I} zzx4uGsFmm5wIK!gCF7jut`QD0DhDTtuqOoLV!g*z+-sCq17`I1Noz_!7eXB5$jG&- z2=BP$Zt3UMlXBQS=1`8nY=De=!*b-!A3TJ-*_I^j)x3aX+>JP?n6KNc=>jaF4kg z%Uv;W7p=?l;oY6}?|>jiJ@XeZ;vn}uezOCq{=hdE)m*l+L7BUWRqRU#>^mcx8Te39 zA}I0be>8msRFqxR^)PgoG}1^(N=T!0qmC5?2>AkrX8H$!*V z0K?4x_U#nZi1CN1*I4SmF?*oSst+Nd8gNT%&1jvl zs>A!{jZ4#D^kqUrezW7{4sFLe!{#%}2az&fEIeMmtqXTr?F=d#n z#P5X6kkqtx6z5sfJ)4HgzJfl#!0HL#z(C|zv7JRqv=OBamUHdEUS-- zlAX}_

+qM%D9KjZX2uzdWW5I|- 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 literal 0 HcmV?d00001 diff --git a/data/mods/Magical_Nights/MagicalNights_Misc.png b/data/mods/Magical_Nights/MagicalNights_Misc.png new file mode 100644 index 0000000000000000000000000000000000000000..f32f1cdd4c5a30e6769e49a85120899bcfe63257 GIT binary patch literal 14601 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 literal 0 HcmV?d00001 diff --git a/data/mods/Magical_Nights/MagicalNights_Monsters.png b/data/mods/Magical_Nights/MagicalNights_Monsters.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5cbfcd3056a0e44d33ee51be43a84f336dbdeb GIT binary patch literal 76130 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 A2><{9 literal 0 HcmV?d00001 diff --git a/data/mods/Magical_Nights/MagicalNights_Tiles.png b/data/mods/Magical_Nights/MagicalNights_Tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f2ea29af4141a6dbf5540a3131c91859105efc GIT binary patch literal 97438 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%0A)mzz_NL@87dP+HCouGm!DrKrw*W4imYE< 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 literal 0 HcmV?d00001 diff --git a/data/mods/Magical_Nights/MagicalNights_huge.png b/data/mods/Magical_Nights/MagicalNights_huge.png new file mode 100644 index 0000000000000000000000000000000000000000..c213446af942c831c9ce1fd9e3cc418d2fa35f73 GIT binary patch literal 17926 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

Vqk7JMtGCzCQTYC)g7yAZ!JIrOrTo{-Z!xJm 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 Et#88pK&q4DFRugDPdYVN4FPQk=L)4@6 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෗~2MVy;+sV#&P%P-gbqS$1A$>XkG&ucH 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�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 UP&p6#*Z*-FD?3ctpI(3eAJCR4Y5)KL literal 0 HcmV?d00001 diff --git a/data/mods/Magical_Nights/MagicalNights_normal_offset.png b/data/mods/Magical_Nights/MagicalNights_normal_offset.png new file mode 100644 index 0000000000000000000000000000000000000000..835fcb91896ef6c60d1ba46ed9d2c11e090825b7 GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0y~yU;;836gb#`WQzBJr$CCcz$3Dlfr0r22s3W24$5X= zU~%wtaSW-L^Y(6hMs%vov5)Voi!QCZdyPx_OdOAR)x~q2J#V~N0$1)em|bC5mFyTB zsrqUKPg_v;rlfWQ$Jg_ZuC2Nnd-7dOzS(l6H40ApyBuR3PlW|MzvX!%W44~9z5b@O z($@*QrWW6*v=iXSobyAwT8Yd^QuwL}xfdeg! zKK|z!C!AgyUbSlNmjpBGvg0407rngQ<$R^9vH0A~n_b1h`#wztxu)LqvvM_Cg5>R8 zUu_x0#Qr^5{(j%nm*4I(JSlp)l>dC{=Hw|}ZSTXa9L=o1tvBzybub?2YM;RUYzwMB zut#iumN>7z(B9YA+VVp2tlZmd8F}~E6L!YTTDVYl`(DSLGEoPG1O+?SXoxe+{` zI6M3G^mn^fu1r35R=4Zgoj+{z!Vf<@$a^5u?$?&NE{BePuCcSe#VM0+aJ{iuH7dH= zvbt>f*6sfvh>0`LDQ?+*(Fqvrvy?vDGHm!1W_#ZI*0J96OabB7Lu&7QzyA60N@1Jn zFAsg5G-GOH%%9m#i9!w9;pak(n;!gHb?)*1u0wVK;B*&WXY*NkE6avC#rrIu-=3yh z{qp_p6T3>!o;m+NaIYxWvafW1?s*Qf+-&~f}QyHEMF|Zu`dP4Tk;sP#@pQpls30MC7p9|avVrv-W?1zfxVmXk=FY#LDo)_6=hPkW(x2O~~cO zp?Uiuxxjwk&xv>0fQdzEwL7Z=FsR$WX)nnGne#$^ks8<0wbyp-02Mc$u6{1-oD!M< D{$?El literal 0 HcmV?d00001 diff --git a/data/mods/Magical_Nights/Spells/animist.json b/data/mods/Magical_Nights/Spells/animist.json new file mode 100644 index 000000000000..bf1b35d0f069 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/animist.json @@ -0,0 +1,314 @@ +[ + { + "id": "bless", + "type": "SPELL", + "name": { "str": "Bless" }, + "description": "A spell of blessing that gives you energy and boosts your abilities.", + "valid_targets": [ "self", "ally" ], + "flags": [ "VERBAL", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "effect": "target_attack", + "effect_str": "bless", + "affected_body_parts": [ "torso" ], + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "spell_class": "ANIMIST", + "difficulty": 1, + "max_level": 30, + "min_aoe": 3, + "max_aoe": 10, + "aoe_increment": 0.25, + "min_range": 8, + "max_range": 23, + "range_increment": 0.75, + "//": "duration is in moves", + "min_duration": 12000, + "max_duration": 36000, + "duration_increment": 400, + "//2": "Something doesn't add up with that increment, but it's not like it really messes with anything" + }, + { + "id": "holy_blade", + "type": "SPELL", + "name": { "str": "Holy Blade" }, + "description": "This blade of light will cut through any evil it makes contact with!", + "valid_targets": [ "self" ], + "flags": [ "NO_LEGS", "CONCENTRATE", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "longsword", + "base_casting_time": 350, + "base_energy_cost": 375, + "min_duration": 480000, + "max_duration": 660000, + "duration_increment": 6000, + "difficulty": 5, + "max_level": 30, + "spell_class": "ANIMIST", + "energy_source": "MANA" + }, + { + "id": "spirit_armor", + "type": "SPELL", + "name": { "str": "Spiritual Armor" }, + "description": "Evil will not make it through your defenses if your faith is strong enough!", + "valid_targets": [ "self" ], + "flags": [ "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_EXPLOSION_VFX" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "armor_lightplate", + "spell_class": "ANIMIST", + "energy_source": "MANA", + "difficulty": 5, + "max_level": 30, + "base_casting_time": 350, + "base_energy_cost": 375, + "min_duration": 480000, + "max_duration": 660000, + "duration_increment": 6000 + }, + { + "id": "smite", + "type": "SPELL", + "name": { "str": "Smite" }, + "description": "Evil has become pervasive throughout the world. Let your power be the light that shines in the darkness!", + "valid_targets": [ "hostile" ], + "min_damage": 92, + "max_damage": 382, + "damage_increment": 15, + "min_range": 1, + "max_range": 1, + "effect": "target_attack", + "base_casting_time": 85, + "base_energy_cost": 250, + "damage_type": "none", + "spell_class": "ANIMIST", + "difficulty": 8, + "max_level": 22, + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ], + "energy_source": "MANA" + }, + { + "id": "recover_mana", + "type": "SPELL", + "name": { "str": "Life Conversion" }, + "description": "You channel your life force itself into your spiritual energy. You spend hp to regain mana.", + "valid_targets": [ "self" ], + "min_damage": 90, + "damage_increment": 15, + "max_damage": 1000, + "max_level": 50, + "effect": "recover_energy", + "effect_str": "MANA", + "spell_class": "ANIMIST", + "energy_source": "HP", + "base_casting_time": 500, + "base_energy_cost": 5, + "energy_increment": 1, + "final_energy_cost": 60, + "flags": [ "SOMATIC", "NO_HANDS", "SILENT", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "difficulty": 3 + }, + { + "id": "recover_pain", + "type": "SPELL", + "name": { "str": "Mind over Pain" }, + "description": "With an intense ritual that resembles crossfit, you manage to put some of your pain at bay.", + "valid_targets": [ "self" ], + "min_damage": 10, + "max_damage": 150, + "damage_increment": 2, + "max_level": 67, + "spell_class": "ANIMIST", + "effect": "recover_energy", + "effect_str": "PAIN", + "energy_source": "STAMINA", + "base_casting_time": 50000, + "base_energy_cost": 5000, + "energy_increment": 500, + "flags": [ "SOMATIC", "VERBAL", "PAIN_NORESIST", "NO_EXPLOSION_VFX" ], + "final_energy_cost": 15000 + }, + { + "id": "summon_zombie", + "type": "SPELL", + "name": { "str": "Summon Zombie" }, + "description": "An ethereal-looking zombie rises from the depths of the earth to fight for you. You may be able to summon more with a higher level in this spell.", + "valid_targets": [ "ground" ], + "min_damage": 1, + "max_damage": 5, + "//": "level 20 will max out your number of summons", + "damage_increment": 0.1, + "max_level": 45, + "difficulty": 2, + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_summoned_zombie", + "energy_source": "HP", + "base_energy_cost": 6, + "//2": "one minute", + "base_casting_time": 6000, + "min_range": 3, + "max_range": 3, + "min_aoe": 2, + "max_aoe": 2, + "flags": [ "SOMATIC", "NO_HANDS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "min_duration": 240000, + "max_duration": 420000, + "duration_increment": 4000 + }, + { + "id": "summon_skeleton", + "type": "SPELL", + "name": { "str": "Summon Skeleton" }, + "description": "A ghostly skeleton rises from the depths of the earth to fight for you. You may be able to summon more with a higher level in this spell.", + "valid_targets": [ "ground" ], + "min_damage": 1, + "max_damage": 5, + "//": "level 20 will max out your number of summons", + "damage_increment": 0.1, + "max_level": 45, + "difficulty": 5, + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_summoned_skeleton", + "energy_source": "HP", + "base_energy_cost": 14, + "//2": "one minute", + "base_casting_time": 6000, + "min_range": 3, + "max_range": 3, + "min_aoe": 2, + "max_aoe": 2, + "flags": [ "SOMATIC", "NO_HANDS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "min_duration": 240000, + "max_duration": 420000, + "duration_increment": 4000 + }, + { + "id": "summon_decayed_pouncer", + "type": "SPELL", + "name": { "str": "Summon Decayed Pouncer" }, + "description": "A decrepit looking large cat rises from the depths of the earth to fight for you. You may be able to summon more with a higher level in this spell.", + "valid_targets": [ "ground" ], + "min_damage": 1, + "max_damage": 5, + "//": "level 20 will max out your number of summons", + "damage_increment": 0.1, + "max_level": 45, + "difficulty": 12, + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_summoned_zougar", + "energy_source": "HP", + "base_energy_cost": 30, + "//2": "one minute", + "base_casting_time": 6000, + "min_range": 3, + "max_range": 3, + "min_aoe": 2, + "max_aoe": 2, + "flags": [ "SOMATIC", "NO_HANDS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "min_duration": 240000, + "max_duration": 420000, + "duration_increment": 4000 + }, + { + "id": "necrotic_gaze", + "type": "SPELL", + "name": { "str": "Necrotic Gaze" }, + "description": "You use the power of your own blood to imbue necrotic energy into your gaze, damaging the target you look at.", + "valid_targets": [ "hostile" ], + "effect": "target_attack", + "spell_class": "ANIMIST", + "energy_source": "HP", + "flags": [ "NO_LEGS", "NO_HANDS", "CONCENTRATE", "SOMATIC" ], + "min_damage": 60, + "max_damage": 180, + "damage_increment": 6, + "min_range": 5, + "max_range": 15, + "range_increment": 0.5, + "max_level": 20, + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 2, + "damage_type": "bio" + }, + { + "id": "create_rune_animist", + "type": "SPELL", + "name": { "str": "Animist Rune" }, + "description": "This ritual creates a small pebble attuned to Animists. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_animist", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "ANIMIST", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "summon_wisps", + "type": "SPELL", + "name": { "str": "Ignus Fatuus" }, + "description": "Summons ghostly foxfire worked from living marsh vapor, to lead your enemies astray. With more experience, this spell can conjure multiple ghost lights.", + "valid_targets": [ "ground" ], + "effect": "summon", + "effect_str": "mon_wisp", + "flags": [ "LOUD", "SOMATIC", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "energy_source": "MANA", + "spell_class": "ANIMIST", + "difficulty": 2, + "base_casting_time": 250, + "base_energy_cost": 300, + "max_level": 37, + "min_damage": 5, + "max_damage": 17, + "damage_increment": 0.28, + "min_aoe": 3, + "max_aoe": 3, + "min_range": 6, + "max_range": 14, + "range_increment": 0.16, + "min_duration": 50000, + "max_duration": 129550, + "duration_increment": 2150 + }, + { + "id": "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.", + "effect": "spawn_item", + "effect_str": "decaying_boneclub", + "valid_targets": [ "self" ], + "flags": [ "SOMATIC", "CONCENTRATE", "VERBAL", "NO_HANDS" ], + "components": "spell_components_decayingboneclub", + "max_level": 15, + "min_damage": 1, + "max_damage": 1, + "min_duration": 52500, + "max_duration": 142500, + "duration_increment": 6000, + "spell_class": "ANIMIST", + "base_casting_time": 400, + "base_energy_cost": 6, + "energy_source": "HP", + "difficulty": 6 + } +] diff --git a/data/mods/Magical_Nights/Spells/biomancer.json b/data/mods/Magical_Nights/Spells/biomancer.json new file mode 100644 index 000000000000..2c497783c0d4 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/biomancer.json @@ -0,0 +1,372 @@ +[ + { + "id": "light_healing", + "type": "SPELL", + "name": { "str": "Cure Light Wounds" }, + "description": "Heals a little bit of damage on the target.", + "valid_targets": [ "self", "ally" ], + "min_damage": -8, + "max_damage": -30, + "damage_increment": -1, + "max_level": 22, + "min_range": 9, + "max_range": 17, + "range_increment": 0.75, + "effect": "target_attack", + "base_casting_time": 300, + "base_energy_cost": 800, + "flags": [ "SOMATIC", "NO_LEGS" ], + "spell_class": "BIOMANCER", + "difficulty": 2, + "energy_source": "MANA" + }, + { + "id": "pain_split", + "type": "SPELL", + "name": { "str": "Pain Split" }, + "description": "Evens out damage among your limbs.", + "valid_targets": [ "self" ], + "effect": "pain_split", + "base_casting_time": 100, + "base_energy_cost": 800, + "energy_source": "MANA", + "flags": [ "SOMATIC", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "spell_class": "BIOMANCER", + "difficulty": 4, + "max_level": 1 + }, + { + "id": "vicious_tentacle", + "type": "SPELL", + "name": { "str": "Vicious Tentacle" }, + "description": "This spell extrudes a long nasty whiplike tentacle of sharp bones and oozing acid from your body, it has a long reach attack and vicious damage.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "tentacle_whip", + "base_casting_time": 250, + "base_energy_cost": 550, + "min_duration": 750000, + "max_duration": 1650000, + "duration_increment": 30000, + "difficulty": 6, + "max_level": 30, + "flags": [ "SOMATIC", "LOUD", "NO_EXPLOSION_VFX" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA" + }, + { + "id": "bio_grotesque", + "type": "SPELL", + "name": { "str": "Grotesque Enhancement" }, + "description": "A spell that warps your body in alien ways to increase your physical abilities and strength.", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "bio_boost", + "base_casting_time": 200, + "base_energy_cost": 150, + "energy_source": "MANA", + "spell_class": "BIOMANCER", + "difficulty": 6, + "max_level": 30, + "flags": [ "SOMATIC", "LOUD", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "//": "duration is in moves", + "min_duration": 150000, + "max_duration": 240000, + "duration_increment": 3000 + }, + { + "id": "bio_acidicspray", + "type": "SPELL", + "name": { "str": "Acidic Spray" }, + "description": "When cast, the mage opens his mouth and sprays acid in a wide cone to dissolve his foes into goo. Just imagine what he'll do with the goo.", + "valid_targets": [ "ally", "hostile", "ground" ], + "effect": "cone_attack", + "effect_str": "bio_acidburn", + "base_casting_time": 200, + "base_energy_cost": 200, + "energy_source": "MANA", + "spell_class": "BIOMANCER", + "difficulty": 2, + "max_level": 30, + "min_damage": 19, + "max_damage": 139, + "damage_increment": 4, + "damage_type": "acid", + "min_range": 5, + "max_range": 10, + "flags": [ "VERBAL", "NO_HANDS", "NO_LEGS" ], + "range_increment": 0.25, + "min_aoe": 62, + "max_aoe": 127, + "aoe_increment": 5 + }, + { + "id": "bio_fleshpouch", + "type": "SPELL", + "name": { "str": "Flesh Pouch" }, + "description": "This spell grows a large pouch out of your skin on your back, allowing you to store your gear in it.", + "valid_targets": [ "none" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "fleshpouch", + "base_casting_time": 250, + "base_energy_cost": 300, + "min_duration": 2850000, + "max_duration": 7350000, + "duration_increment": 150000, + "difficulty": 4, + "max_level": 30, + "flags": [ "NO_HANDS", "NO_LEGS", "SOMATIC", "NO_EXPLOSION_VFX" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA" + }, + { + "id": "bio_bonespear", + "type": "SPELL", + "name": { "str": "Conjure Bonespear" }, + "description": "This spell creates a long shaft of bone with a wicked point and blades along its length.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "bonespear", + "base_casting_time": 300, + "base_energy_cost": 350, + "min_duration": 750000, + "max_duration": 1650000, + "duration_increment": 30000, + "difficulty": 14, + "max_level": 30, + "flags": [ "LOUD", "SOMATIC", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA" + }, + { + "id": "create_rune_biomancer", + "type": "SPELL", + "name": { "str": "Biomancer Rune" }, + "description": "This ritual creates a small pebble attuned to Biomancers. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_biomancer", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "BIOMANCER", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "biomancer_paralytic_dart", + "type": "SPELL", + "name": { "str": "Paralytic Dart" }, + "description": "Spits a warped needle of sinew and bone, carrying with it a sting that slows your victim.", + "valid_targets": [ "ally", "hostile" ], + "effect": "projectile_attack", + "effect_str": "biomancer_dart_venom", + "flags": [ "VERBAL", "NO_HANDS", "NO_LEGS" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 80, + "max_level": 22, + "min_damage": 13, + "max_damage": 51, + "damage_increment": 1.6, + "damage_type": "stab", + "min_range": 5, + "max_range": 15, + "range_increment": 0.4, + "min_duration": 9120, + "max_duration": 25920, + "duration_increment": 720 + }, + { + "id": "biomancer_visceral_projection", + "type": "SPELL", + "name": { "str": "Visceral Projection" }, + "description": "Projects a spray of acrid blood and gore all around you, growing to ensnare your prey in in a field of twitching poisonous tendrils.", + "sprite": "fd_gibs_flesh", + "valid_targets": [ "ally", "hostile", "ground" ], + "effect": "target_attack", + "effect_str": "badpoison", + "extra_effects": [ { "id": "biomancer_visceral_paralyze" }, { "id": "biomancer_visceral_backlash", "hit_self": true } ], + "flags": [ "VERBAL", "NO_HANDS", "NO_LEGS" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 150, + "max_level": 30, + "min_damage": 5, + "max_damage": 19, + "damage_increment": 0.45, + "damage_type": "bio", + "min_aoe": 3, + "max_aoe": 10, + "aoe_increment": 0.2, + "field_id": "fd_blood", + "field_chance": 1, + "min_field_intensity": 3, + "max_field_intensity": 5, + "field_intensity_increment": 0.1 + }, + { + "id": "biomancer_visceral_paralyze", + "type": "SPELL", + "name": { "str": "Visceral Paralysis" }, + "description": "Paralytic side effect of Projection.", + "valid_targets": [ "ally", "hostile" ], + "effect": "target_attack", + "effect_str": "biomancer_dart_venom", + "flags": [ "SILENT", "NO_EXPLOSION_VFX" ], + "max_level": 30, + "min_aoe": 3, + "max_aoe": 10, + "aoe_increment": 0.2, + "min_duration": 12750, + "max_duration": 33750, + "duration_increment": 450, + "field_id": "fd_gibs_flesh", + "field_chance": 1, + "min_field_intensity": 3, + "max_field_intensity": 5, + "field_intensity_increment": 0.1 + }, + { + "id": "biomancer_visceral_backlash", + "type": "SPELL", + "name": { "str": "Visceral Backlash" }, + "description": "Hits the user with side effects too.", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "biomancer_visceral_side_effects", + "flags": [ "VERBAL", "NO_EXPLOSION_VFX" ], + "min_duration": 600, + "max_duration": 600 + }, + { + "id": "biomancer_coagulant_weave", + "type": "SPELL", + "name": { "str": "Coagulant Weave" }, + "description": "Turns your biological mastery inwards, medically enhancing your flesh. Rather than strength of healing, it staves off blood loss and purges wounds before they can turn septic, at the cost of increased hunger and thirst.", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "bio_weave", + "flags": [ "SOMATIC", "NO_EXPLOSION_VFX", "NO_HANDS", "NO_LEGS" ], + "energy_source": "MANA", + "spell_class": "BIOMANCER", + "difficulty": 5, + "base_casting_time": 400, + "base_energy_cost": 150, + "max_level": 30, + "min_duration": 105000, + "max_duration": 195000, + "duration_increment": 3000 + }, + { + "id": "bio_create_acid", + "type": "SPELL", + "name": { "str": "Create Hydrochloric Acid" }, + "description": "Produces usable hydrochloric acid (aka muriatc acid) using magic.", + "valid_targets": [ "self" ], + "effect": "spawn_item", + "effect_str": "chem_muriatic_acid", + "flags": [ "SOMATIC", "PERMANENT", "NO_LEGS" ], + "energy_source": "MANA", + "spell_class": "BIOMANCER", + "difficulty": 4, + "base_casting_time": 25000, + "base_energy_cost": 300, + "min_damage": 1, + "max_damage": 1 + }, + { + "id": "acid_bolt", + "type": "SPELL", + "name": { "str": "Acid Bolt" }, + "description": "An acid bolt that only damages your foes.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "NO_LEGS" ], + "min_damage": 45, + "damage_increment": 1, + "damage_type": "acid", + "max_damage": 65, + "min_range": 10, + "range_increment": 0.5, + "max_range": 20, + "base_energy_cost": 150, + "spell_class": "BIOMANCER", + "difficulty": 4, + "max_level": 20, + "base_casting_time": 200, + "energy_source": "MANA", + "effect": "projectile_attack", + "effect_str": "bio_acidburn" + }, + { + "id": "acid_bomb", + "type": "SPELL", + "name": { "str": "Acid Bomb" }, + "description": "An acid bomb that spreads caustic acid pools around its blast radius.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS" ], + "min_damage": 50, + "damage_increment": 2, + "damage_type": "acid", + "max_damage": 110, + "min_range": 5, + "range_increment": 0.5, + "max_range": 15, + "base_energy_cost": 400, + "spell_class": "BIOMANCER", + "difficulty": 8, + "max_level": 30, + "base_casting_time": 200, + "energy_source": "MANA", + "effect": "projectile_attack", + "effect_str": "bio_acidburn", + "min_aoe": 2, + "max_aoe": 5, + "aoe_increment": 0.1, + "field_id": "fd_acid", + "min_field_intensity": 1, + "max_field_intensity": 2 + }, + { + "id": "acid_storm", + "type": "SPELL", + "name": { "str": "Acid Storm" }, + "description": "Several acid spheres fire from your finger tips to strike the target.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "flags": [ "CONCENTRATE", "SOMATIC", "NO_LEGS" ], + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.05, + "max_level": 52, + "min_damage": 41, + "max_damage": 249, + "min_range": 8, + "max_range": 14, + "range_increment": 0.1, + "damage_increment": 4, + "difficulty": 20, + "spell_class": "BIOMANCER", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 300, + "damage_type": "acid", + "effect": "projectile_attack", + "extra_effects": [ { "id": "acid_bomb" }, { "id": "acid_bomb" }, { "id": "acid_bomb" } ] + } +] diff --git a/data/mods/Magical_Nights/Spells/classless.json b/data/mods/Magical_Nights/Spells/classless.json new file mode 100644 index 000000000000..930a9b465c29 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/classless.json @@ -0,0 +1,281 @@ +[ + { + "id": "crystallize_mana", + "type": "SPELL", + "name": { "str": "Crystallize Mana" }, + "description": "Crystallizes mana into solid form", + "valid_targets": [ "self" ], + "spell_class": "NONE", + "flags": [ "PERMANENT", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "difficulty": 3, + "min_damage": 1, + "max_damage": 1, + "duration_increment": 1, + "effect": "spawn_item", + "effect_str": "crystallized_mana", + "energy_source": "MANA", + "base_energy_cost": 1000, + "final_energy_cost": 1000, + "base_casting_time": 720000, + "final_casting_time": 720000, + "extra_effects": [ { "id": "mana_fatigue" } ] + }, + { + "id": "mana_fatigue", + "type": "SPELL", + "name": { "str": "Mana Fatigue" }, + "description": "Secondary effect of Crystallize Mana", + "valid_targets": [ "self" ], + "flags": [ "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "mana_fatigue", + "max_level": 1, + "min_duration": 6000, + "max_duration": 6000, + "//": "actual fatigue gained is 1/100th duration, at 6000 you get 60 fatigue." + }, + { + "id": "dark_sight", + "type": "SPELL", + "name": { "str": "Dark Sight" }, + "description": "Gives you the power to see in the dark", + "message": "Your eyes glow green for a moment. Now your sight can pierce the darkest shadows.", + "valid_targets": [ "self" ], + "flags": [ "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "dark_sight", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 500, + "energy_source": "MANA", + "difficulty": 6, + "max_level": 30, + "min_duration": 1300000, + "max_duration": 1900000, + "duration_increment": 20000 + }, + { + "id": "megablast", + "type": "SPELL", + "name": { "str": "Megablast" }, + "description": "You always wanted to fire energy beams like in the animes you watched as a kid. Now you can!", + "valid_targets": [ "ally", "hostile", "ground" ], + "effect": "line_attack", + "damage_type": "fire", + "base_casting_time": 200, + "base_energy_cost": 8000, + "energy_source": "STAMINA", + "spell_class": "NONE", + "flags": [ "LOUD", "SOMATIC" ], + "difficulty": 10, + "max_level": 30, + "min_damage": 57, + "max_damage": 177, + "damage_increment": 3.5, + "min_range": 7, + "max_range": 22, + "range_increment": 0.45, + "min_aoe": 2, + "max_aoe": 9, + "aoe_increment": 0.2 + }, + { + "id": "create_atomic_light", + "type": "SPELL", + "name": { "str": "Magical Light" }, + "description": "Creates a magical light.", + "valid_targets": [ "none" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "magic_light", + "energy_source": "MANA", + "flags": [ "VERBAL", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX", "PERMANENT" ], + "difficulty": 1, + "base_casting_time": 1000, + "base_energy_cost": 200, + "duration_increment": 42 + }, + { + "id": "blinding_flash", + "type": "SPELL", + "name": { "str": "Blinding Flash" }, + "description": "Blind enemies for a short time with a sudden, dazzling light. Higher levels deal slightly higher damage.", + "effect": "target_attack", + "effect_str": "blind", + "affected_body_parts": [ "eyes" ], + "valid_targets": [ "hostile" ], + "max_level": 30, + "min_damage": 5, + "max_damage": 19, + "damage_increment": 0.5, + "min_aoe": 1, + "max_aoe": 6, + "aoe_increment": 0.15, + "min_range": 8, + "max_range": 28, + "range_increment": 0.6, + "min_duration": 2500, + "max_duration": 6000, + "duration_increment": 100, + "spell_class": "NONE", + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "base_casting_time": 200, + "base_energy_cost": 150, + "energy_source": "MANA", + "difficulty": 3, + "damage_type": "none" + }, + { + "id": "ethereal_grasp", + "type": "SPELL", + "name": { "str": "Ethereal Grasp" }, + "description": "A mass of spectral hands emerge from the ground, slowing everything in range. Higher levels allow a bigger AoE, and longer effect.", + "effect": "target_attack", + "effect_str": "effect_ethereal_grasp", + "affected_body_parts": [ "foot_l", "foot_r" ], + "valid_targets": [ "hostile" ], + "max_level": 30, + "min_damage": 17, + "max_damage": 52, + "damage_increment": 1, + "min_aoe": 6, + "max_aoe": 34, + "aoe_increment": 0.5, + "min_range": 20, + "max_range": 45, + "range_increment": 2, + "min_duration": 4000, + "max_duration": 10500, + "duration_increment": 200, + "spell_class": "NONE", + "flags": [ "SOMATIC", "NO_HANDS" ], + "base_casting_time": 200, + "base_energy_cost": 400, + "energy_source": "MANA", + "difficulty": 3, + "damage_type": "bash" + }, + { + "id": "obfuscated_body", + "type": "SPELL", + "name": { "str": "Obfuscated Body" }, + "description": "A magical aura distorts light around your body, increasing the amount of attacks you might dodge in a given turn.", + "valid_targets": [ "self" ], + "effect": "spawn_item", + "effect_str": "obfuscating_aura", + "energy_source": "MANA", + "spell_class": "NONE", + "flags": [ "CONCENTRATE", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "difficulty": 4, + "max_level": 22, + "base_casting_time": 200, + "base_energy_cost": 400, + "min_duration": 705000, + "max_duration": 1695000, + "duration_increment": 45000 + }, + { + "id": "protection_aura", + "type": "SPELL", + "name": { "str": "Aura of Protection" }, + "description": "Encases your whole body in a magical aura that protects you from the environment.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "protect_env", + "energy_source": "MANA", + "difficulty": 1, + "max_level": 30, + "flags": [ "CONCENTRATE", "VERBAL", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "base_casting_time": 350, + "base_energy_cost": 375, + "min_duration": 550000, + "max_duration": 1450000, + "duration_increment": 30000 + }, + { + "id": "translocate_self", + "type": "SPELL", + "name": { "str": "Translocate Self" }, + "description": "Translocates the user to an attuned gate.", + "valid_targets": [ "self" ], + "effect": "translocate", + "difficulty": 15, + "max_level": 35, + "base_casting_time": 6000, + "base_energy_cost": 675, + "energy_source": "MANA", + "spell_class": "NONE" + }, + { + "id": "acid_resistance", + "type": "SPELL", + "name": { "str": "Acid Resistance" }, + "description": "Protects the user from acid.", + "valid_targets": [ "none" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "acid_res_aura", + "energy_source": "MANA", + "spell_class": "NONE", + "flags": [ "CONCENTRATE", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "difficulty": 4, + "max_level": 22, + "base_casting_time": 200, + "base_energy_cost": 150, + "min_duration": 2864000, + "max_duration": 6912000, + "duration_increment": 184000, + "learn_spells": { "acid_resistance_greater": 15 } + }, + { + "id": "acid_resistance_greater", + "type": "SPELL", + "name": { "str": "Greater Acid Resistance" }, + "description": "Protects the user from acid.", + "valid_targets": [ "none" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "acid_res_aura_greater", + "energy_source": "MANA", + "spell_class": "NONE", + "flags": [ "CONCENTRATE", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "difficulty": 7, + "max_level": 1, + "base_casting_time": 200, + "base_energy_cost": 250, + "min_duration": 1800000 + }, + { + "id": "summon_lemon", + "type": "SPELL", + "name": { "str": "Summon... Lemon?" }, + "description": "While at first this spell may appear to be \"Summon Demon\", in reality it appears to be a spell to summon a lemon. Cursive truly is the bane of your existence.", + "valid_targets": [ "none" ], + "effect": "spawn_item", + "effect_str": "lemon", + "energy_source": "MANA", + "spell_class": "NONE", + "flags": [ "CONCENTRATE", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "difficulty": 3, + "max_level": 10, + "base_casting_time": 250, + "base_energy_cost": 300, + "min_duration": 6000, + "max_duration": 360000, + "duration_increment": 35400, + "min_damage": 1, + "max_damage": 1 + } +] diff --git a/data/mods/Magical_Nights/Spells/debug.json b/data/mods/Magical_Nights/Spells/debug.json new file mode 100644 index 000000000000..a7576fb33988 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/debug.json @@ -0,0 +1,234 @@ +[ + { + "//": "This spell exists in json as a template for contributors to see the possible values of the spell", + "id": "example_template", + "type": "SPELL", + "name": "Template Spell", + "description": "This is a template to show off all the available values", + "message": "As you cast %s, your ears pops!", + "//2": "The 'message' will replace 'You cast %s!' message when you cast this spell", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "//3": "effect is only limited by what is coded.", + "effect": "none", + "//4": "base_casting_time is in moves", + "base_casting_time": 100, + "base_energy_cost": 10, + "//5": "Available energy sourcese are: MANA, STAMINA, HP, BIONIC, NONE", + "energy_source": "MANA", + "difficulty": 12, + "max_level": 10, + "min_damage": 0, + "max_damage": 100, + "damage_increment": 2.5, + "min_aoe": 0, + "max_aoe": 5, + "aoe_increment": 0.1, + "min_range": 1, + "max_range": 10, + "range_increment": 2, + "min_dot": 0, + "max_dot": 2, + "dot_increment": 0.1, + "//6": "duration is in moves", + "min_duration": 0, + "max_duration": 1000, + "duration_increment": 4, + "min_pierce": 0, + "max_pierce": 1, + "pierce_increment": 0.1, + "//7": "Learn spells by adding map of 'spell_id': 'level' ", + "learn_spells": { "create_atomic_light": 1, "megablast": 2 } + }, + { + "id": "spawn_debug_monster", + "type": "SPELL", + "name": "Spawn Debug Monsters", + "description": "Set level to number of monsters spawned.", + "message": "Debug spell %s cast.", + "valid_targets": [ "ground" ], + "effect": "summon", + "effect_str": "debug_mon", + "base_casting_time": 100, + "max_level": 30, + "min_aoe": 10, + "max_aoe": 10, + "min_damage": 1, + "max_damage": 30, + "damage_increment": 1, + "min_range": 20, + "max_range": 20, + "min_duration": 1000, + "max_duration": 1000, + "energy_source": "NONE" + }, + { + "id": "debug_stamina", + "type": "SPELL", + "name": "Debug Stamina Spell", + "description": "Uses a little stamina", + "message": "Debug spell [ %s ] has no effect. Debug warning is expected.", + "valid_targets": [ "self" ], + "effect": "none", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "STAMINA" + }, + { + "id": "debug_fatigue", + "type": "SPELL", + "name": "Debug Fatigue Spell", + "description": "Uses a little fatigue", + "message": "Debug spell %s cast.", + "valid_targets": [ "self" ], + "effect": "none", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "FATIGUE" + }, + { + "id": "debug_hp", + "type": "SPELL", + "name": "Debug HP Spell", + "description": "Uses a little HP", + "message": "Debug spell %s cast.", + "valid_targets": [ "self" ], + "effect": "none", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 30, + "energy_source": "HP" + }, + { + "id": "debug_bionic", + "type": "SPELL", + "name": "Debug Bionic Spell", + "description": "Uses a little Bionic Power", + "message": "Debug spell %s cast.", + "valid_targets": [ "self" ], + "effect": "none", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 150, + "energy_source": "BIONIC" + }, + { + "id": "debug_effect", + "type": "SPELL", + "name": "Debug effect spell", + "description": "Adds an effect to the target", + "message": "Debug spell %s cast.", + "valid_targets": [ "self", "hostile", "ally" ], + "effect": "target_attack", + "effect_str": "dazed", + "min_range": 12, + "max_range": 12, + "base_casting_time": 100, + "base_energy_cost": 150, + "min_duration": 500, + "max_duration": 500, + "energy_source": "MANA" + }, + { + "id": "test_area_pull_all", + "type": "SPELL", + "name": "Test Area Pull", + "description": "Pulls all objects inside.", + "message": "Debug spell %s cast.", + "effect": "area_pull", + "effect_filter": [ "ally", "hostile", "item", "fd_fire", "fd_blood" ], + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "min_range": 5, + "max_range": 15, + "range_increment": 2.5, + "min_aoe": 3, + "max_aoe": 10, + "aoe_increment": 1, + "max_level": 20, + "difficulty": 1, + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "test_area_pull_field", + "type": "SPELL", + "name": "Test Area Pull (Field)", + "description": "Pulls field contents tiles inside.", + "message": "Debug spell %s cast.", + "effect": "area_pull", + "effect_filter": [ "fd_fire", "fd_blood" ], + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "min_range": 5, + "max_range": 15, + "range_increment": 2.5, + "min_aoe": 3, + "max_aoe": 10, + "aoe_increment": 1, + "max_level": 20, + "difficulty": 1, + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "test_area_push", + "type": "SPELL", + "name": "Test Area Push", + "description": "Pushes all objects outside.", + "message": "Debug spell %s cast.", + "effect": "area_push", + "effect_filter": [ "ally", "hostile", "item" ], + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "min_range": 5, + "max_range": 15, + "range_increment": 2.5, + "min_aoe": 3, + "max_aoe": 10, + "aoe_increment": 1, + "max_level": 20, + "difficulty": 1, + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "debug_full_protection", + "type": "SPELL", + "name": "Debug Full Protection", + "description": "You can not be harmed by anything.", + "message": "You are invulnerable, nothing can harm you!", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "debug_full_protection", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "min_duration": 100000, + "max_duration": 100000 + }, + { + "id": "debug_fall_protection", + "type": "SPELL", + "name": "Debug Feather Falling", + "description": "You are light as a feather and fall like.", + "message": "You eat a feather!", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "debug_feather_fall", + "min_range": 1, + "max_range": 1, + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "min_duration": 400, + "max_duration": 400 + } +] diff --git a/data/mods/Magical_Nights/Spells/dragonbreath.json b/data/mods/Magical_Nights/Spells/dragonbreath.json new file mode 100644 index 000000000000..0d6525cd5d3b --- /dev/null +++ b/data/mods/Magical_Nights/Spells/dragonbreath.json @@ -0,0 +1,24 @@ +[ + { + "type": "SPELL", + "id": "dragon_breath_black", + "name": { "str": "Black Dragons' Breath" }, + "description": "Spews a line of acid from your mouth.", + "valid_targets": [ "hostile", "ally", "ground" ], + "damage_type": "acid", + "max_level": 40, + "min_damage": 6, + "max_damage": 240, + "damage_increment": 6, + "min_range": 8, + "max_range": 12, + "range_increment": 0.1, + "effect": "line_attack", + "field_id": "fd_acid", + "min_field_intensity": 1, + "max_field_intensity": 4, + "field_chance": 2, + "field_intensity_increment": 0.1, + "flags": [ "VERBAL", "NO_HANDS", "NO_LEGS" ] + } +] diff --git a/data/mods/Magical_Nights/Spells/druid.json b/data/mods/Magical_Nights/Spells/druid.json new file mode 100644 index 000000000000..b6c78124167f --- /dev/null +++ b/data/mods/Magical_Nights/Spells/druid.json @@ -0,0 +1,301 @@ +[ + { + "id": "druid_veggrasp", + "type": "SPELL", + "name": { "str": "Vegetative Grasp" }, + "description": "This spell causes roots and vines to burst forth from the ground and grab your foes, slowing them and doing a small amount of damage as they dig in.", + "sprite": "fd_gibs_veggy", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "LOUD", "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "effect": "target_attack", + "effect_str": "entangled", + "spell_class": "DRUID", + "base_casting_time": 100, + "base_energy_cost": 175, + "energy_source": "MANA", + "difficulty": 2, + "max_level": 30, + "min_damage": 8, + "max_damage": 37, + "damage_increment": 1, + "min_aoe": 11, + "max_aoe": 29, + "aoe_increment": 1, + "min_range": 10, + "max_range": 17, + "range_increment": 1, + "min_dot": 1, + "max_dot": 4, + "dot_increment": 0.1, + "min_duration": 8500, + "max_duration": 22500, + "duration_increment": 500, + "min_pierce": 3, + "max_pierce": 10, + "pierce_increment": 0.25, + "damage_type": "stab" + }, + { + "id": "druid_rootstrike", + "type": "SPELL", + "name": { "str": "Root Strike" }, + "description": "This spell causes roots to spear out the ground and stab into your foes in an arc, impaling them.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "LOUD", "SOMATIC", "NO_LEGS" ], + "effect": "cone_attack", + "effect_str": "root_impale", + "spell_class": "DRUID", + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "difficulty": 4, + "max_level": 30, + "min_damage": 17, + "max_damage": 92, + "damage_increment": 2.5, + "min_aoe": 32, + "max_aoe": 72, + "aoe_increment": 1, + "min_range": 8, + "max_range": 19, + "range_increment": 0.5, + "min_dot": 2, + "max_dot": 4, + "dot_increment": 0.1, + "min_duration": 8500, + "max_duration": 22500, + "duration_increment": 500, + "min_pierce": 14, + "max_pierce": 34, + "pierce_increment": 0.5, + "damage_type": "stab" + }, + { + "id": "druid_woodshaft", + "type": "SPELL", + "name": { "str": "Wooden Shaft" }, + "description": "This spell creates a projectile of hardwood that shoots forth from the caster's hand at high speed to stab into an enemy.", + "valid_targets": [ "hostile" ], + "flags": [ "LOUD", "SOMATIC", "NO_LEGS" ], + "effect": "projectile_attack", + "spell_class": "DRUID", + "base_casting_time": 100, + "base_energy_cost": 50, + "energy_source": "MANA", + "difficulty": 1, + "max_level": 30, + "min_damage": 13, + "max_damage": 49, + "damage_increment": 1.5, + "min_range": 10, + "max_range": 27, + "range_increment": 0.75, + "min_pierce": 5, + "max_pierce": 12, + "pierce_increment": 0.5, + "damage_type": "bash" + }, + { + "id": "druid_naturebow1", + "type": "SPELL", + "name": { "str": "Nature's Bow" }, + "description": "This spell conjures a magical wooden recurve bow that fires endless arrows for as long as it lasts.", + "valid_targets": [ "none" ], + "flags": [ "CONCENTRATE", "SOMATIC", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "druid_recurve", + "base_casting_time": 200, + "base_energy_cost": 250, + "min_duration": 250000, + "max_duration": 550000, + "duration_increment": 10000, + "difficulty": 6, + "max_level": 30, + "spell_class": "DRUID", + "energy_source": "MANA" + }, + { + "id": "recover_fatigue", + "type": "SPELL", + "name": { "str": "Nature's Trance" }, + "description": "Your connection to living things allows you to go into a magical trance. This allows you to recover fatige quickly in exchange for mana.", + "valid_targets": [ "self" ], + "flags": [ "CONCENTRATE", "SILENT", "NO_HANDS", "NO_EXPLOSION_VFX", "NO_LEGS" ], + "spell_class": "DRUID", + "energy_source": "MANA", + "effect": "recover_energy", + "effect_str": "FATIGUE", + "base_casting_time": 10000, + "min_damage": 50, + "damage_increment": 10, + "max_damage": 450, + "max_level": 35, + "base_energy_cost": 500, + "energy_increment": 25, + "final_energy_cost": 1685, + "difficulty": 4 + }, + { + "id": "summon_cats", + "type": "SPELL", + "name": { "str": "Bag of Cats" }, + "description": "Are you the crazy cat lady?", + "valid_targets": [ "ground" ], + "flags": [ "LOUD", "SOMATIC", "NO_EXPLOSION_VFX" ], + "min_damage": 1, + "max_damage": 18, + "damage_increment": 1, + "min_range": 17, + "range_increment": 0.8, + "max_range": 24, + "min_aoe": 3, + "max_aoe": 3, + "spell_class": "DRUID", + "base_casting_time": 250, + "energy_source": "MANA", + "max_level": 35, + "min_duration": 235000, + "max_duration": 585000, + "duration_increment": 10000, + "difficulty": 1, + "base_energy_cost": 265, + "effect": "summon", + "effect_str": "mon_cat" + }, + { + "id": "summon_bear", + "type": "SPELL", + "name": { "str": "Cause Bear" }, + "description": "This spell appears to be very smudged. You're fairly sure the name should be Cause Fear, but you're also fairly sure it won't have the desired effect because the instructions are hardly legible. No time like the Cataclysm to find out, though!", + "valid_targets": [ "ground" ], + "min_damage": 1, + "max_damage": 1, + "min_range": 6, + "max_range": 11, + "spell_class": "DRUID", + "base_casting_time": 500, + "energy_source": "MANA", + "max_level": 35, + "difficulty": 10, + "min_duration": 255000, + "max_duration": 645000, + "base_energy_cost": 675, + "final_energy_cost": 425, + "energy_increment": -5, + "flags": [ "HOSTILE_50", "CONCENTRATE", "SOMATIC", "VERBAL", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "effect": "summon", + "effect_str": "mon_bear" + }, + { + "id": "fungicide", + "type": "SPELL", + "name": { "str": "Kill Fungus" }, + "description": "Kills fungus affected areas", + "valid_targets": [ "ground", "hostile" ], + "effect": "ter_transform", + "effect_str": "fungicide", + "min_aoe": 20, + "max_aoe": 50, + "aoe_increment": 1, + "max_level": 30, + "difficulty": 4, + "energy_source": "MANA", + "base_energy_cost": 175, + "base_casting_time": 550, + "flags": [ "CONCENTRATE", "SOMATIC", "NO_LEGS", "NO_HANDS" ] + }, + { + "id": "create_rune_druid", + "type": "SPELL", + "name": { "str": "Druid Rune" }, + "description": "This ritual creates a small pebble attuned to Druids. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_druid", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "DRUID", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "purify_seed", + "type": "SPELL", + "name": { "str": "Purification Seed" }, + "description": "You summon a gift of the earth which will purify water. Rapidly degrades if not utilized.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "druid_seed", + "base_casting_time": 30000, + "final_casting_time": 6000, + "casting_time_increment": -1200, + "base_energy_cost": 1000, + "final_energy_cost": 1000, + "min_duration": 6000, + "max_duration": 6000, + "difficulty": 6, + "max_level": 20, + "spell_class": "DRUID", + "energy_source": "MANA", + "flags": [ "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ] + }, + { + "id": "druidic_regrowth", + "type": "SPELL", + "name": { "str": "Sacrificial Regrowth" }, + "description": "Through giving of one's own life force, you restore withered and barren plant life nearby. What remains will need time to regrow its full strength.", + "valid_targets": [ "ground" ], + "effect": "ter_transform", + "effect_str": "druidic_renewal", + "flags": [ "CONCENTRATE", "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "spell_class": "DRUID", + "energy_source": "HP", + "difficulty": 6, + "base_casting_time": 600, + "base_energy_cost": 25, + "max_level": 30, + "min_aoe": 4, + "max_aoe": 11, + "aoe_increment": 0.2, + "min_range": 8, + "max_range": 14, + "range_increment": 0.3 + }, + { + "id": "druidic_healing", + "type": "SPELL", + "name": { "str": "Sacrificial Healing" }, + "description": "Channels some of the user's own life force into healing energy, for the sake of ones allies.", + "valid_targets": [ "ally" ], + "effect": "target_attack", + "flags": [ "CONCENTRATE", "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "spell_class": "DRUID", + "energy_source": "HP", + "difficulty": 5, + "base_casting_time": 400, + "base_energy_cost": 35, + "final_energy_cost": 10, + "energy_increment": -1.5, + "max_level": 15, + "min_damage": -4, + "max_damage": -18, + "damage_increment": -0.8, + "min_aoe": 0, + "max_aoe": 3, + "aoe_increment": 0.2, + "min_range": 2, + "max_range": 6, + "range_increment": 0.2 + } +] diff --git a/data/mods/Magical_Nights/Spells/earthshaper.json b/data/mods/Magical_Nights/Spells/earthshaper.json new file mode 100644 index 000000000000..566b5f546a63 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/earthshaper.json @@ -0,0 +1,390 @@ +[ + { + "id": "stonefist", + "type": "SPELL", + "name": { "str": "Stonefist" }, + "description": "Encases your arms and hands in a sheath of magical stone, you can punch and defend yourself with it in melee combat.", + "valid_targets": [ "self" ], + "flags": [ "SOMATIC", "LOUD", "NO_EXPLOSION_VFX", "NO_LEGS" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "stonefist", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 2, + "max_level": 30, + "base_casting_time": 200, + "base_energy_cost": 100, + "min_duration": 400000, + "max_duration": 1000000, + "duration_increment": 20000 + }, + { + "id": "seismic_stomp", + "type": "SPELL", + "name": { "str": "Seismic Stomp" }, + "description": "Focusing mana into your leg, you stomp your foot and send out a shockwave, knocking enemies around you onto the ground.", + "sprite": "fd_rubble", + "effect": "target_attack", + "effect_str": "downed", + "valid_targets": [ "hostile", "ground", "none" ], + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ], + "max_level": 15, + "min_damage": 5, + "max_damage": 18, + "damage_increment": 0.8, + "min_aoe": 7, + "max_aoe": 22, + "aoe_increment": 1, + "min_duration": 4750, + "max_duration": 12750, + "duration_increment": 500, + "spell_class": "EARTHSHAPER", + "base_casting_time": 100, + "base_energy_cost": 250, + "energy_source": "MANA", + "difficulty": 2, + "damage_type": "bash" + }, + { + "id": "recover_stamina", + "type": "SPELL", + "name": { "str": "Stone's Endurance" }, + "description": "You focus on the stones beneath you and draw from their agelessness. Your mana is converted to stamina.", + "effect": "recover_energy", + "effect_str": "STAMINA", + "valid_targets": [ "self" ], + "flags": [ "NO_HANDS", "CONCENTRATE", "SILENT", "NO_EXPLOSION_VFX", "SOMATIC" ], + "min_damage": 1500, + "max_damage": 15000, + "damage_increment": 750, + "max_level": 18, + "spell_class": "EARTHSHAPER", + "base_casting_time": 500, + "final_casting_time": 198, + "casting_time_increment": -17, + "energy_source": "MANA", + "base_energy_cost": 150, + "energy_increment": 75, + "final_energy_cost": 1500, + "difficulty": 5 + }, + { + "id": "eshaper_shardspray", + "type": "SPELL", + "name": { "str": "Shardspray" }, + "description": "This spell projects a wide spray of sharp metal shards, cutting into your foes and friends alike.", + "valid_targets": [ "hostile", "ground", "ally" ], + "flags": [ "SOMATIC", "LOUD", "NO_LEGS", "NO_HANDS" ], + "effect": "cone_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 100, + "max_level": 30, + "min_damage": 24, + "max_damage": 99, + "damage_increment": 2.5, + "damage_type": "cut", + "min_aoe": 62, + "max_aoe": 127, + "aoe_increment": 5, + "min_range": 6, + "max_range": 18, + "range_increment": 0.5, + "min_pierce": 3, + "max_pierce": 11, + "pierce_increment": 0.4 + }, + { + "id": "eshaper_piercing_bolt", + "type": "SPELL", + "name": { "str": "Piercing Bolt" }, + "description": "This spell projects a piercing rod of conjured iron at those that dare oppose you.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "LOUD", "NO_LEGS" ], + "effect": "projectile_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 115, + "difficulty": 2, + "max_level": 30, + "min_damage": 42, + "max_damage": 97, + "damage_increment": 3, + "damage_type": "stab", + "min_range": 19, + "max_range": 50, + "range_increment": 1.5 + }, + { + "id": "eshaper_shardstorm", + "type": "SPELL", + "name": { "str": "Shardstorm" }, + "description": "Creates an omnidirectional spray of razor sharp metal shards all around you.", + "valid_targets": [ "hostile", "ally", "ground" ], + "flags": [ "SOMATIC", "LOUD", "NO_HANDS", "NO_LEGS" ], + "min_damage": 17, + "max_damage": 92, + "damage_increment": 2.5, + "damage_type": "cut", + "min_aoe": 3, + "max_aoe": 11, + "aoe_increment": 0.25, + "base_energy_cost": 200, + "spell_class": "EARTHSHAPER", + "difficulty": 4, + "max_level": 30, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "target_attack" + }, + { + "id": "eshaper_rockbolt", + "type": "SPELL", + "name": { "str": "Rockbolt" }, + "description": "Fires a conjured stone projectile at high velocity.", + "valid_targets": [ "hostile", "ally" ], + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ], + "min_damage": 17, + "damage_increment": 1.5, + "damage_type": "bash", + "max_damage": 51, + "min_range": 9, + "range_increment": 0.5, + "max_range": 27, + "base_energy_cost": 50, + "spell_class": "EARTHSHAPER", + "difficulty": 1, + "max_level": 30, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "projectile_attack" + }, + { + "id": "move_earth", + "type": "SPELL", + "name": { "str": "Move Earth" }, + "description": "Your essense flows around you, and the earth follows.", + "valid_targets": [ "hostile", "ally", "ground", "self" ], + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ], + "min_aoe": 1, + "max_aoe": 2, + "min_damage": 100, + "max_damage": 1, + "damage_increment": -5, + "aoe_increment": 0.25, + "base_energy_cost": 200, + "spell_class": "EARTHSHAPER", + "difficulty": 4, + "max_level": 20, + "min_range": 5, + "max_range": 5, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "ter_transform", + "effect_str": "move_earth" + }, + { + "id": "create_rune_earthshaper", + "type": "SPELL", + "name": { "str": "Earthshaper Rune" }, + "description": "This ritual creates a small pebble attuned to Earthshapers. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_earthshaper", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "lava_bomb_shrapnel", + "type": "SPELL", + "name": { "str": "Lava Bomb Shrapnel" }, + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ally", "self", "ground" ], + "flags": [ "NO_EXPLOSION_VFX" ], + "damage_type": "cut", + "max_level": 45, + "min_damage": 27, + "max_damage": 120, + "damage_increment": 2, + "min_aoe": 2, + "max_aoe": 8, + "aoe_increment": 0.1 + }, + { + "id": "lava_bomb_heat", + "type": "SPELL", + "name": { "str": "Lava Bomb Heat" }, + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ally", "self", "ground" ], + "flags": [ "NO_EXPLOSION_VFX" ], + "damage_type": "fire", + "max_level": 45, + "min_damage": 36, + "max_damage": 161, + "damage_increment": 2.25, + "min_aoe": 4, + "max_aoe": 8, + "aoe_increment": 0.1 + }, + { + "id": "lava_bomb_ter", + "type": "SPELL", + "name": { "str": "Lava Bomb Terrain" }, + "description": "This is a sub spell for the Lava Bomb spell.", + "flags": [ "NO_EXPLOSION_VFX" ], + "effect": "ter_transform", + "effect_str": "lava_bomb", + "max_level": 45, + "min_aoe": 0, + "max_aoe": 3, + "aoe_increment": 0.15, + "valid_targets": [ "hostile", "ally", "self", "ground" ] + }, + { + "id": "lava_bomb_main", + "//": "The main part of the spell that causes all of the side effects.", + "type": "SPELL", + "name": { "str": "Lava Bomb" }, + "description": "You tear up the ground beneath you to fire a lava bomb: a globe of lava surrounded by hot, solid rock. It shatters upon impact, spraying shards of rock and lava everywhere.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ground", "ally" ], + "damage_type": "bash", + "max_level": 45, + "difficulty": 12, + "min_damage": 65, + "max_damage": 255, + "damage_increment": 4, + "min_range": 9, + "max_range": 18, + "range_increment": 0.2, + "base_casting_time": 350, + "base_energy_cost": 1000, + "energy_source": "MANA", + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ], + "extra_effects": [ { "id": "lava_bomb_shrapnel" }, { "id": "lava_bomb_heat" }, { "id": "lava_bomb_ter" } ] + }, + { + "id": "earthshaper_stoneskin", + "type": "SPELL", + "name": { "str": "Stoneskin" }, + "description": "Envelops your entire body in armor formed from living rock, encumbering yet protective.", + "valid_targets": [ "self" ], + "effect": "spawn_item", + "effect_str": "aura_stoneskin", + "flags": [ "SOMATIC", "LOUD", "NO_EXPLOSION_VFX" ], + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 200, + "max_level": 30, + "min_damage": 1, + "max_damage": 1, + "min_duration": 400000, + "max_duration": 1000000, + "duration_increment": 20000 + }, + { + "id": "earthshaper_pillar", + "type": "SPELL", + "name": { "str": "Pillar of Stone" }, + "description": "Drawing upon the surrounding earth, you form a pillar of solid rock. Experience will make the task easier, and less disruptive to the surrounding area.", + "valid_targets": [ "ground" ], + "effect": "ter_transform", + "effect_str": "earthshaper_pillar", + "extra_effects": [ { "id": "earthshaper_pillar_side_effect" } ], + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ], + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 30000, + "final_casting_time": 6000, + "casting_time_increment": -2400, + "base_energy_cost": 500, + "max_level": 10, + "min_range": 5, + "max_range": 8, + "range_increment": 0.3 + }, + { + "id": "earthshaper_pillar_side_effect", + "type": "SPELL", + "name": { "str": "Pillar Side Effect" }, + "description": "Bash effect that follows, levels reduce damage and AoE.", + "valid_targets": [ "ground" ], + "effect": "bash", + "flags": [ "IGNORE_WALLS", "SILENT", "NO_EXPLOSION_VFX" ], + "max_level": 10, + "min_damage": 80, + "max_damage": 20, + "damage_increment": -6, + "min_aoe": 6, + "max_aoe": 1, + "aoe_increment": -0.5 + }, + { + "id": "rock_tomb", + "type": "SPELL", + "name": { "str": "Rock Tomb" }, + "description": "You tear up the ground beneath you to throw a medium boulder. It shatters upon impact, scattering rocks and debris everywhere.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ground", "ally" ], + "damage_type": "bash", + "max_level": 27, + "difficulty": 6, + "min_damage": 51, + "max_damage": 105, + "damage_increment": 2, + "min_range": 9, + "max_range": 18, + "range_increment": 0.3, + "min_aoe": 1, + "max_aoe": 4, + "aoe_increment": 0.5, + "base_casting_time": 300, + "base_energy_cost": 600, + "energy_source": "MANA", + "flags": [ "SOMATIC", "LOUD", "NO_HANDS" ] + }, + { + "id": "meteor", + "type": "SPELL", + "name": { "str": "Meteor" }, + "description": "You summon a small meteorite to fall down on your foes.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ground", "ally" ], + "damage_type": "bash", + "max_level": 50, + "difficulty": 20, + "min_damage": 100, + "max_damage": 600, + "damage_increment": 5, + "min_range": 10, + "max_range": 60, + "range_increment": 1, + "min_aoe": 5, + "max_aoe": 30, + "aoe_increment": 0.5, + "base_casting_time": 1000, + "base_energy_cost": 2000, + "energy_source": "MANA", + "flags": [ "CONCENTRATE", "SOMATIC", "LOUD", "NO_HANDS" ] + } +] diff --git a/data/mods/Magical_Nights/Spells/item_only.json b/data/mods/Magical_Nights/Spells/item_only.json new file mode 100644 index 000000000000..4efb824ec4da --- /dev/null +++ b/data/mods/Magical_Nights/Spells/item_only.json @@ -0,0 +1,108 @@ +[ + { + "id": "twisted_restore", + "type": "SPELL", + "name": { "str": "Twisted Restoration" }, + "//": "Used for potion of Twisted Restoration, not castable", + "description": "This spell overclocks your heart, generating new flesh and muscle. It is unwise to use this in immediate danger, and may be fatal if done in critical condition.", + "valid_targets": [ "self" ], + "flags": [ "SILENT", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "max_level": 1, + "min_damage": 10, + "max_damage": 10, + "damage_increment": 0, + "damage_type": "bio", + "difficulty": 0, + "spell_class": "NONE", + "effect": "target_attack", + "energy_source": "HP", + "base_casting_time": 30000, + "base_energy_cost": 2, + "extra_effects": [ + { "id": "light_healing" }, + { "id": "pain_damage" }, + { "id": "pain_damage" }, + { "id": "stamina_damage" }, + { "id": "stamina_damage" }, + { "id": "stamina_damage" } + ] + }, + { + "id": "twisted_restore_improved", + "type": "SPELL", + "name": { "str": "Improved Twisted Restoration" }, + "//": "Used for Animist-exclusive potion, not castable", + "description": "This spell overclocks your heart, generating new flesh and muscle. It is unwise to use this in immediate danger, and may be fatal if done in critical condition. Improved brewing mitigates the strain of the spell.", + "valid_targets": [ "self" ], + "flags": [ "SILENT", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "max_level": 1, + "min_damage": 8, + "max_damage": 8, + "damage_increment": 0, + "damage_type": "bio", + "difficulty": 0, + "spell_class": "NONE", + "effect": "target_attack", + "energy_source": "HP", + "base_casting_time": 12000, + "base_energy_cost": 2, + "extra_effects": [ { "id": "light_healing" }, { "id": "pain_damage" }, { "id": "stamina_damage" }, { "id": "stamina_damage" } ] + }, + { + "id": "conj_throwing_blade1", + "type": "SPELL", + "name": { "str": "Conjure Throwing Blade I" }, + "description": "conjures 3 throwing knives", + "valid_targets": [ "self" ], + "effect": "spawn_item", + "effect_str": "throwing_knife", + "message": "You activate your ring and three throwing knives appear, ready to throw!", + "spell_class": "NONE", + "flags": [ "NO_EXPLOSION_VFX" ], + "max_level": 1, + "min_damage": 3, + "max_damage": 3, + "min_duration": 1500, + "max_duration": 1500, + "base_casting_time": 20 + }, + { + "id": "potion_recover_mana", + "type": "SPELL", + "name": { "str": "Recover Mana" }, + "description": "You regain mana.", + "valid_targets": [ "self" ], + "min_damage": 250, + "damage_increment": 50, + "max_damage": 3000, + "max_level": 53, + "effect": "recover_energy", + "effect_str": "MANA", + "spell_class": "NONE", + "message": "You start regenerating mana!", + "energy_source": "MANA", + "base_energy_cost": 0, + "energy_increment": 0, + "final_energy_cost": 0, + "flags": [ "SILENT", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "difficulty": 3 + }, + { + "id": "mana_doping", + "type": "SPELL", + "name": { "str": "Pain" }, + "description": "Increases pain", + "valid_targets": [ "self" ], + "flags": [ "SILENT", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "//": "Listed as a recover energy effect with a negative modifier that decreases with each level of the spell, which makes it cause damage instead.", + "min_damage": -25, + "max_damage": -225, + "damage_increment": -50, + "max_level": 10, + "effect": "recover_energy", + "effect_str": "PAIN", + "spell_class": "NONE", + "message": "Your veins feel like they are on fire!\nYou start regenerating mana!", + "extra_effects": [ { "id": "potion_recover_mana" } ] + } +] diff --git a/data/mods/Magical_Nights/Spells/kelvinist.json b/data/mods/Magical_Nights/Spells/kelvinist.json new file mode 100644 index 000000000000..48e7f68d2ffb --- /dev/null +++ b/data/mods/Magical_Nights/Spells/kelvinist.json @@ -0,0 +1,411 @@ +[ + { + "id": "point_flare", + "type": "SPELL", + "name": { "str": "Point Flare" }, + "description": "Causes an intense heat at the location, damaging the target.", + "valid_targets": [ "hostile" ], + "flags": [ "CONCENTRATE", "SOMATIC", "LOUD", "NO_LEGS" ], + "effect": "target_attack", + "damage_type": "fire", + "min_damage": 38, + "damage_increment": 4, + "max_damage": 142, + "min_range": 6, + "range_increment": 0.5, + "max_range": 20, + "base_energy_cost": 75, + "spell_class": "KELVINIST", + "difficulty": 4, + "max_level": 22, + "base_casting_time": 300, + "energy_source": "MANA" + }, + { + "id": "create_lighter", + "type": "SPELL", + "name": { "str": "Finger Firelighter" }, + "description": "Summons a small flame that does not burn you, but you can use it to light things on fire. It seems to need you to have some intent to light things on fire, because you are able to put it in your pocket with no issue.", + "valid_targets": [ "self" ], + "flags": [ "PERMANENT", "NO_LEGS", "CONCENTRATE" ], + "effect": "spawn_item", + "effect_str": "finger_firelighter", + "min_damage": 1, + "max_damage": 1, + "duration_increment": 1, + "spell_class": "KELVINIST", + "energy_source": "MANA", + "base_casting_time": 250, + "base_energy_cost": 65, + "difficulty": 0 + }, + { + "id": "ice_spike", + "type": "SPELL", + "name": { "str": "Ice Spike" }, + "description": "Causes jagged icicles to form in the air above the target, falling and damaging it.", + "valid_targets": [ "hostile" ], + "flags": [ "CONCENTRATE", "SOMATIC", "LOUD", "NO_LEGS" ], + "effect": "target_attack", + "damage_type": "cold", + "min_damage": 57, + "max_damage": 177, + "damage_increment": 3.5, + "min_range": 8, + "max_range": 22, + "range_increment": 0.6, + "max_level": 30, + "difficulty": 6, + "spell_class": "KELVINIST", + "base_casting_time": 200, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "fireball", + "type": "SPELL", + "name": { "str": "Fireball" }, + "description": "You hurl a pea-sized glowing orb that when reaches its target or an obstacle produces a pressure-less blast of searing heat.", + "effect": "projectile_attack", + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS" ], + "max_level": 30, + "min_damage": 20, + "max_damage": 80, + "damage_increment": 2, + "min_aoe": 4, + "max_aoe": 8, + "aoe_increment": 0.1, + "min_range": 13, + "max_range": 37, + "range_increment": 1, + "spell_class": "KELVINIST", + "base_casting_time": 200, + "base_energy_cost": 350, + "energy_source": "MANA", + "difficulty": 4, + "damage_type": "fire" + }, + { + "id": "cone_cold", + "type": "SPELL", + "name": { "str": "Cone of Cold" }, + "description": "You blast a cone of frigid air toward the target.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_HANDS", "NO_LEGS" ], + "max_level": 30, + "min_damage": 20, + "max_damage": 80, + "damage_increment": 2, + "min_aoe": 40, + "max_aoe": 100, + "aoe_increment": 1.4, + "min_range": 13, + "max_range": 37, + "range_increment": 1, + "spell_class": "KELVINIST", + "base_casting_time": 200, + "base_energy_cost": 350, + "energy_source": "MANA", + "difficulty": 4, + "field_id": "fd_cold_air2", + "min_field_intensity": 2, + "max_field_intensity": 6, + "//": "Look, this isn't technically using the same system as the rest of the stat adjustments, but field intensity is something I probably shouldn't fuck with too much.", + "field_intensity_increment": 0.5, + "damage_type": "cold" + }, + { + "id": "burning_hands", + "type": "SPELL", + "name": { "str": "Burning Hands" }, + "description": "You're pretty sure you saw this in a game somewhere. You fire a short-range cone of fire.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_HANDS", "NO_LEGS" ], + "max_level": 30, + "min_damage": 20, + "max_damage": 140, + "damage_increment": 4, + "min_range": 5, + "max_range": 10, + "range_increment": 0.25, + "min_aoe": 62, + "max_aoe": 127, + "aoe_increment": 5, + "spell_class": "KELVINIST", + "base_casting_time": 100, + "base_energy_cost": 150, + "energy_source": "MANA", + "difficulty": 2, + "damage_type": "fire" + }, + { + "id": "frost_spray", + "type": "SPELL", + "name": { "str": "Frost Spray" }, + "description": "You're pretty sure you saw this in a game somewhere. You fire a short-range cone of ice and cold.", + "effect": "cone_attack", + "effect_str": "cold", + "affected_body_parts": [ "torso" ], + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_HANDS", "NO_LEGS" ], + "max_level": 30, + "min_damage": 20, + "max_damage": 140, + "damage_increment": 4, + "min_range": 5, + "max_range": 10, + "range_increment": 0.25, + "min_aoe": 62, + "max_aoe": 127, + "aoe_increment": 5, + "spell_class": "KELVINIST", + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "difficulty": 2, + "damage_type": "cold" + }, + { + "id": "chilling_touch", + "type": "SPELL", + "name": { "str": "Chilling Touch" }, + "description": "Freezes the touched target with intense cold.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "effect": "target_attack", + "effect_str": "cold", + "affected_body_parts": [ "torso" ], + "damage_type": "cold", + "min_damage": 18, + "damage_increment": 4, + "max_damage": 75, + "min_range": 1, + "max_range": 1, + "base_energy_cost": 50, + "spell_class": "KELVINIST", + "difficulty": 1, + "max_level": 15, + "base_casting_time": 100, + "energy_source": "MANA" + }, + { + "id": "glide_ice", + "type": "SPELL", + "name": { "str": "Glide on Ice" }, + "description": "Encases your feet in a magical coating of ice, allowing you to glide along smooth surfaces faster.", + "valid_targets": [ "none" ], + "flags": [ "VERBAL", "NO_HANDS", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "ice_gliders", + "energy_source": "MANA", + "spell_class": "KELVINIST", + "difficulty": 2, + "max_level": 30, + "base_casting_time": 650, + "base_energy_cost": 100, + "min_duration": 400000, + "max_duration": 1000000, + "duration_increment": 20000 + }, + { + "id": "hoary_blast", + "type": "SPELL", + "name": { "str": "Hoary Blast" }, + "description": "You project a glowing white crystal of ice and it explodes on impact into a blossom of shattering cold.", + "effect": "projectile_attack", + "effect_str": "cold", + "affected_body_parts": [ "torso" ], + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS" ], + "max_level": 30, + "min_damage": 20, + "max_damage": 80, + "damage_increment": 2, + "min_aoe": 4, + "max_aoe": 9, + "aoe_increment": 0.1, + "min_range": 13, + "max_range": 37, + "range_increment": 1, + "spell_class": "KELVINIST", + "base_casting_time": 200, + "base_energy_cost": 350, + "energy_source": "MANA", + "difficulty": 4, + "damage_type": "cold" + }, + { + "id": "ice_shield", + "type": "SPELL", + "name": { "str": "Ice Shield" }, + "description": "Creates a magical shield of ice on your arm, you can defend yourself with it in melee combat and use it to bash.", + "valid_targets": [ "none" ], + "flags": [ "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "shield_ice", + "energy_source": "MANA", + "spell_class": "KELVINIST", + "difficulty": 2, + "max_level": 30, + "base_casting_time": 150, + "base_energy_cost": 100, + "min_duration": 550000, + "max_duration": 1450000, + "duration_increment": 30000 + }, + { + "id": "frost_armor", + "type": "SPELL", + "name": { "str": "Frost Armor" }, + "description": "Covers you in a thin layer of magical ice to protect you from harm.", + "valid_targets": [ "self" ], + "flags": [ "NO_LEGS", "CONCENTRATE", "SOMATIC", "NO_EXPLOSION_VFX" ], + "effect": "spawn_item", + "effect_str": "armor_frost", + "affected_body_parts": [ "head", "torso", "leg_l", "leg_r", "arm_r", "arm_l" ], + "energy_source": "MANA", + "spell_class": "KELVINIST", + "difficulty": 3, + "max_level": 30, + "base_casting_time": 200, + "base_energy_cost": 550, + "min_duration": 550000, + "max_duration": 1450000, + "duration_increment": 30000 + }, + { + "id": "create_rune_kelvinist", + "type": "SPELL", + "name": { "str": "Kelvinist Rune" }, + "description": "This ritual creates a small pebble attuned to Kelvinists. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_kelvinist", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "KELVINIST", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "create_flamesword", + "type": "SPELL", + "name": "Flamesword", + "description": "This spell ignites a wooden sword, creating a flaming blade able to burn, bruise, and chop.", + "valid_targets": [ "none" ], + "flags": [ "NO_LEGS", "SOMATIC" ], + "effect": "spawn_item", + "effect_str": "flamesword", + "components": "spell_components_flamesword", + "min_damage": 1, + "max_damage": 1, + "min_duration": 45000, + "max_duration": 105000, + "duration_increment": 6000, + "max_level": 10, + "spell_class": "KELVINIST", + "energy_source": "MANA", + "base_casting_time": 250, + "base_energy_cost": 300, + "difficulty": 4 + }, + { + "id": "flamebreath", + "type": "SPELL", + "name": { "str": "Flamebreath" }, + "description": "This spell ignites dust scattered in the air, creating a cone of flame. The hot ashes can cling to targets, causing additional burns over time.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "CONCENTRATE", "NO_HANDS", "NO_LEGS" ], + "//": "missing flag: IGNITE_FLAMMABLE", + "components": "spell_components_flamebreath", + "max_level": 10, + "min_damage": 20, + "max_damage": 40, + "damage_increment": 2, + "min_dot": 2, + "max_dot": 5, + "dot_increment": 0.3, + "min_duration": 550, + "max_duration": 1150, + "duration_increment": 60, + "min_range": 8, + "max_range": 13, + "range_increment": 0.2, + "min_aoe": 38, + "max_aoe": 53, + "aoe_increment": 5, + "spell_class": "KELVINIST", + "base_casting_time": 100, + "base_energy_cost": 150, + "energy_source": "MANA", + "difficulty": 5, + "damage_type": "fire" + }, + { + "id": "fire_storm", + "type": "SPELL", + "name": { "str": "Fire Storm" }, + "description": "You call the power of the scorching summer to roast the earth. Several fireballs fly from your finger tips to strike the target.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "flags": [ "CONCENTRATE", "LOUD", "SOMATIC", "NO_LEGS" ], + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.05, + "max_level": 52, + "min_damage": 41, + "max_damage": 249, + "min_range": 8, + "max_range": 14, + "range_increment": 0.1, + "damage_increment": 4, + "difficulty": 20, + "spell_class": "KELVINIST", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 300, + "damage_type": "fire", + "effect": "projectile_attack", + "extra_effects": [ { "id": "fireball" }, { "id": "fireball" }, { "id": "fireball" } ] + }, + { + "id": "ice_storm", + "type": "SPELL", + "name": { "str": "Ice Storm" }, + "description": "You call the power of the frigid winter to freeze the earth. Several ice crystals fly from your finger tips to strike the target.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "flags": [ "CONCENTRATE", "LOUD", "SOMATIC", "NO_LEGS" ], + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.05, + "max_level": 52, + "min_damage": 41, + "max_damage": 249, + "min_range": 8, + "max_range": 14, + "range_increment": 0.1, + "damage_increment": 4, + "difficulty": 20, + "spell_class": "KELVINIST", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 300, + "damage_type": "cold", + "effect": "projectile_attack", + "extra_effects": [ { "id": "hoary_blast" }, { "id": "hoary_blast" }, { "id": "hoary_blast" } ] + } +] diff --git a/data/mods/Magical_Nights/Spells/lizardfolk_shaman.json b/data/mods/Magical_Nights/Spells/lizardfolk_shaman.json new file mode 100644 index 000000000000..3138872569dc --- /dev/null +++ b/data/mods/Magical_Nights/Spells/lizardfolk_shaman.json @@ -0,0 +1,41 @@ +[ + { + "type": "SPELL", + "id": "spell_summon_crocodile", + "name": "Summon Crocodile", + "description": "Summons a permanent crocodile.", + "flags": [ "HOSTILE_SUMMON", "PERMANENT", "NO_EXPLOSION_VFX" ], + "valid_targets": [ "ground" ], + "base_casting_time": 200, + "min_damage": 1, + "max_damage": 1, + "min_aoe": 2, + "max_aoe": 2, + "message": "The shaman summons a crocodile!", + "effect": "summon", + "effect_str": "mon_crocodile" + }, + { + "type": "SPELL", + "id": "spell_shaman_base", + "name": "an ancient reptilian spell", + "description": "Causes one of the shaman spells to be cast.", + "valid_targets": [ "hostile", "ground" ], + "effect": "none", + "base_casting_time": 100, + "flags": [ "WONDER", "NO_EXPLOSION_VFX" ], + "min_damage": 1, + "max_damage": 1, + "message": "", + "extra_effects": [ + { "id": "druid_veggrasp" }, + { "id": "druid_veggrasp" }, + { "id": "druid_veggrasp" }, + { "id": "druid_veggrasp" }, + { "id": "light_healing", "hit_self": true }, + { "id": "light_healing", "hit_self": true }, + { "id": "light_healing", "hit_self": true }, + { "id": "spell_summon_crocodile" } + ] + } +] diff --git a/data/mods/Magical_Nights/Spells/magus.json b/data/mods/Magical_Nights/Spells/magus.json new file mode 100644 index 000000000000..98ece8225988 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/magus.json @@ -0,0 +1,278 @@ +[ + { + "id": "magic_missile", + "type": "SPELL", + "name": { "str": "Magic Missile" }, + "description": "I cast Magic Missile at the darkness!", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "NO_LEGS", "SILENT" ], + "min_damage": 10, + "damage_increment": 1.5, + "damage_type": "none", + "max_damage": 39, + "min_range": 13, + "range_increment": 0.8, + "max_range": 35, + "base_energy_cost": 50, + "spell_class": "MAGUS", + "difficulty": 1, + "max_level": 22, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "target_attack" + }, + { + "id": "phase_door", + "type": "SPELL", + "name": { "str": "Phase Door" }, + "description": "Teleports you in a random direction a short distance.", + "effect": "teleport_random", + "valid_targets": [ "none" ], + "flags": [ "SOMATIC", "SILENT", "NO_LEGS", "NO_HANDS" ], + "min_range": 4, + "max_range": 7, + "range_increment": 0.1, + "min_aoe": 4, + "max_aoe": 8, + "aoe_increment": 0.2, + "max_level": 15, + "difficulty": 2, + "spell_class": "MAGUS", + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "gravity_well", + "type": "SPELL", + "name": { "str": "Gravity Well" }, + "description": "Summons a well of gravity with the epicenter at the location. Deals bashing damage to all creatures in the affected area.", + "effect": "target_attack", + "valid_targets": [ "self", "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "CONCENTRATE" ], + "min_damage": 14, + "max_damage": 90, + "damage_increment": 2.5, + "damage_type": "bash", + "min_range": 9, + "max_range": 26, + "range_increment": 0.5, + "min_aoe": 3, + "max_aoe": 11, + "aoe_increment": 0.25, + "max_level": 30, + "difficulty": 8, + "spell_class": "MAGUS", + "base_casting_time": 600, + "energy_source": "MANA", + "base_energy_cost": 350 + }, + { + "id": "magus_mana_blast", + "type": "SPELL", + "name": { "str": "Mana Blast" }, + "description": "A blast of concentrated magical power that obliterates a large area.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "effect": "projectile_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 150, + "base_energy_cost": 200, + "difficulty": 5, + "max_level": 30, + "min_damage": 21, + "max_damage": 111, + "damage_increment": 3, + "damage_type": "none", + "min_aoe": 3, + "max_aoe": 7, + "aoe_increment": 0.25, + "min_range": 12, + "max_range": 37, + "range_increment": 1 + }, + { + "id": "magus_mana_bolt", + "type": "SPELL", + "name": { "str": "Mana Bolt" }, + "description": "A bolt of magical power that only damages your foes.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "NO_LEGS" ], + "effect": "projectile_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 150, + "difficulty": 5, + "max_level": 30, + "min_damage": 57, + "max_damage": 217, + "damage_increment": 5, + "damage_type": "none", + "min_range": 17, + "max_range": 57, + "range_increment": 1.5 + }, + { + "id": "magus_haste", + "type": "SPELL", + "name": { "str": "Haste" }, + "description": "This spell gives you an enormous boost of speed lasting a short period of time.", + "valid_targets": [ "self" ], + "flags": [ "LOUD", "SOMATIC", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "effect": "target_attack", + "effect_str": "haste", + "spell_class": "MAGUS", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 300, + "max_level": 30, + "min_duration": 96000, + "max_duration": 276000, + "duration_increment": 6000 + }, + { + "id": "magus_mana_beam", + "type": "SPELL", + "name": { "str": "Mana Beam" }, + "description": "A beam of focused magical power that damages any foes in its path.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "LOUD" ], + "effect": "line_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 150, + "base_energy_cost": 200, + "difficulty": 4, + "max_level": 30, + "min_damage": 18, + "max_damage": 108, + "damage_increment": 3, + "damage_type": "none", + "min_aoe": 1, + "max_aoe": 1, + "min_range": 12, + "max_range": 37, + "range_increment": 1 + }, + { + "id": "magus_escape", + "type": "SPELL", + "name": { "str": "Escape" }, + "description": "Teleports you in a random direction a medium distance, to help escape your foes in dangerous situations.", + "effect": "teleport_random", + "valid_targets": [ "none" ], + "flags": [ "SOMATIC", "SILENT", "NO_LEGS", "NO_HANDS" ], + "min_aoe": 9, + "max_aoe": 19, + "aoe_increment": 0.25, + "min_range": 33, + "max_range": 60, + "range_increment": 0.5, + "max_level": 30, + "difficulty": 5, + "spell_class": "MAGUS", + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 250 + }, + { + "id": "create_rune_magus", + "type": "SPELL", + "name": { "str": "Magus Rune" }, + "description": "This ritual creates a small pebble attuned to Magi. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_magus", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "MAGUS", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "cats_grace", + "type": "SPELL", + "name": { "str": "Cat's Grace" }, + "description": "You become more graceful, agile, and coordinated.", + "valid_targets": [ "self" ], + "min_duration": 1410000, + "max_duration": 4110000, + "duration_increment": 60000, + "max_level": 45, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "NO_HANDS", "SOMATIC", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "cats_grace" + }, + { + "id": "eagles_sight", + "type": "SPELL", + "name": { "str": "Eagle's Sight" }, + "description": "You gain the perception of an eagle.", + "valid_targets": [ "self" ], + "min_duration": 1410000, + "max_duration": 4110000, + "duration_increment": 60000, + "max_level": 45, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "NO_HANDS", "SOMATIC", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "eagles_sight" + }, + { + "id": "ogres_strength", + "type": "SPELL", + "name": { "str": "Ogre's Strength" }, + "description": "You gain the strength of an ogre.", + "valid_targets": [ "self" ], + "min_duration": 1410000, + "max_duration": 4110000, + "duration_increment": 60000, + "max_level": 45, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "NO_HANDS", "SOMATIC", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "ogres_strength" + }, + { + "id": "foxs_cunning", + "type": "SPELL", + "name": { "str": "Fox's Cunning" }, + "description": "You become wily like a fox.", + "valid_targets": [ "self" ], + "min_duration": 1410000, + "max_duration": 4110000, + "duration_increment": 60000, + "max_level": 45, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "NO_HANDS", "SOMATIC", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "foxs_cunning" + } +] diff --git a/data/mods/Magical_Nights/Spells/manatouched.json b/data/mods/Magical_Nights/Spells/manatouched.json new file mode 100644 index 000000000000..d29e751fc2fa --- /dev/null +++ b/data/mods/Magical_Nights/Spells/manatouched.json @@ -0,0 +1,47 @@ +[ + { + "id": "manatouched_crystal", + "type": "SPELL", + "name": { "str": "Crystallize Mana" }, + "description": "Crystallizes mana into solid form. Your physiological changes have made this spell much more efficient and easier to cast.", + "valid_targets": [ "self" ], + "spell_class": "MANA_CRYST_MANA", + "flags": [ "PERMANENT", "NO_LEGS", "CONCENTRATE", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "max_level": 5, + "difficulty": 3, + "min_damage": 4, + "max_damage": 4, + "duration_increment": 1, + "effect": "spawn_item", + "effect_str": "crystallized_mana", + "energy_source": "MANA", + "base_energy_cost": 1000, + "final_energy_cost": 1000, + "base_casting_time": 600000, + "final_casting_time": 600000, + "extra_effects": [ { "id": "mana_fatigue" } ] + }, + { + "id": "manatouched_seeker_bolts", + "type": "SPELL", + "name": { "str": "Seeker Bolts" }, + "effect": "projectile_attack", + "description": "Fires bolts of mana from your fingertips that home in on randomly selected targets in range.", + "valid_targets": [ "hostile" ], + "spell_class": "MANA_SEEKER_BOLTS", + "min_damage": 15, + "max_damage": 36, + "damage_increment": 1, + "max_level": 18, + "min_range": 11, + "max_range": 23, + "range_increment": 0.5, + "energy_source": "MANA", + "base_energy_cost": 250, + "base_casting_time": 85, + "final_casting_time": 85, + "sound_description": "a zing", + "flags": [ "RANDOM_TARGET", "SOMATIC", "NO_LEGS" ], + "extra_effects": [ { "id": "magic_missile" }, { "id": "magic_missile" }, { "id": "magic_missile" }, { "id": "magic_missile" } ] + } +] diff --git a/data/mods/Magical_Nights/Spells/monsterspells.json b/data/mods/Magical_Nights/Spells/monsterspells.json new file mode 100644 index 000000000000..e0a9d2368449 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/monsterspells.json @@ -0,0 +1,193 @@ +[ + { + "id": "blood_suck", + "type": "SPELL", + "name": { "str": "Blood Suck" }, + "description": "Sucks blood from one foe.", + "valid_targets": [ "hostile" ], + "flags": [ "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "damage_type": "stab", + "min_damage": 5, + "max_damage": 10, + "damage_increment": 1, + "max_level": 5, + "min_range": 1, + "max_range": 2, + "range_increment": 0.2, + "effect": "projectile_attack", + "extra_effects": [ { "id": "light_healing", "hit_self": true } ] + }, + { + "id": "bear_trap", + "type": "SPELL", + "name": "Bear Trap", + "description": "A trap that summons bears! Not what you were expecting, is it?", + "valid_targets": [ "ground" ], + "flags": [ "HOSTILE_SUMMON", "LOUD", "NO_EXPLOSION_VFX" ], + "min_damage": 3, + "max_damage": 3, + "min_aoe": 5, + "max_aoe": 5, + "sound_description": "\"It's a trap!\"", + "min_duration": 30000, + "max_duration": 30000, + "sound_type": "speech", + "effect": "summon", + "effect_str": "mon_bear" + }, + { + "id": "rocket_punch", + "type": "SPELL", + "name": "Rocket Punch", + "description": "Ejects giant fist from arm.", + "valid_targets": [ "hostile" ], + "flags": [ "NO_LEGS" ], + "damage_type": "bash", + "min_damage": 30, + "max_damage": 40, + "damage_increment": 2, + "max_level": 5, + "min_range": 1, + "max_range": 2, + "range_increment": 0.2, + "effect": "projectile_attack" + }, + { + "id": "gas_attack", + "type": "SPELL", + "name": "Gas Attack", + "description": "Spreads toxic gas around itself.", + "valid_targets": [ "self", "hostile", "ground" ], + "flags": [ "NO_HANDS", "NO_LEGS" ], + "damage_type": "bio", + "min_damage": 1, + "max_damage": 1, + "max_level": 5, + "min_range": 1, + "max_range": 3, + "range_increment": 0.2, + "effect": "target_attack", + "field_id": "fd_toxic_gas", + "field_chance": 10, + "min_field_intensity": 1, + "max_field_intensity": 1, + "min_duration": 1000, + "max_duration": 6000, + "duration_increment": 1000, + "min_aoe": 1, + "max_aoe": 2, + "aoe_increment": 0.2 + }, + { + "type": "SPELL", + "id": "mon_demon_fireball", + "name": "Demon Fireball", + "description": "This is a monster only spell.", + "valid_targets": [ "hostile", "ground", "ally", "self" ], + "min_damage": 15, + "max_damage": 15, + "min_range": 12, + "max_range": 12, + "min_aoe": 2, + "max_aoe": 2, + "base_casting_time": 120, + "effect": "projectile_attack", + "damage_type": "fire" + }, + { + "type": "SPELL", + "id": "mon_summon_demon_spiderlings", + "name": "Summon Demon Spiderlings", + "description": "Summons 4 permanent demon spiderlings.", + "flags": [ "HOSTILE_SUMMON", "PERMANENT", "NO_EXPLOSION_VFX" ], + "valid_targets": [ "ground" ], + "min_damage": 4, + "max_damage": 4, + "min_range": 5, + "max_range": 5, + "min_aoe": 3, + "max_aoe": 3, + "base_casting_time": 160, + "effect": "summon", + "effect_str": "mon_demon_spiderling" + }, + { + "id": "monster_burning_hands", + "type": "SPELL", + "name": { "str": "Burning Hands" }, + "description": "Separated from the player burning hands, because I'm not trying to accidentally buff Demon Spiders again.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "VERBAL" ], + "max_level": 20, + "min_damage": 8, + "max_damage": 65, + "damage_increment": 4, + "min_range": 3, + "max_range": 5, + "range_increment": 0.25, + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5, + "base_casting_time": 100, + "base_energy_cost": 150, + "energy_source": "MANA", + "damage_type": "fire" + }, + { + "id": "krab_gaze", + "type": "SPELL", + "name": { "str": "Krabgek Gaze" }, + "description": "Carcinization ray, go! (Krabgek version of Necrotic Gaze for balance purposes)", + "valid_targets": [ "hostile" ], + "effect": "target_attack", + "energy_source": "HP", + "flags": [ "NO_LEGS", "CONCENTRATE", "SOMATIC" ], + "min_damage": 20, + "max_damage": 310, + "damage_increment": 6, + "min_range": 5, + "max_range": 10, + "range_increment": 0.1, + "max_level": 37, + "base_casting_time": 100, + "base_energy_cost": 2, + "damage_type": "bio" + }, + { + "id": "ooze_acidicspray", + "type": "SPELL", + "name": { "str": "Ooze Acidic Spray" }, + "description": "Someone's pudding recipe has gone *very* awry… (Monster Spell)", + "valid_targets": [ "ally", "hostile", "ground" ], + "effect": "cone_attack", + "effect_str": "bio_acidburn", + "base_casting_time": 200, + "base_energy_cost": 200, + "energy_source": "MANA", + "max_level": 30, + "min_damage": 34, + "max_damage": 123, + "damage_increment": 4, + "damage_type": "acid", + "min_range": 7, + "max_range": 12, + "flags": [ "VERBAL", "NO_HANDS" ], + "range_increment": 0.25, + "min_aoe": 100, + "max_aoe": 165, + "aoe_increment": 5 + }, + { + "id": "monster_pain_split", + "type": "SPELL", + "name": { "str": "Monster Pain Split" }, + "description": "Perfect for evening out damage on breath attacks", + "valid_targets": [ "self", "hostile" ], + "effect": "pain_split", + "energy_source": "MANA", + "flags": [ "SOMATIC", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX", "NO_HANDS" ], + "difficulty": 4, + "max_level": 1 + } +] diff --git a/data/mods/Magical_Nights/Spells/stormshaper.json b/data/mods/Magical_Nights/Spells/stormshaper.json new file mode 100644 index 000000000000..ee49468ee48f --- /dev/null +++ b/data/mods/Magical_Nights/Spells/stormshaper.json @@ -0,0 +1,321 @@ +[ + { + "id": "jolt", + "type": "SPELL", + "name": { "str": "Jolt" }, + "description": "A short-ranged fan of electricity shoots from your fingers.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "LOUD", "SOMATIC", "NO_LEGS" ], + "max_level": 30, + "min_damage": 19, + "max_damage": 139, + "damage_increment": 4, + "min_range": 5, + "max_range": 10, + "range_increment": 0.25, + "min_aoe": 30, + "max_aoe": 90, + "aoe_increment": 2, + "spell_class": "STORMSHAPER", + "base_casting_time": 100, + "base_energy_cost": 150, + "energy_source": "MANA", + "difficulty": 2, + "sound_description": "a crackle", + "damage_type": "electric" + }, + { + "id": "lightning_bolt", + "type": "SPELL", + "name": { "str": "Lightning Bolt" }, + "description": "The goto spell for many Stormshapers, this iconic spell does just what you expect: you shoot lightning from your fingertips. However, this lightning is more directed than most lightning, and travels in a line through most non-solid targets.", + "effect": "line_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "LOUD", "SOMATIC", "NO_LEGS" ], + "max_level": 50, + "damage_increment": 6, + "min_damage": 44, + "max_damage": 344, + "min_range": 10, + "max_range": 18, + "range_increment": 0.25, + "difficulty": 6, + "min_aoe": 1, + "max_aoe": 1, + "spell_class": "STORMSHAPER", + "base_casting_time": 200, + "final_casting_time": 50, + "casting_time_increment": -5, + "base_energy_cost": 140, + "field_id": "fd_electricity", + "min_field_intensity": 1, + "max_field_intensity": 1, + "field_chance": 1, + "damage_type": "electric", + "sound_description": "a crackle", + "energy_source": "MANA" + }, + { + "id": "windstrike", + "type": "SPELL", + "name": { "str": "Windstrike" }, + "description": "A powerful blast of wind slams into anything in front of your outstretched hand.", + "sprite": "fd_insecticidal_gas", + "effect": "cone_attack", + "effect_str": "downed", + "affected_body_parts": [ "leg_l", "leg_r" ], + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "max_level": 30, + "min_damage": 20, + "max_damage": 86, + "damage_increment": 2.2, + "min_aoe": 40, + "max_aoe": 100, + "aoe_increment": 1.4, + "min_range": 13, + "max_range": 37, + "range_increment": 0.85, + "min_duration": 1700, + "max_duration": 4000, + "duration_increment": 100, + "base_casting_time": 125, + "base_energy_cost": 285, + "spell_class": "STORMSHAPER", + "energy_source": "MANA", + "difficulty": 3, + "sound_description": "a whoosh", + "damage_type": "bash" + }, + { + "id": "windrun", + "type": "SPELL", + "name": { "str": "Windrunning" }, + "description": "A magical wind pushes you forward as you move, easing your movements and increasing speed.", + "base_casting_time": 125, + "base_energy_cost": 100, + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 2, + "effect": "spawn_item", + "effect_str": "windrunning_aura", + "affected_body_parts": [ "torso" ], + "valid_targets": [ "ally", "self" ], + "flags": [ "CONCENTRATE", "SILENT", "SOMATIC", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "max_level": 15, + "min_duration": 96000, + "max_duration": 276000, + "duration_increment": 6000, + "min_range": 9, + "max_range": 38, + "range_increment": 1 + }, + { + "id": "storm_hammer", + "type": "SPELL", + "name": { "str": "Call Stormhammer" }, + "description": "Creates a crackling magical warhammer full of lightning to smite your foes with, and of course, smash things to bits!", + "valid_targets": [ "self" ], + "flags": [ "CONCENTRATE", "LOUD", "VERBAL", "NO_LEGS", "NO_EXPLOSION_VFX" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "stormhammer", + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 3, + "max_level": 30, + "base_casting_time": 150, + "base_energy_cost": 100, + "min_duration": 400000, + "max_duration": 1000000, + "duration_increment": 20000 + }, + { + "id": "create_rune_stormshaper", + "type": "SPELL", + "name": { "str": "Stormshaper Rune" }, + "description": "This ritual creates a small pebble attuned to Stormshapers. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_stormshaper", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "STORMSHAPER", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "lightning_blast", + "type": "SPELL", + "name": { "str": "Lightning Blast" }, + "description": "You fire a small concentrated ball of lightning at the target. The electricity diffuses quickly, so it doesn't do much damage, but you're able to fire off several quick ones in a row.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "flags": [ "LOUD", "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "min_aoe": 2, + "max_aoe": 4, + "aoe_increment": 0.05, + "max_level": 50, + "min_damage": 28, + "max_damage": 178, + "min_range": 9, + "max_range": 21, + "range_increment": 0.2, + "damage_increment": 3, + "difficulty": 10, + "spell_class": "STORMSHAPER", + "energy_source": "MANA", + "base_casting_time": 120, + "final_casting_time": 25, + "casting_time_increment": -5, + "base_energy_cost": 55, + "damage_type": "electric", + "sound_description": "a crackle", + "effect": "projectile_attack" + }, + { + "id": "lightning_storm", + "type": "SPELL", + "name": { "str": "Lightning Storm" }, + "description": "You call the power of the sky to strike the earth. Several lightning blasts fire from your finger tips to strike the target.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "flags": [ "CONCENTRATE", "LOUD", "SOMATIC", "NO_LEGS" ], + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.05, + "max_level": 52, + "min_damage": 41, + "max_damage": 249, + "min_range": 8, + "max_range": 14, + "range_increment": 0.1, + "damage_increment": 4, + "difficulty": 20, + "spell_class": "STORMSHAPER", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 300, + "damage_type": "electric", + "effect": "projectile_attack", + "extra_effects": [ { "id": "lightning_blast" }, { "id": "lightning_blast" }, { "id": "lightning_blast" } ] + }, + { + "id": "stormshaper_ionization", + "type": "SPELL", + "name": { "str": "Ionization" }, + "description": "By manipulating the charge in the air, you can conjure a sharp snap of lightning over a wide area. While its destructive potential is a far cry from natural lightning, the light and thunderclap produced will leave your foes reeling.", + "sprite": "fd_electricity", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "effect": "target_attack", + "extra_effects": [ { "id": "stormshaper_ionization_thunderclap" } ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 8, + "base_casting_time": 350, + "final_casting_time": 140, + "casting_time_increment": -5, + "base_energy_cost": 300, + "max_level": 45, + "min_damage": 16, + "max_damage": 84, + "damage_increment": 1.5, + "damage_type": "electric", + "min_aoe": 7, + "max_aoe": 7, + "min_range": 16, + "max_range": 40, + "range_increment": 0.4, + "field_id": "fd_electricity", + "field_chance": 3, + "min_field_intensity": 1, + "max_field_intensity": 3, + "field_intensity_increment": 0.1, + "field_intensity_variance": 0.5 + }, + { + "type": "SPELL", + "id": "stormshaper_ionization_thunderclap", + "name": { "str": "Ionization Thunderclap" }, + "description": "Adds the actual flashbang effect.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "effect": "flashbang", + "flags": [ "LOUD", "NO_EXPLOSION_VFX" ], + "max_level": 45, + "min_range": 16, + "max_range": 40, + "range_increment": 0.4 + }, + { + "id": "stormshaper_wall_of_fog", + "type": "SPELL", + "name": { "str": "Wall of Fog" }, + "description": "Draws forth a broad wall of thick fog. While the sudden force of air pressure will floor any enemies caught in it, the conjuration is otherwise harmless.", + "valid_targets": [ "hostile", "ground", "ally" ], + "effect": "line_attack", + "effect_str": "downed", + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 2, + "base_casting_time": 125, + "base_energy_cost": 150, + "max_level": 15, + "min_aoe": 9, + "max_aoe": 19, + "aoe_increment": 0.5, + "min_range": 4, + "max_range": 8, + "range_increment": 0.2, + "min_duration": 650, + "max_duration": 1650, + "duration_increment": 60, + "field_id": "fd_fog", + "field_chance": 1, + "min_field_intensity": 3, + "max_field_intensity": 3, + "field_intensity_variance": 1 + }, + { + "id": "storm_condense_water", + "type": "SPELL", + "name": { "str": "Condense Water" }, + "description": "Draws water forth from the air then condenses it down into usable water. Handy in situations where you just don't have reliable access to water, but have access to a method of cleaning it.", + "valid_targets": [ "self" ], + "effect": "spawn_item", + "effect_str": "water", + "flags": [ "SOMATIC", "PERMANENT", "NO_LEGS" ], + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 3, + "base_casting_time": 20000, + "base_energy_cost": 200, + "min_damage": 1, + "max_damage": 1 + }, + { + "id": "storm_condense_clean_water", + "type": "SPELL", + "name": { "str": "Condense Clean Water" }, + "description": "Draws water forth from the air then condenses it into fully cleaned water. Takes more finesse than simply condensing normal water, but that's to be expected.", + "valid_targets": [ "self" ], + "effect": "spawn_item", + "effect_str": "water_clean", + "flags": [ "SOMATIC", "PERMANENT", "NO_LEGS" ], + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 6, + "base_casting_time": 45000, + "base_energy_cost": 450, + "min_damage": 1, + "max_damage": 1 + } +] diff --git a/data/mods/Magical_Nights/Spells/technomancer.json b/data/mods/Magical_Nights/Spells/technomancer.json new file mode 100644 index 000000000000..1c9cc93034d6 --- /dev/null +++ b/data/mods/Magical_Nights/Spells/technomancer.json @@ -0,0 +1,342 @@ +[ + { + "id": "invisibility", + "type": "SPELL", + "name": { "str": "Invisibility" }, + "description": "Creates a magical field that hides your visual presence to others. Colloquially known as invisibility, but without all the science mumbo jumbo.", + "message": "To the outside world, your body fades away and you cease to exist!", + "valid_targets": [ "self" ], + "flags": [ "NO_EXPLOSION_VFX", "NO_HANDS", "NO_LEGS", "SOMATIC" ], + "effect": "target_attack", + "effect_str": "invisibility", + "spell_class": "TECHNOMANCER", + "difficulty": 4, + "base_casting_time": 100, + "base_energy_cost": 400, + "energy_source": "MANA", + "min_duration": 50000, + "max_duration": 125000, + "duration_increment": 2500, + "max_level": 30 + }, + { + "id": "create_atomic_lamp", + "type": "SPELL", + "name": { "str": "Lamp" }, + "description": "Creates a magical lamp.", + "valid_targets": [ "none" ], + "flags": [ "NO_HANDS", "NO_LEGS", "CONCENTRATE", "NO_EXPLOSION_VFX", "PERMANENT" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "magic_lamp", + "energy_source": "MANA", + "spell_class": "TECHNOMANCER", + "difficulty": 2, + "base_casting_time": 200, + "base_energy_cost": 750, + "duration_increment": 42 + }, + { + "id": "recover_bionic_power", + "type": "SPELL", + "name": { "str": "Manatricity" }, + "description": "You have found a way to convert your spiritual energy into power you can use for your bionics.", + "valid_targets": [ "self" ], + "flags": [ "NO_LEGS", "NO_HANDS", "SOMATIC", "SILENT", "NO_EXPLOSION_VFX" ], + "min_damage": 250, + "damage_increment": 50, + "max_damage": 22500, + "base_energy_cost": 250, + "energy_increment": 50, + "final_energy_cost": 22500, + "max_level": 37, + "spell_class": "TECHNOMANCER", + "effect": "recover_energy", + "effect_str": "BIONIC", + "energy_source": "MANA", + "difficulty": 6, + "base_casting_time": 1000 + }, + { + "id": "create_rune_technomancer", + "type": "SPELL", + "name": { "str": "Technomancer Rune" }, + "description": "This ritual creates a small pebble attuned to Technomancers. You can use the rune as a catalyst for recipes.", + "valid_targets": [ "self" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "rune_technomancer", + "base_casting_time": 5000, + "base_energy_cost": 5, + "min_duration": 1, + "max_duration": 2, + "duration_increment": 1, + "difficulty": 0, + "max_level": 0, + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "flags": [ "PERMANENT", "NO_LEGS", "NO_EXPLOSION_VFX", "NO_FAIL", "NO_HANDS" ] + }, + { + "id": "taze", + "type": "SPELL", + "name": { "str": "Taze" }, + "description": "This spell creates a very short range bolt of electricity to shock your foes.", + "valid_targets": [ "hostile", "ground", "ally" ], + "flags": [ "NO_LEGS", "LOUD", "SOMATIC" ], + "effect": "projectile_attack", + "spell_class": "TECHNOMANCER", + "energy_source": "BIONIC", + "difficulty": 1, + "base_casting_time": 100, + "casting_time_increment": -1, + "final_casting_time": 70, + "base_energy_cost": 50, + "energy_increment": -1, + "final_energy_cost": 20, + "max_level": 30, + "damage_type": "electric", + "min_damage": 17, + "max_damage": 52, + "damage_increment": 1, + "min_range": 2, + "max_range": 7, + "range_increment": 0.2 + }, + { + "id": "quantum_tunnel_lesser", + "type": "SPELL", + "name": { "str": "Lesser Quantum Tunnel" }, + "description": "This spell manipulates some quantum something or other to tunnel you through a short distance of space, and even matter, unfortunately there's that whole uncertainty thing as to where you come out. It leaves you a little dazed on the other side as you reorient yourself.", + "valid_targets": [ "none" ], + "flags": [ "NO_LEGS", "NO_HANDS", "SILENT", "SOMATIC" ], + "effect": "teleport_random", + "effect_str": "dazed", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 2, + "max_level": 30, + "base_casting_time": 100, + "casting_time_increment": -1, + "final_casting_time": 70, + "base_energy_cost": 100, + "energy_increment": -1, + "final_energy_cost": 70, + "min_aoe": 4, + "max_aoe": 1, + "aoe_increment": -0.25, + "min_range": 9, + "max_range": 19, + "range_increment": 0.25, + "min_duration": 100, + "max_duration": 100 + }, + { + "id": "synaptic_stimulation", + "type": "SPELL", + "name": { "str": "Synaptic Stimulation" }, + "description": "This spell stimulates the synapses in your brain beyond normal processing speeds, giving you a large boost in mental processing capability, including enhancing your reflexes, speed, and raw intellectual power. Use responsibly!", + "valid_targets": [ "self" ], + "flags": [ "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "effect_str": "synaptic_stim", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 5, + "max_level": 30, + "base_casting_time": 500, + "casting_time_increment": -2.5, + "final_casting_time": 425, + "base_energy_cost": 500, + "energy_increment": -5, + "final_energy_cost": 350, + "min_duration": 3300000, + "max_duration": 6300000, + "duration_increment": 100000 + }, + { + "id": "laze", + "type": "SPELL", + "name": { "str": "Laze" }, + "description": "You concentrate and release a focused beam of photons at a target, also known as a laser.", + "valid_targets": [ "hostile", "ground", "ally" ], + "flags": [ "NO_LEGS", "LOUD", "SOMATIC" ], + "effect": "target_attack", + "spell_class": "TECHNOMANCER", + "energy_source": "BIONIC", + "difficulty": 3, + "max_level": 30, + "base_casting_time": 100, + "casting_time_increment": -1, + "final_casting_time": 70, + "base_energy_cost": 150, + "energy_increment": -2, + "final_energy_cost": 90, + "min_damage": 34, + "max_damage": 109, + "damage_increment": 2.5, + "damage_type": "fire", + "min_range": 17, + "max_range": 42, + "range_increment": 1 + }, + { + "id": "animated_blade", + "type": "SPELL", + "name": { "str": "Animated Blade" }, + "description": "This spell conjures flying animated blades that will cut your enemies down to size. Into small pieces that is.", + "valid_targets": [ "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "summon", + "effect_str": "mon_animated_blade", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 6, + "max_level": 30, + "base_casting_time": 200, + "casting_time_increment": -2, + "final_casting_time": 140, + "base_energy_cost": 350, + "energy_increment": -2, + "final_energy_cost": 290, + "min_damage": 1, + "max_damage": 3, + "damage_increment": 0.15, + "min_range": 1, + "max_range": 7, + "range_increment": 0.25, + "min_aoe": 3, + "max_aoe": 3, + "min_duration": 400000, + "max_duration": 1000000, + "duration_increment": 20000 + }, + { + "id": "mirror_image", + "type": "SPELL", + "name": { "str": "Mirror Image" }, + "description": "This spell manipulates light into barely tangible duplicates of a living being, a magical hologram in short.", + "valid_targets": [ "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "summon", + "effect_str": "mon_mirror_image", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 4, + "max_level": 30, + "base_casting_time": 150, + "casting_time_increment": -1, + "final_casting_time": 120, + "base_energy_cost": 200, + "energy_increment": -2, + "final_energy_cost": 140, + "min_damage": 1, + "max_damage": 8, + "damage_increment": 0.5, + "min_range": 8, + "max_range": 23, + "range_increment": 0.5, + "min_aoe": 3, + "max_aoe": 3, + "min_duration": 60000, + "max_duration": 120000, + "duration_increment": 2000 + }, + { + "id": "holographic_transposition", + "type": "SPELL", + "name": { "str": "Holographic Transposition" }, + "description": "Allows you to swap places with a previously existing holographic image of yourself. If the universe itself can't tell you apart, who could?", + "valid_targets": [ "hostile", "ally" ], + "targeted_monster_ids": [ "mon_mirror_image", "mon_hologram" ], + "flags": [ "NO_LEGS", "LOUD", "NO_HANDS", "SOMATIC", "SWAP_POS", "NO_EXPLOSION_VFX" ], + "effect": "target_attack", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 3, + "max_level": 30, + "base_casting_time": 100, + "casting_time_increment": -1, + "final_casting_time": 70, + "base_energy_cost": 150, + "energy_increment": -2, + "final_energy_cost": 80, + "min_range": 35, + "max_range": 60, + "range_increment": 1 + }, + { + "id": "summon_floating_disk", + "type": "SPELL", + "name": { "str": "Summon floating disk" }, + "description": "Summons a floating disk that is sworn to carry your burdens.", + "valid_targets": [ "ground" ], + "flags": [ "SOMATIC", "NO_LEGS", "NO_HANDS", "CONCENTRATE", "NO_EXPLOSION_VFX" ], + "effect": "summon_vehicle", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "effect_str": "floating_disk", + "difficulty": 5, + "max_level": 30, + "base_casting_time": 120, + "base_energy_cost": 500, + "min_range": 16, + "max_range": 30, + "range_increment": 1, + "min_duration": 4030000, + "max_duration": 10030000, + "duration_increment": 200000 + }, + { + "id": "overcharge_burn", + "type": "SPELL", + "name": { "str": "Overcharge Burn" }, + "description": "The side effects of casting the overcharge spell.", + "message": "", + "effect": "spawn_item", + "effect_str": "overcharge_burn_scar", + "flags": [ "NO_EXPLOSION_VFX" ], + "min_damage": 1, + "max_damage": 1, + "min_duration": 500, + "duration_increment": -10, + "max_duration": 50, + "max_level": 45, + "valid_targets": [ "none" ] + }, + { + "id": "overcharge_eyes", + "type": "SPELL", + "name": { "str": "Optical Sneeze Beam" }, + "description": "You overcharge your internal batteries to send a semi-directed beam from your face. The inventor of this spell must have had some weird sense of humor.", + "message": "You overcharge your bionic energy through what ley lines you have left, and channel it through the center of your face.", + "sound_description": "bzzzzzzt!", + "sound_ambient": true, + "effect": "cone_attack", + "extra_effects": [ { "id": "overcharge_burn", "hit_self": true } ], + "min_damage": 147, + "damage_increment": 5, + "max_damage": 357, + "min_range": 12, + "range_increment": 0.35, + "max_range": 34, + "min_aoe": 12, + "aoe_increment": 0.17, + "max_aoe": 24, + "base_energy_cost": 500, + "final_energy_cost": 500, + "spell_class": "TECHNOMANCER", + "energy_source": "BIONIC", + "damage_type": "cut", + "difficulty": 1, + "max_level": 45, + "base_casting_time": 120, + "final_casting_time": 120, + "valid_targets": [ "hostile", "ground" ], + "flags": [ "LOUD", "VERBAL", "NO_HANDS", "NO_LEGS" ] + } +] diff --git a/data/mods/Magical_Nights/bionics.json b/data/mods/Magical_Nights/bionics.json new file mode 100644 index 000000000000..037b5f82165b --- /dev/null +++ b/data/mods/Magical_Nights/bionics.json @@ -0,0 +1,13 @@ +[ + { + "id": "bio_sneeze_beam", + "type": "bionic", + "name": { "str": "Crystallized Mana Nose Replacement" }, + "description": "A large gem made with crystallized mana and some other stabilizing metals. Comes with a specially designed power pack (installed into the skull) that does not interfere with your normal facial functions. WARNING: for Technophile use only. By using this spell you are waiving all liability of Frikken Laser Beams Inc. and its subsidiaries.", + "occupied_bodyparts": [ [ "head", 10 ], [ "mouth", 1 ] ], + "capacity": "500 kJ", + "learned_spells": [ [ "overcharge_eyes", 4 ] ], + "enchantments": [ "ench_bio_sneeze_beam" ], + "flags": [ "BIONIC_SHOCKPROOF" ] + } +] diff --git a/data/mods/Magical_Nights/clothing_mods.json b/data/mods/Magical_Nights/clothing_mods.json new file mode 100644 index 000000000000..b7b8cd6851e2 --- /dev/null +++ b/data/mods/Magical_Nights/clothing_mods.json @@ -0,0 +1,43 @@ +[ + { + "type": "clothing_mod", + "id": "owlbear_furred", + "flag": "owlbear_furred", + "item": "owlbear_fur", + "implement_prompt": "Line it with owlbear fur", + "destroy_prompt": "Destroy owlbear fur lining", + "mod_value": [ + { "type": "encumbrance", "value": 1 }, + { "type": "encumbrance", "value": 4, "proportion": [ "coverage" ] }, + { "type": "warmth", "value": 75, "proportion": [ "coverage" ] } + ] + }, + { + "type": "clothing_mod", + "id": "demonchitin_padded", + "flag": "demonchitin_padded", + "item": "demon_chitin_piece", + "implement_prompt": "Pad with demon chitin", + "destroy_prompt": "Destroy demon chitin padding", + "mod_value": [ + { "type": "cut", "value": 1.75, "proportion": [ "thickness" ] }, + { "type": "bullet", "value": 1.75, "proportion": [ "thickness" ] }, + { "type": "fire", "value": 60, "proportion": [ "coverage" ] }, + { "type": "encumbrance", "value": 2, "round_up": true, "proportion": [ "thickness", "coverage" ] } + ] + }, + { + "type": "clothing_mod", + "id": "blackdragon_coated", + "flag": "blackdragon_coated", + "item": "dragon_black_scale", + "implement_prompt": "Add black dragon scale coating", + "destroy_prompt": "Destroy black dragon scale coating", + "mod_value": [ + { "type": "cut", "value": 1.8, "proportion": [ "thickness" ] }, + { "type": "bullet", "value": 1.8, "proportion": [ "thickness" ] }, + { "type": "acid", "value": 40, "proportion": [ "coverage" ] }, + { "type": "encumbrance", "value": 2, "round_up": true, "proportion": [ "thickness", "coverage" ] } + ] + } +] diff --git a/data/mods/Magical_Nights/construction_group.json b/data/mods/Magical_Nights/construction_group.json new file mode 100644 index 000000000000..9540877f60c7 --- /dev/null +++ b/data/mods/Magical_Nights/construction_group.json @@ -0,0 +1,7 @@ +[ + { + "type": "construction_group", + "id": "build_translocator_gate", + "name": "Build Translocator Gate" + } +] diff --git a/data/mods/Magical_Nights/cooking_components.json b/data/mods/Magical_Nights/cooking_components.json new file mode 100644 index 000000000000..4ac666e0decb --- /dev/null +++ b/data/mods/Magical_Nights/cooking_components.json @@ -0,0 +1,21 @@ +[ + { + "id": "eggs_bird", + "type": "requirement", + "components": [ + [ + [ "egg_bird", 1 ], + [ "egg_bird_unfert", 1 ], + [ "egg_chicken", 1 ], + [ "egg_grouse", 1 ], + [ "egg_crow", 1 ], + [ "egg_duck", 1 ], + [ "egg_goose_canadian", 1 ], + [ "egg_turkey", 1 ], + [ "egg_pheasant", 1 ], + [ "egg_cockatrice", 1 ], + [ "egg_owlbear", 1 ] + ] + ] + } +] diff --git a/data/mods/Magical_Nights/effects/effects.json b/data/mods/Magical_Nights/effects/effects.json new file mode 100644 index 000000000000..1085e3e9c89c --- /dev/null +++ b/data/mods/Magical_Nights/effects/effects.json @@ -0,0 +1,267 @@ +[ + { + "type": "effect_type", + "id": "mana_fatigue", + "name": [ "Mana Fatigue" ], + "desc": [ "You are exhausted from channeling a lot of mana." ], + "apply_message": "Channeling so much mana is making you tired", + "remove_message": "The burden of mana fatigue has faded", + "rating": "bad", + "base_mods": { "fatigue_amount": [ 1 ], "fatigue_min": [ 1 ] } + }, + { + "type": "effect_type", + "id": "enchant_windrun", + "name": [ "Windrunning" ], + "desc": [ "You are bolstered and pushed along by the power of the wind." ], + "apply_message": "You are bolstered and pushed along by the power of the wind", + "remove_message": "The wind at your back dies down.", + "rating": "good", + "base_mods": { "stamina_min": [ 20 ] } + }, + { + "type": "effect_type", + "id": "dark_sight", + "name": [ "Dark Sight" ], + "desc": [ "You can see in the dark." ], + "apply_message": "Your sight adjusts to the darkness.", + "remove_message": "The darkness loses its shape.", + "rating": "good", + "flags": [ "EFFECT_NIGHT_VISION" ] + }, + { + "type": "effect_type", + "id": "effect_ethereal_grasp", + "name": [ "Ethereal Hold" ], + "desc": [ "Ghostly arms are trying to hold you in place!" ], + "max_intensity": 4, + "int_add_val": 1, + "apply_message": "Ethereal arms shoot out of the ground and grab onto you!", + "remove_message": "The ghostly arms fade away.", + "base_mods": { "speed_mod": [ -40 ] }, + "scaling_mods": { "speed_mod": [ -10 ] } + }, + { + "type": "effect_type", + "id": "invisibility", + "name": [ "Invisibility" ], + "desc": [ "Nothing can see you." ], + "apply_message": "You fade away.", + "remove_message": "You can see your hands again.", + "flags": [ "EFFECT_INVISIBLE" ] + }, + { + "type": "effect_type", + "id": "bless", + "name": [ "Blessed" ], + "desc": [ "You are filled with energy that improves everything you do." ], + "apply_message": "You are filled with energy that improves everything you do!", + "remove_message": "Your energy fades.", + "rating": "good", + "base_mods": { "per_mod": [ 2 ], "dex_mod": [ 2 ], "str_mod": [ 2, 2 ], "speed_mod": [ 20 ] } + }, + { + "type": "effect_type", + "id": "bio_boost", + "name": [ "Grotesque Enhancement" ], + "desc": [ "Your body ripples with writhing alien muscles, your limbs lengthen, and your eyes glow with a faint green." ], + "apply_message": "Your body ripples with writhing alien muscles, your limbs lengthen, and your eyes glow with a faint green.", + "remove_message": "Your body rapidly returns to normal.", + "rating": "good", + "max_intensity": 4, + "int_add_val": 1, + "base_mods": { "per_mod": [ 1, 3 ], "dex_mod": [ 1, 3 ], "str_mod": [ 1, 5 ], "speed_mod": [ 5, 10 ] }, + "scaling_mods": { "per_mod": [ 1, 3 ], "dex_mod": [ 1, 3 ], "str_mod": [ 1, 3 ], "speed_mod": [ 5, 10 ] } + }, + { + "type": "effect_type", + "id": "entangled", + "name": [ "Vegetative Grasp" ], + "desc": [ "Roots and vines entangle your foes." ], + "max_intensity": 4, + "int_add_val": 1, + "apply_message": "Roots and vines entangle your foes to slow them!", + "remove_message": "The roots and vines wither up and die.", + "base_mods": { "speed_mod": [ -60 ] }, + "scaling_mods": { "speed_mod": [ -10 ] } + }, + { + "type": "effect_type", + "id": "root_impale", + "name": [ "Root Impale" ], + "desc": [ "Roots and vines entangle your foes." ], + "max_intensity": 4, + "int_add_val": 1, + "apply_message": "Roots rip out from the ground and impale your enemies!", + "remove_message": "The roots wither up and die.", + "base_mods": { "speed_mod": [ -30 ] }, + "scaling_mods": { "speed_mod": [ -10 ] } + }, + { + "type": "effect_type", + "id": "bio_acidburn", + "name": [ "Acidic burn" ], + "desc": [ "Burned with acid" ], + "max_intensity": 4, + "int_add_val": 1, + "base_mods": { "speed_mod": [ -20 ] }, + "scaling_mods": { "speed_mod": [ -10 ] } + }, + { + "type": "effect_type", + "id": "haste", + "name": [ "Hasted" ], + "desc": [ "Your speed is boosted enormously." ], + "apply_message": "Your speed is boosted to superhuman levels!", + "remove_message": "You return to your normal speed.", + "rating": "good", + "base_mods": { "dex_mod": [ 2 ], "speed_mod": [ 150 ] } + }, + { + "type": "effect_type", + "id": "synaptic_stim", + "name": [ "Synaptic Stimulation" ], + "desc": [ "Your mental processing is increased." ], + "apply_message": "Your mind accelerates.", + "remove_message": "Your mind returns to normal speed.", + "rating": "good", + "base_mods": { "dex_mod": [ 4 ], "int_mod": [ 4 ], "speed_mod": [ 5 ] } + }, + { + "type": "effect_type", + "id": "ogres_strength", + "name": [ "Ogre's Strength" ], + "desc": [ "You have the strength of an Ogre!" ], + "apply_message": "You feel strong!", + "remove_message": "Your strength deflates.", + "rating": "good", + "base_mods": { "str_mod": [ 4 ] } + }, + { + "type": "effect_type", + "id": "eagles_sight", + "name": [ "Eagle's Sight" ], + "desc": [ "You have the perception of an Eagle!" ], + "apply_message": "You notice small details!", + "remove_message": "Your vision returns to normal.", + "rating": "good", + "base_mods": { "per_mod": [ 4 ] } + }, + { + "type": "effect_type", + "id": "cats_grace", + "name": [ "Cat's Grace" ], + "desc": [ "You have the dexterity of a cat!" ], + "apply_message": "Your reflexes are heightened!", + "remove_message": "Your reflexes return to normal.", + "rating": "good", + "base_mods": { "dex_mod": [ 4 ] } + }, + { + "type": "effect_type", + "id": "foxs_cunning", + "name": [ "Fox's Cunning" ], + "desc": [ "You have the cunning of a Fox!" ], + "apply_message": "Your intelligence is heightened!", + "remove_message": "Your intelligence returns to normal.", + "rating": "good", + "base_mods": { "int_mod": [ 4 ] } + }, + { + "type": "effect_type", + "id": "debug_full_protection", + "name": [ "Debug Full Protection" ], + "desc": [ "You can not be harmed by anything." ], + "apply_message": "Your skin tingle with the power of the Devs!", + "remove_message": "Your skin stops tingling, your life is empty and meaningless again.", + "rating": "good", + "flags": [ + "EFFECT_ELECTRIC_IMMUNE", + "EFFECT_BIO_IMMUNE", + "EFFECT_BASH_IMMUNE", + "EFFECT_CUT_IMMUNE", + "EFFECT_ACID_IMMUNE", + "EFFECT_STAB_IMMUNE", + "EFFECT_HEAT_IMMUNE", + "EFFECT_COLD_IMMUNE" + ] + }, + { + "type": "effect_type", + "id": "debug_feather_fall", + "name": [ "Debug Feather Fall" ], + "desc": [ "You are light as a feather and fall like one." ], + "apply_message": "Your body feels light as a feather.", + "remove_message": "The earth pulls you down hard.", + "rating": "good", + "flags": [ "EFFECT_FEATHER_FALL" ] + }, + { + "type": "effect_type", + "id": "eff_frightful_presence", + "name": [ "Scared", "Frightened", "Terrified" ], + "max_intensity": 3, + "desc": [ "Your knees are shaking, your heart beats fast, and your stomach rebels." ], + "apply_message": "You are afraid!", + "remove_message": "Your fear dissipates.", + "rating": "bad", + "base_mods": { "stim_amount": [ 12, 20, 45 ], "vomit_chance": [ 2, 5, 20 ], "speed_mod": [ -2, -5, -10 ] } + }, + { + "type": "effect_type", + "id": "biomancer_visceral_side_effects", + "name": [ "Visceral Overexertion" ], + "desc": [ "You feel sickened from overtaxing your body, having extended your influence over such a wide area." ], + "rating": "bad", + "max_duration": "1 m", + "base_mods": { + "fatigue_min": [ 1 ], + "fatigue_chance": [ 5 ], + "health_min": [ -3 ], + "health_chance": [ 5 ], + "pain_min": [ 1 ], + "pain_chance": [ 4 ], + "vomit_chance": [ 20 ] + } + }, + { + "type": "effect_type", + "id": "bio_weave", + "name": [ "Coagulant Weave" ], + "desc": [ "Immunity to bleeding and bites, increased stamina regeneration, increased hunger and thirst gain." ], + "remove_message": "The tension running through your flesh fades.", + "blocks_effects": [ "bleed", "bite" ], + "rating": "good", + "max_duration": "5 m", + "base_mods": { + "hunger_min": [ 1 ], + "hunger_chance": [ 12 ], + "thirst_min": [ 1 ], + "thirst_chance": [ 12 ], + "health_min": [ 1 ], + "health_chance": [ 4 ], + "stamina_min": [ 40 ], + "stamina_chance": [ 2 ] + } + }, + { + "type": "effect_type", + "id": "biomancer_dart_venom", + "//": "Basically just paralyze poison set to work in a manner useful for spells.", + "name": [ "Biomantic Venom" ], + "desc": [ "You feel sluggish and weak, from magically-induced poisoning." ], + "rating": "bad", + "max_intensity": 20, + "int_dur_factor": "30 s", + "base_mods": { "str_mod": [ -1 ], "dex_mod": [ -0.17 ], "speed_mod": [ -3 ] }, + "scaling_mods": { "str_mod": [ -0.07 ], "dex_mod": [ -0.17 ], "speed_mod": [ -3 ] } + }, + { + "id": "burn_scar", + "type": "effect_type", + "desc": [ "This burn really hurts!" ], + "max_duration": "10 second", + "rating": "bad", + "base_mods": { "pain_amount": [ 20 ] } + } +] diff --git a/data/mods/Magical_Nights/effects/enchantments.json b/data/mods/Magical_Nights/effects/enchantments.json new file mode 100644 index 000000000000..1278466f867e --- /dev/null +++ b/data/mods/Magical_Nights/effects/enchantments.json @@ -0,0 +1,14 @@ +[ + { + "id": "ench_overcharge_burn_scar", + "type": "enchantment", + "ench_effects": [ { "effect": "burn_scar", "intensity": 1 } ] + }, + { + "id": "ench_windrun", + "type": "enchantment", + "has": "WORN", + "ench_effects": [ { "effect": "enchant_windrun", "intensity": 1 } ], + "values": [ { "value": "MOVE_COST", "multiply": -0.5 } ] + } +] diff --git a/data/mods/Magical_Nights/flags.json b/data/mods/Magical_Nights/flags.json new file mode 100644 index 000000000000..cc7872cb8cb5 --- /dev/null +++ b/data/mods/Magical_Nights/flags.json @@ -0,0 +1,20 @@ +[ + { + "id": "owlbear_furred", + "type": "json_flag", + "context": [ "ARMOR", "TOOL_ARMOR" ], + "info": "This clothing has an owlbear fur lining sewn into it to greatly increase its overall warmth." + }, + { + "id": "demonchitin_padded", + "type": "json_flag", + "context": [ "ARMOR", "TOOL_ARMOR" ], + "info": "This clothing has a demon chitin padding sewn into it to greatly increase its overall fire resistance." + }, + { + "id": "blackdragon_coated", + "type": "json_flag", + "context": [ "ARMOR", "TOOL_ARMOR" ], + "info": "This clothing has a coating of black dragon scales applied to it in order to greatly increase its overall acid resistance." + } +] diff --git a/data/mods/Magical_Nights/furniture.json b/data/mods/Magical_Nights/furniture.json new file mode 100644 index 000000000000..a5a7e0647812 --- /dev/null +++ b/data/mods/Magical_Nights/furniture.json @@ -0,0 +1,226 @@ +[ + { + "type": "furniture", + "id": "f_magiclysm_translocator_gate", + "name": "Translocator Gate", + "move_cost_mod": 0, + "symbol": "X", + "description": "A gate for translocation. Cast the translocation spell or use a translocator to choose this gate as a destination.", + "color": "light_gray", + "required_str": 25, + "flags": [ "TRANSLOCATOR", "MOUNTABLE", "ALLOW_FIELD_EFFECT" ], + "examine_action": "translocator" + }, + { + "type": "furniture", + "id": "f_magic_circle", + "name": "Magic Circle", + "move_cost_mod": 0, + "symbol": "O", + "color": "red", + "required_str": -1, + "flags": [ "ALLOW_FIELD_EFFECT" ], + "description": "This is a rough magic circle, carved into the ground and decorated with blood, candles, and other small knick-knacks." + }, + { + "type": "furniture", + "id": "f_glow_boulder", + "looks_like": "f_boulder_large", + "name": "large glowing boulder", + "description": "Something about this doesn't look right.", + "symbol": "O", + "color": "green", + "move_cost_mod": -1, + "coverage": 65, + "required_str": 32, + "flags": [ "NOITEM", "MINEABLE", "BASHABLE", "BLOCK_WIND" ], + "bash": { + "str_min": 64, + "str_max": 160, + "sound": "smash!", + "sound_fail": "thump.", + "items": [ + { "item": "rock", "count": [ 10, 22 ] }, + { "item": "sharp_rock", "count": [ 3, 7 ] }, + { "item": "material_limestone", "charges": [ 2, 5 ], "prob": 30 }, + { "item": "material_rocksalt", "count": [ 0, 1 ], "prob": 10 }, + { "item": "material_rhodonite", "count": [ 0, 1 ], "prob": 1 }, + { "item": "material_zincite", "count": [ 0, 5 ], "prob": 2 }, + { "item": "orichalcum_lump", "count": [ 0, 2 ] }, + { "item": "orichalcum_sliver", "count": [ 4, 10 ] } + ] + } + }, + { + "type": "furniture", + "id": "f_magic_bench", + "name": "enchanter's workbench", + "looks_like": "f_table", + "description": "An ornate oak cabinet topped by a durable resin countertop resistant to most alchemical spills and burns. It has wired in electrical and gas fittings, and has been decorated with several protection runes - mostly ornamental.", + "symbol": "0", + "bgcolor": "white", + "move_cost_mod": 2, + "coverage": 60, + "required_str": -1, + "flags": [ "TRANSPARENT", "PLACE_ITEM", "MOUNTABLE", "FLAT_SURF" ], + "deconstruct": { + "items": [ + { "item": "pipe", "count": [ 6, 12 ] }, + { "item": "cu_pipe", "count": [ 1, 4 ] }, + { "item": "cable", "charges": [ 1, 4 ] }, + { "item": "plastic_chunk", "count": [ 50, 75 ] }, + { "item": "wood_panel", "count": [ 1, 2 ] }, + { "item": "2x4", "count": [ 3, 4 ] } + ] + }, + "max_volume": "1750 L", + "bash": { + "str_min": 35, + "str_max": 80, + "sound": "metal screeching!", + "sound_fail": "clang!", + "items": [ + { "item": "splinter", "count": [ 2, 8 ] }, + { "item": "2x4", "count": [ 0, 2 ] }, + { "item": "wood_panel", "count": [ 0, 1 ] }, + { "item": "plastic_chunk", "count": [ 30, 50 ] }, + { "item": "pipe", "count": 1 }, + { "item": "cable", "charges": [ 1, 3 ] }, + { "item": "cu_pipe", "count": 1 } + ] + }, + "examine_action": "workbench", + "workbench": { "multiplier": 1.15, "mass": "300 kg", "volume": "100L" } + }, + { + "type": "furniture", + "id": "f_alembic", + "name": "standing alembic", + "looks_like": "f_still", + "description": "A large glass and copper alembic for distilling alchemical concoctions. It consists of a copper pot with rising spires of twisted glass draining into various removable bottles.", + "symbol": "&", + "color": "light_blue", + "move_cost_mod": -1, + "coverage": 40, + "required_str": -1, + "crafting_pseudo_item": "still_lab", + "flags": [ "TRANSPARENT", "NOITEM" ], + "deconstruct": { + "items": [ + { "item": "pot_copper", "count": 1 }, + { "item": "pipe_glass", "count": [ 1, 4 ] }, + { "item": "glass_tube_small", "charges": [ 5, 10 ] }, + { "item": "flask_glass", "count": [ 1, 3 ] } + ] + }, + "max_volume": "1750 L", + "bash": { + "str_min": 4, + "str_max": 10, + "sound": "glass breaking!", + "sound_fail": "clang!", + "items": [ { "item": "scrap_copper", "count": [ 10, 20 ] }, { "item": "glass_shard", "count": [ 2, 4 ] } ] + } + }, + { + "type": "furniture", + "id": "f_orrery", + "name": "orrery", + "looks_like": "f_statue", + "description": "This is a beautiful, non-scale model of the solar system. A complex series of gears allows the relative motions of the planets to be studied at the turn of a crank. This more modern version also has bluetooth and could have been controlled with an app, if there was any power anymore.", + "symbol": "@", + "color": "brown", + "move_cost_mod": -1, + "coverage": 40, + "required_str": -1, + "flags": [ "TRANSPARENT", "NOITEM" ], + "deconstruct": { + "items": [ + { "item": "clockworks", "count": [ 10, 30 ] }, + { "item": "scrap", "count": [ 10, 20 ] }, + { "item": "pipe", "charges": 9 }, + { "item": "wire", "count": [ 10, 20 ] }, + { "item": "hinge", "count": [ 1, 3 ] } + ] + }, + "max_volume": "1750 L", + "bash": { + "str_min": 20, + "str_max": 60, + "sound": "metal screeching!", + "sound_fail": "clang!", + "items": [ + { "item": "scrap", "count": [ 10, 100 ] }, + { "item": "pipe", "count": [ 1, 5 ] }, + { "item": "wire", "count": [ 3, 10 ] } + ] + } + }, + { + "type": "furniture", + "id": "f_huge_mana_crystal", + "name": "huge mana crystal", + "description": "This is a mana crystal that juts from the ground as if it had sprouted up like a weed. It pulses with a delicate yellow energy, occasionally bursting with flashes of pent-up light.", + "symbol": "]", + "color": "white_yellow", + "move_cost_mod": -1, + "coverage": 75, + "required_str": -1, + "looks_like": "f_boulder_large", + "flags": [ "TRANSPARENT", "EMITTER" ], + "emissions": [ "emit_glimmer" ], + "light_emitted": 12, + "bash": { + "str_min": 25, + "str_max": 35, + "sound": "glass shattering!", + "sound_fail": "mana crackling!", + "items": [ + { "item": "crystallized_mana", "charges": [ 0, 100 ] }, + { "item": "small_mana_crystal", "count": [ 0, 3 ] }, + { "item": "glass_shard", "count": [ 1, 3 ] } + ] + } + }, + { + "type": "furniture", + "id": "f_altar", + "name": "stone altar", + "move_cost_mod": 10, + "symbol": "H", + "color": "light_gray", + "coverage": 40, + "required_str": 30, + "flags": [ "BASHABLE" ], + "description": "This is big stone altar. Most commonly used in morally questionable rituals.", + "bash": { + "str_min": 30, + "str_max": 160, + "sound": "smash!", + "sound_fail": "thump.", + "items": [ { "item": "rock", "count": [ 5, 15 ] }, { "item": "sharp_rock", "count": [ 3, 5 ] } ] + } + }, + { + "type": "furniture", + "id": "f_demon_forge", + "name": "demon forge", + "description": "This is a forge made of the chitin of a huge, red spider that has a penchant for flames. Custom made to withstand the heat from alumentum, this forge can resmelt the magical metals into their workable, ingot form.", + "symbol": "^", + "color": "red", + "move_cost_mod": -1, + "coverage": 40, + "required_str": -1, + "crafting_pseudo_item": "demon_forge", + "flags": [ "SEALED", "CONTAINER", "NOITEM", "EASY_DECONSTRUCT", "MINEABLE" ], + "deconstruct": { "items": [ { "item": "demon_chitin_plate", "count": 14 }, { "item": "char_forge", "count": 1 } ] }, + "examine_action": "reload_furniture", + "bash": { + "str_min": 20, + "str_max": 50, + "sound": "crash!", + "sound_fail": "whump.", + "items": [ { "item": "demon_chitin_piece", "count": [ 20, 30 ] } ] + } + } +] diff --git a/data/mods/Magical_Nights/harvest.json b/data/mods/Magical_Nights/harvest.json new file mode 100644 index 000000000000..b4e13c46680a --- /dev/null +++ b/data/mods/Magical_Nights/harvest.json @@ -0,0 +1,297 @@ +[ + { + "id": "owlbear", + "//": "identical to mammal_large_fur except that half the fur has been replaced with feathers", + "type": "harvest", + "entries": [ + { "drop": "mutant_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "owlbear_stone", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_owlbear_fur", "type": "skin", "mass_ratio": 0.015 }, + { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "feather", "type": "skin", "mass_ratio": 0.005 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "owlbear_cub", + "//": "drops regular stomach", + "type": "harvest", + "entries": [ + { "drop": "mutant_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.3 }, + { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.03 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "owlbear_stone", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_owlbear_fur", "type": "skin", "mass_ratio": 0.015 }, + { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "feather", "type": "skin", "mass_ratio": 0.005 } + ] + }, + { + "id": "bulette", + "//": "drops large stomach", + "type": "harvest", + "entries": [ + { "drop": "mutant_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bulette_plate", "scale_num": [ 2, 5 ], "max": 1, "type": "skin" }, + { "drop": "bulette_pearl", "scale_num": [ 1, 4 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "demon_spider", + "type": "harvest", + "entries": [ + { "drop": "blood_tainted", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.05 }, + { "drop": "demon_chitin_piece", "type": "bone", "mass_ratio": 0.04 }, + { "drop": "demon_chitin_plate", "type": "skin", "mass_ratio": 0.01 }, + { "drop": "demon_spider_fang", "base_num": [ 0, 0 ], "scale_num": [ 0.1, 0.6 ], "max": 2, "type": "flesh" } + ] + }, + { + "id": "mammal_small_fur", + "//": "override of vanilla harvest, includes hairballs", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.28 }, + { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.05 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_fur", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "hairball", "type": "bionic", "max": 3 } + ] + }, + { + "id": "mammal_large_fur", + "//": "vanilla override, includes adrenal gland", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_fur", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "mammal_large_leather", + "//": "vanilla override, includes adrenal gland", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "mutant_mammal_large_leather", + "//": "drops large stomach", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone_heavy", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "mammal_large_wool", + "//": "drops large stomach", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "wool_staple", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "human_large_leather", + "type": "harvest", + "entries": [ + { "drop": "mutant_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "mutant_human_flesh", "type": "flesh", "mass_ratio": 0.34 }, + { "drop": "hstomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "mutant_human_fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "animal_large_noskin", + "//": "for those vertebrates that don't have something you can skin off of them", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "mutant_animal_large_noskin", + "//": "for those vertebrates that don't have something you can skin off of them", + "type": "harvest", + "entries": [ + { "drop": "animal_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "mutant_meat_scrap", "type": "flesh", "mass_ratio": 0.01 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "sweetbread", "type": "flesh", "mass_ratio": 0.002 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "stomach_large", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "bone_heavy", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.001 }, + { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "dragon_black", + "type": "harvest", + "entries": [ + { "drop": "dragon_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat_dragon", "type": "flesh", "mass_ratio": 0.19 }, + { "drop": "dragon_black_scale", "type": "skin", "mass_ratio": 0.05 }, + { "drop": "black_dragon_hide_raw", "type": "skin", "mass_ratio": 0.1 }, + { "drop": "dragon_bone", "type": "bone", "mass_ratio": 0.1 } + ] + }, + { + "id": "stirge", + "//": "mainly arachnid drops with leather and proboscis", + "type": "harvest", + "entries": [ + { "drop": "mutant_blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "mutant_meat", "type": "flesh", "mass_ratio": 0.33 }, + { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.01 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 }, + { "drop": "stirge_proboscis", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" } + ] + }, + { + "id": "shrieker", + "//": "mainly fungaloid drops with scream mushroom.", + "type": "harvest", + "entries": [ + { "drop": "veggy", "type": "flesh", "mass_ratio": 0.4 }, + { "drop": "plant_sac", "type": "offal", "mass_ratio": 0.2 }, + { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.1 }, + { "drop": "scream_mush", "scale_num": [ 0.1, 0.3 ], "max": 10, "type": "offal" } + ] + }, + { + "id": "lemure", + "//": "nothing much aside from big pile of meat and maybe demon blood in future. But for now, tainted will do.", + "type": "harvest", + "entries": [ + { "drop": "blood_tainted", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.4 } + ] + }, + { + "id": "lizardfolk", + "type": "harvest", + "entries": [ + { "drop": "blood", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.32 }, + { "drop": "lung", "type": "flesh", "mass_ratio": 0.0035 }, + { "drop": "liver", "type": "offal", "mass_ratio": 0.01 }, + { "drop": "brain", "type": "flesh", "mass_ratio": 0.005 }, + { "drop": "kidney", "type": "offal", "mass_ratio": 0.002 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.1 } + ] + } +] diff --git a/data/mods/Magical_Nights/itemgroups/itemgroups.json b/data/mods/Magical_Nights/itemgroups/itemgroups.json new file mode 100755 index 000000000000..3a0ab60172a7 --- /dev/null +++ b/data/mods/Magical_Nights/itemgroups/itemgroups.json @@ -0,0 +1,998 @@ +[ + { + "type": "item_group", + "id": "dragon_books", + "//": "puts all the dragon books in one group, so it's easy to add more later", + "items": [ [ "black_dragons", 10 ] ] + }, + { + "type": "item_group", + "id": "magic_religious_books", + "//": "Magic-related religious books, split from normal itemgroup because otherwise they show up in places I do not want them.", + "items": [ [ "priest_beginner", 1 ], [ "priest_advanced", 1 ], [ "druid_spellbook", 1 ], [ "summon_undead_spellbook", 1 ] ] + }, + { + "type": "item_group", + "id": "mansion_books", + "items": [ + { "group": "magic_recipe_basic", "prob": 6 }, + { "group": "magic_recipe_advanced", "prob": 2 }, + { "group": "dragon_books", "prob": 5 } + ] + }, + { + "type": "item_group", + "id": "exotic_books", + "items": [ { "group": "magic_recipe_basic", "prob": 3 }, { "group": "dragon_books", "prob": 2 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare", + "items": [ { "item": "m47a1", "prob": 25, "charges-min": 0, "charges-max": 6 } ] + }, + { + "type": "item_group", + "id": "displays", + "items": [ [ "wizard_hat", 5 ] ] + }, + { + "type": "item_group", + "id": "magic_shop_books", + "items": [ + { "group": "spellbook_loot_1", "prob": 60 }, + { "group": "spell_scroll_tier_0", "prob": 80 }, + { "group": "spell_scroll_tier_1", "prob": 60 }, + { "group": "spell_scroll_tier_2", "prob": 30 }, + { "group": "magic_recipe_basic", "prob": 50 }, + { "group": "magic_recipe_advanced", "prob": 15 } + ] + }, + { + "type": "item_group", + "id": "magic_shop_wands", + "items": [ + { "item": "wand_magic_missile_minor", "prob": 35, "charges-min": 12, "charges-max": 34 }, + { "item": "wand_fireball_minor", "prob": 25, "charges-min": 3, "charges-max": 24 } + ] + }, + { + "id": "potions_common", + "type": "item_group", + "items": [ + [ "mana_potion_lesser", 90 ], + [ "mana_potion", 20 ], + [ "mana_potion_greater", 1 ], + [ "ogres_strength_potion", 10 ], + [ "foxs_cunning_potion", 10 ], + [ "eagles_sight_potion", 10 ], + [ "cats_grace_potion", 10 ], + [ "manatouched_serum", 1 ] + ] + }, + { + "id": "magic_shop_potions", + "type": "item_group", + "items": [ + { "group": "potions_common", "prob": 80 }, + { "group": "alchemy_items", "prob": 30 }, + { "group": "magical_reagents", "prob": 20 }, + [ "crystallized_mana", 55 ], + { "item": "small_mana_crystal", "prob": 40, "charges-min": 5, "charges-max": 50 } + ] + }, + { + "id": "alchemy_items", + "type": "item_group", + "items": [ + [ "owlbear_stone", 10 ], + { "item": "stone_shell", "prob": 10, "count-min": 1, "count-max": 3 }, + [ "egg_owlbear_rock", 5 ], + [ "glow_light_off", 1 ], + [ "bulette_plate", 10 ], + { "item": "bulette_pearl", "prob": 8, "count-min": 1, "count-max": 2 } + ] + }, + { + "type": "item_group", + "id": "magic_tools_and_loot", + "//": "Stuff you would find in an average wizard's workshop or other place where someone stores magical goodies.", + "subtype": "collection", + "items": [ + { "group": "tools_common", "prob": 60 }, + { "group": "jewelry_safe", "prob": 10 }, + { "group": "jewelry_front", "prob": 8 }, + { "group": "potions_common", "prob": 15 }, + { "group": "magical_reagents", "prob": 20 }, + { + "distribution": [ + { "group": "enchanted_wands_lesser", "prob": 15 }, + { "group": "spellbook_loot_1", "prob": 35, "count": [ 1, 3 ] }, + { "group": "enchanted_rings_common", "prob": 20 }, + { "group": "enchanted_rings_uncommon", "prob": 5 }, + { "group": "enchanted_combat_items", "prob": 10 }, + { "group": "enchanted_belts", "prob": 2 } + ], + "prob": 15 + }, + { "item": "bone_human", "prob": 60, "count-min": 1, "count-max": 5 }, + [ "toolbox", 10 ] + ] + }, + { + "id": "demon_spider_lair_treasure", + "type": "item_group", + "items": [ + { "group": "potions_common", "prob": 20 }, + { "group": "enchanted_wands_lesser", "prob": 15 }, + { "group": "spellbook_loot_1", "prob": 35, "count": [ 1, 3 ] }, + { "group": "enchanted_rings_common", "prob": 20 }, + { "group": "enchanted_rings_uncommon", "prob": 5 }, + { "group": "enchanted_combat_items", "prob": 10 }, + { "group": "enchanted_belts", "prob": 2 }, + { "group": "magical_reagents", "prob": 8 } + ] + }, + { + "type": "item_group", + "id": "magic_shop_clothes", + "items": [ [ "cloak", 3 ], [ "cloak_wool", 5 ], [ "jedi_cloak", 3 ], [ "robe", 5 ], [ "tophat", 5 ], [ "leathersandals", 6 ] ] + }, + { + "type": "item_group", + "id": "wisp_death", + "items": [ [ "glow_dust", 1 ] ] + }, + { + "type": "item_group", + "id": "basement_utility_closet", + "//": "Stuff you would find in someone's basement closet.", + "items": [ + { "group": "tools_common", "prob": 60 }, + { "group": "paint", "prob": 20 }, + { "group": "supplies_fuel", "prob": 35 }, + [ "toolbox", 10 ], + [ "mop", 100 ], + [ "broom", 100 ], + [ "battery_car", 35 ] + ] + }, + { + "type": "item_group", + "id": "magic_CBM", + "items": [ [ "bio_sneeze_beam", 10 ] ] + }, + { + "type": "item_group", + "id": "lair_loot_generic", + "//": "Stuff you would find in any dragon lair, gold, jewelry, etc.", + "items": [ + { "group": "jewelry_safe", "prob": 30 }, + { "group": "jewelry_front", "prob": 8 }, + { "item": "bone_human", "prob": 60, "count-min": 1, "count-max": 5 } + ] + }, + { + "type": "item_group", + "id": "lair_black_dragon", + "//": "Stuff you would find in any dragon deeper lair level. Gold, jewelry, weapons etc. Should require a bit of a fight or risk to access.", + "items": [ + { "item": "bone_human", "prob": 30, "count-min": 1, "count-max": 5 }, + { "group": "archery", "prob": 1 }, + { "group": "jewelry_safe", "prob": 2 }, + { "group": "jewelry_front", "prob": 2 }, + { "group": "corpses", "prob": 20 }, + { "group": "remains_human_generic", "prob": 5, "count-min": 1, "count-max": 2 }, + { "group": "archery_ammo", "prob": 2, "count-min": 1, "count-max": 4 }, + { "group": "medieval", "prob": 1, "count-min": 1, "count-max": 2 }, + { "group": "medieval", "prob": 1, "count-min": 1, "count-max": 2 }, + { "group": "magical_reagents", "prob": 2 }, + { "group": "enchanted_combat_items", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "lair_black_dragon_treasure", + "//": "Stuff you would find in any dragon treasure room or from a boss fight. Should require exceptional risk to access. Includes lower tier group, plus the best magic items.", + "items": [ + { "group": "lair_loot_generic", "prob": 80, "count": [ 2, 6 ] }, + { "item": "dragon_black_scale", "count": [ 48, 120 ] }, + { "group": "enchanted_tokens_weapon", "prob": 30 }, + { "group": "enchanted_rings_common", "prob": 40 }, + { "group": "enchanted_rings_uncommon", "prob": 30 }, + { "group": "enchanted_rings_unusual", "prob": 20 }, + { "group": "enchanted_rings_rare", "prob": 10 }, + { "group": "enchanted_melee_weapons_plus1", "prob": 30 }, + { "group": "enchanted_melee_weapons_plus2", "prob": 10 }, + { "group": "enchanted_wands_minor", "prob": 40 }, + { "group": "enchanted_wands_lesser", "prob": 20 }, + { "group": "enchanted_wands_greater", "prob": 10 }, + { "group": "enchanted_masks", "prob": 10 }, + { "group": "enchanted_bracers_lesser", "prob": 20 }, + { "group": "enchanted_bracers_greater", "prob": 10 }, + { "group": "enchanted_boots", "prob": 15 }, + { "group": "enchanted_belts", "prob": 15 }, + { "group": "spellbook_loot_2", "prob": 20 } + ] + }, + { + "id": "enchanted_misc", + "type": "item_group", + "//": "all enchanted miscellanious items", + "subtype": "collection", + "items": [ + { "item": "heat_cube", "prob": 10 }, + { "item": "mkey_opening", "prob": 10 }, + { "item": "mtorch_everburning", "prob": 10 }, + { "item": "mflask_hip_whiskey", "prob": 10 }, + { "item": "mtailors_kit", "prob": 10 }, + { "item": "mspider_box", "prob": 10 }, + { "item": "cauldron_demon_chitin", "prob": 2 } + ] + }, + { + "id": "enchanted_tokens_weapon", + "type": "item_group", + "//": "all the melee weapon tokens", + "subtype": "collection", + "items": [ + { "item": "mtoken_longsword", "prob": 10 }, + { "item": "mtoken_arming_sword", "prob": 10 }, + { "item": "mtoken_broadsword", "prob": 10 }, + { "item": "mtoken_battleaxe", "prob": 10 }, + { "item": "mtoken_pike", "prob": 10 }, + { "item": "mtoken_mace", "prob": 10 }, + { "item": "mtoken_q_staff", "prob": 10 } + ] + }, + { + "id": "enchanted_tokens_tool", + "type": "item_group", + "//": "all the tool tokens", + "subtype": "collection", + "items": [ + { "item": "mtoken_toolbox", "prob": 5 }, + { "item": "mtoken_hammer", "prob": 20 }, + { "item": "mtoken_screwdriver_set", "prob": 30 }, + { "item": "mtoken_crowbar", "prob": 20 } + ] + }, + { + "id": "enchanted_rings_common", + "type": "item_group", + "//": "all the common enchanted rings", + "subtype": "collection", + "items": [ + { "item": "mring_blades_lesser", "prob": 5 }, + { "item": "mring_strength_1", "prob": 10 }, + { "item": "mring_dexterity_1", "prob": 10 }, + { "item": "mring_intelligence_1", "prob": 10 }, + { "item": "mring_perception_1", "prob": 10 }, + { "item": "mring_speed_3", "prob": 10 }, + { "item": "mring_protection_2", "prob": 10 } + ] + }, + { + "id": "enchanted_rings_uncommon", + "type": "item_group", + "//": "all the uncommon enchanted rings", + "subtype": "collection", + "items": [ + { "item": "mring_strength_2", "prob": 10 }, + { "item": "mring_dexterity_2", "prob": 10 }, + { "item": "mring_intelligence_2", "prob": 10 }, + { "item": "mring_dodge_bonus_1", "prob": 10 }, + { "item": "mring_perception_2", "prob": 10 }, + { "item": "mring_speed_5", "prob": 10 }, + { "item": "mring_protection_4", "prob": 10 } + ] + }, + { + "id": "enchanted_rings_unusual", + "type": "item_group", + "//": "all the unusual enchanted rings", + "subtype": "collection", + "items": [ + { "item": "mring_strength_3", "prob": 10 }, + { "item": "mring_dexterity_3", "prob": 10 }, + { "item": "mring_dodge_bonus_2", "prob": 10 }, + { "item": "mring_intelligence_3", "prob": 10 }, + { "item": "mring_perception_3", "prob": 10 }, + { "item": "mring_speed_7", "prob": 10 }, + { "item": "mring_protection_6", "prob": 10 } + ] + }, + { + "id": "enchanted_rings_rare", + "type": "item_group", + "//": "all the rare enchanted rings. High end loot for boss fights, treasure rooms, etc.", + "subtype": "collection", + "items": [ + { "item": "mring_strength_4", "prob": 10 }, + { "item": "mring_dexterity_4", "prob": 10 }, + { "item": "mring_intelligence_4", "prob": 10 }, + { "item": "mring_perception_4", "prob": 10 }, + { "item": "mring_speed_10", "prob": 10 }, + { "item": "mring_protection_8", "prob": 10 } + ] + }, + { + "id": "enchanted_wands_minor", + "type": "item_group", + "//": "minor enchanted wands", + "subtype": "collection", + "items": [ + { "item": "wand_magic_missile_minor", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_fireball_minor", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_mana_beam_minor", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_point_flare_minor", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_disp_hoaryblast_minor", "prob": 20, "charges-min": 3, "charges-max": 20 }, + { "item": "wand_disp_cone_cold_minor", "prob": 20, "charges-min": 3, "charges-max": 20 } + ] + }, + { + "id": "enchanted_wands_lesser", + "type": "item_group", + "//": "lesser enchanted wands", + "subtype": "collection", + "items": [ + { "item": "wand_magic_missile_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_fireball_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_mana_beam_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_point_flare_lesser", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_disp_hoaryblast_lesser", "prob": 20, "charges-min": 3, "charges-max": 20 }, + { "item": "wand_disp_cone_cold_lesser", "prob": 20, "charges-min": 3, "charges-max": 20 } + ] + }, + { + "id": "enchanted_wands_greater", + "type": "item_group", + "//": "rare enchanted wands. High end loot for boss fights, treasure rooms, etc.", + "subtype": "collection", + "items": [ + { "item": "wand_magic_missile_greater", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_fireball_greater", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_mana_beam_greater", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_point_flare_greater", "prob": 10, "charges-min": 3, "charges-max": 24 }, + { "item": "wand_disp_hoaryblast_greater", "prob": 20, "charges-min": 3, "charges-max": 20 }, + { "item": "wand_disp_cone_cold_greater", "prob": 20, "charges-min": 3, "charges-max": 20 } + ] + }, + { + "id": "enchanted_masks", + "type": "item_group", + "//": "all enchanted masks. High end loot for boss fights, treasure rooms, etc.", + "subtype": "collection", + "items": [ { "item": "mmask_disappearance", "prob": 5 }, { "item": "mmask_vision", "prob": 10 } ] + }, + { + "id": "enchanted_bracers_lesser", + "type": "item_group", + "//": "lesser enchanted bracers", + "subtype": "collection", + "items": [ { "item": "mbracer_defense_lesser", "prob": 10 }, { "item": "mbracer_lightning_lesser", "prob": 10 } ] + }, + { + "id": "enchanted_bracers_greater", + "type": "item_group", + "//": "greater enchanted bracers", + "subtype": "collection", + "items": [ { "item": "mbracer_defense_greater", "prob": 10 }, { "item": "mbracer_lightning_greater", "prob": 10 } ] + }, + { + "id": "enchanted_boots", + "type": "item_group", + "//": "all enchanted boots", + "subtype": "collection", + "items": [ + { "item": "mboots_haste", "prob": 10 }, + { "item": "mboots_sevenleague", "prob": 10 }, + { "item": "mboots_escape", "prob": 10 }, + { "item": "mboots_grounding", "prob": 10 } + ] + }, + { + "id": "enchanted_belts", + "type": "item_group", + "//": "all enchanted belts", + "subtype": "collection", + "items": [ + { "item": "magi_staff_minor", "prob": 10 }, + { "item": "magi_staff_lesser", "prob": 5 }, + { "item": "magi_staff_greater", "prob": 1 }, + { "item": "wizard_hat", "prob": 20 }, + { "item": "mbelt_haste", "prob": 5 }, + { "item": "mbelt_thor", "prob": 1 }, + { "item": "mbelt_pockets_lesser", "prob": 10 }, + { "item": "mbelt_pockets_greater", "prob": 5 }, + { "item": "mbelt_weaponry", "prob": 10 }, + { "item": "mbelt_technomancer_toolbelt", "prob": 5 }, + { "item": "mbelt_iron_whip", "prob": 5 } + ] + }, + { + "id": "enchanted_melee_weapons_plus1", + "type": "item_group", + "//": "plus 1 enchanted melee weapons", + "items": [ + { "item": "cudgel_plus_one", "prob": 10 }, + { "item": "q_staff_plus_one", "prob": 10 }, + { "item": "i_staff_plus_one", "prob": 10 }, + { "item": "longsword_plus_one", "prob": 5 }, + { "item": "sledge_plus_one", "prob": 8 }, + { "item": "warhammer_plus_one", "prob": 8 }, + { "item": "bat_plus_one", "prob": 10 }, + { "item": "bat_metal_plus_one", "prob": 8 }, + { "item": "spear_steel_plus_one", "prob": 8 }, + { "item": "qiang_plus_one", "prob": 8 }, + { "item": "halberd_plus_one", "prob": 8 }, + { "item": "glaive_plus_one", "prob": 8 }, + { "item": "naginata_plus_one", "prob": 5 }, + { "item": "mace_plus_one", "prob": 5 }, + { "item": "morningstar_plus_one", "prob": 5 }, + { "item": "jian_plus_one", "prob": 5 }, + { "item": "scimitar_plus_one", "prob": 5 }, + { "item": "estoc_plus_one", "prob": 5 }, + { "item": "arming_sword_plus_one", "prob": 5 }, + { "item": "broadsword_plus_one", "prob": 5 }, + { "item": "battleaxe_plus_one", "prob": 5 }, + { "item": "cavalry_sabre_plus_one", "prob": 5 }, + { "item": "crowbar_plus_one", "prob": 10 }, + { "item": "cutlass_plus_one", "prob": 5 }, + { "item": "fire_ax_plus_one", "prob": 8 }, + { "item": "katana_plus_one", "prob": 5 }, + { "item": "knife_combat_plus_one", "prob": 8 }, + { "item": "knife_hunting_plus_one", "prob": 8 }, + { "item": "knife_rambo_plus_one", "prob": 5 }, + { "item": "knife_trench_plus_one", "prob": 5 }, + { "item": "kris_plus_one", "prob": 5 }, + { "item": "kukri_plus_one", "prob": 5 }, + { "item": "nodachi_plus_one", "prob": 5 }, + { "item": "pickaxe_plus_one", "prob": 8 }, + { "item": "pike_plus_one", "prob": 5 }, + { "item": "rapier_plus_one", "prob": 5 }, + { "item": "tanto_plus_one", "prob": 5 }, + { "item": "wakizashi_plus_one", "prob": 5 }, + { "item": "zweihander_plus_one", "prob": 5 }, + { "item": "khopesh_plus_one", "prob": 5 }, + { "item": "sword_xiphos_plus_one", "prob": 5 }, + { "item": "dao_plus_one", "prob": 5 }, + { "item": "gunblade", "prob": 5 } + ] + }, + { + "id": "enchanted_melee_weapons_plus2", + "type": "item_group", + "//": "plus 2 enchanted melee weapons. High end loot for boss fights, treasure rooms, etc.", + "items": [ + { "item": "cudgel_plus_two", "prob": 10 }, + { "item": "q_staff_plus_two", "prob": 10 }, + { "item": "i_staff_plus_two", "prob": 10 }, + { "item": "longsword_plus_two", "prob": 5 }, + { "item": "sledge_plus_two", "prob": 8 }, + { "item": "warhammer_plus_two", "prob": 8 }, + { "item": "bat_plus_two", "prob": 10 }, + { "item": "bat_metal_plus_two", "prob": 8 }, + { "item": "spear_steel_plus_two", "prob": 8 }, + { "item": "qiang_plus_two", "prob": 8 }, + { "item": "halberd_plus_two", "prob": 8 }, + { "item": "glaive_plus_two", "prob": 8 }, + { "item": "naginata_plus_two", "prob": 5 }, + { "item": "mace_plus_two", "prob": 5 }, + { "item": "morningstar_plus_two", "prob": 5 }, + { "item": "jian_plus_two", "prob": 5 }, + { "item": "scimitar_plus_two", "prob": 5 }, + { "item": "estoc_plus_two", "prob": 5 }, + { "item": "arming_sword_plus_two", "prob": 5 }, + { "item": "broadsword_plus_two", "prob": 5 }, + { "item": "battleaxe_plus_two", "prob": 5 }, + { "item": "cavalry_sabre_plus_two", "prob": 5 }, + { "item": "crowbar_plus_two", "prob": 10 }, + { "item": "cutlass_plus_two", "prob": 5 }, + { "item": "fire_ax_plus_two", "prob": 8 }, + { "item": "katana_plus_two", "prob": 5 }, + { "item": "knife_combat_plus_two", "prob": 8 }, + { "item": "knife_hunting_plus_two", "prob": 8 }, + { "item": "knife_rambo_plus_two", "prob": 5 }, + { "item": "knife_trench_plus_two", "prob": 5 }, + { "item": "kris_plus_two", "prob": 5 }, + { "item": "kukri_plus_two", "prob": 5 }, + { "item": "nodachi_plus_two", "prob": 5 }, + { "item": "pickaxe_plus_two", "prob": 8 }, + { "item": "pike_plus_two", "prob": 5 }, + { "item": "rapier_plus_two", "prob": 5 }, + { "item": "tanto_plus_two", "prob": 5 }, + { "item": "wakizashi_plus_two", "prob": 5 }, + { "item": "zweihander_plus_two", "prob": 5 }, + { "item": "khopesh_plus_two", "prob": 5 }, + { "item": "sword_xiphos_plus_two", "prob": 5 }, + { "item": "dao_plus_two", "prob": 5 } + ] + }, + { + "id": "enchanted_small_items", + "//": "A distribution of small magical items for general loot areas like desks, shelves, personal items.", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "enchanted_tokens_tool", "prob": 30 }, + { "group": "enchanted_tokens_weapon", "prob": 3 }, + { "group": "enchanted_rings_common", "prob": 20 }, + { "group": "enchanted_rings_uncommon", "prob": 5 }, + { "group": "enchanted_wands_minor", "prob": 10 }, + { "group": "enchanted_masks", "prob": 2 }, + { "group": "magic_shop_potions", "prob": 40 }, + { "group": "spellbook_loot_1", "prob": 30 }, + { "group": "magic_CBM", "prob": 2 }, + { "item": "lair_map", "prob": 20 }, + { "item": "retreat_map", "prob": 30 }, + [ "crystallized_mana", 50 ], + { "item": "small_mana_crystal", "prob": 40, "charges-min": 5, "charges-max": 50 } + ] + }, + { + "id": "enchanted_worn_items", + "//": "A distribution of wearable magical items for loot areas like dressers, wardrobes, coat racks.", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "enchanted_bracers_lesser", "prob": 25 }, + { "group": "enchanted_boots", "prob": 7 }, + { "group": "enchanted_belts", "prob": 7 } + ] + }, + { + "id": "enchanted_combat_items", + "//": "A distribution of magical items for combat loot.", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "enchanted_bracers_lesser", "prob": 25 }, + { "group": "enchanted_worn_items", "prob": 15 }, + { "group": "enchanted_melee_weapons_plus1", "prob": 3 }, + { "group": "enchanted_small_items", "prob": 1 } + ] + }, + { + "id": "boss_treasure_items", + "//": "A distribution of rare magical items treasure rooms.", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "group": "enchanted_combat_items", "prob": 40 }, + { "group": "enchanted_misc", "prob": 50 }, + { "group": "enchanted_rings_unusual", "prob": 20 }, + { "group": "enchanted_rings_rare", "prob": 30 }, + { "group": "enchanted_wands_greater", "prob": 30 }, + { "group": "enchanted_wands_lesser", "prob": 20 } + ] + }, + { + "id": "stormshaper_items", + "//": "A distribution of magical items for stormshaper themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "spell_scroll_stormshaper_wall_of_fog", "prob": 50 }, + { "item": "spell_scroll_lightning_blast", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "spell_scroll_jolt", "prob": 50 }, + { "item": "spell_scroll_lightning_bolt", "prob": 50 }, + { "item": "spell_scroll_windstrike", "prob": 50 }, + { "item": "spell_scroll_windrun", "prob": 50 } + ], + "prob": 40 + }, + { + "distribution": [ + { "item": "tome_of_storms", "prob": 5 }, + { "item": "spell_scroll_storm_hammer", "prob": 50 }, + { "item": "spell_scroll_stormshaper_ionization", "prob": 50 }, + { "item": "lightning_storm_scroll", "prob": 10 } + ], + "prob": 10 + } + ] + }, + { + "id": "magical_reagents", + "//": "Reagents you'd use in crafting a wide variety of things, including alchemy and rituals.", + "type": "item_group", + "subtype": "distribution", + "items": [ { "item": "mercury", "prob": 15, "charges-min": 50 } ] + }, + { + "id": "science", + "type": "item_group", + "items": [ { "group": "magical_reagents", "prob": 18 } ] + }, + { + "id": "magus_items", + "//": "A distribution of magical items for magus themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "wizard_beginner", "prob": 30 }, + { "item": "wizard_utility", "prob": 20 }, + { "item": "spell_scroll_magic_missile", "prob": 70 }, + { "item": "spell_scroll_phase_door", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "wizard_advanced", "prob": 20 }, + { "item": "spell_scroll_magus_mana_bolt", "prob": 50 }, + { "item": "spell_scroll_magus_haste", "prob": 50 }, + { "item": "spell_scroll_magus_mana_beam", "prob": 50 }, + { "item": "spell_scroll_magus_escape", "prob": 50 }, + { "item": "spell_scroll_cats_grace", "prob": 50 }, + { "item": "spell_scroll_eagles_sight", "prob": 50 }, + { "item": "spell_scroll_ogres_strength", "prob": 50 }, + { "item": "spell_scroll_foxs_cunning", "prob": 50 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "magus_spellbook_move", "prob": 25 }, + { "item": "magus_spellbook", "prob": 25 }, + { "item": "spell_scroll_magus_mana_blast", "prob": 50 } + ], + "prob": 10 + }, + { + "distribution": [ { "item": "recovery_spellbook", "prob": 10 }, { "item": "spell_scroll_invisibility", "prob": 50 } ], + "prob": 5 + } + ] + }, + { + "id": "animist_items", + "//": "A distribution of magical items for animist themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "spell_scroll_smite", "prob": 50 }, + { "item": "spell_scroll_summon_zombie", "prob": 50 }, + { "item": "spell_scroll_necrotic_gaze", "prob": 50 }, + { "item": "spell_scroll_summon_wisps", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ { "item": "priest_advanced", "prob": 10 }, { "item": "spell_scroll_summon_skeleton", "prob": 50 } ], + "prob": 35 + }, + { + "distribution": [ + { "item": "recovery_spellbook", "prob": 5 }, + { "item": "winter_grasp", "prob": 10 }, + { "item": "spell_scroll_recover_mana", "prob": 50 }, + { "item": "spell_scroll_summon_decayed_pouncer", "prob": 50 }, + { "item": "spell_scroll_recover_pain", "prob": 50 } + ], + "prob": 10 + }, + { + "distribution": [ + { "item": "animist_doll_skeleton", "prob": 10 }, + { "item": "animist_doll_zombie", "prob": 20 }, + { "item": "animist_doll_decayed_pouncer", "prob": 3 } + ], + "prob": 20 + } + ] + }, + { + "id": "kelvinist_items", + "//": "A distribution of magical items for kelvinist themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ { "item": "spell_scroll_create_lighter", "prob": 50 }, { "item": "spell_scroll_chilling_touch", "prob": 50 } ], + "prob": 45 + }, + { + "distribution": [ + { "item": "wizard_utility", "prob": 10 }, + { "item": "spell_scroll_point_flare", "prob": 50 }, + { "item": "spell_scroll_ice_spike", "prob": 50 }, + { "item": "spell_scroll_burning_hands", "prob": 50 }, + { "item": "spell_scroll_frost_spray", "prob": 50 }, + { "item": "spell_scroll_glide_ice", "prob": 50 }, + { "item": "spell_scroll_ice_shield", "prob": 50 }, + { "item": "spell_scroll_frost_armor", "prob": 50 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "wizard_advanced", "prob": 5 }, + { "item": "pyro", "prob": 5 }, + { "item": "spell_scroll_fireball", "prob": 10 }, + { "item": "spell_scroll_recover_bionic_power", "prob": 50 }, + { "item": "spell_scroll_cone_cold", "prob": 50 }, + { "item": "spell_scroll_hoary_blast", "prob": 50 } + ], + "prob": 10 + } + ] + }, + { + "id": "technomancer_items", + "//": "A distribution of magical items for technomancer themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "priest_beginner", "prob": 20 }, + { "item": "techno_idiots", "prob": 20 }, + { "item": "spell_scroll_bless", "prob": 50 }, + { "item": "spell_scroll_create_atomic_lamp", "prob": 50 }, + { "item": "spell_scroll_taze", "prob": 50 }, + { "item": "spell_scroll_laze", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "priest_advanced", "prob": 20 }, + { "item": "techno_fundamentals", "prob": 20 }, + { "item": "spell_scroll_quantum_tunnel_lesser", "prob": 50 }, + { "item": "spell_scroll_holy_blade", "prob": 50 }, + { "item": "spell_scroll_spirit_armor", "prob": 50 }, + { "item": "spell_scroll_synaptic_stimulation", "prob": 50 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "techno_em", "prob": 5 }, + { "item": "spell_scroll_holographic_transposition", "prob": 10 }, + { "item": "spell_scroll_recover_bionic_power", "prob": 50 }, + { "item": "spell_scroll_animated_blade", "prob": 50 }, + { "item": "spell_scroll_mirror_image", "prob": 50 } + ], + "prob": 10 + }, + { + "distribution": [ { "item": "recovery_spellbook", "prob": 10 }, { "item": "spell_scroll_invisibility", "prob": 50 } ], + "prob": 5 + }, + { "group": "magic_CBM", "prob": 2 } + ] + }, + { + "id": "earthshaper_items", + "//": "A distribution of magical items for earthshaper themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "spell_scroll_stonefist", "prob": 50 }, + { "item": "spell_scroll_eshaper_piercing_bolt", "prob": 50 }, + { "item": "spell_scroll_eshaper_rockbolt", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "spell_scroll_seismic_stomp", "prob": 50 }, + { "item": "spell_scroll_eshaper_shardspray", "prob": 50 }, + { "item": "spell_scroll_earthshaper_stoneskin", "prob": 50 }, + { "item": "spell_scroll_earthshaper_pillar", "prob": 50 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "recovery_spellbook", "prob": 5 }, + { "item": "eshaper_spellbook", "prob": 10 }, + { "item": "spell_scroll_recover_stamina", "prob": 50 }, + { "item": "spell_scroll_eshaper_shardstorm", "prob": 50 }, + { "item": "spell_scroll_lava_bomb", "prob": 50 } + ], + "prob": 10 + } + ] + }, + { + "id": "biomancer_items", + "//": "A distribution of magical items for biomancer themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "priest_beginner", "prob": 30 }, + { "item": "spell_scroll_light_healing", "prob": 50 }, + { "item": "spell_scroll_bio_acidicspray", "prob": 50 }, + { "item": "spell_scroll_biomancer_paralytic_dart", "prob": 50 }, + { "item": "spell_scroll_biomancer_visceral_projection", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "wizard_utility", "prob": 20 }, + { "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 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "wizard_advanced", "prob": 10 }, + { "item": "biomancer_spellbook", "prob": 10 }, + { "item": "spell_scroll_vicious_tentacle", "prob": 50 }, + { "item": "spell_scroll_bio_bonespear", "prob": 50 } + ], + "prob": 10 + } + ] + }, + { + "id": "druid_items", + "//": "A distribution of magical items for druid themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "spell_scroll_druid_woodshaft", "prob": 30 }, + { "item": "summon_scroll_smudged", "prob": 2 }, + { "item": "spell_scroll_summon_cats", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "druid_spellbook", "prob": 20 }, + { "item": "spell_scroll_druid_veggrasp", "prob": 100 }, + { "item": "spell_scroll_druid_naturebow1", "prob": 100 }, + { "item": "spell_scroll_druid_rootstrike", "prob": 100 }, + { "item": "spell_scroll_purification_seed", "prob": 100 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "recovery_spellbook", "prob": 10 }, + { "item": "spell_scroll_recover_fatigue", "prob": 100 }, + { "item": "spell_scroll_druidic_regrowth", "prob": 100 }, + { "item": "spell_scroll_druidic_healing", "prob": 100 } + ], + "prob": 10 + } + ] + }, + { + "id": "technomancer_items", + "//": "A distribution of magical items for technomancer themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { + "distribution": [ + { "item": "priest_beginner", "prob": 20 }, + { "item": "techno_idiots", "prob": 20 }, + { "item": "spell_scroll_bless", "prob": 50 }, + { "item": "spell_scroll_create_atomic_lamp", "prob": 50 }, + { "item": "spell_scroll_taze", "prob": 50 }, + { "item": "spell_scroll_laze", "prob": 50 } + ], + "prob": 45 + }, + { + "distribution": [ + { "item": "priest_advanced", "prob": 20 }, + { "item": "techno_fundamentals", "prob": 20 }, + { "item": "spell_scroll_quantum_tunnel_lesser", "prob": 50 }, + { "item": "spell_scroll_holy_blade", "prob": 50 }, + { "item": "spell_scroll_spirit_armor", "prob": 50 }, + { "item": "spell_scroll_synaptic_stimulation", "prob": 50 } + ], + "prob": 35 + }, + { + "distribution": [ + { "item": "techno_em", "prob": 5 }, + { "item": "spell_scroll_holographic_transposition", "prob": 10 }, + { "item": "spell_scroll_recover_bionic_power", "prob": 50 }, + { "item": "spell_scroll_animated_blade", "prob": 50 }, + { "item": "spell_scroll_mirror_image", "prob": 50 } + ], + "prob": 10 + }, + { + "distribution": [ { "item": "recovery_spellbook", "prob": 10 }, { "item": "spell_scroll_invisibility", "prob": 50 } ], + "prob": 5 + }, + { "group": "magic_CBM", "prob": 2 } + ] + }, + { + "id": "classless_items", + "//": "A distribution of magical items for classless themed spaces.", + "type": "item_group", + "subtype": "collection", + "items": [ + { "group": "enchanted_tokens_tool", "prob": 15 }, + { "group": "enchanted_tokens_weapon", "prob": 5 }, + { "group": "potions_common", "prob": 35 }, + { + "distribution": [ + { "group": "enchanted_wands_lesser", "prob": 15 }, + { "group": "enchanted_combat_items", "prob": 5 }, + { "group": "enchanted_worn_items", "prob": 2 } + ], + "prob": 15 + }, + { + "distribution": [ + { "item": "priest_beginner", "prob": 20 }, + { "item": "wizard_beginner", "prob": 20 }, + { "item": "spell_scroll_create_atomic_light", "prob": 50 }, + { "item": "spell_scroll_ethereal_grasp", "prob": 50 }, + { "item": "spell_scroll_crystallize_mana", "prob": 50 }, + { "item": "spell_scroll_blinding_flash", "prob": 50 } + ], + "prob": 50 + }, + { + "distribution": [ + { "item": "wizard_utility", "prob": 10 }, + { "item": "spell_scroll_protection_aura", "prob": 50 }, + { "item": "spell_scroll_dark_sight", "prob": 30 }, + { "item": "spell_scroll_megablast", "prob": 30 } + ], + "prob": 40 + }, + { + "distribution": [ + { "item": "light_manipulation_spellbook", "prob": 5 }, + { "item": "translocate_spellbook", "prob": 2 }, + { "item": "spell_scroll_obfuscated_body", "prob": 50 } + ], + "prob": 10 + }, + { + "distribution": [ { "group": "enchanted_rings_common", "prob": 30 }, { "group": "enchanted_rings_uncommon", "prob": 10 } ], + "prob": 40 + }, + [ "crystallized_mana", 50 ], + [ "copper_circlet", 10 ], + { "item": "small_mana_crystal", "prob": 40, "charges-min": 5, "charges-max": 50 } + ] + }, + { + "type": "item_group", + "id": "academy_lore", + "items": [ [ "retreat_map", 100 ] ] + }, + { + "type": "item_group", + "id": "magic_basement_photo", + "items": [ [ "wizard_photo", 100 ] ] + }, + { + "type": "item_group", + "id": "forest_tomb_spellbook", + "items": [ [ "summon_undead_spellbook", 100 ] ] + } +] diff --git a/data/mods/Magical_Nights/itemgroups/recipe_books.json b/data/mods/Magical_Nights/itemgroups/recipe_books.json new file mode 100644 index 000000000000..d522903b1937 --- /dev/null +++ b/data/mods/Magical_Nights/itemgroups/recipe_books.json @@ -0,0 +1,21 @@ +[ + { + "id": "magic_recipe_basic", + "type": "item_group", + "//": "Lower tier recipes, many of which can be done with the alchemist rune. Usually has at least one recipe requiring related school rune or rune weapon", + "items": [ + [ "alchemy_basic", 30 ], + [ "necro_basic", 30 ], + [ "techno_basic", 30 ], + [ "book_mythological", 10 ], + [ "cooking_poison", 15 ], + [ "metal_legends", 5 ] + ] + }, + { + "id": "magic_recipe_advanced", + "type": "item_group", + "//": "Higher tier recipes, where most school-related recipes require their rune or rune weapon.", + "items": [ [ "magic_armormaking", 30 ], [ "weapon_enchanting_guide", 30 ] ] + } +] diff --git a/data/mods/Magical_Nights/itemgroups/spellbooks.json b/data/mods/Magical_Nights/itemgroups/spellbooks.json new file mode 100644 index 000000000000..c6f24873ccfc --- /dev/null +++ b/data/mods/Magical_Nights/itemgroups/spellbooks.json @@ -0,0 +1,216 @@ +[ + { + "id": "spell_scroll_tier_0", + "type": "item_group", + "items": [ + [ "summon_scroll_smudged", 10 ], + [ "spell_scroll_summon_lemon", 20 ], + [ "spell_scroll_smite", 40 ], + [ "spell_scroll_summon_zombie", 25 ], + [ "spell_scroll_light_healing", 50 ], + [ "spell_scroll_bio_acidicspray", 35 ], + [ "spell_scroll_create_atomic_light", 50 ], + [ "spell_scroll_blinding_flash", 50 ], + [ "spell_scroll_ethereal_grasp", 50 ], + [ "spell_scroll_druid_woodshaft", 50 ], + [ "spell_scroll_summon_cats", 65 ], + [ "spell_scroll_stonefist", 20 ], + [ "spell_scroll_eshaper_piercing_bolt", 40 ], + [ "spell_scroll_eshaper_rockbolt", 50 ], + [ "spell_scroll_create_lighter", 50 ], + [ "spell_scroll_chilling_touch", 50 ], + [ "spell_scroll_magic_missile", 50 ], + [ "spell_scroll_bless", 25 ], + [ "spell_scroll_create_atomic_lamp", 25 ], + [ "spell_scroll_taze", 25 ], + [ "spell_scroll_laze", 25 ], + [ "spell_scroll_lightning_blast", 20 ], + [ "spell_scroll_necrotic_gaze", 50 ], + [ "spell_scroll_crystallize_mana", 20 ], + [ "spell_scroll_biomancer_paralytic_dart", 40 ], + [ "spell_scroll_biomancer_visceral_projection", 40 ], + [ "spell_scroll_summon_wisps", 30 ], + [ "spell_scroll_stormshaper_wall_of_fog", 35 ] + ] + }, + { + "id": "spell_scroll_tier_1", + "type": "item_group", + "items": [ + [ "spell_scroll_summon_skeleton", 35 ], + [ "spell_scroll_pain_split", 25 ], + [ "spell_scroll_bio_grotesque", 40 ], + [ "spell_scroll_bio_fleshpouch", 30 ], + [ "spell_scroll_protection_aura", 50 ], + [ "spell_scroll_druid_veggrasp", 35 ], + [ "spell_scroll_druid_rootstrike", 40 ], + [ "spell_scroll_druid_naturebow1", 20 ], + [ "spell_scroll_seismic_stomp", 20 ], + [ "spell_scroll_eshaper_shardspray", 25 ], + [ "spell_scroll_point_flare", 50 ], + [ "spell_scroll_ice_spike", 50 ], + [ "spell_scroll_burning_hands", 50 ], + [ "spell_scroll_frost_spray", 50 ], + [ "spell_scroll_glide_ice", 25 ], + [ "spell_scroll_ice_shield", 25 ], + [ "spell_scroll_frost_armor", 35 ], + [ "spell_scroll_phase_door", 50 ], + [ "spell_scroll_jolt", 50 ], + [ "spell_scroll_lightning_bolt", 35 ], + [ "spell_scroll_windstrike", 50 ], + [ "spell_scroll_windrun", 35 ], + [ "spell_scroll_holy_blade", 25 ], + [ "spell_scroll_spirit_armor", 25 ], + [ "spell_scroll_quantum_tunnel_lesser", 50 ], + [ "spell_scroll_synaptic_stimulation", 20 ], + [ "spell_scroll_purification_seed", 40 ], + [ "spell_scroll_crystallize_mana", 50 ], + [ "spell_scroll_earthshaper_stoneskin", 30 ], + [ "spell_scroll_earthshaper_pillar", 35 ], + [ "spell_scroll_biomancer_coagulant_weave", 30 ], + [ "spell_scroll_condense_water", 45 ], + [ "spell_scroll_acid_bolt", 35 ] + ] + }, + { + "id": "spell_scroll_tier_2", + "type": "item_group", + "items": [ + [ "spell_scroll_recover_mana", 25 ], + [ "spell_scroll_recover_pain", 25 ], + [ "spell_scroll_recover_fatigue", 25 ], + [ "spell_scroll_recover_stamina", 25 ], + [ "spell_scroll_recover_bionic_power", 25 ], + [ "spell_scroll_summon_decayed_pouncer", 35 ], + [ "spell_scroll_summon_floating_disk", 25 ], + [ "spell_scroll_vicious_tentacle", 40 ], + [ "spell_scroll_bio_bonespear", 20 ], + [ "spell_scroll_megablast", 10 ], + [ "spell_scroll_eshaper_shardstorm", 50 ], + [ "spell_scroll_fireball", 50 ], + [ "spell_scroll_cone_cold", 50 ], + [ "spell_scroll_hoary_blast", 50 ], + [ "spell_scroll_gravity_well", 35 ], + [ "spell_scroll_magus_mana_bolt", 35 ], + [ "spell_scroll_magus_haste", 50 ], + [ "spell_scroll_magus_mana_beam", 35 ], + [ "spell_scroll_magus_escape", 50 ], + [ "spell_scroll_cats_grace", 50 ], + [ "spell_scroll_eagles_sight", 50 ], + [ "spell_scroll_ogres_strength", 50 ], + [ "spell_scroll_foxs_cunning", 50 ], + [ "spell_scroll_storm_hammer", 35 ], + [ "spell_scroll_animated_blade", 35 ], + [ "spell_scroll_mirror_image", 15 ], + [ "spell_scroll_holographic_transposition", 15 ], + [ "spell_scroll_dark_sight", 30 ], + [ "spell_scroll_druidic_regrowth", 20 ], + [ "spell_scroll_stormshaper_ionization", 40 ], + [ "spell_scroll_create_acid", 35 ], + [ "spell_scroll_condense_clean_water", 35 ], + [ "spell_scroll_rock_tomb", 50 ], + [ "spell_scroll_acid_bomb", 25 ] + ] + }, + { + "id": "spell_scroll_tier_3", + "type": "item_group", + "items": [ + [ "spell_scroll_magus_mana_blast", 50 ], + [ "lightning_storm_scroll", 50 ], + [ "spell_scroll_invisibility", 10 ], + [ "spell_scroll_obfuscated_body", 10 ], + [ "spell_scroll_lava_bomb", 5 ], + [ "spell_scroll_druidic_healing", 20 ], + [ "bio_sneeze_beam", 50 ], + [ "spell_scroll_fire_storm", 50 ], + [ "spell_scroll_ice_storm", 50 ], + [ "spell_scroll_meteor", 10 ], + [ "spell_scroll_acid_storm", 20 ] + ] + }, + { + "id": "spellbook_tier_0", + "type": "item_group", + "//": "These are spellbooks that a beginner would have, or scrolls that would have this tier or one tier higher of spells.", + "items": [ + [ "wizard_beginner", 30 ], + [ "priest_beginner", 30 ], + [ "techno_idiots", 30 ], + [ "novice_techno_spellbook", 30 ], + [ "novice_storm_spellbook", 30 ], + [ "novice_earth_spellbook", 30 ], + [ "novice_kelvin_spellbook", 30 ] + ] + }, + { + "id": "spellbook_tier_1", + "type": "item_group", + "items": [ [ "wizard_utility", 50 ], [ "priest_advanced", 50 ], [ "techno_fundamentals", 50 ], [ "stat_up_spellbook", 45 ] ] + }, + { + "id": "spellbook_tier_2", + "type": "item_group", + "items": [ + [ "winter_grasp", 60 ], + [ "tome_of_storms", 60 ], + [ "biomancer_spellbook", 60 ], + [ "druid_spellbook", 60 ], + [ "pyro", 60 ], + [ "eshaper_spellbook", 60 ], + [ "techno_em", 60 ], + [ "wizard_advanced", 60 ], + [ "stat_up_spellbook", 45 ] + ] + }, + { + "id": "spellbook_tier_3", + "type": "item_group", + "items": [ + [ "magus_spellbook", 15 ], + [ "magus_spellbook_move", 30 ], + [ "translocate_spellbook", 20 ], + [ "light_manipulation_spellbook", 5 ], + [ "recovery_spellbook", 30 ] + ] + }, + { + "id": "spellbook_loot_0", + "type": "item_group", + "//": "the difference between tiers and loot are that loot should be easy to", + "//2": "drop into an itemgroup or mapgen without having multiple entries for higher tier spellbooks.", + "//3": "and loot tiers will not always have the lower tier spellbook tiers.", + "items": [ + { "group": "spellbook_tier_0", "prob": 60 }, + { "group": "spellbook_tier_1", "prob": 30 }, + { "group": "spellbook_tier_2", "prob": 9 }, + { "group": "spellbook_tier_3", "prob": 1 }, + { "group": "spell_scroll_tier_0", "prob": 300 }, + { "group": "spell_scroll_tier_1", "prob": 100 } + ] + }, + { + "id": "spellbook_loot_1", + "type": "item_group", + "items": [ + { "group": "spellbook_tier_0", "prob": 30 }, + { "group": "spellbook_tier_1", "prob": 50 }, + { "group": "spellbook_tier_2", "prob": 18 }, + { "group": "spellbook_tier_3", "prob": 2 }, + { "group": "spell_scroll_tier_1", "prob": 300 }, + { "group": "spell_scroll_tier_2", "prob": 100 } + ] + }, + { + "id": "spellbook_loot_2", + "type": "item_group", + "items": [ + { "group": "spellbook_tier_0", "prob": 5 }, + { "group": "spellbook_tier_1", "prob": 30 }, + { "group": "spellbook_tier_2", "prob": 50 }, + { "group": "spellbook_tier_3", "prob": 15 }, + { "group": "spell_scroll_tier_2", "prob": 300 }, + { "group": "spell_scroll_tier_3", "prob": 100 } + ] + } +] diff --git a/data/mods/Magical_Nights/items/alchemy_items.json b/data/mods/Magical_Nights/items/alchemy_items.json new file mode 100644 index 000000000000..a3fda74bb1ae --- /dev/null +++ b/data/mods/Magical_Nights/items/alchemy_items.json @@ -0,0 +1,151 @@ +[ + { + "id": "owlbear_stone", + "type": "TOOL", + "name": "owlbear gastrolith", + "description": "This strangely shaped rock was once a part of an owlbear's complex digestive system, creating a link between owl throat and bear stomach. It is possible that it could serve a similar purpose in alchemy, helping to bind together two disparate halves.", + "weight": "2 kg", + "volume": "750 ml", + "price": 0, + "bashing": 9, + "to_hit": -1, + "material": "stone", + "symbol": ";", + "color": "light_gray", + "qualities": [ [ "HAMMER", 2 ] ], + "use_action": "HAMMER", + "//": "In terms of alchemy the gastrolith could serve to combie different effects, such as safely mixing together potions, or it could be used as an element of change, such as for shapechanging potions." + }, + { + "id": "stone_shell", + "type": "GENERIC", + "symbol": "*", + "color": "light_gray", + "name": "stone shell", + "description": "The broken fragment of an owlbear egg. With luck it might still contain some of its former power, though if nothing else it's still a bit sharp.", + "material": "stone", + "weight": "250 g", + "volume": "150 ml", + "bashing": 5, + "cutting": 3, + "to_hit": -2, + "qualities": [ [ "BUTCHER", -50 ] ], + "//": "Potion recipes that require a full owlbear egg could also instead require larger amounts of stone shell. Since 1 egg gives 3 shells, you could perhaps have 1 egg be equivalent to 5 or more shells when making potions." + }, + { + "id": "potion_starter", + "copy-from": "mixed_alcohol_strong", + "type": "COMESTIBLE", + "name": "potion starter", + "description": "Strong alcohol, infused with mana and concentrated into a liquid that can stabilize spells into liquid form. You can still drink it, if you want." + }, + { + "id": "potion_starter_superior", + "copy-from": "chem_ethanol", + "type": "COMESTIBLE", + "name": "superior potion starter", + "description": "Pure ethanol saturated with magical energy. The sheer power concentrated within causes the surface of the potion to ripple continuously." + }, + { + "id": "adrenal_gland_large", + "copy-from": "meat", + "type": "COMESTIBLE", + "name": { "str": "large adrenal gland" }, + "description": "An organ located above the kidneys responsible for secretion of adrenaline, cortisol, and aldosterone. This one is huge, whether by nature or mutation.", + "delete": { "flags": [ "SMOKABLE" ] }, + "price": "20 USD" + }, + { + "id": "glow_dust", + "type": "GENERIC", + "symbol": "*", + "color": "yellow", + "name": "glow dust", + "description": "The powdered remains of a will-o-wisps's phsyical form. It seems to still possess an otherworldly glow.", + "material": "powder", + "weight": "5 g", + "volume": "250 ml" + }, + { + "id": "bulette_pearl", + "type": "GENERIC", + "symbol": "*", + "color": "red", + "name": "bulette pearl", + "description": "As a bulette burrows through the earth its gills collect minute amounts of precious metals and gems which slowly aggregate into lustrous gemstones prized for their beauty and power.", + "material": "stone", + "weight": "120 g", + "volume": "250 ml" + }, + { + "id": "dragon_essence", + "type": "COMESTIBLE", + "symbol": "~", + "color": "light_red", + "name": "dragon essence", + "description": "This is the magical essence from a dragon, distilled into a concentrated form.", + "volume": "250 ml", + "weight": "300 g", + "flags": [ "TRADER_AVOID", "INEDIBLE" ], + "container": "flask_glass", + "charges": 1, + "phase": "liquid" + }, + { + "id": "stirge_proboscis", + "type": "GENERIC", + "name": { "str": "stirge proboscis", "str_pl": "stirge proboscises" }, + "description": "A long sucking apparatus harvested from stirge corpse. Makes a poor melee weapon.", + "volume": "100 ml", + "weight": "100 g", + "price": "20 USD", + "symbol": ",", + "color": "red", + "to_hit": -1, + "material": [ "flesh" ], + "cutting": 7, + "flags": [ "STAB", "SHEATH_KNIFE" ] + }, + { + "type": "GENERIC", + "id": "demon_spider_fang", + "name": "demon spider fang", + "description": "A fang from a demon spider. It seems to still drip with poison; you might be able to use this in some alchemical recipe?", + "weight": "270 g", + "to_hit": -2, + "color": "green", + "symbol": ",", + "material": [ "flesh" ], + "volume": "250 ml", + "cutting": 8, + "flags": [ "STAB", "SHEATH_KNIFE" ], + "price": "15 USD" + }, + { + "type": "AMMO", + "id": "alumentum", + "category": "spare_parts", + "price": "9 USD", + "name": { "str_sp": "alumentum" }, + "symbol": "=", + "color": "light_blue", + "description": "Alumentum is magically processed coal or charcoal. It burns as hot as magnesium, and for a significantly longer period of time. This makes it quite a useful material to produce for many mages.", + "phase": "solid", + "volume": "250 ml", + "weight": "11 g", + "ammo_type": "alumentum", + "count": 50, + "stack_size": 10, + "fuel": { "energy": 3 } + }, + { + "id": "mana_dust", + "type": "GENERIC", + "symbol": "*", + "color": "blue", + "name": "mana dust", + "description": "Crystallized mana in powdered form. It faintly pulses with arcane energy.", + "material": "powder", + "volume": "100 ml" + } +] diff --git a/data/mods/Magical_Nights/items/ammo_types.json b/data/mods/Magical_Nights/items/ammo_types.json new file mode 100644 index 000000000000..904a98d47c0f --- /dev/null +++ b/data/mods/Magical_Nights/items/ammo_types.json @@ -0,0 +1,44 @@ +[ + { + "type": "ammunition_type", + "id": "dragon_blood", + "name": "dragon blood", + "default": "dragon_blood" + }, + { + "type": "ammunition_type", + "id": "tainted_blood", + "name": "tainted blood", + "default": "blood_tainted" + }, + { + "type": "ammunition_type", + "id": "blood", + "name": "blood", + "default": "blood" + }, + { + "type": "ammunition_type", + "id": "mana_infused_blood", + "name": "mana infused blood", + "default": "mana_infused_blood" + }, + { + "type": "ammunition_type", + "id": "arrow_orichalcum", + "name": "orichalcum arrow", + "default": "arrow_odin" + }, + { + "type": "ammunition_type", + "id": "alumentum", + "name": "alumentum", + "default": "alumentum" + }, + { + "type": "ammunition_type", + "id": "mercury", + "name": "mercury", + "default": "mercury" + } +] diff --git a/data/mods/Magical_Nights/items/archery.json b/data/mods/Magical_Nights/items/archery.json new file mode 100644 index 000000000000..60e920ee531a --- /dev/null +++ b/data/mods/Magical_Nights/items/archery.json @@ -0,0 +1,51 @@ +[ + { + "id": "ichaival", + "type": "GUN", + "looks_like": "compositebow", + "symbol": "(", + "color": "white", + "name": { "str": "Ichaival" }, + "description": "Ichaival, the bow of Odin. Rumored to fire 10 arrows with every pull of the string. It has gold and silver ornaments on it, as well as an ornate Raven.", + "price": "1600 USD", + "material": [ "orichalcum_metal", "gold", "wood" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED", "COMPACT", "WATER_FRIENDLY" ], + "skill": "archery", + "min_strength": 8, + "ammo": [ "arrow_orichalcum", "arrow" ], + "weight": "740 g", + "volume": "5 L", + "bashing": 14, + "armor_data": { "covers": [ "torso" ], "encumbrance": 14 }, + "reload_noise_volume": 2, + "loudness": 5, + "ranged_damage": { "damage_type": "stab", "amount": 40 }, + "range": 20, + "dispersion": 95, + "durability": 6, + "clip_size": 1, + "reload": 40, + "valid_mod_locations": [ [ "underbarrel", 1 ], [ "sights", 1 ], [ "accessories", 2 ], [ "stabilizer", 1 ], [ "dampening", 1 ] ] + }, + { + "type": "AMMO", + "id": "arrow_odin", + "price": "35 USD", + "name": "orichalcum arrow", + "symbol": "=", + "color": "white", + "description": "An arrow composed of a sliver of orichalcum. The arrow has a mysterious glow. Has a very high chance of staying intact when fired, however can only be fired from Ichaival.", + "material": [ "wood", "orichalcum_metal" ], + "ammo_type": "arrow_orichalcum", + "volume": "145 ml", + "weight": "30 g", + "bashing": 12, + "damage": { "damage_type": "stab", "damage_multiplier": 1.95, "armor_penetration": 20 }, + "dispersion": 35, + "loudness": 0, + "range": 7, + "count": 15, + "stack_size": 15, + "dont_recover_one_in": 65 + } +] diff --git a/data/mods/Magical_Nights/items/armor.json b/data/mods/Magical_Nights/items/armor.json new file mode 100644 index 000000000000..58cbfe228219 --- /dev/null +++ b/data/mods/Magical_Nights/items/armor.json @@ -0,0 +1,108 @@ +[ + { + "id": "quiver", + "name": "quiver", + "copy-from": "quiver", + "type": "ARMOR", + "use_action": { "type": "bandolier", "capacity": 20, "ammo": [ "arrow", "bolt", "arrow_orichalcum" ], "draw_cost": 20 } + }, + { + "id": "quiver_large", + "name": "large quiver", + "copy-from": "quiver_large", + "type": "ARMOR", + "use_action": { "type": "bandolier", "capacity": 60, "ammo": [ "arrow", "bolt", "arrow_orichalcum" ], "draw_cost": 20 } + }, + { + "id": "quiver_birchbark", + "name": { "str": "birchbark quiver" }, + "copy-from": "quiver_birchbark", + "type": "ARMOR", + "use_action": { "type": "bandolier", "capacity": 20, "ammo": [ "arrow", "bolt", "arrow_orichalcum" ], "draw_cost": 20 } + }, + { + "id": "quiver_large_birchbark", + "name": "large birchbark quiver", + "copy-from": "quiver_large_birchbark", + "type": "ARMOR", + "use_action": { "type": "bandolier", "capacity": 60, "ammo": [ "arrow", "bolt", "arrow_orichalcum" ], "draw_cost": 20 } + }, + { + "id": "armguard_demonchitin", + "copy-from": "armguard_chitin", + "type": "ARMOR", + "name": { "str": "pair of demon chitin arm guards", "str_pl": "pairs of demon chitin arm guards" }, + "description": "A pair of arm guards crafted from the carefully cleaned and pruned red exoskeletons of demon spiders. Fire-resistant and very durable.", + "material": [ "demon_chitin" ], + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 + }, + { + "id": "armor_demonchitin", + "copy-from": "armor_chitin", + "type": "ARMOR", + "name": { "str": "demon chitin armor" }, + "description": "Leg and body armor crafted from the carefully cleaned and pruned red exoskeletons of demon spiders. Fire-resistant and very durable.", + "material": [ "demon_chitin" ], + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 + }, + { + "id": "helmet_demonchitin", + "copy-from": "helmet_chitin", + "type": "ARMOR", + "name": { "str": "demon chitin helmet" }, + "description": "A helmet crafted from the carefully cleaned and pruned red exoskeletons of demon spiders. Covers the entire head; fire-resistant and very durable.", + "material": [ "demon_chitin" ], + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 + }, + { + "id": "gauntlets_demonchitin", + "copy-from": "gauntlets_chitin", + "type": "ARMOR", + "name": { "str": "pair of demon chitin gauntlets", "str_pl": "pairs of demon chitin gauntlets" }, + "description": "Gauntlets crafted from the carefully cleaned and pruned red exoskeletons of demon spiders. Fire-resistant and very durable.", + "material": [ "demon_chitin" ], + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 + }, + { + "id": "boots_demonchitin", + "copy-from": "boots_chitin", + "type": "ARMOR", + "name": { "str": "pair of demon chitin boots", "str_pl": "pairs of demon chitin boots" }, + "description": "Boots crafted from carefully cleaned and pruned pruned red exoskeletons of demon spiders. Fire-resistant and very durable.", + "material": [ "demon_chitin" ], + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 + }, + { + "type": "PET_ARMOR", + "id": "demonchitin_harness_dog", + "copy-from": "kevlar_armor_small_quadruped", + "color": "red", + "name": { "str": "demon chitin dog mesh harness", "str_pl": "demon chitin dog mesh harnesses" }, + "description": "A makeshift harness of demon chitin fitted to a thin mesh protecting the neck to flank of canines. You could put this on a friendly dog.", + "price": "500 USD", + "price_postapoc": "50 USD", + "material": [ "demon_chitin" ], + "weight": "4862 g", + "environmental_protection": 8 + }, + { + "type": "PET_ARMOR", + "id": "demonchitin_armor_horse", + "copy-from": "medium_quadruped_armor", + "color": "green", + "name": { "str": "demon chitin horse armor" }, + "description": "A makeshift assembly of criniere, peytral and croupiere made from demon chitin fitted to a thin mesh. You could put this on a friendly horse.", + "price": "1200 USD", + "price_postapoc": "120 USD", + "material": [ "demon_chitin", "steel" ], + "weight": "31500 g", + "volume": "150 L", + "material_thickness": 6, + "environmental_protection": 8 + } +] diff --git a/data/mods/Magical_Nights/items/bionics.json b/data/mods/Magical_Nights/items/bionics.json new file mode 100644 index 000000000000..a24a613afca0 --- /dev/null +++ b/data/mods/Magical_Nights/items/bionics.json @@ -0,0 +1,18 @@ +[ + { + "type": "enchantment", + "id": "ench_bio_sneeze_beam", + "values": [ { "value": "MANA_CAP", "add": 500 } ] + }, + { + "id": "bio_sneeze_beam", + "copy-from": "bionic_general", + "type": "BIONIC_ITEM", + "name": { "str": "Crystallized Mana Nose Replacement" }, + "description": "A large gem made with crystallized mana and some other stabilizing metals. Comes with a specially designed power pack (installed into the skull) that does not interfere with your normal facial functions. WARNING: for Technophile use only. By using this spell you are waiving all liability of Frikken Laser Beams Inc. and its subsidiaries.", + "price": "4500 USD", + "weight": "750 g", + "volume": "177 ml", + "difficulty": 8 + } +] diff --git a/data/mods/Magical_Nights/items/black_dragon_items.json b/data/mods/Magical_Nights/items/black_dragon_items.json new file mode 100644 index 000000000000..d3222e504560 --- /dev/null +++ b/data/mods/Magical_Nights/items/black_dragon_items.json @@ -0,0 +1,381 @@ +[ + { + "type": "GENERIC", + "id": "dragon_black_scale", + "category": "spare_parts", + "symbol": "o", + "color": "black_white", + "name": "black dragon scale", + "price": "25 USD", + "material": "black_dragon_hide", + "weight": "380 g", + "volume": "75 ml", + "bashing": 0, + "to_hit": -4, + "description": "A scale from a black dragon. It still has its magical properties and acid resistance." + }, + { + "type": "COMESTIBLE", + "id": "black_dragon_hide_raw", + "category": "spare_parts", + "name": "raw black dragon hide", + "weight": "2500 g", + "color": "black_white", + "spoils_in": "3 day", + "comestible_type": "FOOD", + "symbol": ",", + "description": "A carefully folded raw hide harvested from a black dragon. It is a large enough piece that it is workable to make armor, and with enough scales you could make scale mail.", + "price": "500 USD", + "material": [ "black_dragon_hide", "flesh" ], + "flags": [ "NO_SALVAGE", "TRADER_AVOID" ], + "vitamins": [ ], + "volume": "4 L", + "stack_size": 1 + }, + { + "id": "black_dragon_tanning_hide", + "type": "TOOL", + "category": "spare_parts", + "name": "tanning black dragon hide", + "description": "A treated black dragon hide which is undergoing the chemical processes required to become workable. You will be able to activate it to unroll and make use of it when it is done.", + "weight": "2500 g", + "volume": "4 L", + "price": "0 cent", + "to_hit": -2, + "material": [ "flesh", "black_dragon_hide" ], + "symbol": ",", + "color": "black_white", + "use_action": { + "target": "black_dragon_tanned_hide", + "msg": "You carefully unfold the black dragon hide and shake it clean.", + "moves": 150, + "type": "delayed_transform", + "transform_age": 28800, + "not_ready_msg": "The black dragon hide isn't done yet.", + "//": "2 days" + }, + "flags": [ "NO_SALVAGE" ] + }, + { + "type": "GENERIC", + "id": "black_dragon_tanned_hide", + "symbol": ",", + "color": "black_white", + "name": "black dragon hide", + "description": "Prepared hide from a black dragon. Hard, acid-resistant, and with more scales could make a suit of armor as hard as steel and half as heavy.", + "price": "500 USD", + "material": [ "black_dragon_hide" ], + "weight": "2500 g", + "volume": "4 L", + "category": "spare_parts", + "to_hit": -1 + }, + { + "id": "boots_black_dragon_scale", + "type": "ARMOR", + "category": "armor", + "name": { "str": "pair of black dragonscale boots", "str_pl": "pairs of black dragonscale boots" }, + "description": "Boots made of black dragonscale. Very protective, and surprisingly light.", + "weight": "945 g", + "volume": "3250 ml", + "price": "750 USD", + "to_hit": -2, + "bashing": 7, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "feet" ], + "coverage": 100, + "encumbrance": 30, + "warmth": 20, + "material_thickness": 4, + "environmental_protection": 3, + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "boots_black_dragon_hide", + "type": "ARMOR", + "category": "armor", + "name": { "str": "pair of black dragonhide boots", "str_pl": "pairs of black dragonhide boots" }, + "description": "Boots made of black dragonhide. Very protective, and surprisingly light.", + "weight": "655 g", + "volume": "3250 ml", + "price": "500 USD", + "to_hit": -2, + "bashing": 7, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "feet" ], + "coverage": 100, + "encumbrance": 18, + "warmth": 20, + "material_thickness": 2, + "environmental_protection": 3, + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "helmet_black_dragon_scale", + "type": "ARMOR", + "category": "armor", + "name": "black dragonscale helmet", + "description": "A helmet made from black dragonscale, held together with black dragonhide. It comes equipped with a full face visor.", + "weight": "856 g", + "volume": "2500 ml", + "price": "580 USD", + "to_hit": -1, + "bashing": 10, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "head", "eyes", "mouth" ], + "coverage": 100, + "encumbrance": 32, + "warmth": 15, + "material_thickness": 6, + "environmental_protection": 3, + "techniques": [ "WBLOCK_1" ], + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "helmet_black_dragon_hide", + "type": "ARMOR", + "category": "armor", + "name": "black dragonhide helmet", + "description": "A helmet made from black dragonhide. It protects your head well, and doesn't cover your face.", + "weight": "585 g", + "volume": "2500 ml", + "price": "580 USD", + "to_hit": -1, + "bashing": 10, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "head" ], + "coverage": 100, + "encumbrance": 32, + "warmth": 15, + "material_thickness": 2, + "environmental_protection": 1, + "techniques": [ "WBLOCK_1" ], + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "suit_black_dragon_scale", + "type": "ARMOR", + "category": "armor", + "name": "black dragonscale armor", + "description": "A full suit of black dragon scale mail. It comes with all the accoutrements that cover your torso, legs, and arms, with the benefit of being very light and flexible.", + "weight": "4250 g", + "volume": "12 L", + "price": "20 kUSD", + "to_hit": -3, + "bashing": 6, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "legs", "torso", "arms" ], + "coverage": 100, + "encumbrance": 25, + "warmth": 15, + "material_thickness": 4, + "environmental_protection": 2, + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + }, + { + "id": "suit_black_dragon_hide", + "type": "ARMOR", + "category": "armor", + "name": "black dragonhide armor", + "description": "A full suit of black dragonhide armor. It comes with all the accoutrements that cover your torso, legs, and arms, with the benefit of being very light and flexible.", + "weight": "3 kg", + "volume": "12 L", + "price": "20 kUSD", + "to_hit": -3, + "bashing": 6, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "legs", "torso", "arms" ], + "coverage": 100, + "encumbrance": 18, + "warmth": 15, + "material_thickness": 4, + "environmental_protection": 1, + "flags": [ "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + }, + { + "id": "gauntlets_black_dragon_scale", + "type": "ARMOR", + "category": "armor", + "name": { "str": "pair of black dragonscale gauntlets", "str_pl": "pairs of black dragonscale gauntlets" }, + "description": "A pair of heavy-duty gauntlets made of black dragonscale that covers your hands.", + "weight": "380 g", + "volume": "1 L", + "price": "1800 USD", + "to_hit": 2, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "hands" ], + "coverage": 100, + "encumbrance": 20, + "warmth": 15, + "material_thickness": 3, + "environmental_protection": 3, + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "gloves_black_dragon_hide", + "type": "ARMOR", + "category": "armor", + "name": { "str": "pair of black dragonhide gloves", "str_pl": "pairs of black dragonhide gloves" }, + "description": "A pair of customized, Kevlar armored leather gloves, modified to be easy to wear while providing maximum protection under extreme conditions.", + "weight": "230 g", + "volume": "750 ml", + "price": "1800 USD", + "to_hit": 2, + "material": [ "black_dragon_hide" ], + "symbol": "[", + "color": "black_white", + "covers": [ "hands" ], + "coverage": 100, + "encumbrance": 8, + "warmth": 15, + "material_thickness": 2, + "environmental_protection": 1, + "flags": [ "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "boots_xlblack_dragon_scale", + "copy-from": "boots_black_dragon_scale", + "type": "ARMOR", + "name": { "str": "pair of XL black dragonscale boots", "str_pl": "pairs of XL black dragonscale boots" }, + "description": "Massive boots made of black dragonscale, modified to fit even the strangest of bodies. Very protective, and surprisingly light.", + "weight": "1545 g", + "volume": "6250 ml", + "encumbrance": 40, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "boots_xlblack_dragon_hide", + "copy-from": "boots_black_dragon_hide", + "type": "ARMOR", + "name": { "str": "pair of XL black dragonhide boots", "str_pl": "pairs of XL black dragonhide boots" }, + "description": "Massive boots made of black dragonhide, modified to fit even the strangest of bodies. Very protective, and surprisingly light.", + "weight": "955 g", + "volume": "6250 ml", + "encumbrance": 28, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "gauntlets_xlblack_dragon_scale", + "copy-from": "gauntlets_black_dragon_scale", + "type": "ARMOR", + "name": { "str": "pair of XL black dragonscale gauntlets", "str_pl": "pairs of XL black dragonscale gauntlets" }, + "description": "A pair of heavy-duty gauntlets made of black dragonscale that covers your hands, or whatever you use as hands.", + "weight": "680 g", + "volume": "2 L", + "encumbrance": 30, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "gloves_xlblack_dragon_hide", + "copy-from": "gloves_black_dragon_hide", + "type": "ARMOR", + "name": { "str": "pair of XL black dragonhide gloves", "str_pl": "pairs of XL black dragonhide gloves" }, + "description": "A pair of customized, Kevlar armored leather gloves, modified to be easy to wear while providing maximum protection under extreme conditions. Sized to fit even the strangest of anatomy.", + "weight": "430 g", + "volume": "1500 ml", + "encumbrance": 18, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "boots_xlblack_dragon_scale", + "copy-from": "boots_black_dragon_scale", + "type": "ARMOR", + "name": { "str": "pair of XL black dragonscale boots", "str_pl": "pairs of XL black dragonscale boots" }, + "description": "Massive boots made of black dragonscale, modified to fit even the strangest of bodies. Very protective, and surprisingly light.", + "weight": "1545 g", + "volume": "6250 ml", + "encumbrance": 40, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "boots_xlblack_dragon_hide", + "copy-from": "boots_black_dragon_hide", + "type": "ARMOR", + "name": { "str": "pair of XL black dragonhide boots", "str_pl": "pairs of XL black dragonhide boots" }, + "description": "Massive boots made of black dragonhide, modified to fit even the strangest of bodies. Very protective, and surprisingly light.", + "weight": "955 g", + "volume": "6250 ml", + "encumbrance": 28, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "helmet_xlblack_dragon_scale", + "copy-from": "helmet_black_dragon_scale", + "type": "ARMOR", + "name": { "str": "XL black dragonscale helmet" }, + "description": "A massive helmet made from black dragonscale, held together with black dragonhide. It comes equipped with a full face visor and is large enough to fit even the strangest of heads.", + "weight": "1256 g", + "volume": "4500 ml", + "encumbrance": 42, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "helmet_xlblack_dragon_hide", + "copy-from": "helmet_black_dragon_hide", + "type": "ARMOR", + "name": { "str": "XL black dragonhide helmet" }, + "description": "A massive helmet made from black dragonhide. It protects your head well, and doesn't cover your face, but is large enough to fit even the strangest of heads.", + "weight": "815 g", + "volume": "4500 ml", + "encumbrance": 42, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "helmet_xlblack_dragon_scale", + "copy-from": "helmet_black_dragon_scale", + "type": "ARMOR", + "name": { "str": "XL black dragonscale helmet" }, + "description": "A massive helmet made from black dragonscale, held together with black dragonhide. It comes equipped with a full face visor and is large enough to fit even the strangest of heads.", + "weight": "1256 g", + "volume": "4500 ml", + "encumbrance": 42, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "helmet_xlblack_dragon_hide", + "copy-from": "helmet_black_dragon_hide", + "type": "ARMOR", + "name": { "str": "XL black dragonhide helmet" }, + "description": "A massive helmet made from black dragonhide. It protects your head well, and doesn't cover your face, but is large enough to fit even the strangest of heads.", + "weight": "815 g", + "volume": "4500 ml", + "encumbrance": 42, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "STURDY" ] + }, + { + "id": "suit_xlblack_dragon_scale", + "copy-from": "suit_black_dragon_scale", + "type": "ARMOR", + "name": { "str": "XL black dragonscale armor" }, + "description": "A massive full suit of black dragon scale mail. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.", + "weight": "6250 g", + "volume": "18 L", + "encumbrance": 35, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + }, + { + "id": "suit_xlblack_dragon_hide", + "copy-from": "suit_black_dragon_hide", + "type": "ARMOR", + "name": { "str": "XL black dragonhide armor" }, + "description": "A massive full suit of black dragonhide armor. It comes with all the accoutrements that cover your torso, legs, and arms; sized to fit even the strangest of bodies.", + "weight": "5500 g", + "volume": "18 L", + "encumbrance": 28, + "flags": [ "OVERSIZE", "VARSIZE", "WATERPROOF", "RAINPROOF", "STURDY" ] + } +] diff --git a/data/mods/Magical_Nights/items/books_lore.json b/data/mods/Magical_Nights/items/books_lore.json new file mode 100644 index 000000000000..6c7f66c8ce8d --- /dev/null +++ b/data/mods/Magical_Nights/items/books_lore.json @@ -0,0 +1,50 @@ +[ + { + "id": "retreat_map", + "copy-from": "abstractmap", + "type": "GENERIC", + "name": "vacation brochure", + "description": "This is a glossy brochure encouraging students to book vactaions at a lake retreat or remote cabin. The brochure includes lush photographs of a tower on an island and a remote looking cabin in the woods. It includes a map of the areas.", + "color": "white", + "use_action": { + "type": "reveal_map", + "radius": 185, + "terrain": [ "lake_retreat_ground", "magic_cabin" ], + "message": "You add the locations to your map." + } + }, + { + "id": "lair_map", + "copy-from": "abstractmap", + "type": "GENERIC", + "name": "lair map", + "description": "This is an well worn map. It has pictures of fantastical beasts embellishing the carefully drawn map markers.", + "color": "white", + "use_action": { + "type": "reveal_map", + "radius": 185, + "terrain": [ + "demon_spider_lair", + "black_dragon_lair_z-0_NW", + "black_dragon_lair_z-0_NE", + "black_dragon_lair_z-0_SW", + "black_dragon_lair_z-0_SE" + ], + "message": "You add the locations to your map." + } + }, + { + "id": "wizard_photo", + "type": "GENERIC", + "//": "Unique item for magic_basement.", + "category": "other", + "name": "old photo", + "description": "A photo of a jovial, old wizard, he seems to be dancing with a coat rack in this basement. There is a stack of suitcases in the background.", + "weight": "1 g", + "volume": "0 ml", + "price": "8 USD", + "material": [ "paper" ], + "symbol": "*", + "color": "light_gray" + } +] diff --git a/data/mods/Magical_Nights/items/class_items.json b/data/mods/Magical_Nights/items/class_items.json new file mode 100644 index 000000000000..c5140d9c9709 --- /dev/null +++ b/data/mods/Magical_Nights/items/class_items.json @@ -0,0 +1,302 @@ +[ + { + "id": "rune_biomancer", + "type": "TOOL", + "symbol": "=", + "color": "pink", + "name": { "str": "Biomancer rune" }, + "description": "This magical pebble has an insignia of rended flesh and bones on it. It is necessary for Biomancers to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_technomancer", + "type": "TOOL", + "symbol": "=", + "color": "blue", + "name": { "str": "Technomancer rune" }, + "description": "This magical pebble has an insignia of clockwork and gears on it. It is necessary for Technomancers to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_magus", + "type": "TOOL", + "symbol": "=", + "color": "magenta", + "name": { "str": "Magus rune", "str_pl": "Magi runes" }, + "description": "This magical pebble has an insignia of crystal and mana orbs on it. It is necessary for Magi to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_earthshaper", + "type": "TOOL", + "symbol": "=", + "color": "green", + "name": { "str": "Earthshaper rune" }, + "description": "This magical pebble has an insignia of steel and rocks on it. It is necessary for Earthshapers to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_kelvinist", + "type": "TOOL", + "symbol": "=", + "color": "red", + "name": { "str": "Kelvinist rune" }, + "description": "This magical pebble has an insignia of ice and flames on it. It is necessary for Kelvinists to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_stormshaper", + "type": "TOOL", + "symbol": "=", + "color": "yellow", + "name": { "str": "Stormshaper rune" }, + "description": "This magical pebble has an insignia of lightning and storm clouds on it. It is necessary for Stormshapers to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_druid", + "type": "TOOL", + "symbol": "=", + "color": "brown", + "name": { "str": "Druid rune" }, + "description": "This magical pebble has an insignia of nature and trees on it. It is necessary for Druids to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_animist", + "type": "TOOL", + "symbol": "=", + "color": "light_red", + "name": { "str": "Animist rune" }, + "description": "This magical pebble has an insignia of summoners on it. It is necessary for Animists to channel magic into their crafts.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_alchemist", + "type": "TOOL", + "symbol": "=", + "color": "black", + "name": { "str": "alchemist rune" }, + "description": "This magical pebble has an insignia of alchemy and potions on it. While versatile in use, the lack of attunement to any school prevents creation of more advanced recipes.", + "volume": "5ml", + "weight": "1 g", + "material": "stone", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "rune_biomancer_weapon", + "type": "GENERIC", + "weapon_category": [ "SPEARS" ], + "name": { "str": "Biomancer spear" }, + "//": "Effectively a durable stone spear +1 with IMPALE tech. based off Wicked Bonespear. Lorewise, it would make sense for novice Biomancers to be developing their skills in spears so they can adequately use the Bonespear(No whips/REACH3 for you!) once they're proficient enough to summon one. Should be weaker than other school weapons DPSwise due to reach.", + "description": "A grotesque bone spearhead on a stout wooden pole. There is a Biomancer rune embedded at the base of the head.", + "weight": "988 g", + "volume": "1250 ml", + "price": "39 USD", + "to_hit": 2, + "bashing": 6, + "cutting": 15, + "material": [ "wood", "bone" ], + "symbol": "/", + "color": "light_gray", + "techniques": [ "WBLOCK_1", "IMPALE" ], + "qualities": [ [ "COOK", 1 ] ], + "flags": [ "SPEAR", "STAB", "REACH_ATTACK", "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ] + }, + { + "id": "rune_technomancer_weapon", + "type": "GENERIC", + "weapon_category": [ "BATONS" ], + "name": { "str": "Technomancer toolbar" }, + "//": "Combat stats based off crowbar +1, techniques off Halligan bar(closest non-magical substitute), weight based on 75% of hammer & wrench(since their handles aren't included) + 100% crowbar with benefit from +1 enchantment", + "description": "This staff incorporates a sturdy cresent wrench on top of a prybar and a hammer on the other in a convienent package. There is a Technomancer rune embedded in the hammerhead.", + "weight": "1536 g", + "volume": "1750 ml", + "price": "39 USD", + "to_hit": 1, + "bashing": 15, + "cutting": 1, + "material": [ "steel" ], + "symbol": "/", + "color": "light_gray", + "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ], + "qualities": [ [ "PRY", 3 ], [ "HAMMER", 3 ], [ "HAMMER_FINE", 1 ], [ "WRENCH", 2 ], [ "WRENCH_FINE", 2 ] ], + "flags": [ "DURABLE_MELEE", "BELT_CLIP", "TRADER_AVOID", "MAGIC_FOCUS" ] + }, + { + "id": "rune_magus_weapon", + "type": "GENERIC", + "weapon_category": [ "QUARTERSTAVES" ], + "name": { "str": "Magus staff", "str_pl": "Magus staves" }, + "//": "The classical vision of the wizard gets a classic weapon. DPS Stats are between the regular and ironshod versions. Stats are slightly worse than the QS+1 due to the glass weight slowing attack speed.", + "description": "A quarterstaff with runes carved into it and two glass jars, heat-tempered and infused with mana for durability, to act as mana receptacles. There are two Magi runes embedded at the tips.", + "weight": "1530 g", + "volume": "1500 ml", + "price": "39 USD", + "to_hit": 2, + "bashing": 20, + "material": [ "wood", "diamond" ], + "symbol": "/", + "color": "brown", + "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ], + "flags": [ "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ] + }, + { + "id": "rune_kelvinist_weapon", + "type": "GENERIC", + "name": { "str": "Kelvinist flamberge" }, + "weapon_category": [ "1H_SWORDS" ], + "//": "Flame-bladed sword covers half of Kelvinist's heat-cold theme. Combat stats equivalent to cutlass +1 with BRUTAL technique.", + "description": "A sword with an undulating blade, reminiscent of a flame. There is a Kelvinist rune embedded in the pommel.", + "weight": "1530 g", + "volume": "1250 ml", + "price": 3900, + "to_hit": 3, + "bashing": 7, + "cutting": 29, + "material": [ "wood", "steel" ], + "symbol": "/", + "color": "light_gray", + "techniques": [ "WBLOCK_2", "BRUTAL" ], + "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 9 ] ], + "use_action": "WEATHER_TOOL", + "flags": [ "DURABLE_MELEE", "SHEATH_SWORD", "TRADER_AVOID", "MAGIC_FOCUS", "THERMOMETER" ] + }, + { + "id": "rune_stormshaper_weapon", + "type": "GENERIC", + "name": { "str": "Stormshaper axe" }, + "weapon_category": [ "1H_AXES" ], + "//": "Equivalent to copper ax +1, with volume reduction so it can be sheathed like the other school weapons. Metals chosen for being two most conductive metals + balancing reasons", + "description": "A forged copper axe with silver trimmings and a wooden handle. There is a Stormshaper rune embedded in the eye.", + "weight": "3330 g", + "volume": "2 L", + "price": 3900, + "to_hit": 3, + "bashing": 19, + "cutting": 13, + "material": [ "wood", "copper", "silver" ], + "symbol": "/", + "color": "brown", + "techniques": [ "WBLOCK_1", "BRUTAL", "SWEEP" ], + "qualities": [ [ "AXE", 1 ], [ "BUTCHER", -20 ] ], + "use_action": "WEATHER_TOOL", + "flags": [ "DURABLE_MELEE", "BELT_CLIP", "TRADER_AVOID", "MAGIC_FOCUS", "HYGROMETER", "BAROMETER" ] + }, + { + "id": "rune_animist_weapon", + "type": "GENERIC", + "name": { "str": "Animist athame" }, + "weapon_category": [ "KNIVES" ], + "//": "Tool qualities equivalent to steak knife, combat equiv. to copper knife + 1 w/ RAPID and BLOCK1, size/weight off combat knife +1", + "description": "A steel ritual knife used by Animists to draw blood for summoning. Their school rune is embedded in the crossguard.", + "weight": "504 g", + "volume": "500 ml", + "price": "30 USD", + "bashing": 2, + "cutting": 13, + "material": [ "wood", "steel" ], + "symbol": ";", + "color": "light_gray", + "techniques": [ "WBLOCK_1", "PRECISE" ], + "qualities": [ [ "CUT", 1 ], [ "CUT_FINE", 1 ], [ "BUTCHER", 11 ] ], + "flags": [ "STAB", "SHEATH_KNIFE", "MAGIC_FOCUS", "TRADER_AVOID" ] + }, + { + "type": "ARMOR", + "id": "mbelt_technomancer_toolbelt", + "name": { "str": "technomancer's toolbelt" }, + "weight": "2000 g", + "color": "brown", + "covers": [ "torso" ], + "storage": "1 L", + "symbol": "[", + "description": "A custom-built leather utility belt that instantly creates any tool that you reach for. Activate to sheathe/draw a weapon.", + "price": 500000, + "material": [ "leather", "steel" ], + "volume": "4 L", + "flags": [ "VARSIZE", "WATER_FRIENDLY", "STURDY", "WAIST", "OVERSIZE" ], + "coverage": 10, + "encumbrance": 4, + "material_thickness": 4, + "use_action": [ + { + "type": "holster", + "holster_prompt": "Sheath blade", + "holster_msg": "You sheath your %s", + "min_volume": "250 ml", + "max_volume": "1 L", + "flags": [ "SHEATH_KNIFE", "SHEATH_SWORD" ] + }, + "CROWBAR" + ], + "qualities": [ + [ "HAMMER", 3 ], + [ "PRY", 1 ], + [ "SAW_M", 2 ], + [ "SAW_W", 2 ], + [ "WRENCH", 2 ], + [ "AXE", 1 ], + [ "SCREW", 1 ], + [ "HAMMER_FINE", 1 ], + [ "SAW_M_FINE", 1 ], + [ "WRENCH_FINE", 1 ], + [ "SCREW_FINE", 1 ] + ] + }, + { + "id": "rune_druid_weapon", + "copy-from": "compositebow", + "type": "GUN", + "color": "yellow", + "name": { "str": "Druid composite bow" }, + "//": "Equivalent to composite bow for dispersion/reload/weight/range/encumb/bash, with two mod slots added equivalent to other weapons getting techniques", + "description": "A bow made of multiple materials to maximize energy efficiency. There are two Druid runes embedded at the tips.", + "price": "320 USD", + "min_strength": 10, + "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 13 }, + "extend": { "flags": [ "TRADER_AVOID", "MAGIC_FOCUS", "DURABLE_MELEE" ], "valid_mod_locations": [ [ "accessories", 2 ] ] } + }, + { + "type": "GENERIC", + "id": "rune_earthshaper_weapon", + "weapon_category": [ "FIST_WEAPONS" ], + "symbol": "3", + "color": "light_gray", + "name": { "str": "Earthshaper cestus", "str_pl": "Earthshaper cesti" }, + "//": "Equivalent to cestus +1 with BRUTAL and WBLOCK1", + "description": "A stone battle glove with carved runes encasing the hand, protecting it while increasing striking power. There is an Earthshaper rune embedded in the palm.", + "material": [ "stone", "leather", "steel" ], + "volume": "500 ml", + "weight": "873 g", + "bashing": 24, + "to_hit": 2, + "qualities": [ [ "HAMMER", 1 ] ], + "techniques": [ "WBLOCK_1", "BRUTAL" ], + "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "TRADER_AVOID", "MAGIC_FOCUS" ] + } +] diff --git a/data/mods/Magical_Nights/items/comestibles.json b/data/mods/Magical_Nights/items/comestibles.json new file mode 100644 index 000000000000..8099931e0252 --- /dev/null +++ b/data/mods/Magical_Nights/items/comestibles.json @@ -0,0 +1,87 @@ +[ + { + "type": "COMESTIBLE", + "id": "egg_owlbear_rock", + "name": "owlbear egg", + "weight": "2395 g", + "color": "light_gray", + "spoils_in": "14 days", + "comestible_type": "FOOD", + "symbol": "0", + "quench": 128, + "healthy": 3, + "calories": 3200, + "description": "This egg laid by an owlbear seems almost indistinguishable from a large rock until you touch it and can feel the warm glow of potential life energy from within. It's hard to believe that an owlbear could grow so quickly from something so small. Perhaps you could carefully crack it open to get at the liquid golden goodness inside.", + "price": "3 kUSD", + "material": [ "egg", "stone" ], + "volume": "2500 ml", + "stack_size": 1, + "fun": -18, + "rot_spawn": "GROUP_EGG_OWLBEAR", + "vitamins": [ [ "vitA", 360 ], [ "calcium", 120 ], [ "iron", 160 ], [ "vitB", 840 ] ], + "rot_spawn_chance": 80, + "//": "Alchemically speaking, I see this egg as having the elements of Growth, Stone, and Egg. Growth would make things grow faster, the simplest example being a magical liquid fertilizer. Stone would be a defensive element, used in creating something like a potion of stoneskin. Egg would be interesting though. What if instead of being imbibed there were potions that instead functioned similarly to the sourdough items, or the blob vehicle parts, in that they take a gestation period and then you could activate them and have a new item pop out. Creatures sure but especially biomancers could have temporarily-lived tools, weapons, and armor." + }, + { + "type": "COMESTIBLE", + "id": "egg_owlbear", + "name": "owlbear egg yolk", + "copy-from": "egg_chicken", + "phase": "liquid", + "healthy": 3, + "color": "yellow", + "description": "The liquid innards of an owlbear egg. Good eating." + }, + { + "id": "hairball", + "type": "COMESTIBLE", + "comestible_type": "MED", + "healthy": -1, + "stack_size": 1, + "material": [ "fur", "water" ], + "primary_material": "fur", + "volume": "350ml", + "weight": "15 g", + "color": "brown", + "symbol": "0", + "name": { "str": "hairball" }, + "description": "A big, ugly ball of animal spit and licked-off hairs. Don't swallow it.", + "price": "0 cent", + "flags": [ "TRADER_AVOID" ], + "fun": -20 + }, + { + "id": "meat_dragon", + "type": "COMESTIBLE", + "copy-from": "meat", + "name": { "str_sp": "dragon meat" }, + "description": "The meat from a slain dragon. It does not seem to respond to cooking the same way as other meat, making it obvious that it still retains some magical properties.", + "parasites": 0 + }, + { + "id": "scream_mush", + "type": "COMESTIBLE", + "copy-from": "mushroom", + "name": "scream mushroom", + "description": "The mushrooms harvested from a dead shrieker. Could be used in potions.", + "price": "14 USD" + }, + { + "id": "purified_meat", + "type": "COMESTIBLE", + "flags": "NUTRIENT_OVERRIDE", + "copy-from": "meat", + "name": "purified meat", + "description": "Indistinguishable from pre-Cataclysm lab grown beef. It should be excellent but somehow it's just edible.", + "price": "4 USD" + }, + { + "id": "impure_meat", + "type": "COMESTIBLE", + "flags": "NUTRIENT_OVERRIDE", + "copy-from": "mutant_meat", + "name": "impure meat", + "description": "Not as tainted as previously and tastes like the real thing. You do not want to cook this for your friends, though if you do they won't know the difference for a while.", + "price": "1 USD" + } +] diff --git a/data/mods/Magical_Nights/items/constructs.json b/data/mods/Magical_Nights/items/constructs.json new file mode 100644 index 000000000000..a33adbcfc8c1 --- /dev/null +++ b/data/mods/Magical_Nights/items/constructs.json @@ -0,0 +1,120 @@ +[ + { + "type": "GENERIC", + "id": "broken_claygolem", + "symbol": "x", + "color": "brown", + "name": "broken clay golem", + "category": "other", + "description": "A broken clay golem, looking like a piece of post-modern art. Could be smashed for clay.", + "price": "100 USD", + "material": [ "clay" ], + "weight": "122 kg", + "volume": "120 L", + "bashing": 4, + "cutting": 4, + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "type": "GENERIC", + "id": "broken_plasticgolem", + "symbol": "x", + "color": "light_gray", + "name": "broken plastic golem", + "category": "other", + "description": "A broken plastic golem, like a giant action figure chewed up by an equally giant puppy. You could smash it up into recycled plastic bits.", + "price": "1 USD", + "material": [ "plastic" ], + "weight": "70 kg", + "volume": "150 L", + "bashing": 4, + "cutting": 4, + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "type": "GENERIC", + "id": "broken_stonegolem", + "symbol": "x", + "color": "light_gray", + "name": "broken stone golem", + "category": "other", + "description": "A broken stone golem, not that much different from big boulder. Could be smashed for stone.", + "price": "100 USD", + "material": [ "stone" ], + "weight": "162 kg", + "volume": "120 L", + "bashing": 4, + "cutting": 4, + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "type": "GENERIC", + "id": "broken_irongolem", + "symbol": "x", + "color": "dark_gray", + "name": "broken iron golem", + "category": "other", + "description": "A broken iron golem, with all iron you would possibly ever need. Could be smashed for iron.", + "price": "1 kUSD", + "material": [ "iron" ], + "weight": "945 kg", + "volume": "120 L", + "bashing": 30, + "to_hit": -5, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "type": "GENERIC", + "id": "broken_resingolem_fresh", + "symbol": "x", + "color": "green", + "name": "broken fresh resin golem", + "category": "other", + "description": "A broken resin golem, slowly becoming more and more of a puddle. You could recover some small amount of materials from it, but it'll be difficult considering how liquid it is.", + "price": "1 USD", + "material": [ "plastic" ], + "weight": "70 kg", + "volume": "80 L", + "bashing": 4, + "cutting": 4, + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "type": "GENERIC", + "id": "broken_resingolem_half", + "symbol": "x", + "color": "blue", + "name": "broken semi-cured resin golem", + "category": "other", + "description": "A broken resin golem, looking a bit like a big pile of toffee. You can recover some materials from it, but some wastage will definitely happen.", + "price": "1 USD", + "material": [ "plastic" ], + "weight": "70 kg", + "volume": "125 L", + "bashing": 4, + "cutting": 4, + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "type": "GENERIC", + "id": "broken_resingolem_cured", + "symbol": "x", + "color": "red", + "name": "broken cured resin golem", + "category": "other", + "description": "A broken resin golem, now reduced to a pile of rubble. You could recover some materials from it if you were to work at it for a while.", + "price": "1 USD", + "material": [ "plastic" ], + "weight": "70 kg", + "volume": "150 L", + "bashing": 4, + "cutting": 4, + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted.json b/data/mods/Magical_Nights/items/enchanted/enchanted.json new file mode 100644 index 000000000000..7783e4212a5c --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted.json @@ -0,0 +1,102 @@ +[ + { + "id": "magi_staff_minor", + "type": "GENERIC", + "symbol": "/", + "color": "brown", + "name": { "str": "minor staff of the magi", "str_pl": "minor staves of the magi" }, + "description": "A simple carved staff, made of wood. It faintly glows with magic when you cast spells. Wielding it slightly increases your mana capacity", + "price": "100 USD", + "material": [ "wood" ], + "weapon_category": [ "QUARTERSTAVES" ], + "flags": [ "SHEATH_SPEAR", "ALWAYS_TWOHAND", "FRAGILE_MELEE", "MAGIC_FOCUS" ], + "relic_data": { + "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "MANA_CAP", "multiply": 0.5 } ] } ] + }, + "weight": "1400 g", + "volume": "3 L", + "category": "weapons", + "to_hit": 3, + "bashing": 17 + }, + { + "id": "magi_staff_lesser", + "type": "GENERIC", + "symbol": "/", + "color": "brown", + "looks_like": "magi_staff_minor", + "name": { "str": "lesser staff of the magi", "str_pl": "lesser staves of the magi" }, + "description": "A beautifully carved staff, made of enchanted wood and mithril. It faintly glows with magic when you cast spells, but it is not a sturdy melee weapon.", + "price": "400 USD", + "material": "wood", + "flags": [ "SHEATH_SPEAR", "ALWAYS_TWOHAND", "FRAGILE_MELEE", "MAGIC_FOCUS" ], + "relic_data": { + "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "MANA_CAP", "multiply": 1.25 } ] } ] + }, + "weight": "1400 g", + "volume": "3 L", + "bashing": 19, + "category": "weapons", + "to_hit": 3 + }, + { + "id": "magi_staff_greater", + "type": "GENERIC", + "symbol": "/", + "color": "brown", + "looks_like": "magi_staff_minor", + "name": { "str": "greater staff of the magi", "str_pl": "greater staves of the magi" }, + "description": "A beautifully carved staff, made of enchanted wood and mithril. It faintly glows with magic when you cast spells, but it is not a sturdy melee weapon. Wielding it greatly increases your mana capacity.", + "price": "10 kUSD", + "material": [ "wood", "mithril_metal" ], + "weapon_category": [ "QUARTERSTAVES" ], + "flags": [ "SHEATH_SPEAR", "ALWAYS_TWOHAND", "FRAGILE_MELEE", "MAGIC_FOCUS" ], + "relic_data": { + "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "MANA_CAP", "multiply": 2 } ] } ] + }, + "weight": "1400 g", + "volume": "3 L", + "category": "weapons", + "to_hit": 3, + "bashing": 21 + }, + { + "id": "wizard_hat", + "type": "ARMOR", + "name": "wizard hat", + "description": "A blue pointed hat with stars stiched into it. Wearing it increases your mana regeneration.", + "weight": "390 g", + "volume": "2 L", + "price": "95 USD", + "material": [ "cotton" ], + "symbol": "^", + "color": "light_blue", + "covers": [ "head" ], + "coverage": 50, + "encumbrance": 12, + "warmth": 7, + "material_thickness": 2, + "environmental_protection": 2, + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MANA_REGEN", "multiply": 1 } ] } ] + }, + "flags": [ "VARSIZE" ] + }, + { + "id": "debug_fireball_hammer", + "type": "GENERIC", + "name": "fireball hammer", + "copy-from": "magi_staff_minor", + "description": "Use with caution! Flammable! Explosive!", + "relic_data": { + "passive_effects": [ + { + "has": "WIELD", + "condition": "ALWAYS", + "hit_you_effect": [ { "id": "fireball" } ], + "hit_me_effect": [ { "id": "light_healing" } ] + } + ] + } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_belts.json b/data/mods/Magical_Nights/items/enchanted/enchanted_belts.json new file mode 100644 index 000000000000..677f89889858 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_belts.json @@ -0,0 +1,157 @@ +[ + { + "abstract": "mbelt_leather", + "type": "TOOL_ARMOR", + "name": "magic leather belt", + "description": "A leather belt. Useful for making your pair of pants fit.", + "weight": "102 g", + "volume": "250 ml", + "price": "900 USD", + "bashing": 5, + "material": [ "leather" ], + "symbol": "[", + "color": "brown", + "covers": [ "torso" ], + "coverage": 5, + "material_thickness": 2, + "use_action": { + "type": "holster", + "holster_prompt": "Stick what into your belt", + "holster_msg": "You tuck your %s into your %s", + "max_volume": "500 ml", + "max_weight": "400 g", + "flags": [ "BELT_CLIP" ] + }, + "flags": [ "WAIST", "WATER_FRIENDLY", "STURDY" ] + }, + { + "type": "TOOL_ARMOR", + "copy-from": "mbelt_leather", + "id": "mbelt_haste", + "name": { "str": "Belt of Haste", "str_pl": "Belts of Haste" }, + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "multiply": 0.15, "add": 5 } ] } ] + } + }, + { + "type": "TOOL_ARMOR", + "copy-from": "mbelt_leather", + "id": "mbelt_thor", + "name": { "str_sp": "Megingjörð" }, + "description": "The mythical belt of Thor, god of thunder. Or at least so it appears. It doubles the wearer's base strength.", + "material": [ "superalloy" ], + "material_thickness": 10, + "environmental_protection": 20, + "weight_capacity_bonus": "50 kg", + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "multiply": 1 } ] } ] + } + }, + { + "type": "TOOL_ARMOR", + "copy-from": "mbelt_leather", + "id": "mbelt_pockets_lesser", + "name": { "str": "Lesser Girdle of Pockets", "str_pl": "Lesser Girdles of Pockets" }, + "description": "A wide girdle that fits around your waist, coverd in numerous small pouches that hold a lot more than they should, and the weight of their contents is greatly reduced.", + "coverage": 10, + "encumbrance": 4, + "weight_capacity_bonus": "5 kg", + "storage": "10 L" + }, + { + "type": "TOOL_ARMOR", + "copy-from": "mbelt_leather", + "id": "mbelt_pockets_greater", + "name": { "str": "Greater Girdle of Pockets", "str_pl": "Greater Girdles of Pockets" }, + "description": "A wide girdle that fits around your waist, coverd in numerous small pouches that hold a lot more than they should, and the weight of their contents is greatly reduced.", + "coverage": 10, + "encumbrance": 6, + "weight_capacity_bonus": "10 kg", + "storage": "15 L" + }, + { + "type": "TOOL_ARMOR", + "copy-from": "mbelt_leather", + "id": "mbelt_weaponry", + "name": { "str": "Belt of Weaponry", "str_pl": "Belts of Weaponry" }, + "description": "A wide girdle that fits around your waist, you can sheath or holster any weapon into it in the blink of an eye, and it seemingly stores them somewhere else.", + "coverage": 10, + "encumbrance": 3, + "weight_capacity_bonus": "10 kg", + "use_action": { + "type": "holster", + "holster_prompt": "Stick what into your belt", + "holster_msg": "You tuck your %s into your %s", + "min_volume": "1 ml", + "max_volume": "4 L", + "max_weight": "5 kg", + "multi": 4, + "skills": [ + "pistol", + "shotgun", + "cutting", + "archery", + "bashing", + "launcher", + "melee", + "rifle", + "smg", + "stabbing", + "throw", + "ALL", + "gun", + "unarmed" + ], + "flags": [ "SHEATH_KNIFE", "SHEATH_SWORD", "BELT_CLIP", "SHEATH_SPEAR" ] + } + }, + { + "type": "TOOL_ARMOR", + "copy-from": "mbelt_leather", + "id": "mbelt_iron_whip", + "name": { "str": "Belt of The Iron Whip", "str_pl": "Belts of the Iron Whip" }, + "volume": "1 L", + "material": [ "steel" ], + "description": "A braided but flexible belt seemingly made of metal. You can activate it to transform it into a whip and flay your enemies.", + "material_thickness": 4, + "flags": [ "STURDY" ], + "use_action": { + "type": "transform", + "target": "mwhip_iron", + "active": true, + "moves": 20, + "msg": "You grab the belt and it uncoils to become a flexible metal whip in your hand!" + } + }, + { + "id": "mwhip_iron", + "type": "GENERIC", + "category": "weapons", + "symbol": "/", + "color": "light_gray", + "name": { "str": "The Iron Whip", "str_pl": "Iron Whips" }, + "description": "A long braided flexible steel bullwhip that narrows into a sharp blade at the end. Easily capable of slicing and dicing anything that comes at you. It transforms back into a belt.", + "weight": "2154 g", + "volume": "2 L", + "price": "3500 USD", + "material": [ "steel" ], + "flags": [ "REACH_ATTACK", "REACH3", "WHIP", "UNBREAKABLE_MELEE" ], + "techniques": [ "WBLOCK_1", "SWEEP", "WHIP_DISARM", "WRAP" ], + "cutting": 16, + "bashing": 8, + "use_action": { + "type": "transform", + "target": "mbelt_iron_whip", + "active": false, + "moves": 20, + "msg": "You loop the whip in your hand and it coils back into a belt form in an instant." + } + }, + { + "id": "belt_str", + "copy-from": "mbelt_leather", + "type": "ARMOR", + "name": { "str": "belt of strength +2", "str_pl": "belts of strength +2" }, + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 2 } ] } ] } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_boots.json b/data/mods/Magical_Nights/items/enchanted/enchanted_boots.json new file mode 100644 index 000000000000..ebe454afdcd4 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_boots.json @@ -0,0 +1,67 @@ +[ + { + "id": "mboots_sevenleague", + "type": "ARMOR", + "copy-from": "boots_hiking", + "name": { "str": "seven league boots", "str_pl": "pairs of seven league boots" }, + "looks_like": "boots_hiking", + "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, they look like they've seen a lot of use and will likely see a lot more. They make your movement a lot less work.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -30 } ] } ] }, + "encumbrance": 8, + "warmth": 30, + "material_thickness": 3, + "environmental_protection": 3, + "flags": [ "WATERPROOF", "STURDY" ] + }, + { + "id": "mboots_haste", + "type": "ARMOR", + "copy-from": "boots_hiking", + "name": { "str": "boots of haste", "str_pl": "pairs of boots of haste" }, + "looks_like": "boots_hiking", + "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, they look like they've seen a lot of use and will likely see a lot more. They make your movement a lot less work.", + "relic_data": { + "passive_effects": [ + { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -20 } ] }, + { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 10 } ] } + ] + }, + "encumbrance": 8, + "warmth": 30, + "material_thickness": 3, + "environmental_protection": 3, + "flags": [ "WATERPROOF", "STURDY" ] + }, + { + "id": "mboots_escape", + "type": "TOOL_ARMOR", + "copy-from": "boots_hiking", + "name": { "str_sp": "escape boots" }, + "looks_like": "boots_hiking", + "description": "Rugged yet extremely comfortable and well fitting boots of worn leather and steel, these boots can be activated once a day to escape from nasty situations, teleporting you a good distance in a random direction.", + "initial_charges": 24, + "max_charges": 24, + "charges_per_use": 24, + "artifact_data": { "charge_type": "ARTC_TIME" }, + "use_action": { "type": "cast_spell", "spell_id": "magus_escape", "no_fail": true, "level": 10, "need_worn": true }, + "encumbrance": 8, + "warmth": 30, + "material_thickness": 3, + "environmental_protection": 3, + "flags": [ "WATERPROOF", "STURDY" ] + }, + { + "id": "mboots_grounding", + "type": "ARMOR", + "copy-from": "boots_hiking", + "name": { "str": "boots of grounding", "str_pl": "pairs of boots of grounding" }, + "looks_like": "boots_hiking", + "description": "Rugged yet extremely comfortable and well fitting boots of leather with small engraved runes seemingly filled with rubber. When worn, you are immune to damage from electricity.", + "encumbrance": 8, + "warmth": 30, + "material_thickness": 3, + "environmental_protection": 3, + "flags": [ "WATERPROOF", "STURDY" ], + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -20 } ] } ] } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_bracers.json b/data/mods/Magical_Nights/items/enchanted/enchanted_bracers.json new file mode 100644 index 000000000000..9a0285cddb03 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_bracers.json @@ -0,0 +1,95 @@ +[ + { + "id": "mbracer_steel_pair", + "type": "TOOL_ARMOR", + "category": "armor", + "name": { "str": "pair of steel bracers", "str_pl": "pairs of steel bracers" }, + "description": "A full assembly of medieval arm protection.", + "weight": "1520 g", + "volume": "2500 ml", + "price": "200 USD", + "to_hit": -1, + "material": [ "steel", "leather" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "arms" ], + "coverage": 45, + "encumbrance": 10, + "warmth": 10, + "material_thickness": 5, + "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN", "WATER_FRIENDLY" ] + }, + { + "copy-from": "mbracer_steel_pair", + "type": "TOOL_ARMOR", + "id": "mbracer_steel_single", + "name": { "str": "steel bracer" }, + "weight": "770 g", + "volume": "1250 ml", + "covers": [ "arm_either" ] + }, + { + "copy-from": "mbracer_steel_single", + "type": "TOOL_ARMOR", + "id": "mbracer_defense_lesser", + "name": { "str": "bracer of lesser defense", "str_pl": "bracers of lesser defense" }, + "description": "A light but extremely sturdy steel bracer with an ornate shield engraved on the top, silver accentuates the intricate design. It protects your body with a light aura to reduce damage you take.", + "material_thickness": 6, + "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ], + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "ARMOR_CUT", "add": -2 }, { "value": "ARMOR_BASH", "add": -2 }, { "value": "ARMOR_STAB", "add": -2 } ] + } + ] + } + }, + { + "copy-from": "mbracer_steel_single", + "type": "TOOL_ARMOR", + "id": "mbracer_defense_greater", + "name": { "str": "bracer of greater defense", "str_pl": "bracers of greater defense" }, + "description": "A light but extremely sturdy steel bracer with an ornate shield engraved on the top, gold accentuates the intricate design. It protects your body with a strong aura to reduce damage you take.", + "material_thickness": 6, + "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ], + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "ARMOR_CUT", "add": -4 }, { "value": "ARMOR_BASH", "add": -4 }, { "value": "ARMOR_STAB", "add": -4 } ] + } + ] + } + }, + { + "copy-from": "mbracer_steel_single", + "type": "TOOL_ARMOR", + "id": "mbracer_lightning_lesser", + "name": { "str": "lesser bracer of lightning", "str_pl": "lesser bracers of lightning" }, + "description": "A light but extremely sturdy steel bracer with an ornate bundle of lightning bolts engraved on the top, silver accentuates the intricate design. It protects your body with a light aura to reduce electrical damage you take, as well as being able to release a Jolt spell 3 times a day.", + "initial_charges": 72, + "max_charges": 72, + "charges_per_use": 24, + "artifact_data": { "charge_type": "ARTC_TIME" }, + "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ], + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -5 } ] } ] }, + "use_action": { "type": "cast_spell", "spell_id": "jolt", "no_fail": true, "level": 15, "need_worn": true } + }, + { + "copy-from": "mbracer_steel_single", + "type": "TOOL_ARMOR", + "id": "mbracer_lightning_greater", + "name": { "str": "greater bracer of lightning", "str_pl": "greater bracers of lightning" }, + "description": "A light but extremely sturdy steel bracer with an ornate bundle of lightning bolts engraved on the top, gold accentuates the intricate design. It protects your body with a strong aura to reduce electrical damage you take, as well as being able to release a Lightning Bolt spell 3 times a day.", + "initial_charges": 72, + "max_charges": 72, + "charges_per_use": 24, + "artifact_data": { "charge_type": "ARTC_TIME" }, + "flags": [ "BELTED", "STURDY", "BLOCK_WHILE_WORN" ], + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ELEC", "add": -10 } ] } ] }, + "use_action": { "type": "cast_spell", "spell_id": "lightning_bolt", "no_fail": true, "level": 15, "need_worn": true } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_gunmods.json b/data/mods/Magical_Nights/items/enchanted/enchanted_gunmods.json new file mode 100644 index 000000000000..9139d66f47c7 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_gunmods.json @@ -0,0 +1,123 @@ +[ + { + "id": "magic_suppressor", + "type": "GUNMOD", + "name": { "str": "'Silent Winds' suppressor" }, + "//": "Combination of the doubled best stats of the homemade & solvent trap suppressors w/ +1 enchantment & volume reduction to half", + "description": "Rather than using purely wipe media, an additional localized silence spell in this tube quiets gunshots going through to hearing-safe levels.", + "weight": "804 g", + "volume": "375 ml", + "price": "770 USD", + "to_hit": 2, + "bashing": 3, + "material": [ "steel" ], + "symbol": ":", + "color": "white", + "location": "muzzle", + "mod_target_category": [ [ "PISTOLS" ], [ "REVOLVERS" ], [ "SUBMACHINE_GUNS" ], [ "RIFLES" ], [ "MACHINE_GUNS" ], [ "GATLING_GUNS" ] ], + "//install_time": "20 s", + "handling_modifier": 2, + "consume_chance": 220, + "consume_divisor": 242, + "loudness_modifier": -33, + "flags": [ "CONSUMABLE" ] + }, + { + "id": "mana_laser_rail", + "type": "GUNMOD", + "name": { "str": "mana laser sight (rail)", "str_pl": "mana laser sights (rail)" }, + "description": "A small visible-light laser using light shown through a mana crystal that mounts on a firearm's accessory rail to enhance ease and speed of target acquisition. Aside from increased weight, there are no drawbacks. You can rotate the attachment rail to fit under the barrel.", + "weight": "108 g", + "volume": "250 ml", + "integral_volume": "0 ml", + "price": "360 USD", + "material": [ "plastic", "steel" ], + "symbol": ":", + "color": "dark_gray", + "location": "rail", + "mod_target_category": [ + [ "PISTOLS" ], + [ "REVOLVERS" ], + [ "SUBMACHINE_GUNS" ], + [ "RIFLES" ], + [ "MACHINE_GUNS" ], + [ "GATLING_GUNS" ], + [ "SHOTGUNS" ], + [ "S_XBOWS" ], + [ "M_XBOWS" ], + [ "GRENADE_LAUNCHERS" ], + [ "ROCKET_LAUNCHERS" ], + [ "FLAMETHROWERS" ] + ], + "sight_dispersion": 27, + "aim_speed": 9, + "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ], + "use_action": { "menu_text": "Rotate", "type": "transform", "target": "mana_laser_under", "msg": "You rotate the laser sight." } + }, + { + "id": "mana_laser_under", + "type": "GUNMOD", + "name": { "str": "mana laser sight (underbarrel)", "str_pl": "mana laser sights (underbarrel)" }, + "description": "A small visible-light laser using light shown through a mana crystal that mounts on a firearm's accessory rail to enhance ease and speed of target acquisition. Aside from increased weight, there are no drawbacks. You can rotate the attachment rail to fit on the rail.", + "weight": "108 g", + "volume": "250 ml", + "integral_volume": "0 ml", + "price": "360 USD", + "material": [ "plastic", "steel" ], + "symbol": ":", + "color": "dark_gray", + "location": "underbarrel", + "mod_target_category": [ + [ "PISTOLS" ], + [ "REVOLVERS" ], + [ "SUBMACHINE_GUNS" ], + [ "RIFLES" ], + [ "MACHINE_GUNS" ], + [ "GATLING_GUNS" ], + [ "SHOTGUNS" ], + [ "S_XBOWS" ], + [ "M_XBOWS" ], + [ "BOWS" ], + [ "GRENADE_LAUNCHERS" ], + [ "ROCKET_LAUNCHERS" ], + [ "FLAMETHROWERS" ] + ], + "sight_dispersion": 27, + "aim_speed": 9, + "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ], + "use_action": { "menu_text": "Rotate", "type": "transform", "target": "mana_laser_rail", "msg": "You rotate the laser sight." }, + "flags": [ "PUMP_RAIL_COMPATIBLE" ] + }, + { + "id": "mana_dot_sight", + "type": "GUNMOD", + "name": "mana dot sight", + "description": "Adds a blue dot optic made from crystallized mana to the top of your gun, replacing the iron sights. Increases accuracy and weight.", + "weight": "270 g", + "volume": "250 ml", + "integral_volume": "0 ml", + "price": "680 USD", + "material": [ "plastic", "steel" ], + "symbol": ":", + "color": "dark_gray", + "location": "sights", + "mod_target_category": [ + [ "PISTOLS" ], + [ "REVOLVERS" ], + [ "SUBMACHINE_GUNS" ], + [ "RIFLES" ], + [ "MACHINE_GUNS" ], + [ "GATLING_GUNS" ], + [ "SHOTGUNS" ], + [ "S_XBOWS" ], + [ "M_XBOWS" ], + [ "GRENADE_LAUNCHERS" ], + [ "ROCKET_LAUNCHERS" ], + [ "FLAMETHROWERS" ] + ], + "sight_dispersion": 21, + "aim_speed": 7, + "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ], + "flags": [ "DISABLE_SIGHTS" ] + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_masks.json b/data/mods/Magical_Nights/items/enchanted/enchanted_masks.json new file mode 100644 index 000000000000..c3a5867031d2 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_masks.json @@ -0,0 +1,51 @@ +[ + { + "abstract": "mmask", + "type": "TOOL_ARMOR", + "category": "armor", + "name": "magic mask", + "description": "A generic magic mask.", + "weight": "442 g", + "volume": "750 ml", + "price": "2 kUSD", + "to_hit": -3, + "material": [ "steel", "leather" ], + "symbol": "[", + "color": "dark_gray", + "covers": [ "mouth", "eyes" ], + "coverage": 95, + "encumbrance": 10, + "warmth": 10, + "material_thickness": 2, + "environmental_protection": 1, + "flags": [ "WATER_FRIENDLY", "STURDY" ] + }, + { + "type": "TOOL_ARMOR", + "id": "mmask_disappearance", + "name": { "str": "mask of disappearance", "str_pl": "masks of disappearance" }, + "description": "A mask with no facial features at all, just eye and mouth holes, upon activation it makes everything ignore your presence for a while.", + "copy-from": "mmask", + "initial_charges": 12, + "max_charges": 12, + "charges_per_use": 12, + "use_action": { "type": "cast_spell", "spell_id": "invisibility", "no_fail": true, "level": 15, "need_worn": true }, + "artifact_data": { "charge_type": "ARTC_TIME" } + }, + { + "type": "TOOL_ARMOR", + "id": "mmask_vision", + "name": { "str": "mask of perfect vision", "str_pl": "masks of perfect vision" }, + "description": "A decidedly steampunk-looking half mask that covers the eye area of the face, it has large lenses that correct and greatly enhance the vision of the wearer.", + "copy-from": "mmask", + "covers": [ "eyes" ], + "coverage": 100, + "encumbrance": 5, + "environmental_protection": 6, + "flags": [ "FANCY", "WATER_FRIENDLY", "SUN_GLASSES", "FIX_NEARSIGHT", "FIX_FARSIGHT", "ZOOM" ], + "qualities": [ [ "GLARE", 2 ] ], + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "multiply": 0.25 } ] } ] + } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_melee.json b/data/mods/Magical_Nights/items/enchanted/enchanted_melee.json new file mode 100644 index 000000000000..c25495395c6b --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_melee.json @@ -0,0 +1,842 @@ +[ + { + "type": "GENERIC", + "id": "cudgel_plus_one", + "copy-from": "cudgel", + "looks_like": "cudgel", + "name": "cudgel +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "cudgel_plus_two", + "copy-from": "cudgel", + "looks_like": "cudgel", + "name": "cudgel +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "q_staff_plus_one", + "copy-from": "q_staff", + "looks_like": "q_staff", + "name": "quarterstaff +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "q_staff_plus_two", + "copy-from": "q_staff", + "looks_like": "q_staff", + "name": "quarterstaff +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "i_staff_plus_one", + "copy-from": "i_staff", + "looks_like": "i_staff", + "name": "ironshod quarterstaff +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "i_staff_plus_two", + "copy-from": "i_staff", + "looks_like": "i_staff", + "name": "ironshod quarterstaff +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "longsword_plus_one", + "copy-from": "longsword", + "looks_like": "longsword", + "name": "longsword +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "longsword_plus_two", + "copy-from": "longsword", + "looks_like": "longsword", + "name": "longsword +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "sledge_plus_one", + "copy-from": "hammer_sledge", + "looks_like": "hammer_sledge", + "name": "sledge hammer +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "sledge_plus_two", + "copy-from": "hammer_sledge", + "looks_like": "hammer_sledge", + "name": "sledge hammer +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "sledge_heavy_plus_one", + "copy-from": "hammer_sledge_heavy", + "name": { "str": "heavy sledge hammer +1", "str_pl": "heavy sledge hammers +1" }, + "proportional": { "price": 15, "price_postapoc": 30, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "sledge_heavy_plus_two", + "copy-from": "hammer_sledge_heavy", + "name": { "str": "heavy sledge hammer +2", "str_pl": "heavy sledge hammers +2" }, + "proportional": { "price": 18, "price_postapoc": 36, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "warhammer_plus_one", + "copy-from": "warhammer", + "looks_like": "warhammer", + "name": "warhammer +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "warhammer_plus_two", + "copy-from": "warhammer", + "looks_like": "warhammer", + "name": "warhammer +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "bat_plus_one", + "copy-from": "bat", + "looks_like": "bat", + "name": { "str": "bat +1" }, + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "bat_plus_two", + "copy-from": "bat", + "looks_like": "bat", + "name": { "str": "bat +2" }, + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "bat_metal_plus_one", + "copy-from": "bat_metal", + "looks_like": "bat_metal", + "name": { "str": "aluminum bat +1" }, + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "bat_metal_plus_two", + "copy-from": "bat_metal", + "looks_like": "bat_metal", + "name": { "str": "aluminum bat +2" }, + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "spear_steel_plus_one", + "copy-from": "spear_steel", + "looks_like": "spear_steel", + "name": "steel spear +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "spear_steel_plus_two", + "copy-from": "spear_steel", + "looks_like": "spear_steel", + "name": "steel spear +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "qiang_plus_one", + "copy-from": "qiang", + "looks_like": "qiang", + "name": "qiang +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "qiang_plus_two", + "copy-from": "qiang", + "looks_like": "qiang", + "name": "qiang +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "halberd_plus_one", + "copy-from": "halberd", + "looks_like": "halberd", + "name": "halberd +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "halberd_plus_two", + "copy-from": "halberd", + "looks_like": "halberd", + "name": "halberd +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "glaive_plus_one", + "copy-from": "glaive", + "looks_like": "glaive", + "name": "glaive +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "glaive_plus_two", + "copy-from": "glaive", + "looks_like": "glaive", + "name": "glaive +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "naginata_plus_one", + "copy-from": "naginata", + "looks_like": "naginata", + "name": "naginata +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "naginata_plus_two", + "copy-from": "naginata", + "looks_like": "naginata", + "name": "naginata +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "mace_plus_one", + "copy-from": "mace", + "looks_like": "mace", + "name": "mace +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "mace_plus_two", + "copy-from": "mace", + "looks_like": "mace", + "name": "mace +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "morningstar_plus_one", + "copy-from": "morningstar", + "looks_like": "morningstar", + "name": "morningstar +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "morningstar_plus_two", + "copy-from": "morningstar", + "looks_like": "morningstar", + "name": "morningstar +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "jian_plus_one", + "copy-from": "jian", + "looks_like": "jian", + "name": "jian +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "jian_plus_two", + "copy-from": "jian", + "looks_like": "jian", + "name": "jian +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "scimitar_plus_one", + "copy-from": "scimitar", + "looks_like": "scimitar", + "name": "scimitar +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "scimitar_plus_two", + "copy-from": "scimitar", + "looks_like": "scimitar", + "name": "scimitar +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "estoc_plus_one", + "copy-from": "estoc", + "looks_like": "estoc", + "name": "estoc +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "estoc_plus_two", + "copy-from": "estoc", + "looks_like": "estoc", + "name": "estoc +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "arming_sword_plus_one", + "copy-from": "arming_sword", + "looks_like": "arming_sword", + "name": { "str": "arming sword +1" }, + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "arming_sword_plus_two", + "copy-from": "arming_sword", + "looks_like": "arming_sword", + "name": { "str": "arming sword +2" }, + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "broadsword_plus_one", + "copy-from": "broadsword", + "looks_like": "broadsword", + "name": "broadsword +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "broadsword_plus_two", + "copy-from": "broadsword", + "looks_like": "broadsword", + "name": "broadsword +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "battleaxe_plus_one", + "copy-from": "battleaxe", + "looks_like": "battleaxe", + "name": { "str": "battle axe +1" }, + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "battleaxe_plus_two", + "copy-from": "battleaxe", + "looks_like": "battleaxe", + "name": { "str": "battle axe +2" }, + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "cavalry_sabre_plus_one", + "copy-from": "cavalry_sabre", + "looks_like": "cavalry_sabre", + "name": "cavalry sabre +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "cavalry_sabre_plus_two", + "copy-from": "cavalry_sabre", + "looks_like": "cavalry_sabre", + "name": "cavalry sabre +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "crowbar_plus_one", + "copy-from": "crowbar", + "looks_like": "crowbar", + "name": "crowbar +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "crowbar_plus_two", + "copy-from": "crowbar", + "looks_like": "crowbar", + "name": "crowbar +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "cutlass_plus_one", + "copy-from": "cutlass", + "looks_like": "cutlass", + "name": "cutlass +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "cutlass_plus_two", + "copy-from": "cutlass", + "looks_like": "cutlass", + "name": "cutlass +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "fire_ax_plus_one", + "copy-from": "fire_ax", + "looks_like": "fire_ax", + "name": "fire axe +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "fire_ax_plus_two", + "copy-from": "fire_ax", + "looks_like": "fire_ax", + "name": "fire axe +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "katana_plus_one", + "copy-from": "katana", + "looks_like": "katana", + "name": "katana +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "katana_plus_two", + "copy-from": "katana", + "looks_like": "katana", + "name": "katana +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "knife_combat_plus_one", + "copy-from": "knife_combat", + "looks_like": "knife_combat", + "name": "combat knife +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "knife_combat_plus_two", + "copy-from": "knife_combat", + "looks_like": "knife_combat", + "name": "combat knife +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "knife_hunting_plus_one", + "copy-from": "knife_hunting", + "looks_like": "knife_hunting", + "name": "hunting knife +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "knife_hunting_plus_two", + "copy-from": "knife_hunting", + "looks_like": "knife_hunting", + "name": "hunting knife +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "knife_rambo_plus_one", + "copy-from": "knife_rambo", + "looks_like": "knife_rambo", + "name": "survival knife +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "knife_rambo_plus_two", + "copy-from": "knife_rambo", + "looks_like": "knife_rambo", + "name": "survival knife +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "knife_trench_plus_one", + "copy-from": "knife_trench", + "looks_like": "knife_trench", + "name": "trench knife +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "knife_trench_plus_two", + "copy-from": "knife_trench", + "looks_like": "knife_trench", + "name": "trench knife +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "kris_plus_one", + "copy-from": "kris", + "looks_like": "kris", + "name": "kris +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "kris_plus_two", + "copy-from": "kris", + "looks_like": "kris", + "name": "kris +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "kukri_plus_one", + "copy-from": "kukri", + "looks_like": "kukri", + "name": "kukri +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "kukri_plus_two", + "copy-from": "kukri", + "looks_like": "kukri", + "name": "kukri +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "nodachi_plus_one", + "copy-from": "nodachi", + "looks_like": "nodachi", + "name": "nodachi +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "nodachi_plus_two", + "copy-from": "nodachi", + "looks_like": "nodachi", + "name": "nodachi +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "pickaxe_plus_one", + "copy-from": "pickaxe", + "looks_like": "pickaxe", + "name": "pickaxe +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "pickaxe_plus_two", + "copy-from": "pickaxe", + "looks_like": "pickaxe", + "name": "pickaxe +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "pike_plus_one", + "copy-from": "pike", + "looks_like": "pike", + "name": "pike +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "pike_plus_two", + "copy-from": "pike", + "looks_like": "pike", + "name": "pike +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "rapier_plus_one", + "copy-from": "rapier", + "looks_like": "rapier", + "name": "rapier +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "rapier_plus_two", + "copy-from": "rapier", + "looks_like": "rapier", + "name": "rapier +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "tanto_plus_one", + "copy-from": "tanto", + "looks_like": "tanto", + "name": "tanto +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "tanto_plus_two", + "copy-from": "tanto", + "looks_like": "tanto", + "name": "tanto +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "wakizashi_plus_one", + "copy-from": "wakizashi", + "looks_like": "wakizashi", + "name": "wakizashi +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "wakizashi_plus_two", + "copy-from": "wakizashi", + "looks_like": "wakizashi", + "name": "wakizashi +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "zweihander_plus_one", + "copy-from": "zweihander", + "looks_like": "zweihander", + "name": "zweihänder +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "zweihander_plus_two", + "copy-from": "zweihander", + "looks_like": "zweihander", + "name": "zweihänder +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "khopesh_plus_one", + "copy-from": "khopesh", + "looks_like": "khopesh", + "name": "khopesh +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "khopesh_plus_two", + "copy-from": "khopesh", + "looks_like": "khopesh", + "name": "khopesh +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "sword_xiphos_plus_one", + "copy-from": "sword_xiphos", + "looks_like": "sword_xiphos", + "name": "xiphos +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "sword_xiphos_plus_two", + "copy-from": "sword_xiphos", + "looks_like": "sword_xiphos", + "name": "xiphos +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "dao_plus_one", + "copy-from": "dao", + "looks_like": "dao", + "name": "dao +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "dao_plus_two", + "copy-from": "dao", + "looks_like": "dao", + "name": "dao +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "lucerne_plus_one", + "copy-from": "lucern_hammer", + "name": { "str": "lucerne hammer +1", "str_pl": "lucerne hammers +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "lucerne_plus_two", + "copy-from": "lucern_hammer", + "name": { "str": "lucerne hammer +2", "str_pl": "lucerne hammers +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "springstaff-retracted", + "category": "weapons", + "weapon_category": [ "BATONS" ], + "name": { "str": "springstaff(baton)", "str_pl": "springstaves(baton)" }, + "description": "This versatile weapon uses Technomancy-enhanced springs to keep the staff tips retracted while in baton configuration. Activate to extend.", + "weight": "1800 g", + "to_hit": 2, + "color": "dark_gray", + "symbol": "/", + "material": [ "steel", "plastic" ], + "techniques": [ "WBLOCK_1", "RAPID" ], + "flags": [ "DURABLE_MELEE", "BELT_CLIP" ], + "use_action": { + "menu_text": "Extend to staff", + "type": "transform", + "target": "springstaff-extended", + "msg": "You snap open your springstaff into staff mode.", + "moves": 50, + "need_wielding": true + }, + "volume": "750 ml", + "bashing": 12, + "price": "340 USD" + }, + { + "type": "GENERIC", + "id": "springstaff-extended", + "category": "weapons", + "weapon_category": [ "QUARTERSTAVES" ], + "name": { "str": "springstaff(staff)", "str_pl": "springstaves(staff)" }, + "description": "This versatile weapon uses Technomancy-enhanced springs to keep the staff tips from retracting while in staff configuration. Activate to extend.", + "weight": "1800 g", + "to_hit": 3, + "color": "dark_gray", + "symbol": "/", + "material": [ "steel", "plastic" ], + "techniques": [ "WBLOCK_2", "RAPID", "SWEEP" ], + "flags": [ "DURABLE_MELEE", "SHEATH_SPEAR" ], + "use_action": { + "menu_text": "Retract to baton", + "type": "transform", + "target": "springstaff-retracted", + "msg": "You collapse your springstaff into baton mode.", + "moves": 200, + "need_wielding": true + }, + "volume": "3 L", + "bashing": 19, + "price": "340 USD" + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_misc.json b/data/mods/Magical_Nights/items/enchanted/enchanted_misc.json new file mode 100644 index 000000000000..e035862acb42 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_misc.json @@ -0,0 +1,224 @@ +[ + { + "type": "TOOL", + "id": "heat_cube", + "symbol": "#", + "color": "light_gray", + "name": "heat cube", + "description": "A smooth steel cube the size of your fist. Several buttons on the sides activate the powers of the cube.", + "price": 200000, + "price_postapoc": 500000, + "material": "steel", + "weight": "500 g", + "volume": "450 ml", + "bashing": 8, + "to_hit": -1, + "qualities": [ [ "HAMMER", 1 ] ], + "flags": [ "ALLOWS_REMOTE_USE", "FIRE" ], + "initial_charges": 60, + "max_charges": 60, + "charges_per_use": 1, + "sub": "hotplate", + "artifact_data": { "charge_type": "ARTC_TIME" }, + "use_action": [ + "HOTPLATE", + "HEAT_FOOD", + { + "type": "transform", + "target": "heat_cube_torch_on", + "active": true, + "msg": "You push the torch button and the cube emits a large flame from the top, one that does radiate heat, but won't burn anything.", + "menu_text": "Activate torch mode", + "moves": 150 + }, + { "type": "firestarter" }, + { "flame": false, "type": "cauterize" } + ] + }, + { + "id": "heat_cube_torch_on", + "copy-from": "heat_cube", + "type": "TOOL", + "name": { "str": "heat cube (torch on)", "str_pl": "heat cubes (torch on)" }, + "description": "The heat cube in the torch configuration, where it emits warmth and a bright flame that does not burn.", + "turns_per_charge": 360, + "revert_to": "heat_cube", + "use_action": { "target": "heat_cube", "msg": "The torch flame is extinguished.", "menu_text": "Turn off", "type": "transform" }, + "emits": [ "emit_hot_air2_stream" ], + "flags": [ "LIGHT_15", "TRADER_AVOID", "ALLOWS_REMOTE_USE" ] + }, + { + "id": "mkey_opening", + "type": "TOOL", + "name": { "str": "skeleton key of opening", "str_pl": "skeleton keys of opening" }, + "description": "A small gold skeleton key. You can activate it to unlock locked things.", + "weight": "20 g", + "volume": "0 ml", + "price": "5 kUSD", + "material": [ "gold" ], + "symbol": "[", + "color": "yellow", + "initial_charges": 5, + "max_charges": 5, + "charges_per_use": 1, + "qualities": [ [ "LOCKPICK", 50 ] ], + "flags": [ "PERFECT_LOCKPICK" ] + }, + { + "id": "mtorch_everburning", + "type": "TOOL", + "name": { "str": "everburning torch", "str_pl": "everburning torches" }, + "description": "This is a high quality engraved wooden torch. On command, the tip bursts into flame and produces a fair amount of light. It will burn forever.", + "weight": "831 g", + "volume": "750 ml", + "price": "0 cent", + "to_hit": 1, + "bashing": 8, + "material": "wood", + "symbol": "/", + "color": "brown", + "techniques": [ "WBLOCK_1" ], + "flags": [ "STURDY" ], + "use_action": { + "target": "mtorch_everburning_lit", + "msg": "You light the torch.", + "active": true, + "menu_text": "Light torch", + "type": "transform" + } + }, + { + "id": "mtorch_everburning_lit", + "type": "TOOL", + "name": { "str": "everburning torch", "str_pl": "everburning torches" }, + "copy-from": "mtorch_everburning", + "revert_to": "mtorch_everburning", + "sub": "fire", + "use_action": [ + { "type": "firestarter", "moves": 30 }, + { + "target": "mtorch_everburning", + "msg": "The torch is extinguished.", + "active": false, + "menu_text": "Extinguish", + "type": "transform" + } + ], + "techniques": [ "WBLOCK_1" ], + "flags": [ "FIRE", "LIGHT_240", "FLAMING", "TRADER_AVOID", "WATER_EXTINGUISH", "STURDY" ] + }, + { + "name": { "str": "endless flask" }, + "id": "mflask_hip_whiskey", + "type": "CONTAINER", + "copy-from": "flask_hip", + "category": "clothing", + "use_action": { + "target": "whiskey", + "msg": "You open the flask and discover it full of sweet, sweet, whiskey!", + "container": "mflask_hip_whiskey", + "target_charges": 7, + "moves": 50, + "type": "delayed_transform", + "transform_age": 14400, + "not_ready_msg": "The flask isn't done refilling yet.", + "//": "24 hours" + } + }, + { + "id": "mtailors_kit", + "type": "TOOL", + "copy-from": "tailors_kit", + "name": "enchanted tailor's kit", + "description": "This is a high quality, engraved steel kit with a variety of needles, some plastic spools for thread, some small scissors, even a small heating element for melting and joining plastic. Use a tailor's kit to customize your clothing and armor. This uses your tailoring skill. It also contains one of those magic spiders that constantly, if slowly, makes new thread.", + "price": 100000, + "material": [ "steel" ], + "initial_charges": 500, + "max_charges": 1000, + "charges_per_use": 1, + "relic_data": { "recharge_scheme": [ { "type": "time", "req": "none", "interval": "1 h", "rate": 1 } ] }, + "sub": "sewing_kit", + "use_action": [ + { + "type": "repair_item", + "item_action_type": "repair_fabric", + "materials": [ + "cotton", + "leather", + "wool", + "fur", + "faux_fur", + "nomex", + "kevlar", + "neoprene", + "gutskin", + "black_dragon_hide", + "demon_chitin" + ], + "skill": "tailor", + "tool_quality": 1, + "cost_scaling": 0.1, + "move_cost": 500 + }, + { + "type": "sew_advanced", + "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin", "plastic", "kevlar_rigid" ], + "skill": "tailor", + "clothing_mods": [ "leather_padded", "steel_padded", "kevlar_padded", "furred", "wooled" ] + } + ], + "flags": [ "ALLOWS_REMOTE_USE" ] + }, + { + "id": "mspider_box", + "type": "TOOL", + "name": { "str": "spider box", "str_pl": "spider boxes" }, + "description": "This is a small glass box that contains a spider that diligently works day and night to produce silk thread that it stores in a reservoir you can open and retrieve it from.", + "weight": "100 g", + "volume": "100 ml", + "price": "1 kUSD", + "to_hit": -2, + "material": [ "glass" ], + "symbol": ";", + "color": "red", + "ammo": "thread", + "initial_charges": 500, + "max_charges": 1000, + "relic_data": { "recharge_scheme": [ { "type": "time", "req": "none", "interval": "1 h", "rate": 1 } ] } + }, + { + "id": "glow_light_off", + "type": "GENERIC", + "category": "tools", + "name": { "str": "magical reading light (covered)", "str_pl": "magical reading lights (covered)" }, + "description": "Powered by the magic of glow powder and lesser mana potions, this extremely expensive little light will provide just enough light to read by for at least a decade. The cover is closed. Use it to open the cover and show the light.", + "weight": "270 g", + "volume": "250 ml", + "price": "1250 USD", + "material": "glass", + "symbol": ",", + "color": "light_blue", + "use_action": { "target": "glow_light", "msg": "You open the nightlight's cover.", "menu_text": "Open cover", "type": "transform" }, + "flags": [ "ALLOWS_REMOTE_USE" ] + }, + { + "id": "glow_light", + "type": "GENERIC", + "category": "tools", + "name": "magical reading light", + "description": "Powered by the magic of glow powder and lesser mana potions, this extremely expensive little light will provide just enough light to read by for at least a decade. Use it to close the cover and hide the light.", + "weight": "270 g", + "volume": "250 ml", + "price": "1250 USD", + "material": "glass", + "symbol": ",", + "color": "light_blue", + "use_action": { + "target": "glow_light_off", + "msg": "You close the nightlight's cover.", + "menu_text": "Close cover", + "type": "transform" + }, + "flags": [ "LIGHT_5", "ALLOWS_REMOTE_USE" ] + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_ranged.json b/data/mods/Magical_Nights/items/enchanted/enchanted_ranged.json new file mode 100644 index 000000000000..7df25d09f38e --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_ranged.json @@ -0,0 +1,68 @@ +[ + { + "id": "m47a1", + "copy-from": "pistol_revolver", + "type": "GUN", + "name": { "str": "M47A1 Techno-Medusa", "str_pl": "M47A1 Techno-Medusae" }, + "description": "A magically-enhanced update to the Phillips & Rodgers' M47 Medusa, a multi-caliber revolver aimed at survivalists. While Technomancy improves the reliability with smaller cartridges, it is not as accurate as dedicated caliber revolvers due to freebore.", + "weight": "1333 g", + "volume": "750 ml", + "price": "740 USD", + "to_hit": -1, + "bashing": 9, + "material": [ "steel", "wood" ], + "symbol": "(", + "color": "dark_gray", + "ammo": [ "9mm", "9x18", "380", "357mag", "38" ], + "ranged_damage": { "damage_type": "bullet", "amount": 0 }, + "dispersion": 558, + "durability": 7, + "blackpowder_tolerance": 66, + "loudness": 23, + "clip_size": 6, + "valid_mod_locations": [ + [ "accessories", 1 ], + [ "mechanism", 1 ], + [ "barrel", 1 ], + [ "grip", 1 ], + [ "rail mount", 1 ], + [ "sights", 1 ], + [ "stock mount", 1 ], + [ "underbarrel mount", 1 ] + ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT" ] + }, + { + "id": "gunblade", + "type": "GUN", + "name": "gunblade", + "weapon_category": [ "MANUAL_ACTION", "1H_SWORDS" ], + "description": "Constructed similarly to a falcata, this forward-sloping blade has a short-barrel pump shotgun attached to the blade's spine for finishing blows or a first strike.", + "weight": "1539 g", + "volume": "1750 ml", + "price": "80 USD", + "to_hit": 2, + "bashing": 10, + "cutting": 22, + "material": [ "steel" ], + "symbol": "/", + "color": "dark_gray", + "techniques": [ "WBLOCK_2" ], + "qualities": [ [ "CUT", 1 ], [ "BUTCHER", 20 ] ], + "skill": "shotgun", + "ranged_damage": { "damage_type": "bullet", "amount": 1 }, + "dispersion": 600, + "durability": 6, + "blackpowder_tolerance": 66, + "clip_size": 3, + "range": -4, + "modes": [ [ "DEFAULT", "single", 1 ] ], + "ammo": "shot", + "reload": 200, + "barrel_length": "500 ml", + "valid_mod_locations": [ [ "mechanism", 1 ] ], + "reload_noise": "chuk chuk.", + "flags": [ "RELOAD_ONE", "PUMP_ACTION", "DURABLE_MELEE", "SHEATH_SWORD" ], + "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ] + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_rings.json b/data/mods/Magical_Nights/items/enchanted/enchanted_rings.json new file mode 100644 index 000000000000..e1a92739b2bf --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_rings.json @@ -0,0 +1,318 @@ +[ + { + "abstract": "mring_copper", + "type": "TOOL_ARMOR", + "name": "copper magic ring", + "description": "A generic copper magic ring.", + "weight": "4 g", + "volume": "0 ml", + "price": "50 USD", + "material": [ "copper" ], + "symbol": "[", + "color": "light_red", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT", "POWERARMOR_COMPATIBLE", "COMPACT" ] + }, + { + "abstract": "mring_silver", + "type": "TOOL_ARMOR", + "name": "magic ring", + "description": "A generic silver magic ring.", + "weight": "5 g", + "volume": "0 ml", + "price": "50 USD", + "material": [ "silver" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT", "POWERARMOR_COMPATIBLE", "COMPACT" ] + }, + { + "abstract": "mring_gold", + "type": "TOOL_ARMOR", + "name": "magic ring", + "description": "A generic gold magic ring.", + "weight": "9 g", + "volume": "0 ml", + "price": "50 USD", + "material": [ "gold" ], + "symbol": "[", + "color": "yellow", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT", "POWERARMOR_COMPATIBLE", "COMPACT" ] + }, + { + "abstract": "mring_platinum", + "type": "TOOL_ARMOR", + "name": "magic ring", + "description": "A generic platinum magic ring.", + "weight": "11 g", + "volume": "0 ml", + "price": "50 USD", + "material": [ "platinum" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT", "POWERARMOR_COMPATIBLE", "COMPACT" ] + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_blades_lesser", + "name": { "str": "ring of blades", "str_pl": "rings of blades" }, + "description": "An ornate silver ring engraved with daggers that conjures a near perfect throwing knife into your hand on activation.", + "use_action": { "type": "cast_spell", "spell_id": "conj_throwing_blade1", "no_fail": true, "level": 1, "need_worn": true }, + "initial_charges": 5, + "max_charges": 5, + "charges_per_use": 1, + "artifact_data": { "charge_type": "ARTC_TIME" } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_dodge_bonus_1", + "name": "eel ring", + "description": "A thin silver band ring, depicting an eel coiled on itself. Allows you to dodge an extra attack per turn.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_dodge_bonus_2", + "name": { "str": "bicephalous eel ring" }, + "description": "A thin gold band ring, depicting a bicephalous eel coiled on itself. Allows you to dodge two extra attacks per turn.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 2 } ] } ] } + }, + { + "copy-from": "mring_copper", + "type": "TOOL_ARMOR", + "id": "mring_strength_1", + "name": { "str": "ring of strength +1", "str_pl": "rings of strength +1" }, + "description": "A copper ring that makes you a little stronger when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 1 } ] } ] } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_strength_2", + "name": { "str": "ring of strength +2", "str_pl": "rings of strength +2" }, + "description": "A silver ring that makes you a good bit stronger when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 2 } ] } ] } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_strength_3", + "name": { "str": "ring of strength +3", "str_pl": "rings of strength +3" }, + "description": "A golden ring that makes you surprisingly stronger when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 3 } ] } ] } + }, + { + "copy-from": "mring_platinum", + "type": "TOOL_ARMOR", + "id": "mring_strength_4", + "name": { "str": "ring of strength +4", "str_pl": "rings of strength +4" }, + "description": "A platinum ring that makes you much stronger when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "STRENGTH", "add": 4 } ] } ] } + }, + { + "copy-from": "mring_copper", + "type": "TOOL_ARMOR", + "id": "mring_dexterity_1", + "name": { "str": "ring of dexterity +1", "str_pl": "rings of dexterity +1" }, + "description": "A copper ring that makes you a little more agile when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "DEXTERITY", "add": 1 } ] } ] } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_dexterity_2", + "name": { "str": "ring of dexterity +2", "str_pl": "rings of dexterity +2" }, + "description": "A silver ring that makes you a good bit more agile when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "DEXTERITY", "add": 2 } ] } ] } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_dexterity_3", + "name": { "str": "ring of dexterity +3", "str_pl": "rings of dexterity +3" }, + "description": "A golden ring that makes you surprisingly more agile when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "DEXTERITY", "add": 3 } ] } ] } + }, + { + "copy-from": "mring_platinum", + "type": "TOOL_ARMOR", + "id": "mring_dexterity_4", + "name": { "str": "ring of dexterity +4", "str_pl": "rings of dexterity +4" }, + "description": "A platinum ring that makes you much more agile when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "DEXTERITY", "add": 4 } ] } ] } + }, + { + "copy-from": "mring_copper", + "type": "TOOL_ARMOR", + "id": "mring_intelligence_1", + "name": { "str": "ring of intelligence +1", "str_pl": "rings of intelligence +1" }, + "description": "A copper ring that makes you a little more intelligent when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "INTELLIGENCE", "add": 1 } ] } ] } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_intelligence_2", + "name": { "str": "ring of intelligence +2", "str_pl": "rings of intelligence +2" }, + "description": "A silver ring that makes you a good bit more intelligent when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "INTELLIGENCE", "add": 2 } ] } ] } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_intelligence_3", + "name": { "str": "ring of intelligence +3", "str_pl": "rings of intelligence +3" }, + "description": "A golden ring that makes you surprisingly more intelligent when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "INTELLIGENCE", "add": 3 } ] } ] } + }, + { + "copy-from": "mring_platinum", + "type": "TOOL_ARMOR", + "id": "mring_intelligence_4", + "name": { "str": "ring of intelligence +4", "str_pl": "rings of intelligence +4" }, + "description": "A platinum ring that makes you much more intelligent when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "INTELLIGENCE", "add": 4 } ] } ] } + }, + { + "copy-from": "mring_copper", + "type": "TOOL_ARMOR", + "id": "mring_perception_1", + "name": { "str": "ring of perception +1", "str_pl": "rings of perception +1" }, + "description": "A copper ring that makes you a little more perceptive when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "add": 1 } ] } ] } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_perception_2", + "name": { "str": "ring of perception +2", "str_pl": "rings of perception +2" }, + "description": "A silver ring that makes you a good bit more perceptive when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "add": 2 } ] } ] } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_perception_3", + "name": { "str": "ring of perception +3", "str_pl": "rings of perception +3" }, + "description": "A golden ring that makes you eye-openingly more perceptive when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "add": 3 } ] } ] } + }, + { + "copy-from": "mring_platinum", + "type": "TOOL_ARMOR", + "id": "mring_perception_4", + "name": { "str": "ring of perception +4", "str_pl": "rings of perception +4" }, + "description": "A platinum ring that makes you much more perceptive when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "PERCEPTION", "add": 4 } ] } ] } + }, + { + "copy-from": "mring_copper", + "type": "TOOL_ARMOR", + "id": "mring_speed_3", + "name": { "str": "ring of speed +3", "str_pl": "rings of speed +3" }, + "description": "A copper ring that makes you a little faster when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 3 } ] } ] } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_speed_5", + "name": { "str": "ring of speed +5", "str_pl": "rings of speed +5" }, + "description": "A silver ring that makes you a good bit faster when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 5 } ] } ] } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_speed_7", + "name": { "str": "ring of speed +7", "str_pl": "rings of speed +7" }, + "description": "A golden ring that makes you quite hasty when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 7 } ] } ] } + }, + { + "copy-from": "mring_platinum", + "type": "TOOL_ARMOR", + "id": "mring_speed_10", + "name": { "str": "ring of speed +10", "str_pl": "rings of speed +10" }, + "description": "A platinum ring that makes you much faster when you wear it.", + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "SPEED", "add": 10 } ] } ] } + }, + { + "copy-from": "mring_copper", + "type": "TOOL_ARMOR", + "id": "mring_protection_2", + "name": { "str": "ring of protection +2", "str_pl": "rings of protection +2" }, + "description": "A copper ring that reduces some of the force of damage you take when you wear it.", + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "ARMOR_CUT", "add": -2 }, { "value": "ARMOR_BASH", "add": -2 }, { "value": "ARMOR_STAB", "add": -2 } ] + } + ] + } + }, + { + "copy-from": "mring_silver", + "type": "TOOL_ARMOR", + "id": "mring_protection_4", + "name": { "str": "ring of protection +4", "str_pl": "rings of protection +4" }, + "description": "A silver ring that appreciably reduces some of the force of damage you take when you wear it.", + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "ARMOR_CUT", "add": -4 }, { "value": "ARMOR_BASH", "add": -4 }, { "value": "ARMOR_STAB", "add": -4 } ] + } + ] + } + }, + { + "copy-from": "mring_gold", + "type": "TOOL_ARMOR", + "id": "mring_protection_6", + "name": { "str": "ring of protection +6", "str_pl": "rings of protection +6" }, + "description": "A golden ring that greatly reduces some of the force of damage you take when you wear it.", + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "ARMOR_CUT", "add": -6 }, { "value": "ARMOR_BASH", "add": -6 }, { "value": "ARMOR_STAB", "add": -6 } ] + } + ] + } + }, + { + "copy-from": "mring_platinum", + "type": "TOOL_ARMOR", + "id": "mring_protection_8", + "name": { "str": "ring of protection +8", "str_pl": "rings of protection +8" }, + "description": "A platinum ring that vastly reduces some of the force of damage you take when you wear it.", + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ALWAYS", + "values": [ { "value": "ARMOR_CUT", "add": -8 }, { "value": "ARMOR_BASH", "add": -8 }, { "value": "ARMOR_STAB", "add": -8 } ] + } + ] + } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_tokens.json b/data/mods/Magical_Nights/items/enchanted/enchanted_tokens.json new file mode 100644 index 000000000000..08ad80125739 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_tokens.json @@ -0,0 +1,168 @@ +[ + { + "abstract": "mtoken", + "name": "magic token", + "type": "GENERIC", + "category": "other", + "weight": "8 g", + "volume": "1 ml", + "price": "250 USD", + "material": [ "silver" ], + "symbol": "o", + "color": "light_gray" + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_longsword", + "name": "longsword token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a longsword.", + "use_action": { + "type": "transform", + "target": "longsword", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine longsword!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_arming_sword", + "name": { "str": "arming sword token" }, + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case an arming sword.", + "use_action": { + "type": "transform", + "target": "arming_sword", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine arming sword!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_broadsword", + "name": "broadsword token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a broadsword.", + "use_action": { + "type": "transform", + "target": "broadsword", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine broadsword!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_battleaxe", + "name": { "str": "battleaxe token" }, + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a battle axe.", + "use_action": { + "type": "transform", + "target": "battleaxe", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine battle axe!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_pike", + "name": "pike token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a pike.", + "use_action": { + "type": "transform", + "target": "pike", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine pike!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_mace", + "name": "mace token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a mace.", + "use_action": { + "type": "transform", + "target": "mace", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine mace!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_q_staff", + "name": "quarterstaff token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a quarterstaff.", + "use_action": { + "type": "transform", + "target": "q_staff", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a pristine quarterstaff!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_hammer", + "name": "hammer token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a hammer.", + "use_action": { + "type": "transform", + "target": "hammer", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine hammer!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_screwdriver_set", + "name": "screwdriver set token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a screwdriver.", + "use_action": { + "type": "transform", + "target": "screwdriver_set", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine screwdriver set!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_toolbox", + "name": "toolbox token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a toolbox.", + "use_action": { + "type": "transform", + "target": "toolbox", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine toolbox!" + } + }, + { + "copy-from": "mtoken", + "type": "GENERIC", + "id": "mtoken_crowbar", + "name": "crowbar token", + "description": "A large silver coin that, when activated by uttering the word on the back, turns into the item pictured on the front, in this case a crowbar.", + "use_action": { + "type": "transform", + "target": "crowbar", + "active": false, + "moves": 200, + "msg": "You say the command word engraved on the token, and it rapidly grows and morphs into a shiny pristine crowbar!" + } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_tools.json b/data/mods/Magical_Nights/items/enchanted/enchanted_tools.json new file mode 100644 index 000000000000..db40ab4114d9 --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_tools.json @@ -0,0 +1,134 @@ +[ + { + "type": "GENERIC", + "id": "crowbar_plus_one", + "copy-from": "crowbar", + "name": { "str": "crowbar +1", "str_pl": "crowbars +1" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "relative": { "to_hit": 1 }, + "extend": { "qualities": [ [ "PRY", 4 ] ] } + }, + { + "type": "GENERIC", + "id": "crowbar_plus_two", + "copy-from": "crowbar", + "name": { "str": "crowbar +2", "str_pl": "crowbars +2" }, + "proportional": { "price": 9, "price_postapoc": 9, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "relative": { "to_hit": 2 }, + "extend": { "qualities": [ [ "PRY", 5 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_hunting_plus_one", + "copy-from": "knife_hunting", + "name": { "str": "hunting knife +1", "str_pl": "hunting knives +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "relative": { "to_hit": 1 }, + "extend": { "qualities": [ [ "BUTCHER", 33 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_hunting_plus_two", + "copy-from": "knife_hunting", + "name": { "str": "hunting knife +2", "str_pl": "hunting knives +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "relative": { "to_hit": 2 }, + "extend": { "qualities": [ [ "BUTCHER", 36 ] ] } + }, + { + "type": "GENERIC", + "id": "jack_plus_one", + "copy-from": "jack", + "name": { "str": "bottle jack +1", "str_pl": "bottle jacks +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "extend": { "qualities": [ [ "JACK", 18 ] ] } + }, + { + "type": "GENERIC", + "id": "jack_plus_two", + "copy-from": "jack", + "name": { "str": "bottle jack +2", "str_pl": "bottle jacks +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "extend": { "qualities": [ [ "JACK", 20 ] ] } + }, + { + "type": "GENERIC", + "id": "scalpel_plus_one", + "copy-from": "scalpel", + "name": { "str": "scalpel +1", "str_pl": "scalpels +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "extend": { "qualities": [ [ "CUT_FINE", 4 ], [ "BUTCHER", 9 ] ] } + }, + { + "type": "GENERIC", + "id": "scalpel_plus_two", + "copy-from": "scalpel", + "name": { "str": "scalpel +2", "str_pl": "scalpels +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "extend": { "qualities": [ [ "CUT_FINE", 5 ], [ "BUTCHER", 10 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_butcher_plus_one", + "copy-from": "knife_butcher", + "name": { "str": "butcher knife +1", "str_pl": "butcher knives +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "extend": { "qualities": [ [ "BUTCHER", 28 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_butcher_plus_two", + "copy-from": "knife_butcher", + "name": { "str": "butcher knife +2", "str_pl": "butcher knives +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "extend": { "qualities": [ [ "BUTCHER", 30 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_meat_cleaver_plus_one", + "copy-from": "knife_meat_cleaver", + "name": { "str": "meat cleaver +1", "str_pl": "meat cleavers +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "extend": { "qualities": [ [ "BUTCHER", 28 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_meat_cleaver_plus_two", + "copy-from": "knife_meat_cleaver", + "name": { "str": "meat cleaver +2", "str_pl": "meat cleavers +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "extend": { "qualities": [ [ "BUTCHER", 30 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_carving_plus_one", + "copy-from": "knife_carving", + "name": { "str": "carving knife +1", "str_pl": "carving knives +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "extend": { "qualities": [ [ "BUTCHER", 24 ] ] } + }, + { + "type": "GENERIC", + "id": "knife_carving_plus_two", + "copy-from": "knife_carving", + "name": { "str": "carving knife +2", "str_pl": "carving knives +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "extend": { "qualities": [ [ "BUTCHER", 26 ] ] } + }, + { + "type": "GENERIC", + "id": "butchering_kit_plus_one", + "copy-from": "butchering_kit", + "name": { "str": "butchering kit +1", "str_pl": "butchering kits +1" }, + "proportional": { "price": 3, "price_postapoc": 3, "weight": 0.9, "bashing": 1.1, "cutting": 1.1 }, + "extend": { "qualities": [ [ "BUTCHER", 41 ] ] } + }, + { + "type": "GENERIC", + "id": "butchering_kit_plus_two", + "copy-from": "butchering_kit", + "name": { "str": "butchering kit +2", "str_pl": "butchering kits +2" }, + "proportional": { "price": 6, "price_postapoc": 6, "weight": 0.8, "bashing": 1.2, "cutting": 1.2 }, + "extend": { "qualities": [ [ "BUTCHER", 45 ] ] } + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_unarmed.json b/data/mods/Magical_Nights/items/enchanted/enchanted_unarmed.json new file mode 100644 index 000000000000..56e28323d29d --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_unarmed.json @@ -0,0 +1,99 @@ +[ + { + "type": "GENERIC", + "id": "cestus_plus_one", + "copy-from": "cestus", + "looks_like": "cestus", + "name": "cestus +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "cestus_plus_two", + "copy-from": "cestus", + "looks_like": "cestus", + "name": "cestus +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "flaming_fist", + "weapon_category": [ "FIST_WEAPONS" ], + "symbol": "3", + "color": "red", + "name": { "str": "flaming fist" }, + "description": "A heavy metal guard that covers the fist and increases striking power, with stout padding underneath to protect the wearers hand. It has been enchanted to emit dark magical flames that only harm enemies.", + "looks_like": "cestus", + "material": [ "steel", "leather" ], + "volume": "500 ml", + "weight": "970 g", + "to_hit": 2, + "bashing": 12, + "qualities": [ [ "HAMMER", 1 ] ], + "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "FLAMING" ] + }, + { + "type": "GENERIC", + "id": "flaming_fist_plus_one", + "copy-from": "flaming_fist", + "looks_like": "flaming_fist", + "name": "flaming fist +1", + "proportional": { "price": 3, "bashing": 1.1, "cutting": 1.1, "weight": 0.9 }, + "relative": { "to_hit": 1 } + }, + { + "type": "GENERIC", + "id": "flaming_fist_plus_two", + "copy-from": "flaming_fist", + "looks_like": "flaming_fist", + "name": "flaming fist +2", + "proportional": { "price": 6, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "gauntlet_pounding", + "weapon_category": [ "FIST_WEAPONS" ], + "symbol": "3", + "color": "light_gray", + "name": { "str": "gauntlet of pounding", "str_pl": "gauntlets of pounding" }, + "description": "A large gleaming metal gauntlet covered in magical symbols that allows you to land astoundingly powerful blows.", + "material": [ "superalloy" ], + "volume": "1 L", + "weight": "981 g", + "bashing": 34, + "to_hit": 3, + "qualities": [ [ "HAMMER", 2 ] ], + "techniques": [ "WBLOCK_1", "BRUTAL" ], + "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "OVERSIZE", "MESSY" ] + }, + { + "id": "shotcestus", + "copy-from": "shotgun_base", + "weapon_category": [ "AUTOLOADING", "FIST_WEAPONS" ], + "type": "GUN", + "name": { "str": "shotcestus", "str_pl": "shotcesti" }, + "description": "A sawn-off double-barrel shotgun mounted on a metal cestus. The lack of a stock to absorb recoil means some strength is required to fire.", + "weight": "1566 g", + "volume": "1500 ml", + "price": "200 USD", + "bashing": 12, + "material": [ "steel" ], + "techniques": [ "WBLOCK_1", "BRUTAL" ], + "min_strength": 7, + "ranged_damage": { "damage_type": "bullet", "amount": 1 }, + "dispersion": 855, + "durability": 6, + "blackpowder_tolerance": 66, + "clip_size": 2, + "range": -8, + "modes": [ [ "DEFAULT", "single", 1 ], [ "DOUBLE", "double", 2 ] ], + "reload": 200, + "barrel_length": "500 ml", + "valid_mod_locations": [ [ "mechanism", 1 ] ], + "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NEVER_JAMS", "RELOAD_EJECT", "RELOAD_ONE" ], + "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ] + } +] diff --git a/data/mods/Magical_Nights/items/enchanted/enchanted_wands.json b/data/mods/Magical_Nights/items/enchanted/enchanted_wands.json new file mode 100644 index 000000000000..b59025a0ad1c --- /dev/null +++ b/data/mods/Magical_Nights/items/enchanted/enchanted_wands.json @@ -0,0 +1,349 @@ +[ + { + "abstract": "spell_wand", + "name": { "str": "Magic Wand" }, + "type": "TOOL", + "weight": "230 g", + "volume": "500 ml", + "price": "100 USD", + "bashing": 3, + "to_hit": 1, + "material": [ "wood" ], + "symbol": "|", + "color": "brown", + "flags": [ "BELT_CLIP", "NONCONDUCTIVE" ], + "charges_per_use": 1, + "ammo": "crystallized_mana", + "magazines": [ [ "crystallized_mana", [ "small_mana_crystal" ] ] ], + "magazine_well": "250 ml" + }, + { + "abstract": "disp_wand", + "name": { "str": "Disposable Wand" }, + "type": "TOOL", + "weight": "230 g", + "volume": "500 ml", + "price": "100 USD", + "bashing": 3, + "to_hit": 1, + "material": [ "wood" ], + "symbol": "|", + "color": "brown", + "flags": [ "BELT_CLIP", "NONCONDUCTIVE" ], + "initial_charges": 20, + "max_charges": 20, + "charges_per_use": 1 + }, + { + "type": "TOOL", + "id": "wand_magic_missile_minor", + "name": { "str": "minor wand of magic missile", "str_pl": "minor wands of magic missile" }, + "copy-from": "spell_wand", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts magic missile.", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_magic_missile_lesser", + "name": { "str": "lesser wand of magic missile", "str_pl": "lesser wands of magic missile" }, + "copy-from": "spell_wand", + "price": "200 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts magic missile.", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_magic_missile_greater", + "name": { "str": "greater wand of magic missile", "str_pl": "greater wands of magic missile" }, + "copy-from": "spell_wand", + "price": "300 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts magic missile.", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_fireball_minor", + "name": { "str": "minor wand of fireball", "str_pl": "minor wands of fireball" }, + "copy-from": "spell_wand", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts fireball.", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_fireball_lesser", + "name": { "str": "lesser wand of fireball", "str_pl": "lesser wands of fireball" }, + "copy-from": "spell_wand", + "price": "200 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts fireball.", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_fireball_greater", + "name": { "str": "greater wand of fireball", "str_pl": "greater wands of fireball" }, + "copy-from": "spell_wand", + "price": "300 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts fireball.", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_mana_beam_minor", + "name": { "str": "minor wand of mana beam", "str_pl": "minor wands of mana beam" }, + "copy-from": "spell_wand", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts mana beam.", + "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_mana_beam_lesser", + "name": { "str": "lesser wand of mana beam", "str_pl": "lesser wands of mana beam" }, + "copy-from": "spell_wand", + "price": "200 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts mana beam.", + "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_mana_beam_greater", + "name": { "str": "greater wand of mana beam", "str_pl": "greater wands of mana beam" }, + "copy-from": "spell_wand", + "price": "300 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts mana beam.", + "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_point_flare_minor", + "name": { "str": "minor wand of point flare", "str_pl": "minor wands of point flare" }, + "copy-from": "spell_wand", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts point flare.", + "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_point_flare_lesser", + "name": { "str": "lesser wand of point flare", "str_pl": "lesser wands of point flare" }, + "copy-from": "spell_wand", + "price": "200 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts point flare.", + "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_point_flare_greater", + "name": { "str": "greater wand of point flare", "str_pl": "greater wands of point flare" }, + "copy-from": "spell_wand", + "price": "300 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts point flare.", + "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_hoaryblast_minor", + "name": { "str": "minor wand of hoary blast", "str_pl": "minor wands of hoary blast" }, + "copy-from": "spell_wand", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts hoary blast.", + "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_hoaryblast_lesser", + "name": { "str": "lesser wand of hoary blast", "str_pl": "lesser wands of hoary blast" }, + "copy-from": "spell_wand", + "price": "200 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts hoary blast.", + "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_hoaryblast_greater", + "name": { "str": "greater wand of hoary blast", "str_pl": "greater wands of hoary blast" }, + "copy-from": "spell_wand", + "price": "300 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts hoary blast.", + "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_cone_cold_minor", + "name": { "str": "minor wand of cone of cold", "str_pl": "minor wands of cone of cold" }, + "copy-from": "spell_wand", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts cone of cold.", + "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_cone_cold_lesser", + "name": { "str": "lesser wand of cone of cold", "str_pl": "lesser wands of cone of cold" }, + "copy-from": "spell_wand", + "price": "200 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts cone of cold.", + "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_cone_cold_greater", + "name": { "str": "greater wand of cone of cold", "str_pl": "greater wands of cone of cold" }, + "copy-from": "spell_wand", + "price": "300 USD", + "description": "A slender wooden wand with a mana crystal socket at the base that casts a spell when activated. This wand casts cone of cold.", + "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_magic_missile_minor", + "name": { "str": "disposable minor wand of magic missile", "str_pl": "disposable minor wands of magic missile" }, + "copy-from": "disp_wand", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts magic missile.", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_magic_missile_lesser", + "name": { "str": "disposable lesser wand of magic missile", "str_pl": "disposable lesser wands of magic missile" }, + "copy-from": "disp_wand", + "price": "200 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts magic missile.", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_magic_missile_greater", + "name": { "str": "disposable greater wand of magic missile", "str_pl": "disposable greater wands of magic missile" }, + "copy-from": "disp_wand", + "price": "300 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts magic missile.", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_fireball_minor", + "name": { "str": "disposable minor wand of fireball", "str_pl": "disposable minor wands of fireball" }, + "copy-from": "disp_wand", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts fireball.", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_fireball_lesser", + "name": { "str": "disposable lesser wand of fireball", "str_pl": "disposable lesser wands of fireball" }, + "copy-from": "disp_wand", + "price": "200 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts fireball.", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_fireball_greater", + "name": { "str": "disposable greater wand of fireball", "str_pl": "disposable greater wands of fireball" }, + "copy-from": "disp_wand", + "price": "300 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts fireball.", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_mana_beam_minor", + "name": { "str": "disposable minor wand of mana beam", "str_pl": "disposable minor wands of mana beam" }, + "copy-from": "disp_wand", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts mana beam.", + "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_mana_beam_lesser", + "name": { "str": "disposable lesser wand of mana beam", "str_pl": "disposable lesser wands of mana beam" }, + "copy-from": "disp_wand", + "price": "200 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts mana beam.", + "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_mana_beam_greater", + "name": { "str": "disposable greater wand of mana beam", "str_pl": "disposable greater wands of mana beam" }, + "copy-from": "disp_wand", + "price": "300 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts mana beam.", + "use_action": { "type": "cast_spell", "spell_id": "magus_mana_beam", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_point_flare_minor", + "name": { "str": "disposable minor wand of point flare", "str_pl": "disposable minor wands of point flare" }, + "copy-from": "disp_wand", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts point flare.", + "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_point_flare_lesser", + "name": { "str": "disposable lesser wand of point flare", "str_pl": "disposable lesser wands of point flare" }, + "copy-from": "disp_wand", + "price": "200 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts point flare.", + "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_point_flare_greater", + "name": { "str": "disposable greater wand of point flare", "str_pl": "disposable greater wands of point flare" }, + "copy-from": "disp_wand", + "price": "300 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts point flare.", + "use_action": { "type": "cast_spell", "spell_id": "point_flare", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_hoaryblast_minor", + "name": { "str": "disposable minor wand of hoary blast", "str_pl": "disposable minor wands of hoary blast" }, + "copy-from": "disp_wand", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts hoary blast.", + "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_hoaryblast_lesser", + "name": { "str": "disposable lesser wand of hoary blast", "str_pl": "disposable lesser wands of hoary blast" }, + "copy-from": "disp_wand", + "price": "200 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts hoary blast.", + "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_hoaryblast_greater", + "name": { "str": "disposable greater wand of hoary blast", "str_pl": "disposable greater wands of hoary blast" }, + "copy-from": "disp_wand", + "price": "300 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts hoary blast.", + "use_action": { "type": "cast_spell", "spell_id": "hoary_blast", "no_fail": true, "level": 15, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_cone_cold_minor", + "name": { "str": "disposable minor wand of cone of cold", "str_pl": "disposable minor wands of cone of cold" }, + "copy-from": "disp_wand", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts cone of cold.", + "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 5, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_cone_cold_lesser", + "name": { "str": "disposable lesser wand of cone of cold", "str_pl": "disposable lesser wands of cone of cold" }, + "copy-from": "disp_wand", + "price": "200 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts cone of cold.", + "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "type": "TOOL", + "id": "wand_disp_cone_cold_greater", + "name": { "str": "disposable greater wand of cone of cold", "str_pl": "disposable greater wands of cone of cold" }, + "copy-from": "disp_wand", + "price": "300 USD", + "description": "A slender wooden wand with an embedded mana crystal at the base that casts a spell when activated. This wand casts cone of cold.", + "use_action": { "type": "cast_spell", "spell_id": "cone_cold", "no_fail": true, "level": 15, "need_wielding": true } + } +] diff --git a/data/mods/Magical_Nights/items/ethereal_items.json b/data/mods/Magical_Nights/items/ethereal_items.json new file mode 100644 index 000000000000..daf147ba4d2a --- /dev/null +++ b/data/mods/Magical_Nights/items/ethereal_items.json @@ -0,0 +1,608 @@ +[ + { + "id": "stonefist", + "type": "GENERIC", + "weapon_category": [ "FIST_WEAPONS" ], + "name": { "str": "pair of magical armored stone gauntlets", "str_pl": "pairs of magical armored stone gauntlets" }, + "description": "A magical flexible stonelike substance for protection and attack.", + "weight": "600 g", + "volume": "250 ml", + "price": "1 cent", + "to_hit": 1, + "bashing": 20, + "material": [ "superalloy" ], + "symbol": "[", + "color": "light_gray", + "qualities": [ [ "HAMMER", 1 ] ], + "flags": [ "STURDY", "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "MAGIC_FOCUS" ], + "techniques": [ "WBLOCK_3" ] + }, + { + "id": "finger_firelighter", + "type": "TOOL", + "name": "finger firelighter", + "material": "concentrated_mana", + "description": "This is a small flame you can hold in your hand. With a thought, you can cause it to light something on fire.", + "weight": "1 g", + "volume": "1 ml", + "price": 0, + "symbol": ",", + "color": "yellow", + "use_action": [ + { "type": "firestarter", "moves": 20 }, + { "type": "transform", "msg": "You dim the flame.", "target": "finger_firelighter_off" } + ], + "flags": [ "TRADER_AVOID", "FIRESTARTER", "LIGHT_8", "FLAMING", "WATER_EXTINGUISH" ] + }, + { + "id": "finger_firelighter_off", + "copy-from": "finger_firelighter", + "type": "TOOL", + "name": "finger firelighter (dimmed)", + "description": "This is a small flame you can hold in your hand. With a thought, you can cause it to light something on fire, though it is currently dimmed.", + "use_action": [ + { "type": "firestarter", "moves": 20 }, + { "type": "transform", "msg": "You brighten the flame.", "target": "finger_firelighter" } + ], + "flags": [ "TRADER_AVOID", "FIRESTARTER", "FLAMING", "WATER_EXTINGUISH" ] + }, + { + "id": "magic_lamp", + "type": "ARMOR", + "category": "tools", + "name": "magic lamp", + "description": "a magical light source that will light up a small area.", + "weight": "1 g", + "volume": "250 ml", + "material": "concentrated_mana", + "price": "1 cent", + "to_hit": -2, + "bashing": 1, + "symbol": ",", + "color": "light_green", + "flags": [ "LIGHT_30", "AURA", "SEMITANGIBLE", "POWERARMOR_COMPATIBLE" ], + "use_action": { "type": "transform", "msg": "You dim your spell until it's dark.", "target": "magic_lamp_off" } + }, + { + "id": "magic_lamp_off", + "type": "ARMOR", + "category": "tools", + "name": "magic lamp (dimmed)", + "description": "a magical aura that you know can be brightened into a powerful light.", + "weight": "1 g", + "volume": "250 ml", + "material": "concentrated_mana", + "price": "1 cent", + "to_hit": -2, + "bashing": 1, + "symbol": ",", + "color": "light_green", + "flags": [ "AURA", "SEMITANGIBLE", "POWERARMOR_COMPATIBLE" ], + "use_action": { "type": "transform", "msg": "You return your spell to full brightness.", "target": "magic_lamp" } + }, + { + "id": "magic_light", + "type": "ARMOR", + "category": "tools", + "name": "magic light", + "description": "A small magical light that you can read by.", + "weight": "0 kg", + "volume": "0 ml", + "material": "concentrated_mana", + "price": "0 cent", + "symbol": ",", + "color": "light_green", + "flags": [ "LIGHT_10", "AURA", "SEMITANGIBLE", "POWERARMOR_COMPATIBLE" ], + "use_action": { "type": "transform", "msg": "You dim your spell until it's dark.", "target": "magic_light_off" } + }, + { + "id": "magic_light_off", + "type": "ARMOR", + "category": "tools", + "name": "magic light (dimmed)", + "description": "A magical aura which you know can be brightened for reading light.", + "weight": "0 kg", + "volume": "0 ml", + "material": "concentrated_mana", + "price": "0 cent", + "symbol": ",", + "color": "light_green", + "flags": [ "AURA", "SEMITANGIBLE", "POWERARMOR_COMPATIBLE" ], + "use_action": { "type": "transform", "msg": "You return your spell to full brightness.", "target": "magic_light" } + }, + { + "id": "shield_ice", + "type": "ARMOR", + "name": { "str": "large shield of magical ice", "str_pl": "large shields of magical ice" }, + "category": "armor", + "description": "A lightweight but tough shield crafted entirely of magical ice.", + "weight": "1 kg", + "volume": "5 L", + "price": "1 cent", + "to_hit": 1, + "bashing": 14, + "material": [ "steel" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "arm_either", "hand_either" ], + "coverage": 70, + "encumbrance": 15, + "material_thickness": 3, + "techniques": [ "WBLOCK_3" ], + "flags": [ "OVERSIZE", "BELTED", "RESTRICT_HANDS", "BLOCK_WHILE_WORN", "POWERARMOR_COMPATIBLE" ] + }, + { + "id": "ice_gliders", + "type": "ARMOR", + "name": { "str_sp": "slick icy coatings" }, + "description": "A magical slick icy coating on your feet. While quite fast on flat floors, they make it difficult to move on rough terrain.", + "weight": "1 g", + "volume": "250 ml", + "price": "1 cent", + "to_hit": -2, + "bashing": 6, + "material": [ "steel" ], + "symbol": "[", + "color": "brown", + "covers": [ "feet" ], + "coverage": 100, + "encumbrance": 0, + "warmth": 30, + "material_thickness": 1, + "environmental_protection": 2, + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -5 } ] } ] }, + "flags": [ "WATERPROOF", "ROLLER_QUAD", "BELTED", "POWERARMOR_COMPATIBLE" ] + }, + { + "type": "GENERIC", + "id": "stormhammer", + "name": { "str": "The Stormhammer" }, + "weapon_category": [ "1H_HAMMERS" ], + "description": "A crackling magical warhammer full of lightning to smite your foes with, and of course, smash things to bits!", + "weight": "1337 g", + "to_hit": 2, + "color": "brown", + "symbol": "/", + "material": [ "superalloy" ], + "techniques": [ "WBLOCK_2", "BRUTAL", "SWEEP" ], + "flags": [ + "NONCONDUCTIVE", + "BELT_CLIP", + "LIGHT_15", + "TRADER_AVOID", + "UNBREAKABLE_MELEE", + "NO_REPAIR", + "NO_SALVAGE", + "MAGIC_FOCUS" + ], + "volume": "1250 ml", + "bashing": 30, + "//electric": 15, + "price": "0 cent", + "qualities": [ [ "HAMMER", 1 ] ] + }, + { + "id": "stormfist", + "type": "SPELL", + "name": "Stormfist", + "description": "Encases your arm and hand in a sheath of crackling magical lightning, you can punch and defend yourself with it in melee combat.", + "valid_targets": [ "self" ], + "flags": [ "NO_EXPLOSION_VFX" ], + "min_damage": 0, + "max_damage": 0, + "effect": "spawn_item", + "effect_str": "stormglove", + "energy_source": "MANA", + "difficulty": 2, + "max_level": 20, + "base_casting_time": 200, + "base_energy_cost": 100, + "min_duration": 10000, + "max_duration": 100000, + "duration_increment": 2000 + }, + { + "type": "GENERIC", + "id": "stormglove", + "weapon_category": "FIST_WEAPONS", + "symbol": "3", + "color": "light_gray", + "name": { "str": "Stormfist" }, + "description": "Encases your arm and hand in a sheath of crackling magical lightning, you can punch and defend yourself with it in melee combat.", + "material": [ "superalloy" ], + "volume": "250 ml", + "weight": "1 g", + "bashing": 10, + "//electric": 15, + "flags": [ + "UNARMED_WEAPON", + "UNBREAKABLE_MELEE", + "NONCONDUCTIVE", + "LIGHT_5", + "TRADER_AVOID", + "NO_REPAIR", + "NO_SALVAGE", + "MAGIC_FOCUS", + "POWERARMOR_COMPATIBLE" + ] + }, + { + "id": "tentacle_whip", + "type": "GENERIC", + "weapon_category": [ "WHIPS" ], + "symbol": "/", + "color": "brown", + "name": "vicious tentacle whip", + "description": "A long, writhing, tentacle covered in sharp bonelike blades and spikey protrusions.", + "weight": "2460 g", + "volume": "1500 ml", + "material": [ "iron", "leather" ], + "techniques": [ "PRECISE", "RAPID", "WBLOCK_2" ], + "flags": [ + "REACH_ATTACK", + "REACH3", + "WHIP", + "STURDY", + "TRADER_AVOID", + "UNARMED_WEAPON", + "UNBREAKABLE_MELEE", + "NO_REPAIR", + "NO_SALVAGE", + "MAGIC_FOCUS" + ], + "cutting": 30, + "category": "weapons" + }, + { + "id": "fleshpouch", + "type": "ARMOR", + "name": { "str": "flesh pouch", "str_pl": "flesh pouches" }, + "description": "A large pouch of tough flesh on your back, filled with tiny tentacles that grasp and hold anything you place inside. It shifts and adjusts itself to minimize encumbrance.", + "weight": "0 kg", + "volume": "0 ml", + "price": "0 cent", + "material": [ "flesh" ], + "symbol": "[", + "color": "green", + "covers": [ "torso" ], + "coverage": 40, + "encumbrance": 10, + "storage": "25 L", + "material_thickness": 3, + "flags": [ + "BELTED", + "COMPACT", + "TRADER_AVOID", + "WATERPROOF", + "STURDY", + "NO_UNWIELD", + "ONLY_ONE", + "NO_REPAIR", + "NO_SALVAGE", + "POWERARMOR_COMPATIBLE" + ] + }, + { + "id": "bonespear", + "type": "GENERIC", + "weapon_category": [ "SPEARS" ], + "symbol": "/", + "color": "light_gray", + "name": { "str": "Wicked Bonespear" }, + "description": "This is a wicked spear/halberd hybrid entirely created of bone.", + "material": [ "bone" ], + "flags": [ + "UNBREAKABLE_MELEE", + "REACH_ATTACK", + "SPEAR", + "STAB", + "NONCONDUCTIVE", + "SHEATH_SPEAR", + "ONLY_ONE", + "NO_REPAIR", + "NO_SALVAGE", + "MAGIC_FOCUS" + ], + "techniques": [ "WBLOCK_2", "WIDE", "SWEEP", "BRUTAL" ], + "weight": "2175 g", + "volume": "2500 ml", + "bashing": 16, + "cutting": 36, + "to_hit": 2 + }, + { + "id": "druid_recurve", + "//": "Not using copy-from 'reflexbow', since wearability causes druid bow not to be wielded, and ammo / clip type causes it to require real arrows", + "type": "GUN", + "weapon_category": [ "BOWS", "ELASTIC" ], + "symbol": "(", + "color": "yellow", + "looks_like": "longbow", + "name": { "str": "Woodbow" }, + "description": "A magically conjured ornate recurve bow of solid flexible wood. A matching conjured wooden arrow appears when you draw the string back for firing.", + "flags": [ + "FIRE_TWOHAND", + "STR_DRAW", + "PRIMITIVE_RANGED_WEAPON", + "BELTED", + "COMPACT", + "UNBREAKABLE_MELEE", + "NONCONDUCTIVE", + "ONLY_ONE", + "NO_REPAIR", + "NO_SALVAGE", + "NO_UNLOAD" + ], + "skill": "archery", + "min_strength": 9, + "weight": "540 g", + "bashing": 12, + "to_hit": 1, + "reload_noise_volume": 3, + "loudness": 6, + "ranged_damage": { "damage_type": "stab", "amount": 29 }, + "range": 12, + "dispersion": 950, + "durability": 6, + "volume": "2500 ml" + }, + { + "type": "TOOL", + "id": "druid_seed", + "name": { "str": "seed of purification", "str_pl": "seeds of purification" }, + "weight": "1 g", + "color": "white", + "use_action": { + "type": "transform", + "target": "druid_dust", + "msg": "You squeeze the seed in your palm, and it begins to turn to a fine dust.", + "target_charges": 15, + "menu_text": "Squeeze seed" + }, + "symbol": "!", + "description": "A magical seed that can be squeezed to release purifying dust, which can then be used to purify up to a gallon of water", + "volume": "250 ml", + "flags": [ "TRADER_AVOID" ] + }, + { + "id": "druid_dust", + "type": "TOOL", + "name": "faintly glowing dust", + "description": "This fine dust glows with a growing intensity", + "weight": "1 g", + "volume": "30 ml", + "price": 0, + "symbol": "!", + "color": "white", + "initial_charges": 15, + "max_charges": 15, + "use_action": "WATER_PURIFIER" + }, + { + "id": "obfuscating_aura", + "type": "ARMOR", + "name": "obfuscating aura", + "description": "An all-encompassing, invisible layer of magic distorts light around your body. Allows you to dodge two extra attacks in a given turn.", + "weight": "1g", + "volume": "1ml", + "material": "concentrated_mana", + "price": "3646 cent", + "symbol": "o", + "color": "white", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ + "AURA", + "SEMITANGIBLE", + "OVERSIZE", + "ONLY_ONE", + "TRADER_AVOID", + "NO_TAKEOFF", + "NONCONDUCTIVE", + "POWERARMOR_COMPATIBLE" + ], + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "BONUS_DODGE", "add": 2 } ] } ] } + }, + { + "id": "acid_res_aura", + "type": "ARMOR", + "name": { "str": "acid resistance aura" }, + "description": "An all-encompassing, invisible layer of protection against acid.", + "material": "concentrated_mana", + "weight": "1g", + "volume": "1ml", + "price": "3646 cent", + "symbol": "o", + "color": "green", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ + "AURA", + "SEMITANGIBLE", + "OVERSIZE", + "ONLY_ONE", + "TRADER_AVOID", + "NO_TAKEOFF", + "NONCONDUCTIVE", + "POWERARMOR_COMPATIBLE" + ], + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ACID", "multiply": -0.25 } ] } ] + } + }, + { + "id": "acid_res_aura_greater", + "type": "ARMOR", + "name": "greater acid resistance aura", + "description": "An all-encompassing, invisible layer of protection against acid.", + "material": "concentrated_mana", + "weight": "1g", + "volume": "1ml", + "price": "3646 cent", + "symbol": "o", + "color": "green", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ + "AURA", + "SEMITANGIBLE", + "OVERSIZE", + "ONLY_ONE", + "TRADER_AVOID", + "NO_TAKEOFF", + "NONCONDUCTIVE", + "POWERARMOR_COMPATIBLE" + ], + "relic_data": { + "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "ARMOR_ACID", "multiply": -0.6 } ] } ] + } + }, + { + "id": "armor_frost", + "type": "ARMOR", + "category": "armor", + "name": { "str_sp": "frost armor" }, + "description": "A thin layer of magical ice, covering the entire body.", + "weight": "5000 g", + "volume": "5 L", + "material": [ "steel" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "head", "mouth", "eyes", "torso", "arms", "hands", "legs", "feet" ], + "coverage": 100, + "encumbrance": 10, + "warmth": 0, + "material_thickness": 2, + "environmental_protection": 2, + "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "STURDY", "POWERARMOR_COMPATIBLE" ] + }, + { + "id": "aura_stoneskin", + "type": "ARMOR", + "category": "armor", + "name": { "str_sp": "stoneskin coating" }, + "description": "A thin layer of shifting, almost fluid living rock, covering the entire body.", + "weight": "10200 g", + "volume": "25 L", + "material": [ "stone" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "head", "mouth", "eyes", "torso", "arms", "hands", "legs", "feet" ], + "coverage": 100, + "encumbrance": 20, + "warmth": 5, + "material_thickness": 2, + "environmental_protection": 2, + "flags": [ "ONLY_ONE", "OVERSIZE", "PERSONAL", "STURDY", "POWERARMOR_COMPATIBLE" ] + }, + { + "id": "overcharge_burn_scar", + "type": "ARMOR", + "name": { "str": "overcharge burn" }, + "description": "Ouch, this really smarts! It'll go away soon, maybe?", + "weight": "1 g", + "volume": "1 ml", + "symbol": "~", + "color": "light_red", + "covers": [ "eyes", "mouth" ], + "encumbrance": 18, + "relic_data": { "passive_effects": [ { "id": "ench_overcharge_burn_scar" } ] }, + "flags": [ "NO_TAKEOFF", "TRADER_AVOID", "BLIND", "POWERARMOR_COMPATIBLE" ] + }, + { + "id": "protect_env", + "type": "ARMOR", + "name": { "str": "aura of protection", "str_pl": "auras of protection" }, + "material": "concentrated_mana", + "description": "An all-encompassing, invisible layer of magical aura that protects you from the environment.", + "weight": "1 g", + "volume": "1 ml", + "symbol": "o", + "color": "blue", + "environmental_protection": 15, + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ + "AURA", + "SEMITANGIBLE", + "OVERSIZE", + "ONLY_ONE", + "TRADER_AVOID", + "NO_TAKEOFF", + "NONCONDUCTIVE", + "POWERARMOR_COMPATIBLE" + ] + }, + { + "id": "flamesword", + "type": "GENERIC", + "symbol": "/", + "color": "light_gray", + "looks_like": "sword_wood", + "name": { "str": "Flamesword" }, + "description": "This wooden sword is ablaze! It seems to be safe-ish to hold, but will burn up soon.", + "material": [ "wood" ], + "flags": [ "UNBREAKABLE_MELEE", "NONCONDUCTIVE", "NO_REPAIR", "NO_SALVAGE", "MAGIC_FOCUS", "LIGHT_10", "FIRESTARTER", "FIRE" ], + "techniques": [ "WBLOCK_1", "WIDE", "BRUTAL" ], + "weight": "1 kg", + "volume": "1 L", + "bashing": 12, + "cutting": 2, + "to_hit": 2, + "use_action": { "type": "firestarter", "moves": 50 }, + "relic_data": { + "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "ITEM_DAMAGE_CUT", "add": 8 } ] } ] + }, + "//": "ITEM_DAMAGE_HEAT is not implemented yet, so ITEM_DAMAGE_CUT instead" + }, + { + "id": "decaying_boneclub", + "type": "GENERIC", + "symbol": "/", + "color": "light_gray", + "looks_like": "bone", + "name": { "str": "decaying boneclub" }, + "description": "A pulsating club made of bone, stained with an ever-moving blood coating eager to absorb the living.", + "material": [ "bone", "flesh" ], + "weapon_category": [ "BATONS" ], + "flags": [ + "UNBREAKABLE_MELEE", + "NONCONDUCTIVE", + "ONLY_ONE", + "NO_REPAIR", + "NO_SALVAGE", + "MAGIC_FOCUS", + "BELT_CLIP", + "TRADER_AVOID" + ], + "techniques": [ "WBLOCK_2", "RAPID", "PRECISE" ], + "weight": "700 g", + "volume": "800 ml", + "to_hit": 3, + "relic_data": { + "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "ITEM_DAMAGE_BASH", "add": 8 } ] } ] + }, + "//": "ITEM_DAMAGE_BIO is not implemented yet, so ITEM_DAMAGE_BASH instead", + "bashing": 12 + }, + { + "id": "windrunning_aura", + "type": "ARMOR", + "name": "windrunning aura", + "description": "The wind at your back helping to ease your travel.", + "weight": "1g", + "volume": "1ml", + "material": "concentrated_mana", + "price": "3646 cent", + "symbol": "o", + "color": "light_gray", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ + "AURA", + "SEMITANGIBLE", + "OVERSIZE", + "ONLY_ONE", + "TRADER_AVOID", + "NO_TAKEOFF", + "NONCONDUCTIVE", + "POWERARMOR_COMPATIBLE" + ], + "relic_data": { "passive_effects": [ { "id": "ench_windrun" } ] } + } +] diff --git a/data/mods/Magical_Nights/items/fuel.json b/data/mods/Magical_Nights/items/fuel.json new file mode 100644 index 000000000000..84cf25a5e5aa --- /dev/null +++ b/data/mods/Magical_Nights/items/fuel.json @@ -0,0 +1,44 @@ +[ + { + "type": "AMMO", + "id": "dragon_blood", + "name": { "str_sp": "dragon blood" }, + "weight": "2 g", + "color": "red", + "container": "flask_glass", + "symbol": "~", + "description": "Blood of a dragon, it radiates warmth and looking at it you see moving patterns form and disappear in it as if looking at an actual fire.", + "price": "1 kUSD", + "material": "flesh", + "volume": "1 ml", + "phase": "liquid", + "category": "fuel", + "ammo_type": "dragon_blood", + "damage": { "damage_type": "stab", "amount": 5, "armor_penetration": 5 }, + "range": 4, + "effects": [ "FLAME", "STREAM", "INCENDIARY", "NEVER_MISFIRES" ], + "fuel": { + "energy": 50, + "explosion_data": { "chance_hot": 20, "chance_cold": 1000, "factor": 0.2, "fiery": true, "size_factor": 0.1 } + } + }, + { + "id": "mana_infused_blood", + "type": "COMESTIBLE", + "comestible_type": "MED", + "name": { "str": "mana infused blood", "str_pl": "mana_infused_blood" }, + "description": "Blood that is filled to the brim with arcane energy. It releases a faint blue glow.", + "weight": "265 g", + "volume": "250 ml", + "price": "0 cent", + "symbol": "~", + "color": "light_blue", + "phase": "liquid", + "container": "flask_glass", + "tool": "syringe", + "quench": 50, + "ammo_data": { "ammo_type": "mana_infused_blood" }, + "flags": [ "NO_INGEST" ], + "use_action": { "type": "cast_spell", "spell_id": "mana_doping", "no_fail": true, "level": 0 } + } +] diff --git a/data/mods/Magical_Nights/items/mana_crystals.json b/data/mods/Magical_Nights/items/mana_crystals.json new file mode 100644 index 000000000000..a375a02a818f --- /dev/null +++ b/data/mods/Magical_Nights/items/mana_crystals.json @@ -0,0 +1,40 @@ +[ + { + "type": "ammunition_type", + "id": "crystallized_mana", + "name": "crystallized mana", + "default": "crystallized_mana" + }, + { + "type": "AMMO", + "id": "crystallized_mana", + "category": "spare_parts", + "price": "10 USD", + "name": { "str_sp": "crystallized mana" }, + "symbol": "=", + "color": "yellow", + "description": "Some crystallized mana. This can be reloaded into rechargable mana crystals, but can never be unloaded.", + "flags": [ "TRADER_AVOID" ], + "volume": "100 ml", + "ammo_type": "crystallized_mana", + "count": 100, + "looks_like": "battery", + "fuel": { "energy": 1 } + }, + { + "id": "small_mana_crystal", + "type": "MAGAZINE", + "category": "spare_parts", + "name": { "str": "small mana crystal" }, + "description": "This is a small mana crystal specifically designed to be attached to wand tips.", + "weight": "5 g", + "volume": "250 ml", + "price": "15 USD", + "symbol": "=", + "color": "yellow", + "ammo_type": "crystallized_mana", + "capacity": 50, + "looks_like": "battery", + "flags": [ "NO_SALVAGE", "NO_UNLOAD" ] + } +] diff --git a/data/mods/Magical_Nights/items/materials.json b/data/mods/Magical_Nights/items/materials.json new file mode 100644 index 000000000000..13b24bd257e3 --- /dev/null +++ b/data/mods/Magical_Nights/items/materials.json @@ -0,0 +1,229 @@ +[ + { + "type": "COMESTIBLE", + "id": "raw_owlbear_fur", + "category": "spare_parts", + "name": "raw owlbear pelt", + "weight": "114 g", + "volume": "170 ml", + "color": "brown", + "spoils_in": "1 day 12 hours", + "comestible_type": "FOOD", + "symbol": ",", + "quench": -20, + "healthy": -10, + "calories": 550, + "description": "A carefully folded raw skin harvested from an owlbear. It still has the fur attached. You can cure it for storage and tanning, or eat it if you're desperate enough.", + "price": "330 cent", + "price_postapoc": "1 USD", + "material": [ "fur", "flesh" ], + "flags": [ "NO_SALVAGE", "TRADER_AVOID" ], + "stack_size": 1, + "fun": -24 + }, + { + "type": "GENERIC", + "id": "cured_owlbear_pelt", + "symbol": ",", + "color": "brown", + "name": { "str": "cured owlbear pelt" }, + "description": "A rolled up owlbear hide which has been scraped of extraneous hair and flesh and treated to prevent decay. It could be tanned and transformed into usable fur pelts.", + "price": "2 USD", + "price_postapoc": "0 cent", + "material": [ "fur", "flesh" ], + "flags": [ "NO_SALVAGE" ], + "weight": "114 g", + "volume": "170 ml", + "category": "spare_parts", + "to_hit": -1 + }, + { + "type": "GENERIC", + "id": "owlbear_fur", + "symbol": ",", + "color": "brown", + "name": { "str": "owlbear fur pelt" }, + "description": "A small bolt of fur from an owlbear. Can be used for VERY warm clothing.", + "price": "10 USD", + "price_postapoc": "10 cent", + "material": [ "fur", "leather" ], + "flags": [ "NO_SALVAGE" ], + "weight": "114 g", + "volume": "250 ml", + "category": "spare_parts" + }, + { + "type": "GENERIC", + "id": "dragon_bone", + "looks_like": "bone", + "category": "spare_parts", + "name": { "str": "dragon bone" }, + "weight": "450 g", + "color": "white", + "symbol": "%", + "description": "A bone from a dragon! Even on its own, these bones make an excellent material for weapons. However, something tells you that the bones hide more secrets than just that.", + "price": "0 cent", + "price_postapoc": "50 cent", + "material": "dragon_bone", + "volume": "500 ml" + }, + { + "type": "GENERIC", + "id": "shard_dragon_bone", + "looks_like": "skewer_bone", + "symbol": ",", + "color": "white", + "name": { "str": "dragon bone shard" }, + "description": "A small shard of dragon bone, shaped almost like a shard of porcelain.", + "category": "other", + "material": "dragon_bone", + "flags": [ "NO_SALVAGE", "TRADER_AVOID" ], + "weight": "10 g", + "volume": "25 ml", + "to_hit": -5 + }, + { + "id": "bulette_plate", + "type": "GENERIC", + "symbol": ")", + "color": "light_gray", + "name": "bulette plate", + "description": "The great plates from behind a bulette's head have always been prized for use in shield and armor making.", + "material": "arcane_skin", + "weight": "30 kg", + "volume": "3 L" + }, + { + "type": "GENERIC", + "id": "demon_chitin_piece", + "category": "spare_parts", + "symbol": ",", + "color": "red", + "name": { "str": "chunk of demon chitin", "str_pl": "chunks of demon chitin" }, + "description": "A piece of demon spider exoskeleton. It is light and very durable, and probably has some magical properties.", + "price": "0 cent", + "material": "demon_chitin", + "weight": "89 g", + "volume": "250 ml", + "bashing": 1, + "flags": [ "TRADER_AVOID" ], + "to_hit": -2 + }, + { + "type": "GENERIC", + "id": "demon_chitin_plate", + "category": "spare_parts", + "symbol": "/", + "color": "red", + "name": "demon chitin plate", + "price": "15225 cent", + "material": "demon_chitin", + "weight": "10 kg", + "volume": "4 L", + "bashing": 12, + "to_hit": -4, + "description": "A large piece of demon spider exoskeleton, painstakingly cut from the corpse of an adult demon spider. A plate of this size can be used to create armor plating." + }, + { + "id": "orichalcum_lump", + "type": "AMMO", + "category": "spare_parts", + "name": { "str": "lump of orichalcum", "str_pl": "lumps of orichalcum" }, + "description": "A lump of raw orichalcum. Needs to be reformed into an ingot to be useful.", + "weight": "1000 g", + "volume": "250 ml", + "price": "25 USD", + "bashing": 12, + "to_hit": -4, + "stack_size": 2, + "//": "Density 7.60g/cm³ ~ 1.9kg/250ml @ 1000g/unit ~ stack 2 and formed as a solid ingot so 100% of this", + "material": "orichalcum_metal", + "symbol": ",", + "color": "light_green", + "ammo_type": "components", + "qualities": [ [ "HAMMER", 1 ] ] + }, + { + "id": "orichalcum_sliver", + "type": "AMMO", + "category": "spare_parts", + "name": { "str": "sliver of orichalcum", "str_pl": "slivers of orichalcum" }, + "description": "A sliver of orichalcum broken from a larger piece. Needs to be reformed into an ingot to be useful.", + "weight": "250 g", + "volume": "250 ml", + "price": "10 USD", + "bashing": 8, + "to_hit": -2, + "stack_size": 4, + "//": "Density 7.60g/cm³ ~ 1.9kg/250ml @ 250g/unit ~ stack 8 but mishapen so only 50% of this", + "material": "orichalcum_metal", + "symbol": ",", + "color": "light_green", + "ammo_type": "components", + "qualities": [ [ "CUT", 1 ] ] + }, + { + "id": "orichalcum_ingot", + "type": "GENERIC", + "category": "spare_parts", + "name": "orichalcum ingot", + "description": "An ingot of orichalcum. About 3 cm by 7 cm by 12 cm in size, ready to be used for various blacksmithing tasks.", + "//": "Density the same as steel.", + "weight": "2 kg", + "volume": "253 ml", + "price": "6399 cent", + "bashing": 6, + "to_hit": -3, + "material": "orichalcum_metal", + "symbol": "=", + "color": "light_green" + }, + { + "id": "mercury", + "type": "AMMO", + "category": "spare_parts", + "name": { "str_sp": "liquid mercury" }, + "ammo_type": "mercury", + "description": "Elemental liquid mercury. Known for its use in thermometers.", + "volume": "1 ml", + "phase": "liquid", + "container": "flask_glass", + "color": "light_gray", + "symbol": "~", + "weight": "1356 mg" + }, + { + "id": "mithril_lump", + "type": "AMMO", + "category": "spare_parts", + "name": { "str": "lump of mithril", "str_pl": "lumps of mithril" }, + "description": "A lump of raw mithril. Needs to be reformed into an ingot to be useful.", + "weight": "675 g", + "volume": "250 ml", + "price": "25 USD", + "to_hit": -4, + "stack_size": 2, + "material": [ "mithril_metal" ], + "symbol": ",", + "color": "light_blue", + "ammo_type": "components", + "qualities": [ [ "HAMMER", 1 ] ], + "bashing": 12 + }, + { + "id": "mithril_ingot", + "type": "GENERIC", + "category": "spare_parts", + "name": "mithril ingot", + "description": "An ingot of mithril. About 3cm by 7cm by 12cm in size, ready to be used for various blacksmithing tasks.", + "//": "density of aluminum", + "weight": "683 g", + "volume": "253 ml", + "price": "63 USD 99 cent", + "to_hit": -3, + "material": [ "mithril_metal" ], + "symbol": "=", + "color": "light_blue", + "bashing": 12 + } +] diff --git a/data/mods/Magical_Nights/items/melee.json b/data/mods/Magical_Nights/items/melee.json new file mode 100644 index 000000000000..323fe2f79dee --- /dev/null +++ b/data/mods/Magical_Nights/items/melee.json @@ -0,0 +1,178 @@ +[ + { + "id": "mjolnir", + "copy-from": "warhammer", + "type": "GENERIC", + "name": { "str": "Mjölnir" }, + "description": "Mjölnir, the legendary hammer of Thor. It is rumored to be able to level mountains with a single blow. You feel the power of Asgard coursing through the hammer.", + "weight": "1731 g", + "color": "light_gray", + "material": [ "orichalcum_metal", "wood", "gold" ], + "techniques": [ "WBLOCK_2", "BRUTAL" ], + "volume": "3750 ml", + "bashing": 45, + "price": "2 kUSD" + }, + { + "id": "gungnir", + "copy-from": "spear_steel", + "type": "GENERIC", + "name": { "str": "Gungnir" }, + "description": "Gungnir, the spear of Odin. It is rumored to be the perfect spear, perfectly hitting any target regardless of the wielder's strength or skill. If feels like Odin's protecting you.", + "weight": "1854 g", + "material": [ "orichalcum_metal", "wood", "gold" ], + "techniques": [ "WBLOCK_1", "IMPALE", "SWEEP" ], + "volume": "3250 ml", + "bashing": 10, + "cutting": 35, + "price": "2 kUSD" + }, + { + "id": "gram", + "copy-from": "jian", + "type": "GENERIC", + "name": { "str": "Gram" }, + "description": "Gram, the sword of Sigurd. It is rumored to be the sword that slayed the legendary dragon, Fafnir. Once said to have cleaved Regin's anvil in half, the edge is impeccable.", + "weight": "1132 g", + "material": [ "orichalcum_metal", "steel", "leather" ], + "techniques": [ "WBLOCK_2", "PRECISE", "VORPAL" ], + "volume": "2500 ml", + "cutting": 45, + "price": "2 kUSD" + }, + { + "id": "laevateinn", + "copy-from": "i_staff", + "type": "GENERIC", + "name": { "str": "Laevateinn" }, + "description": "Laevateinn, the staff of Loki. Said to have been plucked from the gates of Hel by Loki. Imbued with a mysterious magic, the magic of the trickster god himself.", + "price": "1600 USD", + "material": [ "steel", "gold", "orichalcum_metal" ], + "flags": [ "MAGIC_FOCUS" ], + "techniques": [ "WBLOCK_2", "SPIN", "RAPID", "SWEEP" ], + "weight": "1860 g", + "bashing": 20, + "cutting": 35, + "use_action": { "type": "cast_spell", "spell_id": "ethereal_grasp", "no_fail": true, "level": 10, "need_wielding": true } + }, + { + "copy-from": "knife_combat", + "type": "TOOL", + "id": "orich_knife_combat", + "name": { "str": "orichalcum combat knife", "str_pl": "orichalcum combat knives" }, + "description": "A variant of the combat knife that is made of orichalcum instead of steel. Sharper and easier to maintain than steel while just as dense, this knife also has a thinner blade, which shaves off some weight.", + "material": [ "orichalcum_metal" ], + "proportional": { "cutting": 1.1, "price": 5, "weight": 0.99 }, + "color": "yellow" + }, + { + "copy-from": "longsword", + "type": "TOOL", + "id": "orich_longsword", + "name": { "str": "orichalcum longsword" }, + "description": "A variant of the longsword that is made of orichalcum instead of steel. Sharper and easier to maintain than steel while just as dense, this longsword also has a thinner blade, which shaves off some weight.", + "material": [ "orichalcum_metal" ], + "proportional": { "cutting": 1.1, "price": 5, "weight": 0.99 }, + "color": "yellow" + }, + { + "copy-from": "fire_ax", + "type": "TOOL", + "id": "orich_fire_ax", + "name": { "str": "orichalcum fire axe" }, + "description": "A fire axe made with orichalcum instead of steel. This makes it possible to chop through harder materials, and in the very well-funded fire stations is preferred.", + "material": [ "orichalcum_metal" ], + "proportional": { "cutting": 1.1, "price": 5 }, + "color": "yellow" + }, + { + "copy-from": "longsword", + "type": "TOOL", + "id": "dbone_longsword", + "name": { "str": "dragonbone longsword" }, + "description": "A variant of the longsword that is made of dragonbone. This makes for a very powerful blade without sacrificing durability. Even better than orichalcum, and you can sense that this isn't even its final form.", + "material": [ "dragon_bone" ], + "proportional": { "cutting": 1.3, "price": 10, "weight": 0.8 }, + "color": "white" + }, + { + "copy-from": "battleaxe", + "type": "TOOL", + "id": "dbone_battleaxe", + "name": { "str": "dragonbone battleaxe" }, + "description": "A variant of the battleaxe that is made of dragonbone. This makes for a very powerful blade without sacrificing durability. Even better than orichalcum, and you can sense that this isn't even its final form.", + "material": [ "dragon_bone" ], + "proportional": { "cutting": 1.3, "price": 10, "weight": 0.8 }, + "color": "white" + }, + { + "copy-from": "qiang", + "type": "TOOL", + "id": "dbone_qiang", + "name": { "str": "dragonbone qiang" }, + "description": "A variant of the qiang that is made of dragonbone. This makes for a very powerful blade without sacrificing durability. Even better than orichalcum, and you can sense that this isn't even its final form.", + "material": [ "dragon_bone" ], + "proportional": { "cutting": 1.3, "price": 10, "weight": 0.8 }, + "color": "white" + }, + { + "copy-from": "katana", + "type": "TOOL", + "id": "dbone_tachi", + "name": { "str": "dragonbone tachi" }, + "description": "A variant of the tachi that is made of dragonbone. This makes for a very powerful blade without sacrificing durability. Even better than orichalcum, and you can sense that this isn't even its final form.", + "material": [ "dragon_bone" ], + "proportional": { "cutting": 1.3, "price": 10, "weight": 0.8 }, + "color": "white" + }, + { + "copy-from": "warhammer", + "type": "TOOL", + "id": "gaul_maraz", + "name": { "str": "Gaul Maraz" }, + "description": "An impressively ornate golden warhammer with a sapphire and a ruby embedded within. The engraved words on it appear to be in some strange mix of ancient French and German. You can sense a faint magic aura being emitted by it, and picking up the weapon gives you the distinct impression that there's even more power within laying dormant. If only you could harness that power and awaken it once more...", + "material": [ "orichalcum_metal" ], + "proportional": { "bashing": 1.4, "price": 15, "weight": 1.05 }, + "color": "yellow" + }, + { + "copy-from": "dbone_longsword", + "type": "TOOL", + "id": "black_dbone_longsword", + "name": { "str": "acid-infused dragonbone longsword" }, + "description": "A variant of the longsword that is made of dragonbone, now with the acidic ire of a black dragon imbued within.", + "proportional": { "cutting": 1.2, "price": 10 }, + "extend": { "flags": [ "ACIDIC" ] }, + "color": "green" + }, + { + "copy-from": "dbone_battleaxe", + "type": "TOOL", + "id": "black_dbone_battleaxe", + "name": { "str": "acid-infused dragonbone battleaxe" }, + "description": "A variant of the battleaxe that is made of dragonbone, now with the acidic ire of a black dragon imbued within.", + "proportional": { "cutting": 1.2, "price": 10 }, + "extend": { "flags": [ "ACIDIC" ] }, + "color": "green" + }, + { + "copy-from": "dbone_qiang", + "type": "TOOL", + "id": "black_dbone_qiang", + "name": { "str": "acid-infused dragonbone qiang" }, + "description": "A variant of the qiang that is made of dragonbone, now with the acidic ire of a black dragon imbued within.", + "proportional": { "cutting": 1.2, "price": 10 }, + "extend": { "flags": [ "ACIDIC" ] }, + "color": "green" + }, + { + "copy-from": "dbone_tachi", + "type": "TOOL", + "id": "black_dbone_tachi", + "name": { "str": "acid-infused dragonbone tachi" }, + "description": "A variant of the tachi that is made of dragonbone, now with the acidic ire of a black dragon imbued within.", + "proportional": { "cutting": 1.2, "price": 10 }, + "extend": { "flags": [ "ACIDIC" ] }, + "color": "green" + } +] diff --git a/data/mods/Magical_Nights/items/monster_weapons.json b/data/mods/Magical_Nights/items/monster_weapons.json new file mode 100644 index 000000000000..2f23fe559e87 --- /dev/null +++ b/data/mods/Magical_Nights/items/monster_weapons.json @@ -0,0 +1,56 @@ +[ + { + "id": "lizardfolk_club", + "type": "GENERIC", + "name": "greatclub", + "category": "weapons", + "copy-from": "shillelagh", + "//": "A heavier version of the standard shillelagh (from melee.json) with a different description to match the lizardfolk lore. Not craftable, but wieldable if discovered.", + "description": "A stout knotty club with a large knob at the top. While it's very heavy, it's a very effective weapon in the hands of a strong opponent.", + "weight": "10 kg", + "volume": "8 L", + "price": "50 USD", + "flags": [ "UNBREAKABLE_MELEE", "ALWAYS_TWOHAND", "TRADER_AVOID", "SLOW_WIELD", "FIREWOOD", "NO_REPAIR" ], + "bashing": 22, + "to_hit": 1 + }, + { + "id": "lizardfolk_trident", + "type": "GENERIC", + "name": "wood trident", + "copy-from": "spear_forked", + "description": "A wooden melee weapon with a hand-forged steel forked spearhead attached to the end. It can be used for stabbing opponents either in close-range or as a thrown weapon, and in the right hands can also readily disarm opponents.", + "weight": "1650 g", + "to_hit": 2, + "techniques": [ "WBLOCK_2", "DEF_DISARM", "IMPALE" ], + "volume": "3 L", + "cutting": 29, + "flags": [ "SPEAR", "STAB", "REACH_ATTACK", "NONCONDUCTIVE", "DURABLE_MELEE", "SHEATH_SPEAR" ], + "price": "150 USD" + }, + { + "id": "lizardfolk_javelin", + "type": "GENERIC", + "name": { "str": "barbed javelin" }, + "category": "weapons", + "copy-from": "javelin", + "//": "A barbed version of the standard javelin (from spears_and_polearms.json) with a different description to match the lizardfolk lore. Not craftable, but wieldable if discovered.", + "description": "This weapon measures about 3 feet in length and is fletched like an arrow for better accuracy. The business end of the javelin has wicked-looking barbs which could cause significant bleeding.", + "weight": "2500 g", + "volume": "2830 ml", + "flags": [ "STAB", "SHEATH_SPEAR", "JAVELIN", "TRADER_AVOID", "NO_REPAIR" ] + }, + { + "id": "lizardfolk_javelin_gun", + "type": "GUN", + "copy-from": "fake_item", + "name": { "str": "barbed javelin" }, + "description": "Fake gun that fires barbed javelins.", + "flags": [ "NEVER_JAMS", "NONCONDUCTIVE", "NO_REPAIR", "WATERPROOF_GUN", "NO_SALVAGE", "NO_UNLOAD" ], + "skill": "rifle", + "durability": 10, + "range": 10, + "dispersion": 10, + "ranged_damage": [ { "damage_type": "stab", "amount": 5 } ] + } +] diff --git a/data/mods/Magical_Nights/items/mutagen.json b/data/mods/Magical_Nights/items/mutagen.json new file mode 100644 index 000000000000..2ca5586f3439 --- /dev/null +++ b/data/mods/Magical_Nights/items/mutagen.json @@ -0,0 +1,25 @@ +[ + { + "type": "COMESTIBLE", + "id": "manatouched_serum", + "name": "concentrated mana serum", + "weight": "250 g", + "color": "light_blue", + "addiction_type": "mutagen", + "stim": -20, + "container": "flask_glass", + "comestible_type": "DRINK", + "symbol": "~", + "healthy": -10, + "addiction_potential": 5, + "calories": 26, + "description": "A very concentrated form of mana potion. You aren't quite sure of the effects this will have…", + "price": "10 USD", + "volume": "500 ml", + "phase": "liquid", + "charges": 2, + "use_action": { "type": "mutagen_iv", "mutation_category": "MANATOUCHED" }, + "flags": [ "EATEN_COLD", "NUTRIENT_OVERRIDE" ], + "fun": -15 + } +] diff --git a/data/mods/Magical_Nights/items/necromancy.json b/data/mods/Magical_Nights/items/necromancy.json new file mode 100644 index 000000000000..87c29e0cf787 --- /dev/null +++ b/data/mods/Magical_Nights/items/necromancy.json @@ -0,0 +1,38 @@ +[ + { + "id": "animist_doll_zombie", + "name": "zombie voodoo doll", + "description": "A remarkably accurate effigy of an undead human, including pieces of bone and organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.", + "use_action": { "type": "cast_spell", "spell_id": "summon_zombie", "no_fail": true, "level": 12 }, + "type": "COMESTIBLE", + "comestible_type": "FOOD", + "category": "weapons", + "material": [ "leather", "flesh", "bone" ], + "weight": "225 g", + "volume": "700ml", + "symbol": "t", + "color": "pink", + "stack_size": 1, + "spoils_in": "4 days", + "flags": [ "TRADER_AVOID", "INEDIBLE", "NUTRIENT_OVERRIDE" ] + }, + { + "id": "animist_doll_skeleton", + "name": "ossified voodoo doll", + "description": "A remarkably accurate effigy of an undead human covered with bone, including pieces of organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.", + "use_action": { "type": "cast_spell", "spell_id": "summon_skeleton", "no_fail": true, "level": 10 }, + "type": "COMESTIBLE", + "category": "weapons", + "copy-from": "animist_doll_zombie" + }, + { + "id": "animist_doll_decayed_pouncer", + "name": "cougar voodoo doll", + "description": "A remarkably accurate effigy of an undead cougar, complete with fur, bones, and organs. Necromantic magic delays immediate rot, but it won't last forever. Piercing it with the attached needle could compel it to serve you.", + "use_action": { "type": "cast_spell", "spell_id": "summon_decayed_pouncer", "no_fail": true, "level": 13 }, + "type": "COMESTIBLE", + "category": "weapons", + "material": [ "fur", "flesh", "bone" ], + "copy-from": "animist_doll_skeleton" + } +] diff --git a/data/mods/Magical_Nights/items/obsolete.json b/data/mods/Magical_Nights/items/obsolete.json new file mode 100644 index 000000000000..982dc85eb7ea --- /dev/null +++ b/data/mods/Magical_Nights/items/obsolete.json @@ -0,0 +1,50 @@ +[ + { + "id": "wand_fireball", + "name": { "str": "wand of fireballs", "str_pl": "wands of fireballs" }, + "description": "A classic, this wand shoots fireballs without fail. A more skilled Kelvinist could cast them more efficiently, though.", + "type": "TOOL", + "weight": "230 g", + "volume": "500 ml", + "price": "100 USD", + "bashing": 3, + "to_hit": 2, + "material": [ "wood" ], + "symbol": "|", + "color": "brown", + "charges_per_use": 1, + "ammo": "crystallized_mana", + "use_action": { "type": "cast_spell", "spell_id": "fireball", "no_fail": true, "level": 5, "need_wielding": true }, + "magazines": [ [ "crystallized_mana", [ "small_mana_crystal" ] ] ], + "magazine_well": "250 ml" + }, + { + "id": "wand_magic_missile", + "name": { "str": "wand of magic missiles", "str_pl": "wands of magic missiles" }, + "description": "A classic, this wand shoots magic missiles without fail. A more skilled Magus could cast them more efficiently, though.", + "type": "TOOL", + "weight": "230 g", + "volume": "500 ml", + "price": "100 USD", + "bashing": 3, + "to_hit": 2, + "material": [ "wood" ], + "symbol": "|", + "color": "brown", + "charges_per_use": 1, + "ammo": "crystallized_mana", + "use_action": { "type": "cast_spell", "spell_id": "magic_missile", "no_fail": true, "level": 10, "need_wielding": true }, + "magazines": [ [ "crystallized_mana", [ "small_mana_crystal" ] ] ], + "magazine_well": "250 ml" + }, + { + "id": "bio_fuel_cell_blood", + "copy-from": "bionic_general", + "type": "BIONIC_ITEM", + "name": { "str": "OBSOLETE! Blood Power Generator CBM" }, + "description": "OBSOLETE ITEM! Only exists for save integrity", + "price": "4500 USD", + "weight": "500 g", + "difficulty": 8 + } +] diff --git a/data/mods/Magical_Nights/items/potions.json b/data/mods/Magical_Nights/items/potions.json new file mode 100644 index 000000000000..59fda53c8a60 --- /dev/null +++ b/data/mods/Magical_Nights/items/potions.json @@ -0,0 +1,113 @@ +[ + { + "id": "mana_potion_lesser", + "name": { "str": "lesser mana potion" }, + "description": "You can't buy these, so you need to save them until the last boss! Actually, don't even use them there!", + "use_action": { "type": "cast_spell", "spell_id": "potion_recover_mana", "no_fail": true, "level": 0 }, + "type": "COMESTIBLE", + "weight": "265 g", + "quench": 10, + "calories": 75, + "volume": "250ml", + "charges": 1, + "fun": -1, + "healthy": 1, + "symbol": "~", + "container": "flask_glass", + "color": "light_blue", + "comestible_type": "DRINK", + "flags": [ "EATEN_COLD", "NUTRIENT_OVERRIDE" ], + "phase": "liquid", + "price": "25 USD" + }, + { + "id": "mana_potion", + "type": "COMESTIBLE", + "name": { "str": "mana potion" }, + "copy-from": "mana_potion_lesser", + "use_action": { "type": "cast_spell", "spell_id": "potion_recover_mana", "no_fail": true, "level": 5 }, + "price": "100 USD" + }, + { + "id": "mana_potion_greater", + "type": "COMESTIBLE", + "name": { "str": "greater mana potion" }, + "copy-from": "mana_potion_lesser", + "use_action": { "type": "cast_spell", "spell_id": "potion_recover_mana", "no_fail": true, "level": 15 }, + "price": "300 USD" + }, + { + "id": "cats_grace_potion", + "name": { "str": "potion of Cat's Grace", "str_pl": "potions of Cat's Grace" }, + "description": "This is a potion of Cat's Grace. It will increase your dexterity for 10 minutes.", + "use_action": { "type": "cast_spell", "spell_id": "cats_grace", "no_fail": true, "level": 9 }, + "type": "COMESTIBLE", + "weight": "265 g", + "quench": 10, + "calories": 75, + "volume": "250ml", + "charges": 1, + "fun": -1, + "symbol": "~", + "container": "flask_glass", + "color": "yellow", + "comestible_type": "DRINK", + "flags": [ "EATEN_COLD", "NUTRIENT_OVERRIDE" ], + "phase": "liquid", + "price": "30 USD" + }, + { + "id": "ogres_strength_potion", + "name": { "str": "potion of Ogre's Strength", "str_pl": "potions of Ogre's Strength" }, + "description": "This is a potion of Ogre's Strength. It will increase your strength for 10 minutes.", + "use_action": { "type": "cast_spell", "spell_id": "ogres_strength", "no_fail": true, "level": 9 }, + "type": "COMESTIBLE", + "copy-from": "cats_grace_potion" + }, + { + "id": "eagles_sight_potion", + "name": { "str": "potion of Eagle's Sight", "str_pl": "potions of Eagle's Sight" }, + "description": "This is a potion of Eagle's Sight. It will increase your perception for 10 minutes.", + "use_action": { "type": "cast_spell", "spell_id": "eagles_sight", "no_fail": true, "level": 9 }, + "type": "COMESTIBLE", + "copy-from": "cats_grace_potion" + }, + { + "id": "foxs_cunning_potion", + "name": { "str": "potion of Fox's Cunning", "str_pl": "potions of Fox's Cunning" }, + "description": "This is a potion of Fox's Cunning. It will increase your intelligence for 10 minutes.", + "use_action": { "type": "cast_spell", "spell_id": "foxs_cunning", "no_fail": true, "level": 9 }, + "type": "COMESTIBLE", + "copy-from": "cats_grace_potion" + }, + { + "id": "twisted_restore_potion", + "name": { "str": "potion of Twisted Restoration", "str_pl": "potions of Twisted Restoration" }, + "description": "This foul-smelling liquid simulates undead regeneration by accelerating your heart to dangerous levels. Drinking this in danger or at critical condition may be lethal.", + "use_action": { "type": "cast_spell", "spell_id": "twisted_restore", "no_fail": true, "level": 1 }, + "type": "COMESTIBLE", + "weight": "265 g", + "quench": -30, + "calories": 100, + "volume": "250ml", + "charges": 5, + "fun": -5, + "healthy": -1, + "symbol": "~", + "container": "flask_glass", + "color": "brown", + "spoils_in": "5 days", + "comestible_type": "DRINK", + "flags": [ "TRADER_AVOID", "NUTRIENT_OVERRIDE" ], + "phase": "liquid", + "price": "25 USD" + }, + { + "id": "twisted_restore_potion_improved", + "name": { "str": "potion of Improved Twisted Restoration", "str_pl": "potions of Improved Twisted Restoration" }, + "description": "This foul-smelling liquid simulates undead regeneration by accelerating your heart to dangerous levels. Drinking this in danger or at critical condition may be lethal. Improved infusion techniques lessen the strain of the process.", + "use_action": { "type": "cast_spell", "spell_id": "twisted_restore_improved", "no_fail": true, "level": 1 }, + "type": "COMESTIBLE", + "copy-from": "twisted_restore_potion" + } +] diff --git a/data/mods/Magical_Nights/items/recipe_books.json b/data/mods/Magical_Nights/items/recipe_books.json new file mode 100644 index 000000000000..89962ceab242 --- /dev/null +++ b/data/mods/Magical_Nights/items/recipe_books.json @@ -0,0 +1,176 @@ +[ + { + "id": "black_dragons", + "type": "BOOK", + "name": { "str": "Black Dragons: Swamp Ruins", "str_pl": "copies of Black Dragons: Swamp Ruins" }, + "description": "This book details black dragons: The most evil of dragons, who live in ruins generally in swamps. Immune to acid and breathe acid. The book also details how to prepare its hide and craft various armors that make use of some of its acid resistance.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "black_white", + "skill": "spellcraft", + "required_level": 1, + "max_level": 3, + "intelligence": 10, + "time": "32 m", + "fun": 1 + }, + { + "id": "alchemy_basic", + "type": "BOOK", + "name": { "str": "A Beginner's Guide to Alchemy", "str_pl": "copies of A Beginner's Guide to Alchemy" }, + "description": "A paperback tome for the art of liquid magic, alcohol not included.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "white", + "skill": "cooking", + "required_level": 3, + "max_level": 5, + "intelligence": 9, + "time": "20 m", + "fun": 1 + }, + { + "id": "necro_basic", + "type": "BOOK", + "name": { "str": "A Soulbinder's Guide to Necromancy", "str_pl": "copies of A Soulbinder's Guide to Necromancy" }, + "description": "A paperback tome for the art of binding undead creatures' souls to dolls, along with emulating their healing factor.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "black", + "looks_like": "summon_undead_spellbook", + "skill": "tailor", + "required_level": 4, + "max_level": 6, + "intelligence": 9, + "time": "20 m", + "fun": -2, + "flags": [ "MORBID" ] + }, + { + "id": "techno_basic", + "type": "BOOK", + "name": { "str": "Magitek Illustrated", "str_pl": "copies of Magitek Illustrated" }, + "description": "A paperback tome for the art of combining modern technology with magic. There is a disclaimer on the back: `Cannith Industries bears no responsibility for malfunctions or accidents for any products mentioned herein`.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "black", + "looks_like": "manual_gun", + "skill": "mechanics", + "required_level": 3, + "max_level": 5, + "intelligence": 9, + "time": "20 m", + "fun": 1 + }, + { + "id": "book_mythological", + "type": "BOOK", + "name": { "str": "The Weapons of Asgard and Beyond", "str_pl": "copies of The Weapons of Asgard and Beyond" }, + "max_level": 10, + "description": "An ornate book which appears to be written in Norse runes. Based on the detailed illustrations, it appears to contain information about crafting numerous weapons used by various Gods.", + "weight": "654 g", + "color": "light_blue", + "intelligence": 9, + "symbol": "?", + "material": [ "paper" ], + "volume": "1250 ml", + "time": 60, + "fun": 0, + "skill": "fabrication", + "price": "300 USD", + "required_level": 8 + }, + { + "id": "cooking_poison", + "type": "BOOK", + "name": { "str": "Cooking with Poison", "str_pl": "copies of Cooking with Poison" }, + "description": "A leatherbound book with an embossed cauldron on the cover. Inside it describes ways to purify food magically.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "white", + "skill": "cooking", + "required_level": 4, + "max_level": 6, + "intelligence": 9, + "time": "20 m", + "fun": 1 + }, + { + "id": "metal_legends", + "type": "BOOK", + "name": { "str": "Metals of Legend", "str_pl": "copies of Metals of Legend" }, + "description": "A book with a brass coverplate. It professes to teach one how to make magical metals such as Orichalcum. It is dry reading even for an alchemical tome.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "white", + "skill": "fabrication", + "required_level": 4, + "max_level": 6, + "intelligence": 9, + "time": "20 m", + "fun": -1 + }, + { + "id": "magic_armormaking", + "type": "BOOK", + "name": { "str": "Protection from Magical Beasts", "str_pl": "copies of Protection from Magical Beasts" }, + "description": "A leatherbound book with a picture of a shield holding back dragonfire on the cover. There are many ways to turn monster skins and hides into protective equipment inside.", + "weight": "1 kg", + "volume": "750 ml", + "price": "79 USD", + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "white", + "skill": "tailor", + "required_level": 6, + "max_level": 8, + "intelligence": 10, + "time": "25 m", + "fun": -1 + }, + { + "id": "weapon_enchanting_guide", + "type": "BOOK", + "looks_like": "welding_book", + "name": { "str": "Enchanter's Guidebook", "str_pl": "copies of Enchanter's Guidebooks" }, + "description": "A hefty textbook on the theory and practice of magically strengthening weapons and tools.", + "weight": "750 g", + "volume": "1250 ml", + "price": "94 USD", + "price_postapoc": "4250 cent", + "material": [ "paper" ], + "symbol": "?", + "color": "blue", + "skill": "fabrication", + "required_level": 5, + "max_level": 6, + "intelligence": 10, + "time": "60 m", + "fun": -1 + } +] diff --git a/data/mods/Magical_Nights/items/spell_scrolls.json b/data/mods/Magical_Nights/items/spell_scrolls.json new file mode 100644 index 000000000000..9ee021975289 --- /dev/null +++ b/data/mods/Magical_Nights/items/spell_scrolls.json @@ -0,0 +1,962 @@ +[ + { + "abstract": "spell_scroll", + "name": { "str": "Spell Scroll" }, + "type": "GENERIC", + "category": "spellbooks", + "weight": "475 g", + "volume": "500 ml", + "price": "40 USD", + "material": [ "paper" ], + "symbol": "?", + "color": "white" + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_crystallize_mana", + "//": "Classless spell", + "name": { "str": "Scroll of Crystallize Mana", "str_pl": "Scrolls of Crystallize Mana" }, + "description": "A proper wizard is always prepared, crystallize your mana for the future!", + "use_action": { "type": "learn_spell", "spells": [ "crystallize_mana" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_dark_sight", + "//": "Classless spell", + "name": { "str": "Scroll of Dark Sight", "str_pl": "Scrolls of Dark Sight" }, + "description": "The darkness holds no secrets for the arcane. Adjust your sight to see in perfect darkness!", + "use_action": { "type": "learn_spell", "spells": [ "dark_sight" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_invisibility", + "//": "Technomancer spell", + "name": { "str": "Scroll of Invisibility", "str_pl": "Scrolls of Invisibility" }, + "description": "The light can not interact with you unless you want it to. Become invisible!", + "use_action": { "type": "learn_spell", "spells": [ "invisibility" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_obfuscated_body", + "//": "Classless spell", + "name": { "str": "Scroll of Obfuscated Body", "str_pl": "Scrolls of Obfuscated Body" }, + "description": "A magical aura distorts light around your body, making it easier to dodge enemy attacks.", + "use_action": { "type": "learn_spell", "spells": [ "obfuscated_body" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_holographic_transposition", + "//": "Technomancer spell", + "name": { "str": "Scroll of Holographic Transposition", "str_pl": "Scrolls of Holographic Transposition" }, + "description": "Allows you to swap places with a previously existing holographic image of yourself. If the universe itself can't tell you apart, who could?", + "use_action": { "type": "learn_spell", "spells": [ "holographic_transposition" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_smite", + "//": "Animist spell", + "name": { "str": "Scroll of Smite", "str_pl": "Scrolls of Smite" }, + "description": "Evil has become pervasive throughout the world. Let your power be the light that shines in the darkness!", + "use_action": { "type": "learn_spell", "spells": [ "smite" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_recover_mana", + "//": "Animist spell", + "name": { "str": "Scroll of Life Conversion", "str_pl": "Scrolls of Life Conversion" }, + "description": "You channel your life force itself into your spiritual energy. You spend hp to regain mana.", + "use_action": { "type": "learn_spell", "spells": [ "recover_mana" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_recover_pain", + "//": "Animist spell", + "name": { "str": "Scroll of Mind Over Pain", "str_pl": "Scrolls of Mind Over Pain" }, + "description": "With an intense ritual that resembles crossfit, you manage to put some of your pain at bay.", + "use_action": { "type": "learn_spell", "spells": [ "recover_pain" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_zombie", + "//": "Animist spell", + "name": { "str": "Scroll of Summon Zombie", "str_pl": "Scrolls of Summon Zombie" }, + "description": "An ethereal-looking zombie rises from the depths of the earth to fight for you. You may be able to summon more with a higher level in this spell.", + "use_action": { "type": "learn_spell", "spells": [ "summon_zombie" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_skeleton", + "//": "Animist spell", + "name": { "str": "Scroll of Summon Skeleton", "str_pl": "Scrolls of Summon Skeleton" }, + "description": "A ghostly skeleton rises from the depths of the earth to fight for you. You may be able to summon more with a higher level in this spell.", + "use_action": { "type": "learn_spell", "spells": [ "summon_skeleton" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_floating_disk", + "name": { "str": "Scroll of Summon Floating Disk", "str_pl": "Scrolls of Summon Floating Disk" }, + "description": "Summons a floating disk that is sworn to carry your burdens.", + "use_action": { "type": "learn_spell", "spells": [ "summon_floating_disk" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_decayed_pouncer", + "//": "Animist spell", + "name": { "str": "Scroll of Summon Decayed Pouncer", "str_pl": "Scrolls of Summon Decayed Pouncer" }, + "description": "A decrepit looking large cat rises from the depths of the earth to fight for you. You may be able to summon more with a higher level in this spell.", + "use_action": { "type": "learn_spell", "spells": [ "summon_decayed_pouncer" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_light_healing", + "//": "Biomancer spell", + "name": { "str": "Scroll of Cure Light Wounds", "str_pl": "Scrolls of Cure Light Wounds" }, + "description": "Heals a little bit of damage on the target.", + "use_action": { "type": "learn_spell", "spells": [ "light_healing" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_pain_split", + "//": "Biomancer spell", + "name": { "str": "Scroll of Pain Split", "str_pl": "Scrolls of Pain Split" }, + "description": "Evens out damage among your limbs.", + "use_action": { "type": "learn_spell", "spells": [ "pain_split" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_vicious_tentacle", + "//": "Biomancer spell", + "name": { "str": "Scroll of Vicious Tentacle", "str_pl": "Scrolls of Vicious Tentacle" }, + "description": "This spell extrudes a long nasty whiplike tentacle of sharp bones and oozing acid from your body, it has a long reach attack and vicious damage.", + "use_action": { "type": "learn_spell", "spells": [ "vicious_tentacle" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_bio_grotesque", + "//": "Biomancer spell", + "name": { "str": "Scroll of Grotesque Enhancement", "str_pl": "Scrolls of Grotesque Enhancement" }, + "description": "A spell that warps your body in alien ways to increase your physical abilities and strength.", + "use_action": { "type": "learn_spell", "spells": [ "bio_grotesque" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_bio_acidicspray", + "//": "Biomancer spell", + "name": { "str": "Scroll of Acidic Spray", "str_pl": "Scrolls of Acidic Spray" }, + "description": "When cast, the mage opens his mouth and sprays acid in a wide cone to dissolve his foes into goo. Just imagine what he'll do with the goo.", + "use_action": { "type": "learn_spell", "spells": [ "bio_acidicspray" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_bio_fleshpouch", + "//": "Biomancer spell", + "name": { "str": "Scroll of Flesh Pouch", "str_pl": "Scrolls of Flesh Pouch" }, + "description": "This spell grows a large pouch out of your skin on your back, allowing you to store your gear in it.", + "use_action": { "type": "learn_spell", "spells": [ "bio_fleshpouch" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_bio_bonespear", + "//": "Biomancer spell", + "name": { "str": "Scroll of Conjure Bonespear", "str_pl": "Scrolls of Conjure Bonespear" }, + "description": "This spell creates a long shaft of bone with a wicked point and blades along its length.", + "use_action": { "type": "learn_spell", "spells": [ "bio_bonespear" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_megablast", + "//": "Classless spell", + "name": { "str": "Scroll of Megablast", "str_pl": "Scrolls of Megablast" }, + "description": "You always wanted to fire energy beams like in the animes you watched as a kid. Now you can!", + "use_action": { "type": "learn_spell", "spells": [ "megablast" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_create_atomic_light", + "//": "Classless spell1", + "name": { "str": "Scroll of Magical Light", "str_pl": "Scrolls of Magical Light" }, + "description": "Creates a magical light.", + "use_action": { "type": "learn_spell", "spells": [ "create_atomic_light" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_blinding_flash", + "//": "Classless spell", + "name": { "str": "Scroll of Blinding Flash", "str_pl": "Scrolls of Blinding Flash" }, + "description": "Blind enemies for a short time with a sudden, dazzling light. Higher levels deal slightly higher damage.", + "use_action": { "type": "learn_spell", "spells": [ "blinding_flash" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_ethereal_grasp", + "//": "Classless spell", + "name": { "str": "Scroll of Ethereal Grasp", "str_pl": "Scrolls of Ethereal Grasp" }, + "description": "A mass of spectral hands emerge from the ground, slowing everything in range. Higher levels allow a bigger AoE, and longer effect.", + "use_action": { "type": "learn_spell", "spells": [ "ethereal_grasp" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_protection_aura", + "//": "Classless spell", + "name": { "str": "Scroll of Aura of Protection", "str_pl": "Scrolls of Aura of Protection" }, + "description": "Encases your whole body in a magical aura that protects you from the environment.", + "use_action": { "type": "learn_spell", "spells": [ "protection_aura" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_druid_veggrasp", + "//": "Druid spell", + "name": { "str": "Scroll of Vegetative Grasp", "str_pl": "Scrolls of Vegetative Grasp" }, + "description": "This spell causes roots and vines to burst forth from the ground and grab your foes, slowing them and doing a small amount of damage as they dig in.", + "use_action": { "type": "learn_spell", "spells": [ "druid_veggrasp" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_druid_rootstrike", + "//": "Druid spell", + "name": { "str": "Scroll of Root Strike", "str_pl": "Scrolls of Root Strike" }, + "description": "This spell causes roots to spear out the ground and stab into your foes in an arc, impaling them.", + "use_action": { "type": "learn_spell", "spells": [ "druid_rootstrike" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_druid_woodshaft", + "//": "Druid spell", + "name": { "str": "Scroll of Wooden Shaft", "str_pl": "Scrolls of Wooden Shaft" }, + "description": "This spell creates a projectile of hardwood that shoots forth from the caster's hand at high speed to stab into an enemy.", + "use_action": { "type": "learn_spell", "spells": [ "druid_woodshaft" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_druid_naturebow1", + "//": "Druid spell", + "name": { "str": "Scroll of Nature's Bow", "str_pl": "Scrolls of Nature's Bow" }, + "description": "This spell conjures a magical wooden recurve bow that fires endless arrows for as long as it lasts.", + "use_action": { "type": "learn_spell", "spells": [ "druid_naturebow1" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_recover_fatigue", + "//": "Druid spell", + "name": { "str": "Scroll of Nature's Trance", "str_pl": "Scrolls of Nature's Trance" }, + "description": "Your connection to living things allows you to go into a magical trance. This allows you to recover fatige quickly in exchange for mana.", + "use_action": { "type": "learn_spell", "spells": [ "recover_fatigue" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_cats", + "//": "Druid spell", + "name": { "str": "Scroll of Bag of Cats", "str_pl": "Scrolls of Bag of Cats" }, + "description": "Are you the crazy cat lady?", + "use_action": { "type": "learn_spell", "spells": [ "summon_cats" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_stonefist", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Stonefist", "str_pl": "Scrolls of Stonefist" }, + "description": "Encases your arms and hands in a sheath of magical stone, you can punch and defend yourself with it in melee combat.", + "use_action": { "type": "learn_spell", "spells": [ "stonefist" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_seismic_stomp", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Seismic Stomp", "str_pl": "Scrolls of Seismic Stomp" }, + "description": "Focusing mana into your leg, you stomp your foot and send out a shockwave, knocking enemies around you onto the ground.", + "use_action": { "type": "learn_spell", "spells": [ "seismic_stomp" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_recover_stamina", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Stone's Endurance", "str_pl": "Scrolls of Stone's Endurance" }, + "description": "You focus on the stones beneath you and draw from their agelessness. Your mana is converted to stamina.", + "use_action": { "type": "learn_spell", "spells": [ "recover_stamina" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_eshaper_shardspray", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Shardspray", "str_pl": "Scrolls of Shardspray" }, + "description": "This spell projects a wide spray of sharp metal shards, cutting into your foes and friends alike.", + "use_action": { "type": "learn_spell", "spells": [ "eshaper_shardspray" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_eshaper_piercing_bolt", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Piercing Bolt", "str_pl": "Scrolls of Piercing Bolt" }, + "description": "This spell projects a piercing rod of conjured iron at those that dare oppose you.", + "use_action": { "type": "learn_spell", "spells": [ "eshaper_piercing_bolt" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_eshaper_shardstorm", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Shardstorm", "str_pl": "Scrolls of Shardstorm" }, + "description": "Creates an omnidirectional spray of razor sharp metal shards all around you.", + "use_action": { "type": "learn_spell", "spells": [ "eshaper_shardstorm" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_eshaper_rockbolt", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Rockbolt", "str_pl": "Scrolls of Rockbolt" }, + "description": "Fires a conjured stone projectile at high velocity.", + "use_action": { "type": "learn_spell", "spells": [ "eshaper_rockbolt" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_point_flare", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Point Flare", "str_pl": "Scrolls of Point Flare" }, + "description": "Causes an intense heat at the location, damaging the target.", + "use_action": { "type": "learn_spell", "spells": [ "point_flare" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_create_lighter", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Finger Firelighter", "str_pl": "Scrolls of Finger Firelighter" }, + "description": "Summons a small flame that does not burn you, but you can use it to light things on fire. It seems to need you to have some intent to light things on fire, because you are able to put it in your pocket with no issue.", + "use_action": { "type": "learn_spell", "spells": [ "create_lighter" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_ice_spike", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Ice Spike", "str_pl": "Scrolls of Ice Spike" }, + "description": "Causes jagged icicles to form in the air above the target, falling and damaging it.", + "use_action": { "type": "learn_spell", "spells": [ "ice_spike" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_fireball", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Fireball", "str_pl": "Scrolls of Fireball" }, + "description": "You hurl a pea-sized glowing orb that when reaches its target or an obstacle produces a pressure-less blast of searing heat.", + "use_action": { "type": "learn_spell", "spells": [ "fireball" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_cone_cold", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Cone of Cold", "str_pl": "Scrolls of Cone of Cold" }, + "description": "You blast a cone of frigid air toward the target.", + "use_action": { "type": "learn_spell", "spells": [ "cone_cold" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_burning_hands", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Burning Hands", "str_pl": "Scrolls of Burning Hands" }, + "description": "You're pretty sure you saw this in a game somewhere. You fire a short-range cone of fire.", + "use_action": { "type": "learn_spell", "spells": [ "burning_hands" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_frost_spray", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Frost Spray", "str_pl": "Scrolls of Frost Spray" }, + "description": "You're pretty sure you saw this in a game somewhere. You fire a short-range cone of ice and cold.", + "use_action": { "type": "learn_spell", "spells": [ "frost_spray" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_chilling_touch", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Chilling Touch", "str_pl": "Scrolls of Chilling Touch" }, + "description": "Freezes the touched target with intense cold.", + "use_action": { "type": "learn_spell", "spells": [ "chilling_touch" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_glide_ice", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Glide on Ice", "str_pl": "Scrolls of Glide on Ice" }, + "description": "Encases your feet in a magical coating of ice, allowing you to glide along smooth surfaces faster.", + "use_action": { "type": "learn_spell", "spells": [ "glide_ice" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_hoary_blast", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Hoary Blast", "str_pl": "Scrolls of Hoary Blast" }, + "description": "You project a glowing white crystal of ice and it explodes on impact into a blossom of shattering cold.", + "use_action": { "type": "learn_spell", "spells": [ "hoary_blast" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_ice_shield", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Ice Shield", "str_pl": "Scrolls of Ice Shield" }, + "description": "Creates a magical shield of ice on your arm, you can defend yourself with it in melee combat and use it to bash.", + "use_action": { "type": "learn_spell", "spells": [ "ice_shield" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_frost_armor", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Frost Armor", "str_pl": "Scrolls of Frost Armor" }, + "description": "Covers you in a thin layer of magical ice to protect you from harm.", + "use_action": { "type": "learn_spell", "spells": [ "frost_armor" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_magic_missile", + "//": "Magus spell", + "name": { "str": "Scroll of Magic Missile", "str_pl": "Scrolls of Magic Missile" }, + "description": "I cast Magic Missile at the darkness!", + "use_action": { "type": "learn_spell", "spells": [ "magic_missile" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_phase_door", + "//": "Magus spell", + "name": { "str": "Scroll of Phase Door", "str_pl": "Scrolls of Phase Door" }, + "description": "Teleports you in a random direction a short distance.", + "use_action": { "type": "learn_spell", "spells": [ "phase_door" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_gravity_well", + "//": "Magus spell", + "name": { "str": "Scroll of Gravity Well", "str_pl": "Scrolls of Gravity Well" }, + "description": "Summons a well of gravity with the epicenter at the location. Deals bashing damage to all creatures in the affected area.", + "use_action": { "type": "learn_spell", "spells": [ "gravity_well" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_mana_blast", + "//": "Magus spell", + "name": { "str": "Scroll of Mana Blast", "str_pl": "Scrolls of Mana Blast" }, + "description": "A blast of concentrated magical power that obliterates a large area.", + "use_action": { "type": "learn_spell", "spells": [ "magus_mana_blast" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_mana_bolt", + "//": "Magus spell", + "name": { "str": "Scroll of Mana Bolt", "str_pl": "Scrolls of Mana Bolt" }, + "description": "A bolt of magical power that only damages your foes.", + "use_action": { "type": "learn_spell", "spells": [ "magus_mana_bolt" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_haste", + "//": "Magus spell", + "name": { "str": "Scroll of Haste", "str_pl": "Scrolls of Haste" }, + "description": "This spell gives you an enormous boost of speed lasting a short period of time.", + "use_action": { "type": "learn_spell", "spells": [ "magus_haste" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_mana_beam", + "//": "Magus spell", + "name": { "str": "Scroll of Mana Beam", "str_pl": "Scrolls of Mana Beam" }, + "description": "A beam of focused magical power that damages any foes in its path.", + "use_action": { "type": "learn_spell", "spells": [ "magus_mana_beam" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_magus_escape", + "//": "Magus spell", + "name": { "str": "Scroll of Escape", "str_pl": "Scrolls of Escape" }, + "description": "Teleports you in a random direction a medium distance, to help escape your foes in dangerous situations.", + "use_action": { "type": "learn_spell", "spells": [ "magus_escape" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_cats_grace", + "//": "Magus spell", + "name": { "str": "Scroll of Cat's Grace", "str_pl": "Scrolls of Cat's Grace" }, + "description": "You become more graceful, agile, and coordinated.", + "use_action": { "type": "learn_spell", "spells": [ "cats_grace" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_eagles_sight", + "//": "Magus spell", + "name": { "str": "Scroll of Eagle's Sight", "str_pl": "Scrolls of Eagle's Sight" }, + "description": "You gain the perception of an eagle.", + "use_action": { "type": "learn_spell", "spells": [ "eagles_sight" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_ogres_strength", + "//": "Magus spell", + "name": { "str": "Scroll of Ogre's Strength", "str_pl": "Scrolls of Ogre's Strength" }, + "description": "You gain the strength of an ogre.", + "use_action": { "type": "learn_spell", "spells": [ "ogres_strength" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_foxs_cunning", + "//": "Magus spell", + "name": { "str": "Scroll of Fox's Cunning", "str_pl": "Scrolls of Fox's Cunning" }, + "description": "You become wily like a fox.", + "use_action": { "type": "learn_spell", "spells": [ "foxs_cunning" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_jolt", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Jolt", "str_pl": "Scrolls of Jolt" }, + "description": "A short-ranged fan of electricity shoots from your fingers.", + "use_action": { "type": "learn_spell", "spells": [ "jolt" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_lightning_bolt", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Lightning Bolt", "str_pl": "Scrolls of Lightning Bolt" }, + "description": "The goto spell for many Stormshapers, this iconic spell does just what you expect: you shoot lightning from your fingertips. However, this lightning is more directed than most lightning, and travels in a line through most non-solid targets.", + "use_action": { "type": "learn_spell", "spells": [ "lightning_bolt" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_windstrike", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Windstrike", "str_pl": "Scrolls of Windstrike" }, + "description": "A powerful blast of wind slams into anything in front of your outstretched hand.", + "use_action": { "type": "learn_spell", "spells": [ "windstrike" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_windrun", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Windrunning", "str_pl": "Scrolls of Windrunning" }, + "description": "A magical wind pushes you forward as you move, easing your movements and increasing speed.", + "use_action": { "type": "learn_spell", "spells": [ "windrun" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_storm_hammer", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Call Stormhammer", "str_pl": "Scrolls of Call Stormhammer" }, + "description": "Creates a crackling magical warhammer full of lightning to smite your foes with, and of course, smash things to bits!", + "use_action": { "type": "learn_spell", "spells": [ "storm_hammer" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_bless", + "//": "Technomancer spell", + "name": { "str": "Scroll of Bless", "str_pl": "Scrolls of Bless" }, + "description": "A spell of blessing that gives you energy and boosts your abilities.", + "use_action": { "type": "learn_spell", "spells": [ "bless" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_holy_blade", + "//": "Technomancer spell", + "name": { "str": "Scroll of Holy Blade", "str_pl": "Scrolls of Holy Blade" }, + "description": "This blade of light will cut through any evil it makes contact with!", + "use_action": { "type": "learn_spell", "spells": [ "holy_blade" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_spirit_armor", + "//": "Technomancer spell", + "name": { "str": "Scroll of Spiritual Armor", "str_pl": "Scrolls of Spiritual Armor" }, + "description": "Evil will not make it through your defenses if your faith is strong enough!", + "use_action": { "type": "learn_spell", "spells": [ "spirit_armor" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_create_atomic_lamp", + "//": "Technomancer spell", + "name": { "str": "Scroll of Lamp", "str_pl": "Scrolls of Lamp" }, + "description": "Creates a magical lamp.", + "use_action": { "type": "learn_spell", "spells": [ "create_atomic_lamp" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_recover_bionic_power", + "//": "Technomancer spell", + "name": { "str": "Scroll of Manatricity", "str_pl": "Scrolls of Manatricity" }, + "description": "You have found a way to convert your spiritual energy into power you can use for your bionics.", + "use_action": { "type": "learn_spell", "spells": [ "recover_bionic_power" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_taze", + "//": "Technomancer spell", + "name": { "str": "Scroll of Taze", "str_pl": "Scrolls of Taze" }, + "description": "This spell creates a very short range bolt of electricity to shock your foes.", + "use_action": { "type": "learn_spell", "spells": [ "taze" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_quantum_tunnel_lesser", + "//": "Technomancer spell", + "name": { "str": "Scroll of Lesser Quantum Tunnel", "str_pl": "Scrolls of Lesser Quantum Tunnel" }, + "description": "This spell manipulates some quantum something or other to tunnel you through a short distance of space, and even matter, unfortunately there's that whole uncertainty thing as to where you come out. It leaves you a little dazed on the other side as you reorient yourself.", + "use_action": { "type": "learn_spell", "spells": [ "quantum_tunnel_lesser" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_synaptic_stimulation", + "//": "Technomancer spell", + "name": { "str": "Scroll of Synaptic Stimulation", "str_pl": "Scrolls of Synaptic Stimulation" }, + "description": "This spell stimulates the synapses in your brain beyond normal processing speeds, giving you a large boost in mental processing capability, including enhancing your reflexes, speed, and raw intellectual power. Use responsibly!", + "use_action": { "type": "learn_spell", "spells": [ "synaptic_stimulation" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_laze", + "//": "Technomancer spell", + "name": { "str": "Scroll of Laze", "str_pl": "Scrolls of Laze" }, + "description": "You concentrate and release a focused beam of photons at a target, also known as a laser.", + "use_action": { "type": "learn_spell", "spells": [ "laze" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_animated_blade", + "//": "Technomancer spell", + "name": { "str": "Scroll of Animated Blade", "str_pl": "Scrolls of Animated Blade" }, + "description": "This spell conjures flying animated blades that will cut your enemies down to size. Into small pieces that is.", + "use_action": { "type": "learn_spell", "spells": [ "animated_blade" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_mirror_image", + "//": "Technomancer spell", + "name": { "str": "Scroll of Mirror Image", "str_pl": "Scrolls of Mirror Image" }, + "description": "This spell manipulates light into barely tangible duplicates of a living being, a magical hologram in short.", + "use_action": { "type": "learn_spell", "spells": [ "mirror_image" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_lightning_blast", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Lightning Blast", "str_pl": "Scrolls of Lightning Blast" }, + "description": "You fire a small concentrated ball of lightning at the target. The electricity diffuses quickly, so it doesn't do much damage, but you're able to fire off several quick ones in a row.", + "use_action": { "type": "learn_spell", "spells": [ "lightning_blast" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_necrotic_gaze", + "//": "Animist spell", + "name": { "str": "Scroll of Necrotic Gaze", "str_pl": "Scrolls of Necrotic Gaze" }, + "description": "You use the power of your own blood to imbue necrotic energy into your gaze, damaging the target you look at.", + "use_action": { "type": "learn_spell", "spells": [ "necrotic_gaze" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_purification_seed", + "//": "Druid spell", + "name": { "str": "Scroll of Purification Seed", "str_pl": "Scrolls of Purification Seed" }, + "description": "You summon a gift of the earth which will purify water. Greater levels yield greater numbers of seeds.", + "use_action": { "type": "learn_spell", "spells": [ "purify_seed" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_overcharge_eyes", + "//": "Technomancer spell", + "name": { "str": "Scroll of Optical Sneeze Beam", "str_pl": "Scrolls of Optical Sneeze Beam" }, + "description": "You overcharge your internal batteries to send a semi-directed beam from your face.", + "use_action": { "type": "learn_spell", "spells": [ "overcharge_eyes" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_lava_bomb", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Lava Bomb", "str_pl": "Scrolls of Lava Bomb" }, + "description": "You tear up the ground beneath you to fire a lava bomb: a globe of lava surrounded by hot, solid rock. It shatters upon impact, spraying shards of rock and lava everywhere.", + "use_action": { "type": "learn_spell", "spells": [ "lava_bomb_main" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_acid_resistance", + "//": "Classless spell, black dragon books", + "name": { "str": "Scroll of Acid Resistance", "str_pl": "Scrolls of Acid Resistance" }, + "description": "This spell creates an invisible aura to protect you from acid.", + "use_action": { "type": "learn_spell", "spells": [ "acid_resistance" ] } + }, + { + "id": "lightning_storm_scroll", + "type": "GENERIC", + "name": { "str": "Scroll of Lightning Storm", "str_pl": "Scrolls of Lightning Storm" }, + "//": "Stormshaper spell", + "description": "This scroll details how a spell called 'Lightning Blast' which is commonly used among Stormshapers can be altered to become much more powerful, at a much higher mana cost.", + "weight": "129 g", + "volume": "500 ml", + "price": "250 USD", + "symbol": "?", + "color": "light_blue", + "use_action": { "type": "learn_spell", "spells": [ "lightning_storm" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_druidic_regrowth", + "//": "Druid spell", + "name": { "str": "Scroll of Sacrificial Regrowth", "str_pl": "Scrolls of Sacrificial Regrowth" }, + "description": "Through giving of one's own life force, you restore withered and barren plant life nearby. What remains will need time to regrow its full strength.", + "use_action": { "type": "learn_spell", "spells": [ "druidic_regrowth" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_druidic_healing", + "//": "Druid spell", + "name": { "str": "Scroll of Sacrificial Healing", "str_pl": "Scrolls of Sacrificial Healing" }, + "description": "Channels some of the user's own life force into healing energy, for the sake of ones allies.", + "use_action": { "type": "learn_spell", "spells": [ "druidic_healing" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_earthshaper_stoneskin", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Stoneskin", "str_pl": "Scrolls of Stoneskin" }, + "description": "Envelops your entire body in armor formed from living rock, encumbering yet protective.", + "use_action": { "type": "learn_spell", "spells": [ "earthshaper_stoneskin" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_earthshaper_pillar", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Pillar of Stone", "str_pl": "Scrolls of Pillar of Stone" }, + "description": "Drawing upon the surrounding earth, you form a pillar of solid rock. Experience will make the task easier, and less disruptive to the surrounding area.", + "use_action": { "type": "learn_spell", "spells": [ "earthshaper_pillar" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_biomancer_paralytic_dart", + "//": "Biomancer spell", + "name": { "str": "Scroll of Paralytic Dart", "str_pl": "Scrolls of Paralytic Dart" }, + "description": "Spits a warped needle of sinew and bone, carrying with it a sting that slows your victim.", + "use_action": { "type": "learn_spell", "spells": [ "biomancer_paralytic_dart" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_biomancer_visceral_projection", + "//": "Biomancer spell", + "name": { "str": "Scroll of Visceral Projection", "str_pl": "Scrolls of Visceral Projection" }, + "description": "Projects a spray of acrid blood and gore all around you, growing to ensnare your prey in in a field of twitching poisonous tendrils.", + "use_action": { "type": "learn_spell", "spells": [ "biomancer_visceral_projection" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_biomancer_coagulant_weave", + "//": "Biomancer spell", + "name": { "str": "Scroll of Coagulant Weave", "str_pl": "Scrolls of Coagulant Weave" }, + "description": "Turns your biological mastery inwards, medically enhancing your flesh. Rather than strength of healing, it staves off blood loss and purges wounds before they can turn septic, at the cost of increased hunger and thirst.", + "use_action": { "type": "learn_spell", "spells": [ "biomancer_coagulant_weave" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_stormshaper_ionization", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Ionization", "str_pl": "Scrolls of Ionization" }, + "description": "By manipulating the charge in the air, you can conjure a sharp snap of lightning over a wide area. While its destructive potential is a far cry from natural lightning, the light and thunderclap produced will leave your foes reeling.", + "use_action": { "type": "learn_spell", "spells": [ "stormshaper_ionization" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_wisps", + "//": "Animist spell", + "name": { "str": "Scroll of Ignus Fatuus", "str_pl": "Scrolls of Ignus Fatuus" }, + "description": "Summons ghostly foxfire worked from living marsh vapor, to lead your enemies astray. With more experience, this spell can conjure multiple ghost lights.", + "use_action": { "type": "learn_spell", "spells": [ "summon_wisps" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_stormshaper_wall_of_fog", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Wall of Fog", "str_pl": "Scrolls of Wall of Fog" }, + "description": "Draws forth a broad wall of thick fog. While the sudden force of air pressure will floor any enemies caught in it, the conjuration is otherwise harmless.", + "use_action": { "type": "learn_spell", "spells": [ "stormshaper_wall_of_fog" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_condense_water", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Condense Water", "str_pl": "Scrolls of Condense Water" }, + "description": "Allows you to condense water from the air around you.", + "use_action": { "type": "learn_spell", "spells": [ "storm_condense_water" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_condense_clean_water", + "//": "Stormshaper spell", + "name": { "str": "Scroll of Condense Clean Water", "str_pl": "Scrolls of Condense Clean Water" }, + "description": "Allows you to condense clean water from the air around you.", + "use_action": { "type": "learn_spell", "spells": [ "storm_condense_clean_water" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_create_acid", + "//": "Biomancer spell", + "name": { "str": "Scroll of Create Hydrochloric Acid", "str_pl": "Scrolls of Create Hydrochloric Acid" }, + "description": "Produces usable Hydrochloric Acid for you.", + "use_action": { "type": "learn_spell", "spells": [ "bio_create_acid" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_summon_lemon", + "//": "Classless spell", + "name": { "str": "Scroll of Summon... Demon(?)", "str_pl": "Scrolls of Summon... Demon(?)" }, + "description": "You can tell this is an authentic magic scroll by all the cursive writing. It does make it a bit hard to read, though...", + "use_action": { "type": "learn_spell", "spells": [ "summon_lemon" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_fire_storm", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Fire Storm", "str_pl": "Scrolls of Fire Storm" }, + "description": "This scroll details how a spell called 'Fireball' which is commonly used among Kelvinists can be altered to become much more powerful, at a much higher mana cost.", + "use_action": { "type": "learn_spell", "spells": [ "fire_storm" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_ice_storm", + "//": "Kelvinist spell", + "name": { "str": "Scroll of Ice Storm", "str_pl": "Scrolls of Ice Storm" }, + "description": "This scroll details how a spell called 'Hoary Blast' which is commonly used among Kelvinists can be altered to become much more powerful, at a much higher mana cost.", + "use_action": { "type": "learn_spell", "spells": [ "ice_storm" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_rock_tomb", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Rock Tomb", "str_pl": "Scrolls of Rock Tomb" }, + "description": "This scroll details how to tear up the ground beneath you to throw a medium boulder.", + "use_action": { "type": "learn_spell", "spells": [ "rock_tomb" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_meteor", + "//": "Earthshaper spell", + "name": { "str": "Scroll of Meteor", "str_pl": "Scrolls of Meteor" }, + "description": "This scroll contains a powerful spell to call down a meteor from high in the sky. With this cataclysm, maybe another dinosaur-killer would be a good thing.", + "use_action": { "type": "learn_spell", "spells": [ "meteor" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_acid_bolt", + "//": "Biomancer spell", + "name": { "str": "Scroll of Acid Bolt", "str_pl": "Scrolls of Acid Bolt" }, + "description": "This scroll details how to throw acid at someone.", + "use_action": { "type": "learn_spell", "spells": [ "acid_bolt" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_acid_bomb", + "//": "Biomancer spell", + "name": { "str": "Scroll of Acid Bomb", "str_pl": "Scrolls of Acid Bomb" }, + "description": "This scroll contains details on how to shape acid into a compressed spherical shape.", + "use_action": { "type": "learn_spell", "spells": [ "acid_bomb" ] } + }, + { + "type": "GENERIC", + "copy-from": "spell_scroll", + "id": "spell_scroll_acid_storm", + "//": "Biomancer spell", + "name": { "str": "Scroll of Acid Storm", "str_pl": "Scrolls of Acid Storm" }, + "description": "This scroll details how a spell called 'Acid Bomb' can be altered to become much more powerful, at a much higher mana cost.", + "use_action": { "type": "learn_spell", "spells": [ "acid_storm" ] } + } +] diff --git a/data/mods/Magical_Nights/items/spellbooks.json b/data/mods/Magical_Nights/items/spellbooks.json new file mode 100644 index 000000000000..a99bf3285a20 --- /dev/null +++ b/data/mods/Magical_Nights/items/spellbooks.json @@ -0,0 +1,432 @@ +[ + { + "id": "DEBUG_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "A Technomancer's Guide to Debugging C:DDA", "str_pl": "copies of A Technomancer's Guide to Debugging C:DDA" }, + "description": "static std::string description( spell sp ) const;", + "weight": "1 g", + "volume": "1 ml", + "symbol": "?", + "color": "magenta", + "use_action": { + "type": "learn_spell", + "spells": [ + "debug_hp", + "debug_stamina", + "example_template", + "debug_bionic", + "pain_split", + "fireball", + "gravity_well", + "cone_cold", + "megablast", + "test_area_push", + "test_area_pull_field", + "test_area_pull_all" + ] + } + }, + { + "id": "wizard_beginner", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "A Beginner's Guide to Magic", "str_pl": "copies of A Beginner's Guide to Magic" }, + "//": "2 Magus, 1 classless spell", + "description": "Looks just like a typical pamphlet claiming to teach people magic. Yet, for some reason you can't quite put your finger on, you get the feeling that there's a little more truth than usual to this one...", + "weight": "585 g", + "volume": "250 ml", + "price": "50 USD", + "symbol": "?", + "color": "light_red", + "use_action": { "type": "learn_spell", "spells": [ "magic_missile", "phase_door", "create_atomic_light" ] } + }, + { + "id": "wizard_utility", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Wizarding Guide to Backpacking", "str_pl": "copies of Wizarding Guide to Backpacking" }, + "//": "1 Magus, 1 Biomancer, 1, Kelvinist, 1 Stormshaper, 1 classless spell", + "description": "This appears to be the spell version of a guide for what things to take with you when backpacking. It's a little bulky, but will certainly prove useful.", + "weight": "1 kg", + "volume": "1250 ml", + "price": "350 USD", + "symbol": "?", + "color": "red", + "use_action": { + "type": "learn_spell", + "spells": [ "phase_door", "create_lighter", "pain_split", "protection_aura", "storm_condense_water" ] + } + }, + { + "id": "pyro", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Pyromancy for Heretics", "str_pl": "copies of Pyromancy for Heretics" }, + "//": "4 Kelvinist spells", + "description": "This charred husk of a book still contains many ways to light things aflame.", + "weight": "450 g", + "volume": "1 L", + "price": "1904 cent", + "symbol": "?", + "color": "light_red", + "use_action": { "type": "learn_spell", "spells": [ "point_flare", "fireball", "burning_hands", "create_lighter" ] } + }, + { + "id": "wizard_advanced", + "type": "GENERIC", + "category": "spellbooks", + "//": "1 Magus, 1 biomancer, 2 kelvinist spells", + "name": { "str": "A Treatise on Magical Elements", "str_pl": "copies of A Treatise on Magical Elements" }, + "description": "This details complex diagrams, rituals, and choreography that describes various spells.", + "weight": "920 g", + "volume": "750 ml", + "price": "300 USD", + "symbol": "?", + "color": "light_red", + "use_action": { "type": "learn_spell", "spells": [ "point_flare", "ice_spike", "gravity_well", "pain_split" ] } + }, + { + "id": "priest_beginner", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Introduction to the Divine", "str_pl": "copies of Introduction to the Divine" }, + "//": "1 technomancer, 1 biomancer, 1 classless spells", + "description": "This appears to mostly be a religious text, but it does have some notes on healing.", + "weight": "585 g", + "volume": "500 ml", + "price": "50 USD", + "symbol": "?", + "color": "light_green", + "use_action": { "type": "learn_spell", "spells": [ "light_healing", "blinding_flash", "bless" ] } + }, + { + "id": "priest_advanced", + "type": "GENERIC", + "category": "spellbooks", + "name": { + "str": "The Paladin's Guide to Modern Spellcasting", + "str_pl": "copies of The Paladin's Guide to Modern Spellcasting" + }, + "//": " 3 animist spells. Like it SHOULD be.", + "description": "Despite the title, this seems to be written in Middle English. A little obtuse, but you can make out most of the words well enough.", + "weight": "830 g", + "volume": "750 ml", + "price": "300 USD", + "symbol": "?", + "color": "green", + "use_action": { "type": "learn_spell", "spells": [ "smite", "holy_blade", "spirit_armor" ] } + }, + { + "id": "winter_grasp", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Winter's Eternal Grasp", "str_pl": "copies of Winter's Eternal Grasp" }, + "//": "5 Kelvinist spells", + "description": "This slim book almost seems to be made from ice, it's cold to the touch.", + "weight": "450 g", + "volume": "1 L", + "price": "1904 cent", + "symbol": "?", + "color": "light_blue", + "use_action": { "type": "learn_spell", "spells": [ "cone_cold", "ice_spike", "hoary_blast", "chilling_touch", "frost_spray" ] } + }, + { + "id": "tome_of_storms", + "type": "GENERIC", + "category": "spellbooks", + "//": "8 Stormshaper spells", + "name": { "str": "The Tome of The Oncoming Storm", "str_pl": "copies of The Tome of The Oncoming Storm" }, + "description": "A large book embossed with crossed lightning bolts and storm clouds, it tingles to the touch.", + "weight": "430 g", + "volume": "750 ml", + "price": "50 USD", + "symbol": "?", + "color": "light_gray", + "use_action": { + "type": "learn_spell", + "spells": [ + "jolt", + "windstrike", + "windrun", + "storm_hammer", + "lightning_bolt", + "lightning_blast", + "storm_condense_water", + "storm_condense_clean_water" + ] + } + }, + { + "id": "generic_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Nondescript Spellbook", "str_pl": "copies of Nondescript Spellbook" }, + "//": "1 technomancer, 1 earthshaper, 1 classless spell", + "description": "A small composition notebook, containing spells created by a novice magician.", + "weight": "355 g", + "volume": "500 ml", + "symbol": "?", + "color": "magenta", + "use_action": { "type": "learn_spell", "spells": [ "seismic_stomp", "create_atomic_lamp", "ethereal_grasp" ] } + }, + { + "id": "light_manipulation_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Of Light and Falsehoods", "str_pl": "copies of Of Light and Falsehoods" }, + "//": "3 technomancer, 4 classless spell", + "description": "A small white book, it subtly amplifies the ambient light around it.", + "weight": "430 g", + "volume": "750 ml", + "price": "50 USD", + "symbol": "?", + "color": "light_gray", + "use_action": { + "type": "learn_spell", + "spells": [ + "dark_sight", + "blinding_flash", + "obfuscated_body", + "create_atomic_light", + "mirror_image", + "invisibility", + "holographic_transposition" + ] + } + }, + { + "id": "biomancer_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Tome of Flesh", "str_pl": "copies of The Tome of Flesh" }, + "//": "6 Biomancer spells", + "description": "A small tome, seemingly covered in tanned human skin.", + "weight": "355 g", + "volume": "500 ml", + "symbol": "?", + "color": "red", + "use_action": { + "type": "learn_spell", + "spells": [ "vicious_tentacle", "bio_grotesque", "bio_acidicspray", "bio_fleshpouch", "bio_bonespear", "bio_create_acid" ] + } + }, + { + "id": "druid_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Book of Trees", "str_pl": "copies of The Book of Trees" }, + "//": "4 Druid spells", + "description": "A bark covered book.", + "weight": "355 g", + "volume": "500 ml", + "symbol": "?", + "color": "green", + "use_action": { "type": "learn_spell", "spells": [ "druid_woodshaft", "druid_veggrasp", "druid_rootstrike", "druid_naturebow1" ] } + }, + { + "id": "recovery_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Utility of Mana as an Energy Source", "str_pl": "copies of The Utility of Mana as an Energy Source" }, + "description": "This book details spells that use your mana to recover various physiological effects.", + "//": "1 technomancer, 2 animist, 1 druid, 1 earthshaper spell", + "weight": "728 g", + "volume": "3 L", + "symbol": "?", + "color": "light_blue", + "use_action": { + "type": "learn_spell", + "spells": [ "recover_mana", "recover_bionic_power", "recover_pain", "recover_fatigue", "recover_stamina" ] + } + }, + { + "id": "magus_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Tome of The Battle Mage", "str_pl": "copies of The Tome of The Battle Mage" }, + "//": "3 Magus spells", + "description": "Your standard wizardy looking spellbook, filled with Magus combat spells. You sure lucked out!", + "weight": "434 g", + "volume": "750 ml", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "magus_mana_beam", "magus_mana_bolt", "magus_mana_blast" ] } + }, + { + "id": "eshaper_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Tome of the Hollow Earth", "str_pl": "copies of The Tome of the Hollow Earth" }, + "//": "4 earthshaper spells", + "description": "This large dusty spellbook seems perpetually, well, dusty. It contains the power of the earth.", + "weight": "483 g", + "volume": "825 ml", + "symbol": "?", + "color": "brown", + "use_action": { + "type": "learn_spell", + "spells": [ "eshaper_rockbolt", "eshaper_shardspray", "eshaper_piercing_bolt", "eshaper_shardstorm" ] + } + }, + { + "id": "magus_spellbook_move", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Tome of Magical Movement", "str_pl": "copies of The Tome of Magical Movement" }, + "//": "3 Magus spells", + "description": "This small lightweight book seems to almost not entirely exist, let's say it 97% does. It contains Magus spells focused on movement.", + "weight": "231 g", + "volume": "500 ml", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "phase_door", "magus_escape", "magus_haste" ] } + }, + { + "id": "summon_scroll_smudged", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Smudged Scroll" }, + "//": "Druid spell", + "description": "This looks like someone was designing a new spell, but spilled a mug of coffee on it and crumpled it up in anger. You can tell that it will definitely cast something, but you can't be sure that it will work very well.", + "weight": "129 g", + "volume": "100 ml", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "summon_bear" ] } + }, + { + "id": "summon_undead_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Necromantic Minions for Dummies", "str_pl": "copies of Necromantic Minions for Dummies" }, + "//": "3 Animist spells", + "description": "This book details various ways of summoning an undead minion to fight for you. They all appear to disappear after a short time, crumbling to dust.", + "weight": "788 g", + "volume": "2250 ml", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "summon_zombie", "summon_skeleton", "summon_decayed_pouncer" ] } + }, + { + "id": "techno_fundamentals", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Fundamentals of Technomancy", "str_pl": "copies of Fundamentals of Technomancy" }, + "//": "3 Technomancer spells", + "description": "This thick manual instructs the spellcaster on manipulating and empowering various forms of matter and energy.", + "weight": "258 g", + "volume": "750 ml", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "synaptic_stimulation", "animated_blade", "mirror_image" ] } + }, + { + "id": "techno_idiots", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Complete Idiot's Guide to Technomancy", "str_pl": "copies of Complete Idiot's Guide to Technomancy" }, + "description": "This colorful guide, full of diagrams and cartoons, teaches a couple of very basic Technomancy spells for the not-so-bright pupils.", + "//": "2 Technomancer spells", + "weight": "211 g", + "volume": "500 ml", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "taze", "quantum_tunnel_lesser" ] } + }, + { + "id": "techno_em", + "type": "GENERIC", + "category": "spellbooks", + "name": { + "str": "Technomancy and the Electromagnetic Spectrum", + "str_pl": "copies of Technomancy and the Electromagnetic Spectrum" + }, + "//": "2 Technomancer spells", + "description": "This lab reference material book is thick and overflowing with information on combining magic with EM radiation.", + "weight": "284 g", + "volume": "1 L", + "symbol": "?", + "color": "light_gray", + "use_action": { "type": "learn_spell", "spells": [ "taze", "laze" ] } + }, + { + "id": "translocate_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Geospatial Systems: The Lie Of Linearity", "str_pl": "copies of Geospatial Systems: The Lie Of Linearity" }, + "//": "1 classless spell", + "description": "This book outlines in great detail how time and space are wibbly-wobbly and non-Euclidean. It also appears to have a dozen different coordinate systems that it uses nearly interchangeably, which makes it hard to follow. There's lots of jargon, but with intense study you can probably learn a thing or two about portals.", + "weight": "1200 g", + "volume": "2500 ml", + "symbol": "?", + "color": "light_blue", + "use_action": { "type": "learn_spell", "spells": [ "translocate_self" ] } + }, + { + "id": "stat_up_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "Transcendence of the Human Condition", "str_pl": "copies of Transcendence of the Human Condition" }, + "//": "4 Magus spells", + "description": "The Human is the only creature that seeks to improve himself. This study examines different spells that can heighten various senses temporarily, in hopes to discover a more permanent solution.", + "weight": "1300 g", + "volume": "2500 ml", + "symbol": "?", + "color": "yellow", + "use_action": { "type": "learn_spell", "spells": [ "cats_grace", "ogres_strength", "foxs_cunning", "eagles_sight" ] } + }, + { + "id": "novice_techno_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Novice Technomancer's Spellbook", "str_pl": "copies of The Novice Technomancer's Spellbook" }, + "//": "2 basic technomancer spells", + "description": "A fairly simplistic looking technomancer's spellbook containing just a couple simple technomancy spells.", + "weight": "256 g", + "volume": "500 ml", + "symbol": "?", + "color": "green", + "use_action": { "type": "learn_spell", "spells": [ "synaptic_stimulation", "taze" ] }, + "looks_like": "techno_idiots" + }, + { + "id": "novice_storm_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Novice Stormshaper's Spellbook", "str_pl": "copies of The Novice Stormshaper's Spellbook" }, + "//": "2 basic stormshaper spells", + "description": "A fairly simplistic looking stormshaper's spellbook containing just a couple simple stormshaping spells.", + "weight": "256 g", + "volume": "500 ml", + "symbol": "?", + "color": "blue", + "use_action": { "type": "learn_spell", "spells": [ "windrun", "jolt" ] } + }, + { + "id": "novice_earth_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Novice Earthshaper's Spellbook", "str_pl": "copies of The Novice Earthshaper's Spellbook" }, + "//": "2 basic earthshaper spells", + "description": "A fairly simplistic looking earthshaper's spellbook containing just a couple simple earthshaping spells.", + "weight": "256 g", + "volume": "500 ml", + "symbol": "?", + "color": "brown", + "use_action": { "type": "learn_spell", "spells": [ "stonefist", "eshaper_rockbolt" ] } + }, + { + "id": "novice_kelvin_spellbook", + "type": "GENERIC", + "category": "spellbooks", + "name": { "str": "The Novice Kelvinist's Spellbook", "str_pl": "copies of The Novice Kelvinist's Spellbook" }, + "//": "4 basic kelvinist spells: 2 ice and 2 fire", + "description": "A fairly simplistic looking kelvinist's spellbook containing just a couple simple spells from both fire and ice.", + "weight": "260 g", + "volume": "500 ml", + "symbol": "?", + "color": "light_blue", + "use_action": { "type": "learn_spell", "spells": [ "chilling_touch", "glide_ice", "create_lighter", "point_flare" ] } + } +] diff --git a/data/mods/Magical_Nights/items/tools.json b/data/mods/Magical_Nights/items/tools.json new file mode 100644 index 000000000000..6b4a91dc2c05 --- /dev/null +++ b/data/mods/Magical_Nights/items/tools.json @@ -0,0 +1,178 @@ +[ + { + "id": "cauldron_demon_chitin", + "type": "CONTAINER", + "category": "other", + "name": { "str": "cauldron of purification", "str_pl": "cauldrons of purification" }, + "description": "This cauldron made of demon spider chitin seems to absorb the light. It will hold 16 liters of material and will absorb poisons from it. It may have other properties that require discovery.", + "weight": "1424 g", + "volume": "20 L", + "price": 2000, + "to_hit": -1, + "looks_like": "clay_hydria", + "bashing": 1, + "material": "demon_chitin", + "symbol": ")", + "color": "red", + "contains": "16 L", + "//": "I went ahead and gave this a level of 2 for when magical mutagens become a thing as I figured dragonblood for instance should need different tools than making alpha mutagen.", + "watertight": true, + "qualities": [ [ "COOK", 3 ], [ "BOIL", 2 ], [ "CONTAIN", 1 ], [ "MAGIC_MUTAGEN", 2 ] ], + "use_action": "HEAT_FOOD" + }, + { + "id": "demon_forge", + "type": "TOOL", + "name": { "str": "demon forge" }, + "description": "This is a portable version of the charcoal forge that is magically enhanced and fortified with demon spider chitin in order to be able to resmelt magical metals into their workable ingot form.", + "weight": "10 kg", + "volume": "8 L", + "price": "2 kUSD", + "to_hit": -2, + "bashing": 9, + "material": "demon_chitin", + "symbol": ";", + "color": "red", + "ammo": "alumentum", + "sub": "forge", + "max_charges": 500, + "flags": [ "ALLOWS_REMOTE_USE" ] + }, + { + "type": "GENERIC", + "id": "fireproof_mortar", + "symbol": "%", + "color": "light_red", + "name": { "str_sp": "fireproof mortar" }, + "description": "Some alchemical mortar, ready to be used in building projects expecting temperatures on par with dragonbreath.", + "category": "spare_parts", + "container": "bag_canvas", + "price": "5 kUSD", + "material": "powder_nonflam", + "weight": "2340 g", + "volume": "1 L", + "bashing": 4 + }, + { + "id": "copper_infuser", + "copy-from": "copper_bracelet", + "type": "ARMOR", + "qualities": [ [ "MANA_INFUSE", 1 ] ], + "name": { "str": "copper infusion bracelet" }, + "description": "This bracelet has runes engraved on it. You sense a faint air of mysticism when you look at it. It would be useful for imbuing mana into material." + }, + { + "id": "silver_infuser", + "copy-from": "silver_bracelet", + "type": "ARMOR", + "qualities": [ [ "MANA_INFUSE", 2 ] ], + "name": { "str": "silver infusion bracelet" }, + "description": "This bracelet has runes engraved on it. You sense a faint air of mysticism when you look at it. It would be useful for imbuing mana into material." + }, + { + "id": "copper_circlet", + "type": "ARMOR", + "category": "armor", + "name": { "str": "copper circlet" }, + "description": "A wooden band with copper trimmings to be worn on the head. Touching your temples with it on makes you feel very calm.", + "weight": "700 g", + "volume": "600ml", + "price": "15 USD", + "price_postapoc": "1 USD", + "material": [ "copper", "wood" ], + "symbol": "[", + "color": "brown", + "covers": [ "head" ], + "coverage": 5, + "encumbrance": 1, + "warmth": 0, + "material_thickness": 1, + "flags": [ "SKINTIGHT", "ONLY_ONE", "COMPACT", "POWERARMOR_COMPATIBLE" ], + "qualities": [ [ "MANA_FOCUS", 1 ] ] + }, + { + "id": "sewing_kit", + "name": "sewing kit", + "copy-from": "sewing_kit", + "type": "TOOL", + "use_action": { + "type": "repair_item", + "item_action_type": "repair_fabric", + "materials": [ + "cotton", + "leather", + "nylon", + "wool", + "fur", + "faux_fur", + "nomex", + "kevlar", + "gutskin", + "demon_chitin", + "black_dragon_hide" + ], + "skill": "tailor", + "tool_quality": 0, + "cost_scaling": 0.1, + "move_cost": 1000 + } + }, + { + "id": "tailors_kit", + "name": "tailor's kit", + "copy-from": "tailors_kit", + "type": "TOOL", + "use_action": [ + { + "type": "repair_item", + "item_action_type": "repair_fabric", + "materials": [ + "cotton", + "leather", + "nylon", + "wool", + "fur", + "faux_fur", + "nomex", + "kevlar", + "neoprene", + "gutskin", + "black_dragon_hide", + "demon_chitin" + ], + "skill": "tailor", + "tool_quality": 1, + "cost_scaling": 0.1, + "move_cost": 800 + }, + { + "type": "sew_advanced", + "materials": [ + "cotton", + "leather", + "nylon", + "wool", + "fur", + "faux_fur", + "nomex", + "kevlar", + "neoprene", + "gutskin", + "plastic", + "kevlar_rigid" + ], + "skill": "tailor", + "clothing_mods": [ + "leather_padded", + "steel_padded", + "kevlar_padded", + "furred", + "wooled", + "owlbear_furred", + "demonchitin_padded", + "blackdragon_coated" + ] + } + ] + } +] diff --git a/data/mods/Magical_Nights/items/vehicle/frames.json b/data/mods/Magical_Nights/items/vehicle/frames.json new file mode 100644 index 000000000000..f0b8edf73350 --- /dev/null +++ b/data/mods/Magical_Nights/items/vehicle/frames.json @@ -0,0 +1,25 @@ +[ + { + "type": "GENERIC", + "id": "fold_orichalcum_frame", + "name": "foldable orichalcum frame", + "copy-from": "foldframe", + "description": "A folding frame made of orichalcum pipes. Not as light as aluminum, but significantly sturdier.", + "weight": "10 kg", + "color": "yellow", + "material": [ "orichalcum_metal" ], + "price": "100 USD" + }, + { + "type": "GENERIC", + "id": "orichalcum_frame", + "name": "orichalcum frame", + "symbol": "]", + "description": "A frame made of orichalcum. Significantly sturdier than steel, but also much more expensive.", + "volume": "20 L", + "weight": "100 kg", + "color": "yellow", + "material": [ "orichalcum_metal" ], + "price": "8 kUSD" + } +] diff --git a/data/mods/Magical_Nights/items/vehicle/vehicle_parts.json b/data/mods/Magical_Nights/items/vehicle/vehicle_parts.json new file mode 100644 index 000000000000..05a71fac804e --- /dev/null +++ b/data/mods/Magical_Nights/items/vehicle/vehicle_parts.json @@ -0,0 +1,18 @@ +[ + { + "type": "vehicle_part", + "id": "bulette_plate", + "name": "bulette plating", + "symbol": ")", + "color": "light_gray", + "broken_symbol": ")", + "broken_color": "light_gray", + "durability": 800, + "item": "bulette_plate", + "location": "armor", + "flags": [ "ARMOR" ], + "breaks_into": [ { "item": "leather", "count": [ 1, 2 ] } ], + "damage_reduction": { "all": 12 }, + "requirements": { "install": { "skills": [ [ "mechanics", 0 ] ], "time": "1600 s", "using": [ [ "rope_natural", 2 ] ] } } + } +] diff --git a/data/mods/Magical_Nights/lore.md b/data/mods/Magical_Nights/lore.md new file mode 100644 index 000000000000..80deec470f09 --- /dev/null +++ b/data/mods/Magical_Nights/lore.md @@ -0,0 +1,35 @@ +# History +Magic has been around for longer than written word, though of course it was a major boon to it. Magic, to an extent, even predates language itself. However, naturally, it was only with the development of language that magic began to refine itself past its most base levels. + +Throughout much of ancient history, magic was present and powerful. The ancient Greeks oft saw magic all around them, and not just metaphorically. The term magic itself, alongside the idea of mages, comes from Latin. The ancient Sumerians had their rituals, and so did the Egyptians. Japan has its many Kamis and yokai, China has its Wuism. Magic was everywhere. + +However, there is of course one major period that one thinks of when they think of magic. Unfortunately, this was also the last great period of magic historically. The Medeival Era was one of the greatest heights that magic reached, and yet also the great Cataclysmic downfall of it. It contains such wonderous figures as Merlin himself, and it is the time period that so many stories about our art take place in. Magic was capable of accomplishing so much. Yet the end of the Middle Ages also brought with it the end of widespread magic. Persecution against our art reached new heights. The Church condemned us, brought on the witch hunts. So much was lost, including the strength of magic itself. Any surviving mages either went in seclusion themselves, or hid their practicing of the arts carefully. However, the stronger of them felt the very strength of magic slipping away and waning. + +Following the medieval era, magic was a pale ghost of its former self. With mages being so secretive, advancements came slower than had been seen in centuries. What could once be accomplished with ease now took immense strength and control over mana. The New World, it was hoped, might finally bring freedom and safety from persecution. In a land of new opportunities, surely there would be new opportunities for magic users! + +Our hopes were brutally smashed against a rock, then set alight while they were gasping due to their collapsed lungs, and then tossed in a hole to suffer and wish for death to take them already while crows pecked at their eyes and dogs gnawed at what remained of their flesh. + +Yet, once the dust had settled from Salem, some brave souls remained despite the deaths of their peers. Some came over on the ships carrying filthy masses from the Old to the New. Our hopes would not come to fruition for a couple centuries, but we were more than willing to wait. Especially those of us who had seen what the world was like a few centuries ago. + +In the modern era, we have finally in a sense achieved our goal. The smolder of the Church has long since cooled to less menacing embers. More importantly, the Neopagans have revived many of the long-dead and dormant traditions, though naturally with their own flair and some misconceptions/innacuracies from filling in the spots that were burned out. There has been a sort of resurgence of practicing magic amongst some, namely the Wiccans. Especially important is the fact that the Church simply hasn't as much a sway over the common people's lives as it once held, especially given the rise of non-believers. + +Now, we come to present-day. Something has gone royally wrong with the veil between worlds. Demons and netherspawn certainly came across in the olden days, but not in **these numbers**. *Something* has infected and taken over a majority of humans. Fortunately, this world is not entirely lost. For with this apparent tearing of the veil, **an incredible resurgence of the magic itself has arisen!** Magic has returned in all of its glory, leaving any who has the potential with a very powerful tool to defend themselves against the horrors of this world. Including the appearance of magical fauna once thought extinct, or merely fantastical. Only time will tell whether this is a sign of a new golden age of magic, but I certainly hope it is. + +# Practice + +The ability to practice magic has always been uncommon. Even during the Middle Ages, it was impressive and uncommon to have any real ability for magic. A truly powerful mage, rather than a hedge mage, was something a family was proud of. Mages were very often highly respected members of society, whether they were awed or feared. Mages have only gotten rarer, though there seemed to be a bit of an uptick around the time of Neopagan revivals. + +Magic practitioners were and still are often divided into distinct classes and schools. Especially in the olden times, many mages specialized in but a single school of magic. However, as time has gone on magic users have gotten to be more and more jack-of-all-trades in their repetoires. It is notable, however, that naturally the lesser in ability a mage was, the more likely they were to not specialize in a single school. Jack-of-all-trades being a master of none is irrelevant when one couldn't be a master of anything anyway. Better to be well-rounded in your lesser spells when they are all you can learn. + +Naturally, mages desired companionship by other mages, especially so following persecution. Druid Circles and Covens are natural examples, of course. These groups also often helped contribute to magical advancements that would simply be infeasible to be made on one's own. And, of course, for casting certain spells. + +### Class Characteristics + +- Magus: Force and Waves. This can be described as Time, Light, Gravity, and Force. Magus spells are the most versatile of the classes, and it also usually has the more difficult to learn spells. +- Animist: Spirits. As Magus is the physical universe, animist is the metaphysical. Usually misunderstood and as such has a bit of a stigma throughout history as necromancers. This class also features blood magic, which is another reason it has a stigma. +- Kelvinist: Heat and Cold spells. Can also produce light to a lesser degree. +- Stormshaper: Wind, weather, and electricity. Most of these spells are really loud. +- Technomancer: Invention. This usually manifests as spells that summon arms and armor, holograms, tools, and buffs that focus on the human condition. The Technomancer rune is also uniquely versatile, allowing for much wider ability for magic to work with mundane inventions. Technomancer became a lot more popular with the invention of electricity, as it has a finer control of electricity than stormshaper, though it does not have the power. +- Earthshaper: Stone, dirt, geography, things to do with the earth. The spells often focus on melee and defense. Lava is a high-tier earthshaper thing as well. This class features spells that use stamina as their energy source. +- Biomancer: Flesh mage. Manipulating the caster's flesh is easier but higher tier spells can manipulate others' flesh. Features Acid. +- Druid: Plant mage. Communes with nature. The typical "druid" of old is usually a combination of this class and Earthshaper. Has a slight secondary affinity with water. diff --git a/data/mods/Magical_Nights/magic_balance.md b/data/mods/Magical_Nights/magic_balance.md new file mode 100644 index 000000000000..3dee978fb674 --- /dev/null +++ b/data/mods/Magical_Nights/magic_balance.md @@ -0,0 +1,57 @@ +# Spells +Spells are incredibly versatile, and can range wildly depending on the JSON values that are assigned to them. As such, spells can be said to reside in various "tiers" that are based on their stats. The tier of spell is not listed in game, but can be derived based on several factors. + +### Difficulty +This is the most obvious way to determine a spell's tier, but not in the way you might expect. A spell with a lower difficulty means the spell is easier to cast, indirectly making it more powerful. Most of the time the difficulty should scale with the tier of the spell, making this rubric a little moot, but it is important to remember that difficulty is a major factor in the spell's failure chance. + +### Max Level +Max level both enables the spell difficulty to continue to reduce at higher levels and benefit from continued scaling. A spell with a very small max level (below 10) would have its tier negatively impacted. Max levels above 30 will require significant training in order to reach, and only grows exponentially from there, so be wary of what you expect from a player's spell level. + +### Attack Stats +The higher the damage a spell can deal, the higher its tier. This is true for area of effect, duration and range. Most tier 0 and 1 spells don't ever deal more than 150 damage at max level without severe costs. + +### Effect +The effect is the main part of the spell, and should be treated as such when balancing it. Entwined with that is the effect_str, which directly affects the effect in various ways. For attack spells, no effect_str wouldn't have an effect on the tier, while adding a "dazed" effect causes the spell's power to skyrocket. + +### Energy Source +Energy source is generally related to the class that is assigned to the spell. Stamina would be the type of thing that increases the spell's tier by a significant margin, due to the ease of recovering stamina. Bionic power is relegated to Technomancer, and HP is featured in the Animist class. If spells with spell classes that are not Animist use HP, their tier is automatically higher than if they were to use Mana, which is the normal energy source for spells. + +### Casting Time +There are several different ranges of casting times. These include: Fast combat spell (0 - 300 moves) Slow combat spell (300 - 1000 moves) and noncombat spell (longer than 1000 moves) The tier of a spell is quite heavily dependant on its ability to be used quickly in high-pressure situations; so the longer it takes to cast, the more relaxed the tier of the spell can be. A spell would be a very high tier indeed if it took no time to cast; do not do this unless it has severe restrictions. + +### Energy Cost +Mana pools can vary, but it is good to balance around the idea that the caster has about 2000 mana to work with. In Magiclysm, spells should be a supplement to your other combat options. This means that at low levels and low tiers, a mage will spend all or nearly all of his mana to deal with low threats: 2-3 zombies or a fat zombie, etc. The tier of a spell will be a good guide to what kind of a threat a mage can conquer at a given level of spell. + +### Fields +Fields are currently not very flexible; their duration is fixed, and they do not drift unless they are coded to do so. Most fields would bump the tier level, depending on the field, chance, intensity, etc. Some fields may not bump the tier as they are mostly aesthetic (blood, gore, minor heat, etc) + +### Damage Type +damage type is a key factor in attack spells. Spells that do force damage ignore all armor, and spells that deal cutting, bashing or piercing get blocked by armor. The other damage types get blocked by their associated damage resistance. Until I rewrite the damage function, heat damage also catches the target on fire, cold gets blocked by fire resistance, and the NOBREATHE flag blocks bio damage. + +### Valid targets +if your spell is an attack spell and it ignores yourself or allies, it is automatically better than one that does not. If you can target the ground with an attack spell that has aoe, it means you can target out of line of sight. + +## Tier Examples: + +### Tier 0 +Any spell a novice mage would learn as he is learning magic. +Magic missile: low damage, caps out at 20. however, is force damage so ignores armor, and is target_attack so goes through walls. Has a respectable range and a quick casting time. +Finger firelighter: Useful utility spell, but doesn't really do anything other than allow you to light a fire for the duration of the spell. Lights your square, but has a fairly short duration so does not allow you to read anything with it. +Necrotic Gaze: Does bio damage, which zombies are immune to, and is fairly short range. however, has a fairly high damage at higher levels. Also uses hp to cast, and is fairly cheap. + +### Tier 1 +A mage is starting to come into his own and use more difficult spells. +Point Flare: somewhat slow for an attack spell, it makes up for its large single-point damage and ability to target through walls. Its casting cost is also fairly low for its damage. +Phase Door: A very useful spell to get you out of immediate danger, but can backfire because it teleports you randomly. Has a fairly high difficulty so its failure chance is high at low levels. Has a quick casting speed so it's able to be used in dire situations, but won't get you very far. +Lightning Bolt: This spell deals damage to all targets in a line, and a good amount of it, too. Its range is fairly short for a ranged spell, but it is quite cheap for a damaging spell. This spell has the rare attribute of having its casting time decrease as its spell level goes up, but has the drawback of being a difficulty of 6 and the LOUD flag. Even though its max damage is quite high, the level required to get there is also quite high. + +### Tier 2 +These spells are fairly specialized, even in their own class. +Cat's Grace: Along with other similar stat-boosting magus spells, this spell boosts your dexterity stat by 4 for a fairly good duration. It makes up for it by being a slow spell to cast, as you can't really cast it in combat without some preparation. It is also a concentration spell, so focus is a key factor in its failure chance, in addition to being a difficulty 5 spell. The spell can only be cast on the caster, but its max duration is quite high. +Animated Blade: This is a summon spell, and summon spells are generally more powerful than their direct attack cousins by the mere fact that they not only deal damage but absorb damage incoming from monsters. This spell features the animated blade monster, which dishes out a lot of damage; and higher levels in the spell can summon more of them. The spell is very cheap and fast for something that could summon monsters like this, so its difficulty and tier are much higher, and its duration suffers. +Fireball: This is an iconic spell from many Fantasies, but it earns its place at tier 2 by having a large area of effect and a good damage output. Its casting time is just on the edge of being able to be cast easily in combat, and its energy cost is fairly low, even while its damage is quite good in combination with its area of effect. The range of this spell is also quite high, making this spell a favorite of kelvinist mages, even as its difficulty is only 4. + +### Tier 3 +These spells are even more fantastic or highly specialized. +Translocate Self: This spell has a very niche but powerful spell effect. Even though its casting time precludes it from being cast in combat, its effect allows you to teleport anywhere you created a translocator gate, making it a very useful utility spell. In addition, it is classless, making it even more versatile, useful, and powerful. +Mana Blast: This spell is like fireball, but its damage is even higher, and in addition does force damage and as such ignores armor. That puts this spell squarely in tier 3 alone. diff --git a/data/mods/Magical_Nights/martialarts.json b/data/mods/Magical_Nights/martialarts.json new file mode 100644 index 000000000000..9dadb0da2e96 --- /dev/null +++ b/data/mods/Magical_Nights/martialarts.json @@ -0,0 +1,51 @@ +[ + { + "id": "style_eskrima", + "copy-from": "style_eskrima", + "type": "martial_art", + "name": "Eskrima", + "extend": { "weapons": [ "mjolnir", "gram" ] } + }, + { + "id": "style_fencing", + "copy-from": "style_fencing", + "type": "martial_art", + "name": "Fencing", + "extend": { "weapons": [ "cavalry_sabre_plus_one", "cavalry_sabre_plus_two", "broadsword_plus_one", "broadsword_plus_two" ] } + }, + { + "id": "style_medievalpole", + "copy-from": "style_medievalpole", + "type": "martial_art", + "name": "Fior Di Battaglia", + "extend": { "weapons": [ "rune_technomancer_weapon" ] } + }, + { + "id": "style_krav_maga", + "copy-from": "style_krav_maga", + "type": "martial_art", + "name": "Krav Maga", + "extend": { "weapons": [ "gram" ] } + }, + { + "id": "style_swordsmanship", + "copy-from": "style_swordsmanship", + "type": "martial_art", + "name": "Medieval Swordsmanship", + "extend": { "weapons": [ "rune_kelvinist_weapon", "gunblade", "gram" ] } + }, + { + "id": "style_ninjutsu", + "copy-from": "style_ninjutsu", + "type": "martial_art", + "name": "Ninjutsu", + "extend": { "weapons": [ "nodachi_plus_one", "nodachi_plus_two", "gunblade" ] } + }, + { + "id": "style_silat", + "copy-from": "style_silat", + "type": "martial_art", + "name": "Silat", + "extend": { "weapons": [ "scimitar", "scimitar_plus_one", "scimitar_plus_two" ] } + } +] diff --git a/data/mods/Magical_Nights/materials.json b/data/mods/Magical_Nights/materials.json new file mode 100644 index 000000000000..41c1ae5bb2b4 --- /dev/null +++ b/data/mods/Magical_Nights/materials.json @@ -0,0 +1,151 @@ +[ + { + "type": "material", + "id": "arcane_skin", + "name": "Arcane Skin", + "density": 38, + "specific_heat_liquid": 0.82, + "specific_heat_solid": 0.45, + "latent_heat": 273, + "soft": true, + "reinforces": true, + "bash_resist": 14, + "cut_resist": 18, + "bullet_resist": 14, + "acid_resist": 4, + "fire_resist": 20, + "elec_resist": 2, + "chip_resist": 15, + "dmg_adj": [ "scratched", "cut", "shredded", "tattered" ], + "bash_dmg_verb": "ripped", + "cut_dmg_verb": "sliced" + }, + { + "type": "material", + "id": "black_dragon_hide", + "name": "Black Dragon Hide", + "density": 20, + "specific_heat_liquid": 4.186, + "specific_heat_solid": 2.108, + "latent_heat": 333, + "bash_resist": 5, + "cut_resist": 8, + "bullet_resist": 6, + "acid_resist": 40, + "fire_resist": 1, + "elec_resist": 1, + "chip_resist": 30, + "reinforces": true, + "repaired_with": "dragon_black_scale", + "dmg_adj": [ "scratched", "cut", "cracked", "shattered" ], + "bash_dmg_verb": "cracked", + "cut_dmg_verb": "chipped" + }, + { + "type": "material", + "id": "demon_chitin", + "name": "Demon Chitin", + "density": 15, + "specific_heat_liquid": 4.186, + "specific_heat_solid": 2.108, + "latent_heat": 333, + "bash_resist": 1, + "cut_resist": 10, + "bullet_resist": 8, + "acid_resist": 3, + "fire_resist": 18, + "elec_resist": 2, + "chip_resist": 10, + "repaired_with": "demon_chitin_piece", + "salvaged_into": "demon_chitin_piece", + "dmg_adj": [ "scratched", "cut", "cracked", "shattered" ], + "bash_dmg_verb": "cracked", + "cut_dmg_verb": "chipped", + "burn_data": [ + { "fuel": 0, "smoke": 1, "burn": 1, "volume_per_turn": "1250 ml" }, + { "fuel": 1, "smoke": 3, "burn": 1 }, + { "fuel": 1, "smoke": 5, "burn": 5 } + ] + }, + { + "type": "material", + "id": "orichalcum_metal", + "name": "Orichalcum", + "density": 40, + "bash_resist": 13, + "specific_heat_liquid": 0.82, + "specific_heat_solid": 0.45, + "latent_heat": 273, + "cut_resist": 20, + "bullet_resist": 16, + "acid_resist": 7, + "fire_resist": 3, + "elec_resist": 0, + "chip_resist": 40, + "repaired_with": "orichalcum_ingot", + "dmg_adj": [ "marked", "dented", "smashed", "shattered" ], + "bash_dmg_verb": "dented", + "cut_dmg_verb": "scratched", + "burn_products": [ [ "scrap_bronze", 1 ] ], + "compacts_into": [ "orichalcum_lump", "orichalcum_sliver" ] + }, + { + "type": "material", + "id": "concentrated_mana", + "name": "Concentrated Mana", + "density": 2, + "bash_resist": 8, + "cut_resist": 13, + "bullet_resist": 7, + "acid_resist": 12, + "fire_resist": 20, + "elec_resist": 20, + "chip_resist": 15, + "dmg_adj": [ "scratched", "cut", "shredded", "tattered" ], + "bash_dmg_verb": "ripped", + "cut_dmg_verb": "sliced" + }, + { + "type": "material", + "id": "dragon_bone", + "name": "Dragon Bone", + "density": 7, + "specific_heat_liquid": 1.2, + "specific_heat_solid": 1.2, + "latent_heat": 200, + "reinforces": true, + "bash_resist": 12, + "cut_resist": 14, + "bullet_resist": 12, + "acid_resist": 10, + "fire_resist": 8, + "elec_resist": 2, + "chip_resist": 10, + "wind_resist": 90, + "repaired_with": "dragon_bone", + "salvaged_into": "shard_dragon_bone", + "dmg_adj": [ "scratched", "cut", "cracked", "shattered" ], + "bash_dmg_verb": "cracked", + "cut_dmg_verb": "chipped" + }, + { + "type": "material", + "id": "mithril_metal", + "name": "Mithril", + "density": 13, + "specific_heat_liquid": 0.82, + "specific_heat_solid": 0.45, + "latent_heat": 273, + "chip_resist": 40, + "repaired_with": "mithril_ingot", + "dmg_adj": [ "marked", "dented", "smashed", "shattered" ], + "bash_dmg_verb": "dented", + "cut_dmg_verb": "scratched", + "bash_resist": 13, + "cut_resist": 20, + "acid_resist": 10, + "fire_resist": 10, + "bullet_resist": 16, + "elec_resist": 10 + } +] diff --git a/data/mods/Magical_Nights/mod_tileset.json b/data/mods/Magical_Nights/mod_tileset.json new file mode 100644 index 000000000000..0c04e68c8f2f --- /dev/null +++ b/data/mods/Magical_Nights/mod_tileset.json @@ -0,0 +1,1478 @@ +[ + { + "type": "mod_tileset", + "compatibility": [ "UNDEAD_PEOPLE_BASE", "UNDEAD_PEOPLE", "MshockRealXotto", "MSX++DEAD_PEOPLE" ], + "tiles-new": [ + { + "file": "MagicalNights_Misc.png", + "tiles": [ + { "id": "bg_shadow_frog", "fg": 1, "rotates": false }, + { "id": "bg_shadow_goblin", "fg": 2, "rotates": false }, + { "id": "bg_shadow_item", "fg": 3, "rotates": false }, + { "id": "bg_shadow_normal", "fg": 4, "rotates": false }, + { "id": "overlay_mutation_bio_sneeze_beam", "fg": 5, "rotates": false }, + { "id": "overlay_mutation_DRAGON_FEET", "fg": 6 }, + { "id": "overlay_mutation_DRAGON_MAW_BLACK", "fg": 7 }, + { "id": "overlay_female_mutation_DRAGON_SCALES_BLACK", "fg": 8 }, + { "id": "overlay_male_mutation_DRAGON_SCALES_BLACK", "fg": 9 }, + { "id": "overlay_mutation_DRAGON_TAIL", "fg": 10 }, + { "id": "overlay_mutation_DRAGON_TAIL_SCALED", "fg": 11 }, + { "id": "overlay_mutation_DRAGON_TALONS_BLACK", "fg": 12, "rotates": false }, + { "id": "overlay_mutation_DRAGON_WINGS_BLACK", "fg": 13 }, + { "id": "overlay_mutation_MUZZLE_DRAGON", "fg": 14 }, + { "id": "overlay_mutation_SCALED_HANDS", "fg": 15, "rotates": false }, + { "id": "f_null", "fg": 16, "rotates": false }, + { "id": "mon_null", "fg": 16, "rotates": false }, + { "id": "null", "fg": 16, "rotates": false }, + { "id": "t_null", "fg": 16, "rotates": false }, + { "id": "vp_null", "fg": 16, "rotates": false }, + { "id": "fd_clairvoyant", "fg": 16, "rotates": false }, + { "id": "fd_darkness", "fg": 16, "rotates": false }, + { "id": "fd_fright", "fg": 16, "rotates": false }, + { "id": "fd_vault_atmosphere", "fg": 16, "rotates": false }, + { "id": "soul_burn_item", "fg": 16, "rotates": false }, + { + "id": "vp_folding_orichalcum_frame", + "fg": 17, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 18 } ] + }, + { + "id": "vp_frame_orichalcum_cover", + "fg": 19, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 20 } ] + }, + { + "id": "vp_frame_orichalcum_cross", + "fg": 21, + "rotates": true, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 22 } ] + }, + { + "id": "vp_frame_orichalcum_horizontal", + "fg": 23, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 24 } ] + }, + { + "id": "vp_frame_orichalcum_horizontal_2", + "fg": 25, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 26 } ] + }, + { + "id": "vp_frame_orichalcum_ne", + "fg": 27, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 28 } ] + }, + { + "id": "vp_frame_orichalcum_nw", + "fg": 29, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 30 } ] + }, + { + "id": "vp_frame_orichalcum_se", + "fg": 31, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 32 } ] + }, + { + "id": "vp_frame_orichalcum_sw", + "fg": 33, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 34 } ] + }, + { + "id": "vp_frame_orichalcum_vertical", + "fg": 35, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 36 } ] + }, + { + "id": "vp_frame_orichalcum_vertical_2", + "fg": 37, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 38 } ] + } + ], + "//": "range 1 to 256", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": 0 + }, + { + "file": "MagicalNights_Tiles.png", + "tiles": [ + { + "id": "t_dirtfloor", + "fg": [ + { "weight": 1, "sprite": 258 }, + { "weight": 1, "sprite": 259 }, + { "weight": 1, "sprite": 260 }, + { "weight": 1, "sprite": 261 }, + { "weight": 1, "sprite": 262 } + ], + "rotates": false + }, + { "id": "f_altar", "fg": 263, "rotates": false }, + { "id": "f_attunement_altar", "fg": 264, "rotates": false }, + { "id": "f_demon_forge", "fg": 265 }, + { "id": "f_magiclysm_translocator_gate", "fg": 266 }, + { + "id": "f_magic_bench", + "fg": 267, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { "id": "center", "fg": 268 }, + { "id": "corner", "fg": [ 269, 270, 271, 272 ] }, + { "id": "edge", "fg": [ 273, 274 ] }, + { "id": "end_piece", "fg": [ 275, 276, 277, 278 ] }, + { "id": "t_connection", "fg": [ 279, 280, 281, 282 ] }, + { "id": "unconnected", "fg": [ 283, 283, 283, 283 ] } + ] + }, + { "id": "f_magic_circle", "fg": 284, "rotates": false }, + { + "id": [ + "attunement_altar_NW", + "attunement_altar_NE", + "attunement_altar_SW", + "attunement_altar_SE", + "attunement_altar_NW_roof", + "attunement_altar_NE_roof", + "attunement_altar_SW_roof", + "attunement_altar_SE_roof" + ], + "fg": 285, + "rotates": false + }, + { + "id": [ "black_dragon_lair_z-0_NW", "black_dragon_lair_z-0_NE", "black_dragon_lair_z-0_SW", "black_dragon_lair_z-0_SE" ], + "fg": 286, + "rotates": false + }, + { + "id": [ + "black_dragon_lair_z-1_NW", + "black_dragon_lair_z-1_NE", + "black_dragon_lair_z-1_SW", + "black_dragon_lair_z-1_SE", + "black_dragon_lair_z-2_NW", + "black_dragon_lair_z-2_NE", + "black_dragon_lair_z-2_SW", + "black_dragon_lair_z-2_SE", + "black_dragon_lair_z-3_NW", + "black_dragon_lair_z-3_NE", + "black_dragon_lair_z-3_SW", + "black_dragon_lair_z-3_SE", + "black_dragon_lair_z-4_NW", + "black_dragon_lair_z-4_NE", + "black_dragon_lair_z-4_SW", + "black_dragon_lair_z-4_SE" + ], + "fg": 287, + "rotates": false + }, + { "id": [ "demon_spider_lair" ], "fg": 288, "rotates": false }, + { "id": [ "forest_tomb", "forest_tomb_roof" ], "fg": 289, "rotates": false }, + { "id": [ "forest_tomb_bottom" ], "fg": 290, "rotates": false }, + { + "id": [ + "forge_1A", + "forge_2A", + "forge_3A", + "forge_4A", + "forge_5A", + "forge_1B", + "forge_2B", + "forge_3B", + "forge_4B", + "forge_5B" + ], + "fg": 291, + "rotates": false + }, + { "id": [ "goblin_camp" ], "fg": 292, "rotates": false }, + { "id": [ "magic_cabin" ], "fg": 293, "rotates": false }, + { "id": [ "magic_shop", "magic_shop_2ndfloor", "magic_shop_roof" ], "fg": 294, "rotates": false }, + { "id": [ "orc_camp" ], "fg": 295, "rotates": false }, + { "id": "wizardtower1_ground", "fg": 296, "rotates": false }, + { + "id": "t_dirt_barren", + "fg": [ + { "weight": 40, "sprite": 297 }, + { "weight": 40, "sprite": 298 }, + { "weight": 40, "sprite": 299 }, + { "weight": 40, "sprite": 300 }, + { "weight": 1, "sprite": 301 } + ], + "rotates": false + }, + { "id": "t_magiconc_floor", "fg": 302, "rotates": false }, + { "id": "t_webbed_corpse", "fg": 303, "rotates": false }, + { + "id": "t_demon_web_wall", + "fg": 304, + "bg": 257, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { "id": "center", "fg": 305, "bg": 257 }, + { "id": "corner", "fg": [ 306, 307, 308, 309 ], "bg": 257 }, + { "id": "edge", "fg": [ 310, 311 ], "bg": 257 }, + { "id": "end_piece", "fg": [ 312, 313, 314, 315 ], "bg": 257 }, + { "id": "t_connection", "fg": [ 316, 317, 318, 319 ], "bg": 257 }, + { "id": "unconnected", "fg": 320, "bg": 257 } + ] + }, + { "id": "tr_magic_door", "fg": 321, "rotates": false }, + { "id": "tr_bear", "fg": 322, "rotates": false }, + { "id": "tr_forge_vault", "fg": 323, "rotates": false } + ], + "//": "range 257 to 512", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": 0 + }, + { + "file": "MagicalNights_Items.png", + "tiles": [ + { "id": "bio_fuel_cell_blood", "fg": 513, "bg": 3, "rotates": false }, + { "id": "overlay_wielded_bio_fuel_cell_blood", "fg": 513, "rotates": false }, + { "id": "bio_sneeze_beam", "fg": 514, "bg": 3, "rotates": false }, + { "id": "overlay_wielded_bio_sneeze_beam", "fg": 514, "rotates": false }, + { "id": "adrenal_gland_large", "fg": 515, "rotates": false }, + { "id": "overlay_wielded_adrenal_gland_large", "fg": 515, "rotates": false }, + { "id": "alumentum", "fg": 516, "rotates": false }, + { "id": "overlay_wielded_alumentum", "fg": 516, "rotates": false }, + { "id": "bulette_pearl", "fg": 517, "rotates": false }, + { "id": "overlay_wielded_bulette_pearl", "fg": 517, "rotates": false }, + { "id": "bulette_plate", "fg": 518, "rotates": false }, + { "id": "overlay_wielded_bulette_plate", "fg": 518, "rotates": false }, + { "id": "vp_bulette_plate", "fg": 519, "rotates": false }, + { "id": "copper_circlet", "fg": 520, "rotates": false }, + { "id": "overlay_wielded_copper_circlet", "fg": 520, "rotates": false }, + { "id": "overlay_worn_copper_circlet", "fg": 521, "rotates": false }, + { "id": "copper_infuser", "fg": 522, "rotates": false }, + { "id": "overlay_wielded_copper_infuser", "fg": 522, "rotates": false }, + { "id": "overlay_worn_copper_infuser", "fg": 523, "rotates": false }, + { "id": "demon_chitin_piece", "fg": 524, "rotates": false }, + { "id": "overlay_wielded_demon_chitin_piece", "fg": 524, "rotates": false }, + { "id": "demon_chitin_plate", "fg": 525, "rotates": false }, + { "id": "overlay_wielded_demon_chitin_plate", "fg": 525, "rotates": false }, + { "id": "demon_spider_fang", "fg": 526, "rotates": false }, + { "id": "overlay_wielded_demon_spider_fang", "fg": 526, "rotates": false }, + { "id": "dragon_essence", "fg": 527, "rotates": false }, + { "id": "overlay_wielded_dragon_essence", "fg": 527, "rotates": false }, + { "id": "glow_dust", "fg": 528 }, + { "id": "overlay_wielded_glow_dust", "fg": 528 }, + { "id": "glow_light", "fg": 529, "rotates": false }, + { "id": "overlay_wielded_glow_light", "fg": 529, "rotates": false }, + { "id": "glow_light_off", "fg": 530, "rotates": false }, + { "id": "overlay_wielded_glow_light_off", "fg": 530, "rotates": false }, + { "id": "overlay_wielded_owlbear_stone", "fg": 531 }, + { "id": "owlbear_stone", "fg": 531 }, + { "id": "overlay_wielded_potion_starter", "fg": 532 }, + { "id": "potion_starter", "fg": 532 }, + { "id": "overlay_wielded_silver_infuser", "fg": 533, "rotates": false }, + { "id": "silver_infuser", "fg": 533, "rotates": false }, + { "id": "overlay_worn_silver_infuser", "fg": 534, "rotates": false }, + { "id": "overlay_wielded_stirge_proboscis", "fg": 535, "rotates": false }, + { "id": "stirge_proboscis", "fg": 535, "rotates": false }, + { "id": "overlay_wielded_stone_shell", "fg": 536 }, + { "id": "stone_shell", "fg": 536 }, + { "id": "blood", "fg": 537, "rotates": false }, + { "id": "overlay_wielded_blood", "fg": 537, "rotates": false }, + { "id": "dragon_blood", "fg": 538, "rotates": false }, + { "id": "overlay_wielded_dragon_blood", "fg": 538, "rotates": false }, + { "id": "overlay_wielded_tainted_blood", "fg": 539, "rotates": false }, + { "id": "tainted_blood", "fg": 539, "rotates": false }, + { "id": "arrow_odin", "fg": 540, "rotates": false }, + { "id": "overlay_wielded_arrow_odin", "fg": 540, "rotates": false }, + { "id": "ichaival", "fg": 541, "rotates": false }, + { "id": "overlay_wielded_ichaival", "fg": 542, "rotates": false }, + { "id": "overlay_wielded_quiver", "fg": 543, "rotates": false }, + { "id": "quiver", "fg": 543, "bg": 3, "rotates": false }, + { "id": "overlay_worn_quiver", "fg": 544, "rotates": false }, + { "id": "overlay_wielded_quiver_birchbark", "fg": 545, "rotates": false }, + { "id": "quiver_birchbark", "fg": 545, "bg": 3, "rotates": false }, + { "id": "overlay_worn_quiver_birchbark", "fg": 546, "rotates": false }, + { "id": "overlay_wielded_quiver_large_birchbark", "fg": 547, "rotates": false }, + { "id": "quiver_large_birchbark", "fg": 547, "bg": 3, "rotates": false }, + { "id": "overlay_worn_quiver_large_birchbark", "fg": 548, "rotates": false }, + { "id": "black_dragon_hide_raw", "fg": 549, "rotates": false }, + { "id": "overlay_wielded_black_dragon_hide_raw", "fg": 549, "rotates": false }, + { "id": "black_dragon_tanned_hide", "fg": 550, "rotates": false }, + { "id": "overlay_wielded_black_dragon_tanned_hide", "fg": 550, "rotates": false }, + { "id": "black_dragon_tanning_hide", "fg": 551, "rotates": false }, + { "id": "overlay_wielded_black_dragon_tanning_hide", "fg": 551, "rotates": false }, + { "id": "boots_black_dragon_hide", "fg": 552, "rotates": false }, + { "id": "overlay_wielded_boots_black_dragon_hide", "fg": 552, "rotates": false }, + { "id": "overlay_worn_boots_black_dragon_hide", "fg": 553, "rotates": false }, + { "id": "boots_black_dragon_scale", "fg": 554, "rotates": false }, + { "id": "overlay_wielded_boots_black_dragon_scale", "fg": 554, "rotates": false }, + { "id": "overlay_worn_boots_black_dragon_scale", "fg": 555, "rotates": false }, + { "id": "boots_xlblack_dragon_hide", "fg": 556, "rotates": false }, + { "id": "overlay_wielded_boots_xlblack_dragon_hide", "fg": 556, "rotates": false }, + { "id": "boots_xlblack_dragon_scale", "fg": 557, "rotates": false }, + { "id": "overlay_wielded_boots_xlblack_dragon_scale", "fg": 557, "rotates": false }, + { "id": "dragon_black_scale", "fg": 558, "rotates": false }, + { "id": "overlay_wielded_dragon_black_scale", "fg": 559, "rotates": false }, + { "id": "gauntlets_black_dragon_scale", "fg": 559, "rotates": false }, + { "id": "overlay_wielded_gauntlets_black_dragon_scale", "fg": 559, "rotates": false }, + { "id": "overlay_worn_gauntlets_black_dragon_scale", "fg": 560, "rotates": false }, + { "id": "gauntlets_xlblack_dragon_scale", "fg": 561, "rotates": false }, + { "id": "overlay_wielded_gauntlets_xlblack_dragon_scale", "fg": 561, "rotates": false }, + { "id": "gloves_black_dragon_hide", "fg": 562, "rotates": false }, + { "id": "overlay_wielded_gloves_black_dragon_hide", "fg": 562, "rotates": false }, + { "id": "overlay_worn_gloves_black_dragon_hide", "fg": 564, "rotates": false }, + { "id": "gloves_xlblack_dragon_hide", "fg": 564, "rotates": false }, + { "id": "overlay_wielded_gloves_xlblack_dragon_hide", "fg": 564, "rotates": false }, + { "id": "helmet_black_dragon_hide", "fg": 565, "rotates": false }, + { "id": "overlay_wielded_helmet_black_dragon_hide", "fg": 565, "rotates": false }, + { "id": "overlay_worn_helmet_black_dragon_hide", "fg": 566, "rotates": false }, + { "id": "helmet_black_dragon_scale", "fg": 567, "rotates": false }, + { "id": "overlay_wielded_helmet_black_dragon_scale", "fg": 567, "rotates": false }, + { "id": "overlay_worn_helmet_black_dragon_scale", "fg": 568, "rotates": false }, + { "id": "helmet_xlblack_dragon_hide", "fg": 569, "rotates": false }, + { "id": "overlay_wielded_helmet_xlblack_dragon_hide", "fg": 569, "rotates": false }, + { "id": "helmet_xlblack_dragon_scale", "fg": 570, "rotates": false }, + { "id": "overlay_wielded_helmet_xlblack_dragon_scale", "fg": 570, "rotates": false }, + { "id": "overlay_wielded_suit_black_dragon_hide", "fg": 571, "rotates": false }, + { "id": "suit_black_dragon_hide", "fg": 571, "rotates": false }, + { "id": "overlay_worn_suit_black_dragon_hide", "fg": 572, "rotates": false }, + { "id": "overlay_wielded_suit_black_dragon_scale", "fg": 573, "rotates": false }, + { "id": "suit_black_dragon_scale", "fg": 573, "rotates": false }, + { "id": "overlay_worn_suit_black_dragon_scale", "fg": 574, "rotates": false }, + { "id": "overlay_wielded_suit_xlblack_dragon_hide", "fg": 755, "rotates": false }, + { "id": "suit_xlblack_dragon_hide", "fg": 575, "rotates": false }, + { "id": "overlay_wielded_suit_xlblack_dragon_scale", "fg": 756, "rotates": false }, + { "id": "suit_xlblack_dragon_scale", "fg": 576, "rotates": false }, + { "id": "lair_map", "fg": 577, "rotates": false }, + { "id": "overlay_wielded_lair_map", "fg": 577, "rotates": false }, + { "id": "overlay_wielded_retreat_map", "fg": 578, "rotates": false }, + { "id": "retreat_map", "fg": 578, "rotates": false }, + { "id": "overlay_wielded_wizard_photo", "fg": 579, "rotates": false }, + { "id": "wizard_photo", "fg": 579, "rotates": false }, + { "id": "animist_doll_decayed_pouncer", "fg": 580, "rotates": false }, + { "id": "overlay_wielded_animist_doll_decayed_pouncer", "fg": 581, "rotates": false }, + { "id": "animist_doll_skeleton", "fg": 582, "rotates": false }, + { "id": "overlay_wielded_animist_doll_skeleton", "fg": 583, "rotates": false }, + { "id": "animist_doll_zombie", "fg": 584, "rotates": false }, + { "id": "overlay_wielded_animist_doll_zombie", "fg": 585, "rotates": false }, + { "id": "cats_grace_potion", "fg": 586 }, + { "id": "overlay_wielded_cats_grace_potion", "fg": 586 }, + { "id": "eagles_sight_potion", "fg": 587 }, + { "id": "overlay_wielded_eagles_sight_potion", "fg": 587 }, + { "id": "foxs_cunning_potion", "fg": 588 }, + { "id": "overlay_wielded_foxs_cunning_potion", "fg": 588 }, + { "id": "mana_potion", "fg": 589, "rotates": false }, + { "id": "overlay_wielded_mana_potion", "fg": 589, "rotates": false }, + { "id": "mana_potion_greater", "fg": 590, "rotates": false }, + { "id": "overlay_wielded_mana_potion_greater", "fg": 590, "rotates": false }, + { "id": "mana_potion_lesser", "fg": 591, "rotates": false }, + { "id": "overlay_wielded_mana_potion_lesser", "fg": 591, "rotates": false }, + { "id": "ogres_strength_potion", "fg": 592 }, + { "id": "overlay_wielded_ogres_strength_potion", "fg": 592 }, + { "id": "overlay_wielded_twisted_restore_potion", "fg": 593, "rotates": false }, + { "id": "twisted_restore_potion", "fg": 593, "rotates": false }, + { "id": "overlay_wielded_twisted_restore_potion_improved", "fg": 594, "rotates": false }, + { "id": "twisted_restore_potion_improved", "fg": 594, "rotates": false }, + { "id": "overlay_wielded_rune_alchemist", "fg": 595 }, + { "id": "rune_alchemist", "fg": 595 }, + { "id": "overlay_wielded_rune_animist", "fg": 596 }, + { "id": "rune_animist", "fg": 596 }, + { "id": "overlay_wielded_rune_biomancer", "fg": 597 }, + { "id": "rune_biomancer", "fg": 597 }, + { "id": "overlay_wielded_rune_druid", "fg": 598 }, + { "id": "rune_druid", "fg": 598 }, + { "id": "overlay_wielded_rune_earthshaper", "fg": 599 }, + { "id": "rune_earthshaper", "fg": 599 }, + { "id": "overlay_wielded_rune_kelvinist", "fg": 600 }, + { "id": "rune_kelvinist", "fg": 600 }, + { "id": "overlay_wielded_rune_magus", "fg": 601 }, + { "id": "rune_magus", "fg": 601 }, + { "id": "overlay_wielded_rune_stormshaper", "fg": 602 }, + { "id": "rune_stormshaper", "fg": 602 }, + { "id": "overlay_wielded_rune_technomancer", "fg": 603 }, + { "id": "rune_technomancer", "fg": 603 }, + { "id": "egg_owlbear", "fg": 604 }, + { "id": "overlay_wielded_egg_owlbear", "fg": 604 }, + { "id": "egg_owlbear_rock", "fg": 605 }, + { "id": "overlay_wielded_egg_owlbear_rock", "fg": 605 }, + { "id": "hairball", "fg": 606, "rotates": false }, + { "id": "overlay_wielded_hairball", "fg": 606, "rotates": false }, + { "id": "impure_meat", "fg": 607, "rotates": false }, + { "id": "overlay_wielded_impure_meat", "fg": 607, "rotates": false }, + { "id": "meat_dragon", "fg": 608, "rotates": false }, + { "id": "overlay_wielded_meat_dragon", "fg": 608, "rotates": false }, + { "id": "overlay_wielded_purified_meat", "fg": 609, "rotates": false }, + { "id": "purified_meat", "fg": 609, "rotates": false }, + { "id": "overlay_wielded_scream_mush", "fg": 610, "rotates": false }, + { "id": "scream_mush", "fg": 610, "rotates": false }, + { "id": "lizardfolk_trident", "fg": 611, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_trident", "fg": 612, "rotates": false }, + { "id": "overlay_wielded_skewer", "fg": 613, "rotates": false }, + { "id": "skewer", "fg": 613, "bg": 3, "rotates": false }, + { "id": "fungicide", "fg": 614, "bg": 3, "rotates": false }, + { "id": "bag_holding_1", "fg": 615, "rotates": false }, + { "id": "overlay_wielded_bag_holding_1", "fg": 616, "rotates": false }, + { "id": "overlay_female_worn_bag_holding_1", "fg": 617, "rotates": false }, + { "id": "overlay_male_worn_bag_holding_1", "fg": 618, "rotates": false }, + { "id": "bag_holding_2", "fg": 619, "rotates": false }, + { "id": "overlay_wielded_bag_holding_2", "fg": 620, "rotates": false }, + { "id": "overlay_female_worn_bag_holding_2", "fg": 621, "rotates": false }, + { "id": "overlay_male_worn_bag_holding_2", "fg": 622, "rotates": false }, + { "id": "bag_holding_3", "fg": 623, "rotates": false }, + { "id": "overlay_wielded_bag_holding_3", "fg": 624, "rotates": false }, + { "id": "overlay_female_worn_bag_holding_3", "fg": 625, "rotates": false }, + { "id": "overlay_male_worn_bag_holding_3", "fg": 626, "rotates": false }, + { "id": "belt_haste", "fg": 627, "rotates": false }, + { "id": "overlay_wielded_belt_haste", "fg": 627, "rotates": false }, + { "id": "overlay_worn_belt_haste", "fg": 628, "rotates": false }, + { "id": "belt_str", "fg": 629, "rotates": false }, + { "id": "overlay_wielded_belt_str", "fg": 630, "rotates": false }, + { "id": "overlay_worn_belt_str", "fg": 630, "rotates": false }, + { "id": "debug_fireball_hammer", "fg": 631, "rotates": false }, + { "id": "overlay_wielded_debug_fireball_hammer", "fg": 632, "rotates": false }, + { "id": "magi_staff_minor", "fg": 633, "rotates": false }, + { "id": "overlay_wielded_magi_staff_minor", "fg": 634, "rotates": false }, + { "id": "overlay_wielded_wizard_hat", "fg": 635, "rotates": false }, + { "id": "wizard_hat", "fg": 635, "rotates": false }, + { "id": "mbelt_haste", "fg": 636, "rotates": false }, + { "id": "overlay_wielded_mbelt_haste", "fg": 636, "rotates": false }, + { "id": "overlay_worn_mbelt_haste", "fg": 637, "rotates": false }, + { "id": "mbelt_iron_whip", "fg": 638, "rotates": false }, + { "id": "overlay_wielded_mbelt_iron_whip", "fg": 638, "rotates": false }, + { "id": "overlay_worn_mbelt_iron_whip", "fg": 639, "rotates": false }, + { "id": "mbelt_pockets_greater", "fg": 640, "rotates": false }, + { "id": "overlay_wielded_mbelt_pockets_greater", "fg": 640, "rotates": false }, + { "id": "overlay_worn_mbelt_pockets_greater", "fg": 641, "rotates": false }, + { "id": "mbelt_pockets_lesser", "fg": 642, "rotates": false }, + { "id": "overlay_wielded_mbelt_pockets_lesser", "fg": 642, "rotates": false }, + { "id": "overlay_worn_mbelt_pockets_lesser", "fg": 643, "rotates": false }, + { "id": "mbelt_technomancer_toolbelt", "fg": 644, "rotates": false }, + { "id": "overlay_wielded_mbelt_technomancer_toolbelt", "fg": 644, "rotates": false }, + { "id": "overlay_worn_mbelt_technomancer_toolbelt", "fg": 645, "rotates": false }, + { "id": "mbelt_thor", "fg": 646, "rotates": false }, + { "id": "overlay_wielded_mbelt_thor", "fg": 646, "rotates": false }, + { "id": "overlay_worn_mbelt_thor", "fg": 647, "rotates": false }, + { "id": "mbelt_weaponry", "fg": 648, "rotates": false }, + { "id": "overlay_wielded_mbelt_weaponry", "fg": 648, "rotates": false }, + { "id": "overlay_worn_mbelt_weaponry", "fg": 649, "rotates": false }, + { "id": "mwhip_iron", "fg": 650, "rotates": false }, + { "id": "overlay_wielded_mwhip_iron", "fg": 651, "rotates": false }, + { "id": "mboots_escape", "fg": 652, "rotates": false }, + { "id": "overlay_wielded_mboots_escape", "fg": 652, "rotates": false }, + { "id": "overlay_worn_mboots_escape", "fg": 653, "rotates": false }, + { "id": "mboots_grounding", "fg": 654, "rotates": false }, + { "id": "overlay_wielded_mboots_grounding", "fg": 654, "rotates": false }, + { "id": "overlay_worn_mboots_grounding", "fg": 655, "rotates": false }, + { "id": "mboots_haste", "fg": 656, "rotates": false }, + { "id": "overlay_wielded_mboots_haste", "fg": 656, "rotates": false }, + { "id": "overlay_worn_mboots_haste", "fg": 657, "rotates": false }, + { "id": "mboots_sevenleague", "fg": 658, "rotates": false }, + { "id": "overlay_wielded_mboots_sevenleague", "fg": 658, "rotates": false }, + { "id": "overlay_worn_mboots_sevenleague", "fg": 659, "rotates": false }, + { "id": "mbracer_defense_greater", "fg": 660, "rotates": false }, + { "id": "overlay_wielded_mbracer_defense_greater", "fg": 660, "rotates": false }, + { "id": "overlay_worn_mbracer_defense_greater", "fg": 661, "rotates": false }, + { "id": "mbracer_defense_lesser", "fg": 662, "rotates": false }, + { "id": "overlay_wielded_mbracer_defense_lesser", "fg": 662, "rotates": false }, + { "id": "overlay_worn_mbracer_defense_lesser", "fg": 663, "rotates": false }, + { "id": "mbracer_lightning_greater", "fg": 664, "rotates": false }, + { "id": "overlay_wielded_mbracer_lightning_greater", "fg": 664, "rotates": false }, + { "id": "overlay_worn_mbracer_lightning_greater", "fg": 665, "rotates": false }, + { "id": "mbracer_lightning_lesser", "fg": 666, "rotates": false }, + { "id": "overlay_wielded_mbracer_lightning_lesser", "fg": 666, "rotates": false }, + { "id": "overlay_worn_mbracer_lightning_lesser", "fg": 667, "rotates": false }, + { "id": "mbracer_steel_pair", "fg": 668, "rotates": false }, + { "id": "overlay_wielded_mbracer_steel_pair", "fg": 668, "rotates": false }, + { "id": "overlay_worn_mbracer_steel_pair", "fg": 669, "rotates": false }, + { "id": "mbracer_steel_single", "fg": 670, "rotates": false }, + { "id": "overlay_wielded_mbracer_steel_single", "fg": 670, "rotates": false }, + { "id": "overlay_worn_mbracer_steel_single", "fg": 671, "rotates": false }, + { "id": "magic_suppressor", "fg": 672, "rotates": false }, + { "id": "overlay_wielded_magic_suppressor", "fg": 672, "rotates": false }, + { "id": "mana_dot_sight", "fg": 673, "rotates": false }, + { "id": "overlay_wielded_mana_dot_sight", "fg": 673, "rotates": false }, + { "id": "mana_laser_rail", "fg": 673, "rotates": false }, + { "id": "overlay_wielded_mana_laser_rail", "fg": 673, "rotates": false }, + { "id": "mana_laser_under", "fg": 673, "rotates": false }, + { "id": "overlay_wielded_mana_laser_under", "fg": 673, "rotates": false }, + { "id": "mmask_disappearance", "fg": 674, "rotates": false }, + { "id": "overlay_wielded_mmask_disappearance", "fg": 674, "rotates": false }, + { "id": "overlay_female_worn_mmask_disappearance", "fg": 685, "rotates": false }, + { "id": "overlay_male_worn_mmask_disappearance", "fg": 686, "rotates": false }, + { "id": "mmask_vision", "fg": 687, "rotates": false }, + { "id": "overlay_wielded_mmask_vision", "fg": 687, "rotates": false }, + { "id": "overlay_female_worn_mmask_vision", "fg": 688, "rotates": false }, + { "id": "overlay_male_worn_mmask_vision", "fg": 689, "rotates": false }, + { "id": "rune_animist_weapon", "fg": 690, "rotates": false }, + { "id": "overlay_wielded_rune_animist_weapon", "fg": 690, "rotates": false }, + { "id": "rune_biomancer_weapon", "fg": 691, "rotates": false }, + { "id": "overlay_wielded_rune_biomancer_weapon", "fg": 691, "rotates": false }, + { "id": "rune_kelvinist_weapon", "fg": 692, "rotates": false }, + { "id": "overlay_wielded_rune_kelvinist_weapon", "fg": 692, "rotates": false }, + { "id": "rune_magus_weapon", "fg": 693, "rotates": false }, + { "id": "overlay_wielded_rune_magus_weapon", "fg": 693, "rotates": false }, + { "id": "rune_stormshaper_weapon", "fg": 694, "rotates": false }, + { "id": "overlay_wielded_rune_stormshaper_weapon", "fg": 694, "rotates": false }, + { "id": "rune_technomancer_weapon", "fg": 695, "rotates": false }, + { "id": "overlay_wielded_rune_technomancer_weapon", "fg": 695, "rotates": false }, + { "id": "springstaff-extended", "fg": 696, "rotates": false }, + { "id": "overlay_wielded_springstaff-extended", "fg": 696, "rotates": false }, + { "id": "springstaff-retracted", "fg": 697, "rotates": false }, + { "id": "overlay_wielded_springstaff-retracted", "fg": 697, "rotates": false }, + { "id": "heat_cube", "fg": 698, "rotates": false }, + { "id": "overlay_wielded_heat_cube", "fg": 698, "rotates": false }, + { "id": "heat_cube_torch_on", "fg": 699, "rotates": false }, + { "id": "overlay_wielded_heat_cube_torch_on", "fg": 699, "rotates": false }, + { "id": "mflask_hip_whiskey", "fg": 700, "rotates": false }, + { "id": "overlay_wielded_mflask_hip_whiskey", "fg": 701, "rotates": false }, + { "id": "overlay_worn_mflask_hip_whiskey", "fg": 702, "rotates": false }, + { "id": "mkey_opening", "fg": 703, "rotates": false }, + { "id": "overlay_wielded_mkey_opening", "fg": 703, "rotates": false }, + { "id": "mspider_box", "fg": 704, "rotates": false }, + { "id": "overlay_wielded_mspider_box", "fg": 704, "rotates": false }, + { "id": "mtailors_kit", "fg": 705, "rotates": false }, + { "id": "overlay_wielded_mtailors_kit", "fg": 705, "rotates": false }, + { "id": "mtorch_everburning", "fg": 706, "rotates": false }, + { "id": "overlay_wielded_mtorch_everburning", "fg": 707, "rotates": false }, + { "id": "mtorch_everburning_lit", "fg": 708, "rotates": false }, + { "id": "overlay_wielded_mtorch_everburning_lit", "fg": 709, "rotates": false }, + { "id": "gunblade", "fg": 710, "rotates": false }, + { "id": "overlay_wielded_gunblade", "fg": 711, "rotates": false }, + { "id": "m47a1", "fg": 712, "rotates": false }, + { "id": "overlay_wielded_m47a1", "fg": 713, "rotates": false }, + { "id": "rune_druid_weapon", "fg": 714, "rotates": false }, + { "id": "overlay_wielded_rune_druid_weapon", "fg": 715, "rotates": false }, + { "id": "mring_blades_lesser", "fg": 716, "rotates": false }, + { "id": "overlay_wielded_mring_blades_lesser", "fg": 716, "rotates": false }, + { "id": "mring_copper", "fg": 717, "rotates": false }, + { "id": "overlay_wielded_mring_copper", "fg": 717, "rotates": false }, + { "id": "mring_dexterity_1", "fg": 718, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_1", "fg": 718, "rotates": false }, + { "id": "mring_dexterity_2", "fg": 719, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_2", "fg": 719, "rotates": false }, + { "id": "mring_dexterity_3", "fg": 720, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_3", "fg": 720, "rotates": false }, + { "id": "mring_dexterity_4", "fg": 721, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_4", "fg": 721, "rotates": false }, + { "id": "mring_dodge_bonus_1", "fg": 722, "rotates": false }, + { "id": "overlay_wielded_mring_dodge_bonus_1", "fg": 722, "rotates": false }, + { "id": "mring_dodge_bonus_2", "fg": 723, "rotates": false }, + { "id": "overlay_wielded_mring_dodge_bonus_2", "fg": 723, "rotates": false }, + { "id": "mring_gold", "fg": 724, "rotates": false }, + { "id": "overlay_wielded_mring_gold", "fg": 724, "rotates": false }, + { "id": "mring_intelligence_1", "fg": 725, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_1", "fg": 725, "rotates": false }, + { "id": "mring_intelligence_2", "fg": 726, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_2", "fg": 726, "rotates": false }, + { "id": "mring_intelligence_3", "fg": 727, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_3", "fg": 727, "rotates": false }, + { "id": "mring_intelligence_4", "fg": 728, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_4", "fg": 728, "rotates": false }, + { "id": "mring_perception_1", "fg": 729, "rotates": false }, + { "id": "overlay_wielded_mring_perception_1", "fg": 729, "rotates": false }, + { "id": "mring_perception_2", "fg": 730, "rotates": false }, + { "id": "overlay_wielded_mring_perception_2", "fg": 730, "rotates": false }, + { "id": "mring_perception_3", "fg": 731, "rotates": false }, + { "id": "overlay_wielded_mring_perception_3", "fg": 731, "rotates": false }, + { "id": "mring_perception_4", "fg": 732, "rotates": false }, + { "id": "overlay_wielded_mring_perception_4", "fg": 732, "rotates": false }, + { "id": "mring_platinum", "fg": 733, "rotates": false }, + { "id": "overlay_wielded_mring_platinum", "fg": 733, "rotates": false }, + { "id": "mring_protection_2", "fg": 734, "rotates": false }, + { "id": "overlay_wielded_mring_protection_2", "fg": 734, "rotates": false }, + { "id": "mring_protection_4", "fg": 735, "rotates": false }, + { "id": "overlay_wielded_mring_protection_4", "fg": 735, "rotates": false }, + { "id": "mring_protection_6", "fg": 736, "rotates": false }, + { "id": "overlay_wielded_mring_protection_6", "fg": 736, "rotates": false }, + { "id": "mring_protection_8", "fg": 737, "rotates": false }, + { "id": "overlay_wielded_mring_protection_8", "fg": 737, "rotates": false }, + { "id": "mring_silver", "fg": 738, "rotates": false }, + { "id": "overlay_wielded_mring_silver", "fg": 738, "rotates": false }, + { "id": "mring_speed_10", "fg": 739, "rotates": false }, + { "id": "overlay_wielded_mring_speed_10", "fg": 739, "rotates": false }, + { "id": "mring_speed_3", "fg": 740, "rotates": false }, + { "id": "overlay_wielded_mring_speed_3", "fg": 740, "rotates": false }, + { "id": "mring_speed_5", "fg": 741, "rotates": false }, + { "id": "overlay_wielded_mring_speed_5", "fg": 741, "rotates": false }, + { "id": "mring_speed_7", "fg": 742, "rotates": false }, + { "id": "overlay_wielded_mring_speed_7", "fg": 742, "rotates": false }, + { "id": "mring_strength_1", "fg": 743, "rotates": false }, + { "id": "overlay_wielded_mring_strength_1", "fg": 743, "rotates": false }, + { "id": "mring_strength_2", "fg": 744, "rotates": false }, + { "id": "overlay_wielded_mring_strength_2", "fg": 744, "rotates": false }, + { "id": "mring_strength_3", "fg": 745, "rotates": false }, + { "id": "overlay_wielded_mring_strength_3", "fg": 745, "rotates": false }, + { "id": "mring_strength_4", "fg": 746, "rotates": false }, + { "id": "overlay_wielded_mring_strength_4", "fg": 746, "rotates": false }, + { "id": "mtoken_arming_sword", "fg": 747, "rotates": false }, + { "id": "overlay_wielded_mtoken_arming_sword", "fg": 747, "rotates": false }, + { "id": "mtoken_battleaxe", "fg": 748, "rotates": false }, + { "id": "overlay_wielded_mtoken_battleaxe", "fg": 748, "rotates": false }, + { "id": "mtoken_broadsword", "fg": 749, "rotates": false }, + { "id": "overlay_wielded_mtoken_broadsword", "fg": 749, "rotates": false }, + { "id": "mtoken_crowbar", "fg": 750, "rotates": false }, + { "id": "overlay_wielded_mtoken_crowbar", "fg": 750, "rotates": false }, + { "id": "mtoken_hammer", "fg": 751, "rotates": false }, + { "id": "overlay_wielded_mtoken_hammer", "fg": 751, "rotates": false }, + { "id": "mtoken_longsword", "fg": 752, "rotates": false }, + { "id": "overlay_wielded_mtoken_longsword", "fg": 752, "rotates": false }, + { "id": "mtoken_mace", "fg": 753, "rotates": false }, + { "id": "overlay_wielded_mtoken_mace", "fg": 753, "rotates": false }, + { "id": "mtoken_pike", "fg": 754, "rotates": false }, + { "id": "overlay_wielded_mtoken_pike", "fg": 754, "rotates": false }, + { "id": "mtoken_q_staff", "fg": 755, "rotates": false }, + { "id": "overlay_wielded_mtoken_q_staff", "fg": 755, "rotates": false }, + { "id": "mtoken_screwdriver_set", "fg": 756, "rotates": false }, + { "id": "overlay_wielded_mtoken_screwdriver_set", "fg": 756, "rotates": false }, + { "id": "mtoken_toolbox", "fg": 757, "rotates": false }, + { "id": "overlay_wielded_mtoken_toolbox", "fg": 757, "rotates": false }, + { "id": "cestus_plus_one", "fg": 758, "bg": 5 }, + { "id": "overlay_wielded_cestus_plus_one", "fg": 758 }, + { "id": "cestus_plus_two", "fg": 759, "bg": 5 }, + { "id": "overlay_wielded_cestus_plus_two", "fg": 759 }, + { "id": "flaming_fist", "fg": 760, "rotates": false }, + { "id": "overlay_wielded_flaming_fist", "fg": 761, "rotates": false }, + { "id": "flaming_fist_plus_one", "fg": 762, "bg": 282 }, + { "id": "overlay_wielded_flaming_fist_plus_one", "fg": 761, "rotates": false }, + { "id": "flaming_fist_plus_two", "fg": 763, "bg": 282 }, + { "id": "overlay_wielded_flaming_fist_plus_two", "fg": 763 }, + { "id": "gauntlet_pounding", "fg": 764, "rotates": false }, + { "id": "overlay_wielded_gauntlet_pounding", "fg": 765, "rotates": false }, + { "id": "rune_earthshaper_weapon", "fg": 766, "rotates": false }, + { "id": "overlay_wielded_rune_earthshaper_weapon", "fg": 767, "rotates": false }, + { "id": "shotcestus", "fg": 768, "rotates": false }, + { "id": "overlay_wielded_shotcestus", "fg": 769, "rotates": false }, + { "id": "disp_wand", "fg": 770, "rotates": false }, + { "id": "overlay_wielded_disp_wand", "fg": 771, "rotates": false }, + { "id": "spell_wand", "fg": 772, "rotates": false }, + { "id": "overlay_wielded_spell_wand", "fg": 773, "rotates": false }, + { "id": "wand_cone_cold_greater", "fg": 774, "rotates": false }, + { "id": "overlay_wielded_wand_cone_cold_greater", "fg": 775, "rotates": false }, + { "id": "wand_cone_cold_lesser", "fg": 776, "rotates": false }, + { "id": "overlay_wielded_wand_cone_cold_lesser", "fg": 777, "rotates": false }, + { "id": "wand_cone_cold_minor", "fg": 778, "rotates": false }, + { "id": "overlay_wielded_wand_cone_cold_minor", "fg": 779, "rotates": false }, + { "id": "overlay_wielded_wand_disp_cone_cold_greater", "fg": 780, "rotates": false }, + { "id": "wand_disp_cone_cold_greater", "fg": 780, "rotates": false }, + { "id": "overlay_wielded_wand_disp_cone_cold_lesser", "fg": 781, "rotates": false }, + { "id": "wand_disp_cone_cold_lesser", "fg": 781, "rotates": false }, + { "id": "overlay_wielded_wand_disp_cone_cold_minor", "fg": 782, "rotates": false }, + { "id": "wand_disp_cone_cold_minor", "fg": 782, "rotates": false }, + { "id": "overlay_wielded_wand_disp_fireball_greater", "fg": 783, "rotates": false }, + { "id": "wand_disp_fireball_greater", "fg": 783, "rotates": false }, + { "id": "overlay_wielded_wand_disp_fireball_lesser", "fg": 784, "rotates": false }, + { "id": "wand_disp_fireball_lesser", "fg": 784, "rotates": false }, + { "id": "overlay_wielded_wand_disp_fireball_minor", "fg": 785, "rotates": false }, + { "id": "wand_disp_fireball_minor", "fg": 785, "rotates": false }, + { "id": "wand_disp_hoaryblast_greater", "fg": 786, "rotates": false }, + { "id": "overlay_wielded_wand_disp_hoaryblast_greater", "fg": 787, "rotates": false }, + { "id": "wand_disp_hoaryblast_lesser", "fg": 788, "rotates": false }, + { "id": "overlay_wielded_wand_disp_hoaryblast_lesser", "fg": 789, "rotates": false }, + { "id": "wand_disp_hoaryblast_minor", "fg": 790, "rotates": false }, + { "id": "overlay_wielded_wand_disp_hoaryblast_minor", "fg": 791, "rotates": false }, + { "id": "wand_disp_magic_missile_greater", "fg": 792, "rotates": false }, + { "id": "overlay_wielded_wand_disp_magic_missile_greater", "fg": 793, "rotates": false }, + { "id": "wand_disp_magic_missile_lesser", "fg": 794, "rotates": false }, + { "id": "overlay_wielded_wand_disp_magic_missile_lesser", "fg": 795, "rotates": false }, + { "id": "wand_disp_magic_missile_minor", "fg": 796, "rotates": false }, + { "id": "overlay_wielded_wand_disp_magic_missile_minor", "fg": 797, "rotates": false }, + { "id": "wand_disp_mana_beam_greater", "fg": 798, "rotates": false }, + { "id": "overlay_wielded_wand_disp_mana_beam_greater", "fg": 799, "rotates": false }, + { "id": "wand_disp_mana_beam_lesser", "fg": 800, "rotates": false }, + { "id": "overlay_wielded_wand_disp_mana_beam_lesser", "fg": 801, "rotates": false }, + { "id": "wand_disp_mana_beam_minor", "fg": 802, "rotates": false }, + { "id": "overlay_wielded_wand_disp_mana_beam_minor", "fg": 803, "rotates": false }, + { "id": "wand_disp_point_flare_greater", "fg": 804, "rotates": false }, + { "id": "overlay_wielded_wand_disp_point_flare_greater", "fg": 805, "rotates": false }, + { "id": "wand_disp_point_flare_lesser", "fg": 806, "rotates": false }, + { "id": "overlay_wielded_wand_disp_point_flare_lesser", "fg": 807, "rotates": false }, + { "id": "wand_disp_point_flare_minor", "fg": 808, "rotates": false }, + { "id": "overlay_wielded_wand_disp_point_flare_minor", "fg": 809, "rotates": false }, + { "id": "wand_fireball_greater", "fg": 810, "rotates": false }, + { "id": "overlay_wielded_wand_fireball_greater", "fg": 811, "rotates": false }, + { "id": "wand_fireball_lesser", "fg": 812, "rotates": false }, + { "id": "overlay_wielded_wand_fireball_lesser", "fg": 813, "rotates": false }, + { "id": "wand_fireball_minor", "fg": 814, "rotates": false }, + { "id": "overlay_wielded_wand_fireball_minor", "fg": 815, "rotates": false }, + { "id": "wand_hoaryblast_greater", "fg": 816, "rotates": false }, + { "id": "overlay_wielded_wand_hoaryblast_greater", "fg": 817, "rotates": false }, + { "id": "wand_hoaryblast_lesser", "fg": 818, "rotates": false }, + { "id": "overlay_wielded_wand_hoaryblast_lesser", "fg": 819, "rotates": false }, + { "id": "wand_hoaryblast_minor", "fg": 820, "rotates": false }, + { "id": "overlay_wielded_wand_hoaryblast_minor", "fg": 821, "rotates": false }, + { "id": "wand_magic_missile_greater", "fg": 822, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile_greater", "fg": 823, "rotates": false }, + { "id": "wand_magic_missile_lesser", "fg": 824, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile_lesser", "fg": 825, "rotates": false }, + { "id": "wand_magic_missile_minor", "fg": 826, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile_minor", "fg": 827, "rotates": false }, + { "id": "wand_mana_beam_greater", "fg": 828, "rotates": false }, + { "id": "overlay_wielded_wand_mana_beam_greater", "fg": 829, "rotates": false }, + { "id": "wand_mana_beam_lesser", "fg": 830, "rotates": false }, + { "id": "overlay_wielded_wand_mana_beam_lesser", "fg": 831, "rotates": false }, + { "id": "wand_mana_beam_minor", "fg": 832, "rotates": false }, + { "id": "overlay_wielded_wand_mana_beam_minor", "fg": 833, "rotates": false }, + { "id": "wand_point_flare_greater", "fg": 834, "rotates": false }, + { "id": "overlay_wielded_wand_point_flare_greater", "fg": 835, "rotates": false }, + { "id": "wand_point_flare_lesser", "fg": 836, "rotates": false }, + { "id": "overlay_wielded_wand_point_flare_lesser", "fg": 837, "rotates": false }, + { "id": "wand_point_flare_minor", "fg": 838, "rotates": false }, + { "id": "overlay_wielded_wand_point_flare_minor", "fg": 839, "rotates": false }, + { "id": "acid_res_aura", "fg": 3, "rotates": false }, + { "id": "overlay_wielded_acid_res_aura", "fg": 3, "rotates": false }, + { "id": "acid_res_aura_greater", "fg": 3, "rotates": false }, + { "id": "overlay_wielded_acid_res_aura_greater", "fg": 3, "rotates": false }, + { "id": "aura_stoneskin", "fg": 842, "rotates": false }, + { "id": "overlay_wielded_aura_stoneskin", "fg": 842, "rotates": false }, + { "id": "overlay_female_worn_aura_stoneskin", "fg": 843, "rotates": false }, + { "id": "overlay_male_worn_aura_stoneskin", "fg": 844, "rotates": false }, + { "id": "bonespear", "fg": 845, "rotates": true }, + { "id": "overlay_wielded_bonespear", "fg": 846, "rotates": true }, + { "id": "dragon_shell_black", "fg": 847, "rotates": false }, + { "id": "overlay_wielded_dragon_shell_black", "fg": 847, "rotates": false }, + { + "id": "overlay_worn_dragon_shell_black", + "fg": [ + { "weight": 30, "sprite": 848 }, + { "weight": 30, "sprite": 849 }, + { "weight": 30, "sprite": 850 }, + { "weight": 30, "sprite": 851 } + ], + "animated": true, + "rotates": false + }, + { "id": "druid_dust", "fg": 852, "rotates": false }, + { "id": "overlay_wielded_druid_dust", "fg": 852, "rotates": false }, + { "id": "druid_recurve", "fg": 853, "rotates": true }, + { "id": "overlay_wielded_druid_recurve", "fg": 854, "rotates": true }, + { "id": "druid_seed", "fg": 855, "rotates": false }, + { "id": "overlay_wielded_druid_seed", "fg": 855, "rotates": false }, + { "id": "finger_firelighter", "fg": 856 }, + { "id": "overlay_wielded_finger_firelighter", "fg": 857 }, + { "id": "fleshpouch", "fg": 858, "rotates": true }, + { "id": "overlay_wielded_fleshpouch", "fg": 858, "rotates": true }, + { "id": "overlay_worn_fleshpouch", "fg": 859, "rotates": true }, + { "id": "ice_gliders", "fg": 860, "rotates": false }, + { "id": "overlay_wielded_ice_gliders", "fg": 860, "rotates": false }, + { "id": "overlay_worn_ice_gliders", "fg": 861, "rotates": false }, + { "id": "magic_lamp", "fg": 862, "rotates": false }, + { "id": "magic_light", "fg": 863, "rotates": false }, + { "id": "obfuscating_aura", "fg": 864, "rotates": false }, + { "id": "overlay_wielded_obfuscating_aura", "fg": 864, "rotates": false }, + { "id": "overlay_wielded_shield_ice", "fg": 865, "rotates": false }, + { "id": "shield_ice", "fg": 865, "rotates": false }, + { "id": "overlay_worn_shield_ice", "fg": 866, "rotates": false }, + { "id": "stonefist", "fg": 867, "rotates": false }, + { "id": "overlay_wielded_stonefist", "fg": 868, "rotates": false }, + { "id": "stormglove", "fg": 869, "rotates": false }, + { "id": "overlay_wielded_stormglove", "fg": 870, "rotates": false }, + { "id": "stormhammer", "fg": 871, "rotates": false }, + { "id": "overlay_wielded_stormhammer", "fg": 872, "rotates": false }, + { "id": "tentacle_whip", "fg": 873, "rotates": true }, + { "id": "overlay_wielded_tentacle_whip", "fg": 874, "rotates": true }, + { "id": "crystallized_mana", "fg": 875, "rotates": false }, + { "id": "overlay_wielded_crystallized_mana", "fg": 875, "rotates": false }, + { "id": "overlay_wielded_small_mana_crystal", "fg": 876, "rotates": false }, + { "id": "small_mana_crystal", "fg": 876, "rotates": false }, + { "id": "gram", "fg": 877, "rotates": false }, + { "id": "overlay_wielded_gram", "fg": 878, "rotates": false }, + { "id": "gungnir", "fg": 879, "rotates": false }, + { "id": "laevateinn", "fg": 880, "rotates": false }, + { "id": "overlay_wielded_laevateinn", "fg": 881, "rotates": false }, + { "id": "mjolnir", "fg": 882, "bg": 3, "rotates": false }, + { "id": "overlay_wielded_mjolnir", "fg": 883, "rotates": false }, + { "id": "mithril_ingot", "fg": 884, "rotates": false }, + { "id": "overlay_wielded_mithril_ingot", "fg": 884, "rotates": false }, + { "id": "mithril_lump", "fg": 885, "rotates": false }, + { "id": "overlay_wielded_mithril_lump", "fg": 885, "rotates": false }, + { "id": "orichalcum_ingot", "fg": 886, "rotates": false }, + { "id": "overlay_wielded_orichalcum_ingot", "fg": 886, "rotates": false }, + { "id": "orichalcum_lump", "fg": 887, "rotates": false }, + { "id": "overlay_wielded_orichalcum_lump", "fg": 887, "rotates": false }, + { "id": "orichalcum_sliver", "fg": 888, "rotates": false }, + { "id": "overlay_wielded_orichalcum_sliver", "fg": 888, "rotates": false }, + { "id": "iv_black_dragon", "fg": 890, "rotates": false }, + { "id": "overlay_wielded_iv_black_dragon", "fg": 890, "rotates": false }, + { "id": "manatouched_serum", "fg": 889, "rotates": false }, + { "id": "overlay_wielded_manatouched_serum", "fg": 889, "rotates": false }, + { "id": "mutagen_black_dragon", "fg": 890, "rotates": false }, + { "id": "overlay_wielded_mutagen_black_dragon", "fg": 890, "rotates": false }, + { "id": "wand_fireball", "fg": 891, "rotates": false }, + { "id": "overlay_wielded_wand_fireball", "fg": 892, "rotates": false }, + { "id": "wand_magic_missile", "fg": 893, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile", "fg": 894, "rotates": false }, + { "id": "alchemy_basic", "fg": 895, "rotates": false }, + { "id": "overlay_wielded_alchemy_basic", "fg": 895, "rotates": false }, + { "id": "black_dragons", "fg": 896, "rotates": false }, + { "id": "overlay_wielded_black_dragons", "fg": 896, "rotates": false }, + { "id": "black_dragons_historical", "fg": 897, "rotates": false }, + { "id": "overlay_wielded_black_dragons_historical", "fg": 897, "rotates": false }, + { "id": "book_mythological", "fg": 898, "rotates": false }, + { "id": "overlay_wielded_book_mythological", "fg": 898, "rotates": false }, + { "id": "cooking_poison", "fg": 899, "rotates": false }, + { "id": "overlay_wielded_cooking_poison", "fg": 899, "rotates": false }, + { "id": "enchantment_basic", "fg": 900, "rotates": false }, + { "id": "overlay_wielded_enchantment_basic", "fg": 900, "rotates": false }, + { "id": "magic_armormaking", "fg": 901, "rotates": false }, + { "id": "overlay_wielded_magic_armormaking", "fg": 901, "rotates": false }, + { "id": "metal_legends", "fg": 902, "rotates": false }, + { "id": "overlay_wielded_metal_legends", "fg": 902, "rotates": false }, + { "id": "necro_basic", "fg": 903, "rotates": false }, + { "id": "overlay_wielded_necro_basic", "fg": 903, "rotates": false }, + { "id": "overlay_wielded_techno_basic", "fg": 904, "rotates": false }, + { "id": "techno_basic", "fg": 904, "rotates": false }, + { "id": "biomancer_spellbook", "fg": 905, "rotates": true }, + { "id": "overlay_wielded_biomancer_spellbook", "fg": 905, "rotates": true }, + { "id": "DEBUG_spellbook", "fg": 906, "rotates": false }, + { "id": "overlay_wielded_DEBUG_spellbook", "fg": 906, "rotates": false }, + { "id": "druid_spellbook", "fg": 907, "rotates": true }, + { "id": "overlay_wielded_druid_spellbook", "fg": 907, "rotates": true }, + { "id": "eshaper_spellbook", "fg": 908 }, + { "id": "overlay_wielded_eshaper_spellbook", "fg": 908 }, + { "id": "generic_spellbook", "fg": 909, "rotates": false }, + { "id": "overlay_wielded_generic_spellbook", "fg": 909, "rotates": false }, + { "id": "light_manipulation_spellbook", "fg": 910, "rotates": false }, + { "id": "overlay_wielded_light_manipulation_spellbook", "fg": 910, "rotates": false }, + { "id": "magus_spellbook", "fg": 911 }, + { "id": "overlay_wielded_magus_spellbook", "fg": 911 }, + { "id": "magus_spellbook_move", "fg": 912 }, + { "id": "overlay_wielded_magus_spellbook_move", "fg": 912 }, + { "id": "novice_stormshaper_book", "fg": 913, "rotates": false }, + { "id": "overlay_wielded_novice_stormshaper_book", "fg": 913, "rotates": false }, + { "id": "overlay_wielded_priest_advanced", "fg": 914, "rotates": false }, + { "id": "priest_advanced", "fg": 914, "rotates": false }, + { "id": "overlay_wielded_priest_beginner", "fg": 915, "rotates": false }, + { "id": "priest_beginner", "fg": 915, "rotates": false }, + { "id": "overlay_wielded_pyro", "fg": 916, "rotates": false }, + { "id": "pyro", "fg": 916, "rotates": false }, + { "id": "overlay_wielded_recovery_spellbook", "fg": 917, "rotates": false }, + { "id": "recovery_spellbook", "fg": 917, "rotates": false }, + { "id": "overlay_wielded_stat_up_spellbook", "fg": 918 }, + { "id": "stat_up_spellbook", "fg": 918 }, + { "id": "overlay_wielded_summon_scroll_smudged", "fg": 919 }, + { "id": "summon_scroll_smudged", "fg": 919 }, + { "id": "overlay_wielded_summon_undead_spellbook", "fg": 920 }, + { "id": "summon_undead_spellbook", "fg": 920 }, + { "id": "overlay_wielded_techno_em", "fg": 921 }, + { "id": "techno_em", "fg": 921 }, + { "id": "overlay_wielded_techno_fundamentals", "fg": 922 }, + { "id": "techno_fundamentals", "fg": 922 }, + { "id": "overlay_wielded_techno_idiots", "fg": 923 }, + { "id": "techno_idiots", "fg": 923 }, + { "id": "overlay_wielded_tome_of_storms", "fg": 924, "rotates": false }, + { "id": "tome_of_storms", "fg": 924, "rotates": false }, + { "id": "overlay_wielded_translocate_spellbook", "fg": 925 }, + { "id": "translocate_spellbook", "fg": 925 }, + { "id": "overlay_wielded_winter_grasp", "fg": 926, "rotates": true }, + { "id": "winter_grasp", "fg": 926, "rotates": true }, + { "id": "overlay_wielded_wizard_advanced", "fg": 927, "rotates": true }, + { "id": "wizard_advanced", "fg": 927, "rotates": true }, + { "id": "overlay_wielded_wizard_beginner", "fg": 928, "rotates": true }, + { "id": "wizard_beginner", "fg": 928, "rotates": true }, + { "id": "overlay_wielded_wizard_utility", "fg": 929, "rotates": true }, + { "id": "wizard_utility", "fg": 929, "rotates": true }, + { "id": "lightning_storm_scroll", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_lightning_storm_scroll", "fg": 930, "rotates": false }, + { + "id": [ + "overlay_wielded_spell_scroll", + "overlay_wielded_spell_scroll_baleful_polymorph", + "overlay_wielded_spell_scroll_boneclub", + "overlay_wielded_spell_scroll_caustic_aura", + "overlay_wielded_spell_scroll_feralform", + "overlay_wielded_spell_scroll_flamebreath", + "overlay_wielded_spell_scroll_flamesword", + "overlay_wielded_spell_scroll_impactsling", + "overlay_wielded_spell_scroll_improved_knock", + "overlay_wielded_spell_scroll_knifeshot", + "overlay_wielded_spell_scroll_knock", + "overlay_wielded_spell_scroll_overcharge_eyes", + "overlay_wielded_spell_scroll_repelling_arc", + "overlay_wielded_spell_scroll_summon_floating_disk", + "overlay_wielded_spell_scroll_tornskin" + ], + "fg": 930, + "rotates": false + }, + { + "id": [ + "spell_scroll", + "spell_scroll_baleful_polymorph", + "spell_scroll_boneclub", + "spell_scroll_caustic_aura", + "spell_scroll_feralform", + "spell_scroll_flamebreath", + "spell_scroll_flamesword", + "spell_scroll_impactsling", + "spell_scroll_improved_knock", + "spell_scroll_knifeshot", + "spell_scroll_knock", + "spell_scroll_overcharge_eyes", + "spell_scroll_repelling_arc", + "spell_scroll_summon_floating_disk", + "spell_scroll_tornskin" + ], + "fg": 930, + "rotates": false + }, + { "id": "overlay_wielded_spell_scroll_acid_resistance", "fg": 930, "rotates": false }, + { "id": "spell_scroll_acid_resistance", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_animated_blade", "fg": 930, "rotates": false }, + { "id": "spell_scroll_animated_blade", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_biomancer_coagulant_weave", "fg": 930, "rotates": false }, + { "id": "spell_scroll_biomancer_coagulant_weave", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_biomancer_paralytic_dart", "fg": 930, "rotates": false }, + { "id": "spell_scroll_biomancer_paralytic_dart", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_biomancer_visceral_projection", "fg": 930, "rotates": false }, + { "id": "spell_scroll_biomancer_visceral_projection", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_acidicspray", "fg": 930, "rotates": false }, + { "id": "spell_scroll_bio_acidicspray", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_bonespear", "fg": 930, "rotates": false }, + { "id": "spell_scroll_bio_bonespear", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_fleshpouch", "fg": 930, "rotates": false }, + { "id": "spell_scroll_bio_fleshpouch", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_grotesque", "fg": 930, "rotates": false }, + { "id": "spell_scroll_bio_grotesque", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bless", "fg": 930, "rotates": false }, + { "id": "spell_scroll_bless", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_blinding_flash", "fg": 930, "rotates": false }, + { "id": "spell_scroll_blinding_flash", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_burning_hands", "fg": 930, "rotates": false }, + { "id": "spell_scroll_burning_hands", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_cats_grace", "fg": 930, "rotates": false }, + { "id": "spell_scroll_cats_grace", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_chilling_touch", "fg": 930, "rotates": false }, + { "id": "spell_scroll_chilling_touch", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_clairvoyance", "fg": 930, "rotates": false }, + { "id": "spell_scroll_clairvoyance", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_cone_cold", "fg": 930, "rotates": false }, + { "id": "spell_scroll_cone_cold", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_create_atomic_lamp", "fg": 930, "rotates": false }, + { "id": "spell_scroll_create_atomic_lamp", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_create_atomic_light", "fg": 930, "rotates": false }, + { "id": "spell_scroll_create_atomic_light", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_create_lighter", "fg": 930, "rotates": false }, + { "id": "spell_scroll_create_lighter", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_crystallize_mana", "fg": 930, "rotates": false }, + { "id": "spell_scroll_crystallize_mana", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_dark_sight", "fg": 930, "rotates": false }, + { "id": "spell_scroll_dark_sight", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druidic_healing", "fg": 930, "rotates": false }, + { "id": "spell_scroll_druidic_healing", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druidic_regrowth", "fg": 930, "rotates": false }, + { "id": "spell_scroll_druidic_regrowth", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_naturebow1", "fg": 930, "rotates": false }, + { "id": "spell_scroll_druid_naturebow1", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_rootstrike", "fg": 930, "rotates": false }, + { "id": "spell_scroll_druid_rootstrike", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_veggrasp", "fg": 930, "rotates": false }, + { "id": "spell_scroll_druid_veggrasp", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_woodshaft", "fg": 930, "rotates": false }, + { "id": "spell_scroll_druid_woodshaft", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eagles_sight", "fg": 930, "rotates": false }, + { "id": "spell_scroll_eagles_sight", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_earthshaper_pillar", "fg": 930, "rotates": false }, + { "id": "spell_scroll_earthshaper_pillar", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_earthshaper_stoneskin", "fg": 930, "rotates": false }, + { "id": "spell_scroll_earthshaper_stoneskin", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_piercing_bolt", "fg": 930, "rotates": false }, + { "id": "spell_scroll_eshaper_piercing_bolt", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_rockbolt", "fg": 930, "rotates": false }, + { "id": "spell_scroll_eshaper_rockbolt", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_shardspray", "fg": 930, "rotates": false }, + { "id": "spell_scroll_eshaper_shardspray", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_shardstorm", "fg": 930, "rotates": false }, + { "id": "spell_scroll_eshaper_shardstorm", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ethereal_grasp", "fg": 930, "rotates": false }, + { "id": "spell_scroll_ethereal_grasp", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_fireball", "fg": 930, "rotates": false }, + { "id": "spell_scroll_fireball", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_foxs_cunning", "fg": 930, "rotates": false }, + { "id": "spell_scroll_foxs_cunning", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_freezing_touch", "fg": 930, "rotates": false }, + { "id": "spell_scroll_freezing_touch", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_frost_armor", "fg": 930, "rotates": false }, + { "id": "spell_scroll_frost_armor", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_frost_spray", "fg": 930, "rotates": false }, + { "id": "spell_scroll_frost_spray", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_glide_ice", "fg": 930, "rotates": false }, + { "id": "spell_scroll_glide_ice", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_gravity_well", "fg": 930, "rotates": false }, + { "id": "spell_scroll_gravity_well", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_hoary_blast", "fg": 930, "rotates": false }, + { "id": "spell_scroll_hoary_blast", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_holographic_transposition", "fg": 930, "rotates": false }, + { "id": "spell_scroll_holographic_transposition", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_holy_blade", "fg": 930, "rotates": false }, + { "id": "spell_scroll_holy_blade", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ice_shield", "fg": 930, "rotates": false }, + { "id": "spell_scroll_ice_shield", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ice_spike", "fg": 930, "rotates": false }, + { "id": "spell_scroll_ice_spike", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_invisibility", "fg": 930, "rotates": false }, + { "id": "spell_scroll_invisibility", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_jolt", "fg": 930, "rotates": false }, + { "id": "spell_scroll_jolt", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_lava_bomb", "fg": 930, "rotates": false }, + { "id": "spell_scroll_lava_bomb", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_laze", "fg": 930, "rotates": false }, + { "id": "spell_scroll_laze", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_lightning_blast", "fg": 930, "rotates": false }, + { "id": "spell_scroll_lightning_blast", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_lightning_bolt", "fg": 930, "rotates": false }, + { "id": "spell_scroll_lightning_bolt", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_light_healing", "fg": 930, "rotates": false }, + { "id": "spell_scroll_light_healing", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magic_missile", "fg": 930, "rotates": false }, + { "id": "spell_scroll_magic_missile", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_escape", "fg": 930, "rotates": false }, + { "id": "spell_scroll_magus_escape", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_haste", "fg": 930, "rotates": false }, + { "id": "spell_scroll_magus_haste", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_mana_beam", "fg": 930, "rotates": false }, + { "id": "spell_scroll_magus_mana_beam", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_mana_blast", "fg": 930, "rotates": false }, + { "id": "spell_scroll_magus_mana_blast", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_mana_bolt", "fg": 930, "rotates": false }, + { "id": "spell_scroll_magus_mana_bolt", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_megablast", "fg": 930, "rotates": false }, + { "id": "spell_scroll_megablast", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_mirror_image", "fg": 930, "rotates": false }, + { "id": "spell_scroll_mirror_image", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_necrotic_gaze", "fg": 930, "rotates": false }, + { "id": "spell_scroll_necrotic_gaze", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_nova_flare", "fg": 930, "rotates": false }, + { "id": "spell_scroll_nova_flare", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_obfuscated_body", "fg": 930, "rotates": false }, + { "id": "spell_scroll_obfuscated_body", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ogres_strength", "fg": 930, "rotates": false }, + { "id": "spell_scroll_ogres_strength", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_pain_split", "fg": 930, "rotates": false }, + { "id": "spell_scroll_pain_split", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_phase_door", "fg": 930, "rotates": false }, + { "id": "spell_scroll_phase_door", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_point_flare", "fg": 930, "rotates": false }, + { "id": "spell_scroll_point_flare", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_protection_aura", "fg": 930, "rotates": false }, + { "id": "spell_scroll_protection_aura", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_purification_seed", "fg": 930, "rotates": false }, + { "id": "spell_scroll_purification_seed", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_quantum_tunnel_lesser", "fg": 930, "rotates": false }, + { "id": "spell_scroll_quantum_tunnel_lesser", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_bionic_power", "fg": 930, "rotates": false }, + { "id": "spell_scroll_recover_bionic_power", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_fatigue", "fg": 930, "rotates": false }, + { "id": "spell_scroll_recover_fatigue", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_mana", "fg": 930, "rotates": false }, + { "id": "spell_scroll_recover_mana", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_pain", "fg": 930, "rotates": false }, + { "id": "spell_scroll_recover_pain", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_stamina", "fg": 930, "rotates": false }, + { "id": "spell_scroll_recover_stamina", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_seismic_stomp", "fg": 930, "rotates": false }, + { "id": "spell_scroll_seismic_stomp", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_animated_blade", "fg": 930, "rotates": false }, + { "id": "spell_scroll_animated_blade", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_magic_motorcycle", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_magic_motorcycle", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_smite", "fg": 930, "rotates": false }, + { "id": "spell_scroll_smite", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_spirit_armor", "fg": 930, "rotates": false }, + { "id": "spell_scroll_spirit_armor", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_stonefist", "fg": 930, "rotates": false }, + { "id": "spell_scroll_stonefist", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_stormshaper_ionization", "fg": 930, "rotates": false }, + { "id": "spell_scroll_stormshaper_ionization", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_stormshaper_wall_of_fog", "fg": 930, "rotates": false }, + { "id": "spell_scroll_stormshaper_wall_of_fog", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_storm_hammer", "fg": 930, "rotates": false }, + { "id": "spell_scroll_storm_hammer", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_cats", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_cats", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_decayed_pouncer", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_decayed_pouncer", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_bonespear", "fg": 930, "rotates": false }, + { "id": "spell_scroll_bio_bonespear", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_skeleton", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_skeleton", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_wisps", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_wisps", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_wolf", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_wolf", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_zombie", "fg": 930, "rotates": false }, + { "id": "spell_scroll_summon_zombie", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_synaptic_stimulation", "fg": 930, "rotates": false }, + { "id": "spell_scroll_synaptic_stimulation", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_taze", "fg": 930, "rotates": false }, + { "id": "spell_scroll_taze", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_vicious_tentacle", "fg": 930, "rotates": false }, + { "id": "spell_scroll_vicious_tentacle", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_windrun", "fg": 930, "rotates": false }, + { "id": "spell_scroll_windrun", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_windstrike", "fg": 930, "rotates": false }, + { "id": "spell_scroll_windstrike", "fg": 930, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_x-ray", "fg": 930, "rotates": false }, + { "id": "spell_scroll_x-ray", "fg": 930, "rotates": false }, + { "id": "cauldron_demon_chitin", "fg": 931, "rotates": false }, + { "id": "overlay_wielded_cauldron_demon_chitin", "fg": 932, "rotates": false }, + { "id": "cauldron_orichalcum", "fg": 933, "rotates": false }, + { "id": "overlay_wielded_cauldron_orichalcum", "fg": 934, "rotates": false }, + { "id": "demon_forge", "fg": 935, "rotates": false }, + { "id": "overlay_wielded_demon_forge", "fg": 936, "rotates": false }, + { "id": "overlay_wielded_sewing_kit", "fg": 937, "rotates": false }, + { "id": "sewing_kit", "fg": 937, "rotates": false }, + { "id": "overlay_wielded_tailors_kit", "fg": 938 }, + { "id": "tailors_kit", "fg": 938 }, + { "id": "fold_orichalcum_frame", "fg": 939, "rotates": false }, + { "id": "overlay_wielded_fold_orichalcum_frame", "fg": 940, "rotates": false }, + { "id": "orichalcum_frame", "fg": 941, "rotates": false }, + { "id": "overlay_wielded_orichalcum_frame", "fg": 942, "rotates": false }, + { "id": "lizardfolk_club", "fg": 943, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_club", "fg": 944, "rotates": false }, + { "id": "lizardfolk_javelin", "fg": 945, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_javelin", "fg": 946, "rotates": false }, + { "id": "lizardfolk_javelin_gun", "fg": 947, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_javelin_gun", "fg": 947, "rotates": false }, + { "id": "novice_kelvin_spellbook", "fg": 948, "rotates": false }, + { "id": "novice_earth_spellbook", "fg": 949, "rotates": false }, + { "id": "novice_storm_spellbook", "fg": 950, "rotates": false }, + { "id": "cestus", "fg": 951, "bg": 3, "rotates": false }, + { "id": "mana", "fg": 952, "rotates": false }, + { "id": "overlay_wielded_mana", "fg": 952, "rotates": false }, + { "id": "gaul_maraz", "fg": 953, "rotates": false }, + { "id": "overlay_wielded_gaul_maraz", "fg": 954, "rotates": false }, + { "id": "true_gaul_maraz", "fg": 955, "rotates": false }, + { "id": "overlay_wielded_true_gaul_maraz", "fg": 956, "rotates": false }, + { "id": "dbone_longsword", "fg": 957, "rotates": false }, + { "id": "dbone_battleaxe", "fg": 958, "rotates": false }, + { "id": "dbone_qiang", "fg": 959, "rotates": false }, + { "id": "dbone_tachi", "fg": 960, "rotates": false }, + { "id": "overlay_wielded_dbone_longsword", "fg": 961, "rotates": false }, + { "id": "overlay_wielded_dbone_battleaxe", "fg": 962, "rotates": false }, + { "id": "overlay_wielded_dbone_qiang", "fg": 963, "rotates": false }, + { "id": "overlay_wielded_dbone_tachi", "fg": 964, "rotates": false }, + { "id": "black_dbone_longsword", "fg": 965, "rotates": false }, + { "id": "black_dbone_battleaxe", "fg": 966, "rotates": false }, + { "id": "black_dbone_qiang", "fg": 967, "rotates": false }, + { "id": "black_dbone_tachi", "fg": 968, "rotates": false }, + { "id": "overlay_wielded_black_dbone_longsword", "fg": 969, "rotates": false }, + { "id": "overlay_wielded_black_dbone_battleaxe", "fg": 970, "rotates": false }, + { "id": "overlay_wielded_black_dbone_qiang", "fg": 971, "rotates": false }, + { "id": "overlay_wielded_black_dbone_tachi", "fg": 972, "rotates": false } + ], + "//": "range 513 to 1280", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": 0 + }, + { + "file": "MagicalNights_Monsters.png", + "tiles": [ + { "id": "mon_demon_spider", "fg": 1281, "bg": 4, "rotates": false }, + { "id": "corpse_mon_demon_spider", "fg": 1282, "rotates": false }, + { "id": "mon_demon_spiderling", "fg": 1283, "bg": 4, "rotates": false }, + { "id": "corpse_mon_demon_spiderling", "fg": 1284, "rotates": false }, + { "id": "mon_dragon_black_wyrmling", "fg": 1285, "bg": 4, "rotates": false }, + { "id": "corpse_mon_dragon_black_wyrmling", "fg": 1286, "rotates": false }, + { "id": "mon_forgedemons", "fg": 1287, "bg": 4, "rotates": false }, + { "id": "corpse_mon_forgedemons", "fg": 1288, "rotates": false }, + { + "id": "mon_forgedwarves", + "fg": [ + { "weight": 3, "sprite": 1289 }, + { "weight": 3, "sprite": 1290 }, + { "weight": 3, "sprite": 1291 }, + { "weight": 3, "sprite": 1292 }, + { "weight": 3, "sprite": 1296 }, + { "weight": 3, "sprite": 1297 }, + { "weight": 3, "sprite": 1298 }, + { "weight": 3, "sprite": 1299 } + ], + "bg": 2, + "rotates": false + }, + { "id": "mon_mirror_image", "fg": 1293 }, + { "id": "mon_yulecat_cub", "fg": 1294, "bg": 4, "rotates": false }, + { "id": "corpse_mon_yulecat_cub", "fg": 1295, "rotates": false }, + { "id": "mon_forgemaster1", "fg": 1296, "bg": 2, "rotates": false }, + { "id": "corpse_mon_forgedwarves", "fg": 1300, "rotates": false }, + { "id": "corpse_mon_forgemaster1", "fg": 1300, "rotates": false }, + { + "id": "mon_goblin_chieftain", + "fg": [ + { "weight": 3, "sprite": 1302 }, + { "weight": 3, "sprite": 1303 }, + { "weight": 3, "sprite": 1304 }, + { "weight": 3, "sprite": 1305 }, + { "weight": 3, "sprite": 1306 }, + { "weight": 3, "sprite": 1307 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_goblin_chieftain", "fg": 1308, "rotates": false }, + { + "id": "mon_goblin_slinger", + "fg": [ + { "weight": 3, "sprite": 1309 }, + { "weight": 3, "sprite": 1310 }, + { "weight": 3, "sprite": 1311 }, + { "weight": 3, "sprite": 1312 }, + { "weight": 3, "sprite": 1313 }, + { "weight": 3, "sprite": 1314 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_goblin_slinger", "fg": 1315, "rotates": false }, + { + "id": "mon_goblin_warrior", + "fg": [ + { "weight": 3, "sprite": 1316 }, + { "weight": 3, "sprite": 1317 }, + { "weight": 3, "sprite": 1318 }, + { "weight": 3, "sprite": 1319 }, + { "weight": 3, "sprite": 1320 }, + { "weight": 3, "sprite": 1321 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_goblin_warrior", "fg": 1322, "rotates": false }, + { "id": "mon_leprechaun", "fg": 1323, "bg": 4, "rotates": false }, + { "id": "corpse_mon_leprechaun", "fg": 1324, "rotates": false }, + { "id": "mon_workshop_elf", "fg": 1325, "bg": 4, "rotates": false }, + { "id": "corpse_mon_workshop_elf", "fg": 1326, "rotates": false }, + { "id": "mon_crocodile", "fg": 1327, "rotates": false }, + { "id": "corpse_mon_crocodile", "fg": 1328, "rotates": false }, + { "id": "mon_baleful_polymorph_frog", "fg": 1329, "bg": 1, "rotates": false }, + { "id": "corpse_mon_baleful_polymorph_frog", "fg": 1330, "rotates": false }, + { "id": "mon_black_pudding", "fg": 1331, "rotates": false }, + { "id": "mon_krabgek", "fg": 1332, "bg": 4, "rotates": false }, + { "id": "corpse_mon_krabgek", "fg": 1333, "rotates": false }, + { "id": "mon_lemure", "fg": 1334, "bg": 4, "rotates": false }, + { "id": "corpse_mon_lemure", "fg": 1335, "rotates": false }, + { "id": "mon_loup_garou", "fg": 1336, "bg": 4 }, + { "id": "mon_owlbear", "fg": 1337 }, + { "id": "corpse_mon_owlbear", "fg": 1338 }, + { "id": "mon_owlbear_cub", "fg": 1339 }, + { "id": "corpse_mon_owlbear_cub", "fg": 1340 }, + { "id": "mon_winter_wolf", "fg": 1341, "bg": 4, "rotates": false }, + { "id": "corpse_mon_winter_wolf", "fg": 1342, "rotates": false }, + { "id": "mon_shrieker", "fg": 1343, "bg": 4, "rotates": false }, + { "id": "corpse_mon_shrieker", "fg": 1344, "rotates": false }, + { "id": "mon_stirge", "fg": 1345, "rotates": false }, + { "id": "corpse_mon_stirge", "fg": 1346, "rotates": false }, + { + "id": "mon_wisp", + "fg": [ + { "weight": 3, "sprite": 1347 }, + { "weight": 3, "sprite": 1348 }, + { "weight": 3, "sprite": 1349 }, + { "weight": 3, "sprite": 1350 } + ] + }, + { "id": "mon_animated_blade", "fg": 1351 }, + { + "id": "mon_orc_archer", + "fg": [ + { "weight": 3, "sprite": 1352 }, + { "weight": 3, "sprite": 1353 }, + { "weight": 3, "sprite": 1354 }, + { "weight": 3, "sprite": 1355 }, + { "weight": 3, "sprite": 1356 }, + { "weight": 3, "sprite": 1357 } + ], + "bg": 4, + "rotates": false + }, + { "id": "corpse_mon_orc_archer", "fg": 1358, "rotates": false }, + { + "id": "mon_orc_blood_warrior", + "fg": [ + { "weight": 3, "sprite": 1359 }, + { "weight": 3, "sprite": 1360 }, + { "weight": 3, "sprite": 1361 }, + { "weight": 3, "sprite": 1362 }, + { "weight": 3, "sprite": 1363 }, + { "weight": 3, "sprite": 1364 } + ], + "bg": 4, + "rotates": false + }, + { "id": "corpse_mon_orc_blood_warrior", "fg": 1365, "rotates": false }, + { + "id": "mon_orc_warrior", + "fg": [ + { "weight": 3, "sprite": 1366 }, + { "weight": 3, "sprite": 1367 }, + { "weight": 3, "sprite": 1368 }, + { "weight": 3, "sprite": 1369 }, + { "weight": 3, "sprite": 1370 }, + { "weight": 3, "sprite": 1371 } + ], + "bg": 4, + "rotates": false + }, + { "id": "corpse_mon_orc_warrior", "fg": 1372, "rotates": false }, + { "id": "mon_were_zolf", "fg": 1373, "bg": 4 }, + { "id": "mon_zorc", "fg": 1374, "bg": 4 }, + { "id": "corpse_mon_zorc", "fg": 1375, "rotates": false }, + { "id": "broken_claygolem", "fg": 1376, "rotates": false }, + { "id": "overlay_wielded_broken_claygolem", "fg": 1376, "rotates": false }, + { "id": "broken_irongolem", "fg": 1377, "rotates": false }, + { "id": "overlay_wielded_broken_irongolem", "fg": 1377, "rotates": false }, + { "id": "broken_plasticgolem", "fg": 1378, "rotates": false }, + { "id": "overlay_wielded_broken_plasticgolem", "fg": 1378, "rotates": false }, + { "id": "broken_stonegolem", "fg": 1379, "rotates": false }, + { "id": "overlay_wielded_broken_stonegolem", "fg": 1379, "rotates": false }, + { "id": "broken_resingolem_fresh", "fg": 1380, "rotates": false }, + { "id": "overlay_wielded_broken_resingolem_fresh", "fg": 1380, "rotates": false }, + { "id": "broken_resingolem_half", "fg": 1381, "rotates": false }, + { "id": "overlay_wielded_broken_resingolem_half", "fg": 1381, "rotates": false }, + { "id": "broken_resingolem_cured", "fg": 1382, "rotates": false }, + { "id": "overlay_wielded_broken_resingolem_cured", "fg": 1382, "rotates": false } + ], + "//": "range 1281 to 1536", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": 0 + }, + { + "file": "MagicalNights_normal_offset.png", + "tiles": [ { "id": "overlay_worn_wizard_hat", "fg": 1537, "rotates": false } ], + "//": "range 1537 to 1552", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": -16 + }, + { + "file": "MagicalNights_large.png", + "tiles": [ + { "id": "bg_big_dirt", "fg": 1553, "rotates": false }, + { "id": "bg_big_golem_shadow", "fg": 1554, "rotates": false }, + { "id": "bg_big_large_shadow", "fg": 1556, "rotates": false }, + { "id": "bg_big_normal_shadow", "fg": 1556, "rotates": false }, + { "id": "bg_big_snow", "fg": 1557, "rotates": false }, + { "id": "bg_big_tall_shadow", "fg": 1558, "rotates": false }, + { "id": "f_alembic", "fg": 1559, "rotates": false }, + { + "id": "f_everburning_candelabra", + "fg": [ { "weight": 11, "sprite": 1560 }, { "weight": 11, "sprite": 1561 }, { "weight": 11, "sprite": 1562 } ], + "rotates": false, + "animated": true + }, + { "id": "f_glow_boulder", "fg": 1563, "rotates": false }, + { "id": "f_glow_boulder_season_autumn", "fg": 1564, "rotates": false }, + { "id": "f_glow_boulder_season_spring", "fg": 1565, "rotates": false }, + { "id": "f_glow_boulder_season_summer", "fg": 1566, "rotates": false }, + { "id": "f_glow_boulder_season_winter", "fg": 1567, "rotates": false }, + { "id": "f_huge_mana_crystal", "fg": 1568, "rotates": false }, + { "id": "overlay_worn_magic_lamp", "fg": 1569, "rotates": false }, + { "id": "overlay_worn_magic_light", "fg": 1570, "rotates": false }, + { "id": "overlay_wielded_gungnir", "fg": 1571, "rotates": false }, + { + "id": [ + "magic_academy_ground", + "magic_academy_2nd", + "magic_academy_3rd", + "magic_academy_4th", + "magic_academy_5th", + "magic_academy_6th", + "magic_academy_7th", + "magic_academy_8th" + ], + "fg": 1572, + "rotates": false + }, + { "id": "mon_demon_spider_queen", "fg": 1573, "rotates": false }, + { "id": "corpse_mon_demon_spider_queen", "fg": 1574, "rotates": false }, + { "id": "mon_dragon_black_young", "fg": 1575, "rotates": false }, + { "id": "corpse_mon_dragon_black_young", "fg": 1576, "rotates": false }, + { "id": "mon_forgeborn", "fg": 1577, "bg": 1558, "rotates": false }, + { "id": "corpse_mon_forgeborn", "fg": 1578, "rotates": false }, + { "id": "mon_claygolem", "fg": 1579, "bg": 1554, "rotates": false }, + { "id": "mon_irongolem", "fg": 1580, "bg": 1554, "rotates": false }, + { "id": "mon_plasticgolem", "fg": 1581, "bg": 1554, "rotates": false }, + { "id": "mon_stonegolem", "fg": 1582, "bg": 1554, "rotates": false }, + { "id": "mon_yulecat", "fg": 1583, "bg": 1555, "rotates": false }, + { "id": "corpse_mon_yulecat", "fg": 1584, "rotates": false }, + { "id": "mon_lizardfolk_chieftan", "fg": 1585, "rotates": false }, + { "id": "corpse_mon_lizardfolk_chieftan", "fg": 1586, "rotates": false }, + { "id": "mon_lizardfolk_hunter", "fg": 1587, "rotates": false }, + { "id": "corpse_mon_lizardfolk_hunter", "fg": 1588, "rotates": false }, + { "id": "mon_lizardfolk_shaman", "fg": 1589, "rotates": false }, + { "id": "corpse_mon_lizardfolk_shaman", "fg": 1590, "rotates": false }, + { "id": "mon_lizardfolk_warrior", "fg": 1591, "rotates": false }, + { "id": "corpse_mon_lizardfolk_warrior", "fg": 1592, "rotates": false }, + { "id": "mon_bulette", "fg": 1593, "rotates": false }, + { "id": "corpse_mon_bulette", "fg": 1594, "rotates": false }, + { "id": "mon_ogre", "fg": 1595, "rotates": false }, + { "id": "corpse_mon_ogre", "fg": 1596, "rotates": false }, + { "id": "mon_troll", "fg": 1597, "rotates": false }, + { "id": "corpse_mon_troll", "fg": 1598, "rotates": false }, + { + "id": "t_thconc_floor_echandelier", + "fg": [ { "weight": 11, "sprite": 1599 }, { "weight": 11, "sprite": 1600 }, { "weight": 11, "sprite": 1601 } ], + "bg": 1602, + "rotates": false, + "animated": true + }, + { "id": "t_tree_burnt", "fg": 1603, "bg": 1553, "rotates": false }, + { "id": "t_tree_burnt_season_autumn", "fg": 1604, "bg": 1553, "rotates": false }, + { "id": "t_tree_burnt_season_spring", "fg": 1605, "bg": 1553, "rotates": false }, + { "id": "t_tree_burnt_season_summer", "fg": 1606, "bg": 1553, "rotates": false }, + { "id": "t_tree_burnt_season_winter", "fg": 1607, "bg": 1557, "rotates": false }, + { "id": "mon_resingolem_fresh", "fg": 1608, "rotates": false }, + { "id": "mon_resingolem_half", "fg": 1609, "rotates": false }, + { "id": "mon_resingolem_cured", "fg": 1610, "rotates": false }, + { "id": "mon_mithrgolem", "fg": 1611, "rotates": false }, + { "id": "mon_orchigolem", "fg": 1612, "rotates": false } + ], + "//": "range 1553 to 1680", + "sprite_width": 64, + "sprite_height": 80, + "sprite_offset_x": -16, + "sprite_offset_y": -48 + }, + { + "file": "MagicalNights_huge.png", + "tiles": [ + { "id": "f_orrery", "fg": 1681, "rotates": false }, + { "id": "mon_dragon_black_adult", "fg": 1682, "rotates": false }, + { "id": "corpse_mon_dragon_black_adult", "fg": 1683, "rotates": false } + ], + "//": "range 1681 to 1696", + "sprite_width": 160, + "sprite_height": 128, + "sprite_offset_x": -48, + "sprite_offset_y": -48 + } + ] + } +] diff --git a/data/mods/Magical_Nights/modinfo.json b/data/mods/Magical_Nights/modinfo.json new file mode 100644 index 000000000000..c19e56d3d594 --- /dev/null +++ b/data/mods/Magical_Nights/modinfo.json @@ -0,0 +1,20 @@ +[ + { + "type": "MOD_INFO", + "id": "MagicalNights", + "name": "Magical Nights", + "authors": [ "Robbietheneko" ], + "maintainers": [ "Robbietheneko" ], + "description": "Bright Nights, but with magic! From the ashes of Magiclysm rises a new mod, and a new head at the controls. ", + "category": "content", + "conflicts": ["magiclysm"], + "dependencies": [ "bn" ] + }, + { + "type": "skill", + "id": "spellcraft", + "name": { "str": "Spellcraft" }, + "display_category": "display_ranged", + "description": "Your skill in the arcane. Represents magic theory and all that entails. A higher skill increases how quickly you can learn spells, and decreases their spell failure chance. You learn this skill by studying books or spells." + } +] diff --git a/data/mods/Magical_Nights/monster_attacks.json b/data/mods/Magical_Nights/monster_attacks.json new file mode 100644 index 000000000000..f2b297a8a459 --- /dev/null +++ b/data/mods/Magical_Nights/monster_attacks.json @@ -0,0 +1,30 @@ +[ + { + "type": "monster_attack", + "attack_type": "melee", + "id": "skewer", + "cooldown": 20, + "move_cost": 180, + "damage_max_instance": [ { "damage_type": "stab", "amount": 15, "armor_penetration": 15, "armor_multiplier": 0.5 } ], + "body_parts": [ [ "torso", 1 ] ], + "effects": [ { "id": "bleed", "duration": 100, "bp": "torso" }, { "id": "downed", "duration": 3 } ], + "hit_dmg_u": "The %1$s impales your %2$s with its trident!", + "hit_dmg_npc": "The %1$s impales 's %2$s with its trident!", + "no_dmg_msg_u": "The %1$s tries to impale your %2$s with its trident, but fails to penetrate your armor!", + "no_dmg_msg_npc": "The %1$s tries to impale 's %2$s with its trident, but fails to penetrate their armor!" + }, + { + "type": "monster_attack", + "attack_type": "melee", + "id": "crush", + "cooldown": 20, + "move_cost": 180, + "damage_max_instance": [ { "damage_type": "bash", "amount": 8 } ], + "effects": [ { "id": "downed", "duration": 3 } ], + "body_parts": [ [ "head", 3 ], [ "eyes", 2 ], [ "mouth", 1 ], [ "arm_l", 3 ], [ "arm_r", 3 ], [ "torso", 4 ] ], + "hit_dmg_u": "The %1$s crushes your %2$s with its greatclub!", + "hit_dmg_npc": "The %1$s crushes 's %2$s with its greatclub!", + "no_dmg_msg_u": "The %1$s tries to crush your %2$s with its greatclub, but swings wide and stumbles.", + "no_dmg_msg_npc": "The %1$s tries to crush 's %2$s with its greatclub, but swings wide and stumbles." + } +] diff --git a/data/mods/Magical_Nights/monster_factions.json b/data/mods/Magical_Nights/monster_factions.json new file mode 100755 index 000000000000..e0b75264093d --- /dev/null +++ b/data/mods/Magical_Nights/monster_factions.json @@ -0,0 +1,31 @@ +[ + { + "type": "MONSTER_FACTION", + "name": "magical_beast" + }, + { + "type": "MONSTER_FACTION", + "name": "dragon_black", + "friendly": [ "ooze", "lizardfolk" ] + }, + { + "type": "MONSTER_FACTION", + "name": "ooze", + "friendly": [ "dragon_black", "lizardfolk", "ooze" ] + }, + { + "type": "MONSTER_FACTION", + "name": "lizardfolk", + "friendly": [ "dragon_black", "ooze", "lizardfolk" ] + }, + { + "type": "MONSTER_FACTION", + "name": "goblins", + "friendly": [ "orcs" ] + }, + { + "type": "MONSTER_FACTION", + "name": "orcs", + "friendly": [ "goblins" ] + } +] diff --git a/data/mods/Magical_Nights/monstergroups.json b/data/mods/Magical_Nights/monstergroups.json new file mode 100644 index 000000000000..631082a74714 --- /dev/null +++ b/data/mods/Magical_Nights/monstergroups.json @@ -0,0 +1,130 @@ +[ + { + "type": "monstergroup", + "name": "GROUP_NULL", + "is_safe": true, + "default": "mon_null" + }, + { + "type": "monstergroup", + "name": "GROUP_FOREST", + "default": "mon_null", + "is_animal": true, + "override": false, + "auto_total": true, + "monsters": [ + { "monster": "mon_owlbear", "freq": 7, "cost_multiplier": 10 }, + { "monster": "mon_wisp", "freq": 3, "cost_multiplier": 10, "conditions": [ "NIGHT" ] }, + { "monster": "mon_troll", "freq": 3, "cost_multiplier": 10, "conditions": [ "DAY" ] }, + { "monster": "mon_claygolem", "freq": 8, "cost_multiplier": 3 }, + { "monster": "mon_stonegolem", "freq": 4, "cost_multiplier": 5 }, + { "monster": "mon_irongolem", "freq": 2, "cost_multiplier": 8 }, + { "monster": "mon_demon_spiderling", "freq": 15, "cost_multiplier": 5, "pack_size": [ 3, 7 ] } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_SWAMP", + "default": "mon_null", + "is_animal": true, + "override": false, + "auto_total": true, + "monsters": [ + { "monster": "mon_black_pudding", "freq": 14, "cost_multiplier": 1, "pack_size": [ 4, 6 ] }, + { "monster": "mon_stirge", "freq": 7, "cost_multiplier": 1, "pack_size": [ 2, 8 ] }, + { "monster": "mon_wisp", "freq": 5, "cost_multiplier": 10, "conditions": [ "NIGHT" ] }, + { "monster": "mon_wisp", "freq": 1, "cost_multiplier": 10, "conditions": [ "NIGHT" ], "pack_size": [ 1, 3 ] }, + { "monster": "mon_dragon_black_wyrmling", "freq": 2, "cost_multiplier": 50 }, + { "monster": "mon_dragon_black_young", "freq": 1, "cost_multiplier": 65 }, + { "monster": "mon_lizardfolk_warrior", "freq": 20, "cost_multiplier": 1, "pack_size": [ 2, 4 ] }, + { "monster": "mon_lizardfolk_hunter", "freq": 30, "cost_multiplier": 4, "pack_size": [ 1, 2 ] }, + { "monster": "mon_lizardfolk_shaman", "freq": 10, "cost_multiplier": 30 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_CAVE", + "default": "mon_null", + "is_animal": true, + "override": false, + "auto_total": true, + "monsters": [ + { "monster": "mon_owlbear", "freq": 100, "cost_multiplier": 10, "pack_size": [ 2, 4 ] }, + { "monster": "mon_shrieker", "freq": 10, "cost_multiplier": 1 }, + { "monster": "mon_lemure", "freq": 5, "cost_multiplier": 2, "pack_size": [ 1, 4 ] } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_WORM", + "default": "mon_worm", + "is_animal": true, + "override": false, + "auto_total": true, + "monsters": [ { "monster": "mon_bulette", "freq": 5, "cost_multiplier": 40 } ] + }, + { + "type": "monstergroup", + "name": "GROUP_BLACKDRAGON_LAIR_1", + "default": "mon_null", + "is_animal": true, + "monsters": [ + { "monster": "mon_black_pudding", "freq": 14, "cost_multiplier": 1, "pack_size": [ 4, 6 ] }, + { "monster": "mon_wisp", "freq": 5, "cost_multiplier": 10, "conditions": [ "NIGHT" ] }, + { "monster": "mon_wisp", "freq": 1, "cost_multiplier": 10, "conditions": [ "NIGHT" ], "pack_size": [ 1, 3 ] }, + { "monster": "mon_bat", "freq": 5, "cost_multiplier": 5, "pack_size": [ 6, 10 ] }, + { "monster": "mon_rattlesnake", "freq": 5, "cost_multiplier": 1 }, + { "monster": "mon_rattlesnake_giant", "freq": 5, "cost_multiplier": 2 }, + { "monster": "mon_black_rat", "freq": 10, "cost_multiplier": 1 }, + { "monster": "mon_dragon_black_wyrmling", "freq": 2, "cost_multiplier": 50 }, + { "monster": "mon_lizardfolk_warrior", "freq": 20, "cost_multiplier": 1, "pack_size": [ 2, 4 ] }, + { "monster": "mon_lizardfolk_hunter", "freq": 30, "cost_multiplier": 4, "pack_size": [ 1, 2 ] }, + { "monster": "mon_crocodile", "freq": 20, "cost_multiplier": 10, "pack_size": [ 1, 4 ] }, + { "monster": "mon_lizardfolk_shaman", "freq": 2, "cost_multiplier": 30 }, + { "monster": "mon_lizardfolk_chieftan", "freq": 1, "cost_multiplier": 50 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_BLACKDRAGON_LAIR_2", + "default": "mon_lizardfolk_warrior", + "is_animal": true, + "monsters": [ + { "monster": "mon_black_pudding", "freq": 14, "cost_multiplier": 1, "pack_size": [ 4, 6 ] }, + { "monster": "mon_dragon_black_wyrmling", "freq": 2, "cost_multiplier": 50 }, + { "monster": "mon_dragon_black_young", "freq": 1, "cost_multiplier": 65 }, + { "monster": "mon_lizardfolk_warrior", "freq": 20, "cost_multiplier": 1, "pack_size": [ 2, 4 ] }, + { "monster": "mon_lizardfolk_hunter", "freq": 30, "cost_multiplier": 4, "pack_size": [ 1, 2 ] }, + { "monster": "mon_crocodile", "freq": 30, "cost_multiplier": 30, "pack_size": [ 1, 4 ] }, + { "monster": "mon_lizardfolk_shaman", "freq": 10, "cost_multiplier": 30 }, + { "monster": "mon_lizardfolk_chieftan", "freq": 10, "cost_multiplier": 50 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_LIZARDFOLK", + "default": "mon_lizardfolk_warrior", + "//": "A lizard humanoid race, they are allies and servants of the black dragons.", + "is_animal": true, + "monsters": [ + { "monster": "mon_lizardfolk_warrior", "freq": 20, "cost_multiplier": 1, "pack_size": [ 2, 4 ] }, + { "monster": "mon_lizardfolk_hunter", "freq": 30, "cost_multiplier": 4, "pack_size": [ 1, 2 ] }, + { "monster": "mon_crocodile", "freq": 30, "cost_multiplier": 30, "pack_size": [ 1, 4 ] }, + { "monster": "mon_lizardfolk_shaman", "freq": 10, "cost_multiplier": 30 }, + { "monster": "mon_lizardfolk_chieftan", "freq": 10, "cost_multiplier": 50 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_TOWER_GOLEM", + "default": "mon_plasticgolem", + "//": "Cheap golems used to defend the average wizard's tower.", + "monsters": [ + { "monster": "mon_plasticgolem", "freq": 60, "cost_multiplier": 1 }, + { "monster": "mon_resingolem_fresh", "freq": 30, "cost_multiplier": 1 }, + { "monster": "mon_claygolem", "freq": 20, "cost_multiplier": 1 }, + { "monster": "mon_stonegolem", "freq": 10, "cost_multiplier": 1 }, + { "monster": "mon_irongolem", "freq": 5, "cost_multiplier": 1 } + ] + } +] diff --git a/data/mods/Magical_Nights/monstergroups_egg.json b/data/mods/Magical_Nights/monstergroups_egg.json new file mode 100644 index 000000000000..c83689d2b043 --- /dev/null +++ b/data/mods/Magical_Nights/monstergroups_egg.json @@ -0,0 +1,7 @@ +[ + { + "name": "GROUP_EGG_OWLBEAR", + "type": "monstergroup", + "default": "mon_owlbear_cub" + } +] diff --git a/data/mods/Magical_Nights/monsters.json b/data/mods/Magical_Nights/monsters.json new file mode 100644 index 000000000000..6995b718c767 --- /dev/null +++ b/data/mods/Magical_Nights/monsters.json @@ -0,0 +1,82 @@ +[ + { + "id": "mon_mirror_image", + "type": "MONSTER", + "name": "hologram", + "description": "An image made from light, nearly identical to the real deal.", + "looks_like": "player", + "default_faction": "factionless", + "species": [ "UNKNOWN" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 1, + "speed": 150, + "symbol": "@", + "color": "cyan", + "aggression": -99, + "morale": 2, + "luminance": 16, + "dodge": 6, + "harvest": "exempt", + "fear_triggers": [ "PLAYER_CLOSE" ], + "special_attacks": [ [ "DISAPPEAR", 200 ] ], + "death_function": [ "DISAPPEAR" ], + "flags": [ "FLIES", "NO_BREATHE", "NOT_HALLUCINATION", "HARDTOSHOOT" ] + }, + { + "id": "mon_animated_blade", + "type": "MONSTER", + "name": "animated blade", + "description": "A conjured glowing longsword that darts and dodges around, slicing and cutting your foes into small pieces.", + "looks_like": "longsword", + "default_faction": "player", + "volume": "62500 ml", + "weight": "81500 g", + "hp": 30, + "speed": 120, + "symbol": "/", + "color": "white", + "aggression": 100, + "morale": 100, + "melee_skill": 5, + "melee_dice": 1, + "melee_dice_sides": 10, + "melee_cut": 10, + "dodge": 6, + "luminance": 16, + "path_settings": { "max_dist": 10 }, + "armor_bash": 2, + "armor_cut": 2, + "armor_bullet": 2, + "vision_day": 30, + "vision_night": 30, + "material": [ "steel" ], + "harvest": "exempt", + "death_function": [ "MELT" ], + "flags": [ "SEES", "HEARS", "NOHEAD", "HARDTOSHOOT", "FLIES", "PRIORITIZE_TARGETS", "NO_BREATHE", "NOGIB" ] + }, + { + "id": "mon_summoned_zombie", + "type": "MONSTER", + "copy-from": "mon_zombie", + "name": "Summoned Zombie", + "description": "A summoned zombie. Slightly more intelligent than its wild cousins.", + "path_settings": { "max_dist": 10 } + }, + { + "id": "mon_summoned_skeleton", + "type": "MONSTER", + "copy-from": "mon_skeleton", + "name": "Summoned Skeleton", + "description": "A summoned skeleton. Slightly more intelligent than its wild cousins. Seems like it somehow enjoys puns.", + "path_settings": { "max_dist": 10 } + }, + { + "id": "mon_summoned_zougar", + "type": "MONSTER", + "copy-from": "mon_zougar", + "name": "Summoned Decayed Pouncer", + "description": "A summoned zombie cougar. Slightly more intelligent than its wild cousins.", + "path_settings": { "max_dist": 10 } + } +] diff --git a/data/mods/Magical_Nights/monsters/demon_spider.json b/data/mods/Magical_Nights/monsters/demon_spider.json new file mode 100644 index 000000000000..6b4223e5aa45 --- /dev/null +++ b/data/mods/Magical_Nights/monsters/demon_spider.json @@ -0,0 +1,119 @@ +[ + { + "type": "SPECIES", + "id": "DEMON_SPIDER", + "name": { "str": "demon spider" }, + "anger_triggers": [ "FRIEND_DIED", "HURT", "PLAYER_CLOSE", "PLAYER_WEAK" ] + }, + { + "id": "demon_spider_queen", + "type": "harvest", + "//": "separate harvest entry for future special alchemical items", + "entries": [ + { "drop": "blood_tainted", "type": "blood", "mass_ratio": 0.1 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.05 }, + { "drop": "demon_chitin_piece", "type": "bone", "mass_ratio": 0.04 }, + { "drop": "demon_chitin_plate", "type": "skin", "mass_ratio": 0.01 }, + { "drop": "demon_spider_fang", "base_num": [ 0, 0 ], "scale_num": [ 0.1, 0.6 ], "max": 2, "type": "flesh" } + ] + }, + { + "type": "MONSTER_FACTION", + "name": "demon_spider", + "base_faction": "spider" + }, + { + "id": "mon_demon_spiderling", + "type": "MONSTER", + "name": "demon spiderling", + "description": "Despite it being the size of a small dog, you can tell this is a very young spider. Its red color is why you gave it this name; you have never seen this creature before the Cataclysm. It is quick, and its large fangs drip with venom.", + "default_faction": "demon_spider", + "bodytype": "spider", + "species": [ "DEMON_SPIDER" ], + "material": [ "iflesh", "demon_chitin" ], + "diff": 2, + "volume": "30000 ml", + "weight": "40750 g", + "hp": 30, + "speed": 150, + "symbol": "s", + "color": "red", + "aggression": -10, + "morale": 100, + "melee_skill": 3, + "melee_dice": 1, + "melee_dice_sides": 8, + "melee_cut": 4, + "dodge": 3, + "armor_bash": 1, + "armor_cut": 8, + "armor_stab": 8, + "armor_bullet": 8, + "armor_acid": 3, + "armor_fire": 80, + "vision_day": 5, + "vision_night": 7, + "harvest": "demon_spider", + "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], + "death_function": [ "NORMAL" ], + "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PUSH_MON" ] + }, + { + "id": "mon_demon_spider", + "type": "MONSTER", + "description": "This spider is the size of a car. Its huge compound eyes seem to be infinite pools of blackness that seem to suck the light out of the air. Its maroon carapace is studded with wicked-looking spikes that drip with some kind of viscious black liquid that sizzles when it touches the ground.", + "name": "demon spider", + "default_faction": "demon_spider", + "bodytype": "spider", + "species": [ "DEMON_SPIDER" ], + "material": [ "iflesh", "demon_chitin" ], + "diff": 7, + "weight": "125 kg", + "//": "monster can't be any bigger because of limits of volume on tiles. if there is a way designed around this, it should be about 3500 L", + "volume": "1000 L", + "hp": 325, + "speed": 95, + "symbol": "S", + "color": "red", + "aggression": 50, + "morale": 100, + "melee_skill": 5, + "melee_dice": 5, + "melee_dice_sides": 10, + "melee_cut": 12, + "dodge": 1, + "armor_bash": 5, + "armor_cut": 45, + "armor_stab": 60, + "armor_bullet": 60, + "armor_acid": 10, + "armor_fire": 80, + "vision_day": 6, + "vision_night": 12, + "harvest": "demon_spider", + "special_attacks": [ { "type": "spell", "spell_data": { "id": "monster_burning_hands", "min_level": 4 }, "cooldown": 20 } ], + "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT", "STALK", "PLAYER_WEAK", "PLAYER_CLOSE" ], + "death_function": [ "NORMAL" ], + "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PUSH_MON" ] + }, + { + "id": "mon_demon_spider_queen", + "type": "MONSTER", + "name": "demon spider queen", + "description": "This gigantic spider is the size of a moving van: you have no idea how it manages to stay together, much less move with that bulk. Its abdomen is huge and swollen-looking, and an evil intelligence burns in its eyes even as magic crackles around its chitinous barbs.", + "copy-from": "mon_demon_spider", + "weight": "250 kg", + "hp": 1400, + "speed": 25, + "aggression": 100, + "melee_skill": 8, + "melee_dice_sides": 20, + "melee_cut": 30, + "vision_day": 12, + "vision_night": 18, + "harvest": "demon_spider_queen", + "flags": [ "SEES", "SMELLS", "HEARS", "VENOM", "WEBWALK", "CLIMBS", "HARDTOSHOOT", "PUSH_MON", "STUN_IMMUNE" ], + "special_attacks": [ { "type": "spell", "spell_data": { "id": "mon_summon_demon_spiderlings" }, "cooldown": 256 } ] + } +] diff --git a/data/mods/Magical_Nights/monsters/dragon.json b/data/mods/Magical_Nights/monsters/dragon.json new file mode 100644 index 000000000000..a9bde8a48da6 --- /dev/null +++ b/data/mods/Magical_Nights/monsters/dragon.json @@ -0,0 +1,156 @@ +[ + { + "id": "fd_fright", + "type": "field_type", + "intensity_levels": [ + { + "name": "dreadful presense", + "sym": "8", + "dangerous": true, + "effects": [ + { + "effect_id": "eff_frightful_presence", + "body_part": "torso", + "intensity": 1, + "min_duration": "2 seconds", + "max_duration": "2 seconds", + "is_environmental": false + } + ] + }, + { + "name": "frightful presense", + "color": "light_gray", + "effects": [ + { + "effect_id": "eff_frightful_presence", + "body_part": "torso", + "intensity": 2, + "min_duration": "2 seconds", + "max_duration": "2 seconds", + "is_environmental": false + } + ] + }, + { + "name": "terrifying presense", + "color": "dark_gray", + "effects": [ + { + "effect_id": "eff_frightful_presence", + "body_part": "torso", + "intensity": 3, + "min_duration": "2 seconds", + "max_duration": "2 seconds", + "is_environmental": false + } + ] + } + ], + "decay_amount_factor": 5, + "gas_absorption_factor": 12, + "dirty_transparency_cache": true, + "percent_spread": 40, + "outdoor_age_speedup": "0 turns", + "immunity_data": { "body_part_env_resistance": [ [ "eyes", 12 ] ] }, + "priority": 8, + "half_life": "2 minutes", + "phase": "gas", + "accelerated_decay": true, + "display_field": false + }, + { + "id": "emit_dragon_adult_fright", + "type": "emit", + "field": "fd_fright", + "intensity": 2, + "qty": 60 + }, + { + "id": "mon_dragon_black_wyrmling", + "type": "MONSTER", + "name": "black dragon wyrmling", + "description": "This is a small black dragon, less than five years old. Its scales are glossy, and its horns barely peek out of its head. Even from one so young, you see the glint of sadism in its eyes.", + "default_faction": "dragon_black", + "bodytype": "angel", + "species": [ "DRAGON" ], + "volume": "80 L", + "weight": "65 kg", + "hp": 180, + "speed": 150, + "material": [ "flesh" ], + "symbol": "D", + "color": "black_white", + "aggression": 100, + "morale": 100, + "melee_skill": 2, + "melee_dice": 2, + "melee_dice_sides": 4, + "melee_cut": 9, + "dodge": 5, + "armor_bash": 4, + "armor_cut": 12, + "armor_bullet": 10, + "armor_acid": 600, + "vision_day": 30, + "vision_night": 20, + "path_settings": { "//min_dist": 8 }, + "harvest": "dragon_black", + "death_function": [ "NORMAL" ], + "special_attacks": [ + { "type": "bite", "cooldown": 10 }, + [ "scratch", 7 ], + { "type": "spell", "spell_data": { "id": "dragon_breath_black", "min_level": 4 }, "cooldown": 20 } + ], + "flags": [ "SEES", "HEARS", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_2", "WARM", "SWIMS", "ACIDPROOF", "PUSH_MON", "FLIES" ] + }, + { + "id": "mon_dragon_black_young", + "type": "MONSTER", + "name": "young black dragon", + "description": "This black dragon appears to still be in the early stages of life. Its eyes have just started to sink in its sockets, and its curved, segmented horns have just begun to darken at the tips. You can tell just by looking at it, this creature is evil to its very core. Even though this dragon is not fully grown, it is the size of a full-grown bull.", + "copy-from": "mon_dragon_black_wyrmling", + "//": "should be roughly 4000 L, as that's the size of a large cow.", + "volume": "1000 L", + "weight": "1000 kg", + "hp": 1200, + "melee_skill": 5, + "melee_dice": 3, + "melee_dice_sides": 10, + "melee_cut": 16, + "armor_bash": 12, + "armor_cut": 20, + "armor_bullet": 16, + "special_attacks": [ + { "type": "bite", "cooldown": 10 }, + [ "scratch", 3 ], + { "type": "spell", "spell_data": { "id": "dragon_breath_black", "min_level": 12 }, "cooldown": 20 } + ] + }, + { + "id": "mon_dragon_black_adult", + "type": "MONSTER", + "name": "adult black dragon", + "description": "A black-scaled monstrosity with deep-set eye sockets glowing green with evil. Its face and skull appear skeletal, and acid drips from its dagger-like jaws.", + "copy-from": "mon_dragon_black_young", + "//": "If it were possible, the adult would be about double the size of a young version or so.", + "weight": "2200 kg", + "hp": 2000, + "melee_dice": 4, + "melee_dice_sides": 12, + "melee_cut": 24, + "armor_bash": 20, + "armor_cut": 32, + "armor_bullet": 24, + "dodge": 2, + "//2": "Large means powerful, but it does not mean fast.", + "speed": 100, + "delete": { "flags": [ "PATH_AVOID_DANGER_2" ] }, + "emit_fields": [ { "emit_id": "emit_dragon_adult_fright", "delay": "1 s" } ], + "special_attacks": [ + { "type": "bite", "cooldown": 10 }, + [ "scratch", 3 ], + { "type": "spell", "spell_data": { "id": "dragon_breath_black", "min_level": 22 }, "cooldown": 30 } + ] + } +] diff --git a/data/mods/Magical_Nights/monsters/goblins.json b/data/mods/Magical_Nights/monsters/goblins.json new file mode 100644 index 000000000000..71c45bf9d78c --- /dev/null +++ b/data/mods/Magical_Nights/monsters/goblins.json @@ -0,0 +1,87 @@ +[ + { + "id": "mon_goblin_warrior", + "type": "MONSTER", + "name": "Goblin", + "description": "A short, mischievous green humanoid covered in dirty, slightly-worn clothing. Brandishing a cudgel and with a certain grin on its face, you can tell that it loves causing trouble and likely won't back down from a fight.", + "default_faction": "goblins", + "bodytype": "human", + "species": [ "GOBLIN" ], + "volume": "30 L", + "weight": "45 kg", + "hp": 50, + "speed": 115, + "material": [ "flesh" ], + "symbol": "g", + "color": "brown", + "aggression": 80, + "morale": 80, + "vision_day": 25, + "vision_night": 10, + "melee_skill": 4, + "melee_dice": 2, + "melee_dice_sides": 4, + "dodge": 3, + "armor_bash": 6, + "armor_cut": 8, + "armor_bullet": 5, + "armor_stab": 6, + "harvest": "human", + "//": "We haven't demihuman, so I went with the Troll solution of just going human.", + "death_function": [ "NORMAL" ], + "death_drops": "goblin_warrior_drops", + "special_attacks": [ [ "crush", 5 ], { "type": "bite", "cooldown": 5 } ], + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "PATH_AVOID_DANGER_1", + "GROUP_MORALE", + "ATTACKMON", + "PUSH_MON", + "SWARMS", + "BONES", + "CAN_OPEN_DOORS" + ] + }, + { + "type": "MONSTER", + "id": "mon_goblin_slinger", + "name": { "str": "Goblin Slinger" }, + "description": "A short green humanoid who slings rocks just about as well as it slings insults. They have quite a penchant for taunting, and they're dodgier in more ways than one.", + "copy-from": "mon_goblin_warrior", + "melee_skill": 2, + "dodge": 5, + "death_drops": "goblin_slinger_drops", + "starting_ammo": { "pebble": 30 }, + "extend": { + "special_attacks": [ + { + "type": "gun", + "cooldown": 15, + "move_cost": 90, + "gun_type": "sling", + "ammo_type": "pebble", + "fake_skills": [ [ "gun", 4 ], [ "rifle", 4 ] ], + "fake_dex": 8, + "fake_per": 8, + "require_targeting_player": false, + "description": "The goblin slings a rock at you!", + "ranges": [ [ 2, 10, "DEFAULT" ] ], + "no_ammo_sound": "grunting" + } + ] + } + }, + { + "id": "mon_goblin_chieftain", + "type": "MONSTER", + "copy-from": "mon_goblin_warrior", + "name": { "str": "Goblin Chieftain" }, + "description": "An ugly bastard of a goblin who asserted his rule over the rest through liberal application of violence and a little extra cunning. He's much tougher, and he brandishes a weapon that has faint tinges of magic.", + "hp": 150, + "melee_dice_sides": 8, + "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], + "death_drops": "goblin_chieftain_drops" + } +] diff --git a/data/mods/Magical_Nights/monsters/golems.json b/data/mods/Magical_Nights/monsters/golems.json new file mode 100644 index 000000000000..a8f10cfbfc83 --- /dev/null +++ b/data/mods/Magical_Nights/monsters/golems.json @@ -0,0 +1,293 @@ +[ + { + "id": "mon_claygolem", + "type": "MONSTER", + "name": "clay golem", + "description": "A large, humanoid golem made from clay. Its proportions are off and it seems fragile.", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "120 L", + "weight": "122 kg", + "hp": 100, + "speed": 80, + "material": [ "clay" ], + "symbol": "X", + "color": "brown", + "aggression": 8, + "morale": 100, + "melee_skill": 6, + "melee_dice": 2, + "melee_dice_sides": 10, + "melee_cut": 5, + "armor_bash": 10, + "armor_cut": 10, + "armor_bullet": 10, + "armor_fire": 4, + "dodge": 0, + "vision_day": 40, + "vision_night": 40, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] + }, + { + "id": "mon_plasticgolem", + "type": "MONSTER", + "name": { "str": "plastic golem" }, + "description": "Traditionally, making a golem is a months-long process involving hand tools and precision craftsmanship. A stone golem is as much a work of art as it is a magical device. The advent of 3D printing made it easy to get into the golem-making hobby, and plastic golems have soared in popularity.", + "default_faction": "robot", + "species": [ "ROBOT" ], + "volume": "150 L", + "weight": "70 kg", + "hp": 120, + "speed": 90, + "material": [ "plastic" ], + "symbol": "G", + "color": "light_gray", + "aggression": 30, + "morale": 100, + "armor_bash": 18, + "armor_cut": 6, + "armor_bullet": 5, + "melee_skill": 5, + "melee_dice": 3, + "melee_dice_sides": 6, + "melee_cut": 3, + "vision_day": 30, + "vision_night": 30, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "HEARS", "NO_BREATHE", "LOUDMOVES" ] + }, + { + "id": "mon_stonegolem", + "type": "MONSTER", + "name": "stone golem", + "description": "A large, humanoid golem made from stone. Its fists look similar to rockets.", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "120 L", + "weight": "162 kg", + "hp": 250, + "speed": 60, + "material": [ "stone" ], + "symbol": "X", + "color": "light_gray", + "aggression": 8, + "morale": 100, + "melee_skill": 6, + "melee_dice": 3, + "melee_dice_sides": 8, + "melee_cut": 6, + "armor_bash": 20, + "armor_cut": 20, + "armor_bullet": 16, + "armor_fire": 20, + "dodge": 0, + "vision_day": 40, + "vision_night": 40, + "special_attacks": [ { "type": "spell", "spell_data": { "id": "rocket_punch", "min_level": 5 }, "cooldown": 10 } ], + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] + }, + { + "id": "mon_irongolem", + "type": "MONSTER", + "name": "iron golem", + "description": "A large, humanoid golem made from iron. Some sort of noxious gas seems to be seeping from its mouth.", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "120 L", + "weight": "945 kg", + "hp": 400, + "speed": 50, + "material": [ "iron" ], + "symbol": "X", + "color": "dark_gray", + "aggression": 9, + "morale": 100, + "melee_skill": 6, + "melee_dice": 3, + "melee_dice_sides": 10, + "melee_cut": 7, + "armor_bash": 32, + "armor_cut": 32, + "armor_bullet": 26, + "armor_fire": 32, + "dodge": 0, + "vision_day": 40, + "vision_night": 40, + "special_attacks": [ { "type": "spell", "spell_data": { "id": "gas_attack", "min_level": 5 }, "cooldown": 60 } ], + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] + }, + { + "id": "mon_resingolem_fresh", + "type": "MONSTER", + "name": { "str": "fresh resin golem" }, + "description": "Traditionally, creating a golem is a long and arduous process, taking several months for a golem so large as this one. However, the advent of modern materials has allowed for much simpler and quicker to make golems. This golem appears to somehow still be very fresh, almost as if it had only been very recently poured, and it can likely recover from wounds rather quickly", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "volume": "150 L", + "weight": "70 kg", + "hp": 150, + "speed": 90, + "material": [ "plastic" ], + "symbol": "G", + "color": "green", + "aggression": 30, + "morale": 100, + "armor_bash": 12, + "armor_cut": 8, + "armor_bullet": 7, + "melee_skill": 5, + "melee_dice": 4, + "melee_dice_sides": 6, + "melee_cut": 3, + "vision_day": 30, + "vision_night": 30, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "regenerates": 25, + "upgrades": { "into": "mon_resingolem_half", "half_life": 25 }, + "flags": [ "SEES", "HEARS", "NO_BREATHE", "LOUDMOVES" ] + }, + { + "id": "mon_resingolem_half", + "type": "MONSTER", + "name": { "str": "somewhat-cured resin golem" }, + "description": "Traditionally, creating a golem is a long and arduous process, taking several months for a golem so large as this one. However, the advent of modern materials has allowed for much simpler and quicker to make golems. This golem appears to be partially, but not fully, cured. As such, it can likely recover from small injuries given some time.", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "volume": "150 L", + "weight": "70 kg", + "hp": 250, + "speed": 90, + "material": [ "plastic" ], + "symbol": "G", + "color": "blue", + "aggression": 30, + "morale": 100, + "armor_bash": 20, + "armor_cut": 14, + "armor_bullet": 14, + "melee_skill": 6, + "melee_dice": 4, + "melee_dice_sides": 8, + "melee_cut": 6, + "vision_day": 30, + "vision_night": 30, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "regenerates": 10, + "upgrades": { "into": "mon_resingolem_cured", "half_life": 25 }, + "flags": [ "SEES", "HEARS", "NO_BREATHE", "LOUDMOVES" ] + }, + { + "id": "mon_resingolem_cured", + "type": "MONSTER", + "name": { "str": "hardened resin golem" }, + "description": "Traditionally, creating a golem is a long and arduous process, taking several months for a golem so large as this one. However, the advent of modern materials has allowed for much simpler and quicker to make golems. This golem appears to be fully cured, meaning it'll be almost like stone. You can't quite tell whether that's just a pattern on it, or if it's something more sinister...", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "volume": "150 L", + "weight": "70 kg", + "hp": 375, + "speed": 90, + "material": [ "plastic" ], + "symbol": "G", + "color": "red", + "aggression": 30, + "morale": 100, + "armor_bash": 30, + "armor_cut": 26, + "armor_bullet": 24, + "melee_skill": 8, + "melee_dice": 4, + "melee_dice_sides": 10, + "melee_cut": 5, + "vision_day": 30, + "vision_night": 30, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "HEARS", "NO_BREATHE", "LOUDMOVES" ] + }, + { + "id": "mon_orchigolem", + "type": "MONSTER", + "name": "orichalcum golem", + "description": "A large, humanoid golem made from orichalcum. It's arms are fashioned into sharp blades.", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "120 L", + "weight": "600 kg", + "hp": 600, + "speed": 70, + "material": [ "orichalcum_metal" ], + "symbol": "X", + "color": "light_green", + "aggression": 9, + "morale": 100, + "melee_skill": 10, + "melee_dice": 5, + "melee_dice_sides": 12, + "melee_cut": 10, + "armor_bash": 40, + "armor_cut": 40, + "armor_bullet": 35, + "armor_fire": 40, + "dodge": 0, + "vision_day": 40, + "vision_night": 40, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] + }, + { + "id": "mon_mithrgolem", + "type": "MONSTER", + "name": "mithril golem", + "description": "A large, humanoid golem made from mithril. This golem is practically invulnerable. Luckily, it is less aggressive", + "default_faction": "robot", + "bodytype": "human", + "species": [ "ROBOT" ], + "diff": 2, + "volume": "120 L", + "weight": "945 kg", + "hp": 800, + "speed": 80, + "material": [ "mithril_metal" ], + "symbol": "X", + "color": "light_blue", + "looks_like": "mon_irongolem", + "aggression": 1, + "morale": 100, + "melee_skill": 8, + "melee_dice": 3, + "melee_dice_sides": 10, + "melee_cut": 7, + "armor_bash": 50, + "armor_cut": 50, + "armor_bullet": 40, + "armor_fire": 50, + "dodge": 0, + "vision_day": 40, + "vision_night": 40, + "anger_triggers": [ "PLAYER_CLOSE", "HURT" ], + "death_function": [ "BROKEN" ], + "flags": [ "SEES", "NO_BREATHE", "ACIDPROOF", "LOUDMOVES" ] + } +] diff --git a/data/mods/Magical_Nights/monsters/lizardfolk.json b/data/mods/Magical_Nights/monsters/lizardfolk.json new file mode 100644 index 000000000000..131d566e7bbb --- /dev/null +++ b/data/mods/Magical_Nights/monsters/lizardfolk.json @@ -0,0 +1,140 @@ +[ + { + "id": "mon_lizardfolk_warrior", + "type": "MONSTER", + "name": "lizardfolk warrior", + "description": "A tall, powerful, reptilian humanoid with a muscular tail whose skin is covered in dark gray-green scales. They are tribal and tend to be found in caves and near water, especially in areas inhabited by dragons and wyrms. They aren't particularly hostile, though they don't care for outsiders and are highly dangerous when provoked. While they usually prefer to fight with their greatclubs, they are equally ferocious with their sharp teeth and claws.", + "default_faction": "lizardfolk", + "bodytype": "human", + "species": [ "LIZARDFOLK" ], + "volume": "80 L", + "weight": "100 kg", + "hp": 80, + "speed": 105, + "material": [ "flesh" ], + "symbol": "L", + "color": "green", + "aggression": 80, + "morale": 80, + "vision_day": 10, + "vision_night": 20, + "melee_skill": 4, + "melee_dice": 2, + "melee_dice_sides": 4, + "dodge": 1, + "armor_bash": 2, + "armor_cut": 12, + "armor_bullet": 10, + "armor_stab": 6, + "harvest": "lizardfolk", + "death_function": [ "NORMAL" ], + "death_drops": [ + { "item": "lizardfolk_club", "prob": 30 }, + { "item": "loincloth", "prob": 40 }, + { "item": "leather_belt", "prob": 20 }, + { "item": "bone_human", "prob": 10 } + ], + "special_attacks": [ [ "crush", 5 ], { "type": "bite", "cooldown": 5 } ], + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "KEENNOSE", + "PATH_AVOID_DANGER_1", + "CLIMBS", + "GROUP_MORALE", + "LEATHER", + "SWIMS", + "ATTACKMON", + "PUSH_MON", + "SWARMS", + "BONES", + "CAN_OPEN_DOORS", + "NO_BREATHE" + ] + }, + { + "id": "mon_lizardfolk_hunter", + "type": "MONSTER", + "name": "lizardfolk hunter", + "description": "The hunter is a smaller lizardfolk than a warrior, but equally as deadly, with their lithe figures and accurate javelin throws.", + "copy-from": "mon_lizardfolk_warrior", + "symbol": "L", + "dodge": 3, + "special_attacks": [ + { + "type": "gun", + "cooldown": 5, + "move_cost": 150, + "gun_type": "lizardfolk_javelin_gun", + "fake_skills": [ [ "gun", 8 ], [ "rifle", 8 ] ], + "fake_dex": 8, + "fake_per": 8, + "require_targeting_player": false, + "ranges": [ [ 2, 10, "DEFAULT" ] ], + "description": "The hunter hurls a barbed javelin at you!" + }, + { "type": "bite", "cooldown": 5 } + ], + "death_drops": [ + { "item": "lizardfolk_javelin", "prob": 30 }, + { "item": "loincloth", "prob": 40 }, + { "item": "spearsling", "prob": 20 }, + { "item": "bone_human", "prob": 10 } + ] + }, + { + "id": "mon_lizardfolk_shaman", + "type": "MONSTER", + "name": "lizardfolk shaman", + "description": "Lizardfolk are very intelligent and cunning, but magical ability is a rare quality. Shamans are chosen from the tribe during childhood, when magical abilities mark the fate of the young tribesman. Not much is known about the initiation ritual they must undergo, but few survive the experience. Shamans are druidic spellcasters that can use the forces of nature to battle enemies, as well as summoning assistance when needed.", + "copy-from": "mon_lizardfolk_warrior", + "symbol": "L", + "hp": 100, + "melee_skill": 3, + "melee_dice": 2, + "melee_dice_sides": 6, + "special_attacks": [ { "type": "spell", "spell_data": { "id": "spell_shaman_base" }, "cooldown": 5 }, [ "scratch", 5 ] ], + "death_drops": { + "subtype": "distribution", + "items": [ + { "group": "enchanted_small_items", "prob": 40 }, + { "group": "enchanted_melee_weapons_plus1", "prob": 20 }, + { "group": "enchanted_wands_lesser", "prob": 10 }, + { "item": "robe", "prob": 40 }, + { "item": "leather_belt", "prob": 20 } + ] + } + }, + { + "id": "mon_lizardfolk_chieftan", + "type": "MONSTER", + "name": "lizardfolk chieftan", + "description": "Among the lizardfolk, ambition is a rare quality. Chieftans earn their place by exhibiting unusually high levels of ambition, often mistaken by outsiders as excessive, brutal violence. This chief is the largest and strongest member of its tribe and carries a fierce trident to compliment its teeth and claws.", + "copy-from": "mon_lizardfolk_warrior", + "symbol": "L", + "hp": 200, + "melee_skill": 4, + "melee_dice": 3, + "melee_dice_sides": 8, + "special_attacks": [ [ "skewer", 2 ], { "type": "bite", "cooldown": 5 } ], + "death_drops": [ + { "item": "lizardfolk_trident", "prob": 30 }, + { "group": "lair_loot_generic", "prob": 40 }, + { "item": "spearsling", "prob": 20 }, + { "item": "bone_human", "prob": 10 } + ] + }, + { + "id": "mon_crocodile", + "type": "MONSTER", + "name": "crocodile", + "copy-from": "mon_gator", + "//": "A copy of the standard mon_gator (from reptile_amphibian.json) with a different description to match the lizardfolk lore. Lizardfolk Shamans are able to shapeshift into crocodile form.", + "description": "A once-and-future lizardfolk shaman, this large crocodile no longer has any hint of any humanoid characteristics and looks very, very dangerous.", + "default_faction": "lizardfolk", + "species": [ "LIZARDFOLK" ], + "symbol": "C", + "harvest": "lizardfolk" + } +] diff --git a/data/mods/Magical_Nights/monsters/monsterdrops.json b/data/mods/Magical_Nights/monsters/monsterdrops.json new file mode 100755 index 000000000000..c95b718eb155 --- /dev/null +++ b/data/mods/Magical_Nights/monsters/monsterdrops.json @@ -0,0 +1,77 @@ +[ + { + "type": "item_group", + "subtype": "collection", + "id": "goblin_warrior_drops", + "entries": [ + { "item": "helmet_scrap", "prob": 40 }, + { "item": "legguard_scrap", "prob": 40 }, + { "item": "boots_scrap", "prob": 40 }, + { "item": "armguard_scrap", "prob": 40 }, + { "item": "cuirass_scrap", "prob": 40 }, + { "item": "cudgel", "prob": 95 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "goblin_slinger_drops", + "entries": [ + { "item": "helmet_scrap", "prob": 40 }, + { "item": "legguard_scrap", "prob": 40 }, + { "item": "boots_scrap", "prob": 40 }, + { "item": "armguard_scrap", "prob": 40 }, + { "item": "cuirass_scrap", "prob": 40 }, + { "item": "sling", "prob": 95 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "goblin_chieftain_drops", + "entries": [ + { "item": "helmet_scrap", "prob": 40 }, + { "item": "legguard_scrap", "prob": 40 }, + { "item": "boots_scrap", "prob": 40 }, + { "item": "armguard_scrap", "prob": 40 }, + { "item": "cuirass_scrap", "prob": 40 }, + { "group": "enchanted_melee_weapons_plus1", "prob": 100 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "orc_warrior_drops", + "entries": [ + { "item": "chainmail_legs", "prob": 40 }, + { "item": "chainmail_feet", "prob": 40 }, + { "item": "chainmail_arms", "prob": 40 }, + { "item": "chainmail_vest", "prob": 40 }, + { "item": "cutlass", "prob": 95 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "orc_archer_drops", + "entries": [ + { "item": "chainmail_legs", "prob": 40 }, + { "item": "chainmail_feet", "prob": 40 }, + { "item": "chainmail_arms", "prob": 40 }, + { "item": "chainmail_vest", "prob": 40 }, + { "item": "longbow", "prob": 95 } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "orc_blood_warrior_drops", + "entries": [ + { "item": "chainmail_legs", "prob": 40 }, + { "item": "chainmail_feet", "prob": 40 }, + { "item": "chainmail_arms", "prob": 40 }, + { "item": "chainmail_vest", "prob": 40 }, + { "item": "pike_plus_one", "prob": 95 } + ] + } +] diff --git a/data/mods/Magical_Nights/monsters/monsters.json b/data/mods/Magical_Nights/monsters/monsters.json new file mode 100644 index 000000000000..ba0660b71bb4 --- /dev/null +++ b/data/mods/Magical_Nights/monsters/monsters.json @@ -0,0 +1,345 @@ +[ + { + "id": "mon_owlbear", + "type": "MONSTER", + "name": "owlbear", + "description": "The horrible owlbear is probably the result of genetic experimentation by some insane wizard. These creatures inhabit the tangled forest regions of every temperate climate, as well as subterranean labyrinths. They are even more easily angered than normal bears, so it's best to keep a distance. Something tells you this isn't exactly a very old species, based on only recently seeing them.", + "default_faction": "magical_beast", + "bodytype": "bear", + "species": [ "MAGICAL_BEAST" ], + "volume": "450000 ml", + "weight": "450 kg", + "hp": 260, + "speed": 120, + "material": [ "flesh" ], + "symbol": "W", + "color": "brown", + "aggression": 8, + "morale": 100, + "melee_skill": 6, + "melee_dice": 5, + "melee_dice_sides": 8, + "melee_cut": 8, + "dodge": 3, + "armor_bash": 5, + "armor_cut": 2, + "armor_bullet": 2, + "vision_night": 20, + "anger_triggers": [ "HURT", "PLAYER_NEAR_BABY", "PLAYER_CLOSE" ], + "path_settings": { "max_dist": 25 }, + "harvest": "owlbear", + "reproduction": { "baby_egg": "egg_owlbear_rock", "baby_count": 1, "baby_timer": 20 }, + "baby_flags": [ "SPRING", "SUMMER", "AUTUMN", "WINTER" ], + "death_function": [ "NORMAL" ], + "special_attacks": [ { "type": "bite", "cooldown": 10 }, [ "GRAB", 7 ], [ "scratch", 7 ] ], + "flags": [ "SEES", "HEARS", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM", "GRABS", "SWARMS" ] + }, + { + "id": "mon_black_pudding", + "type": "MONSTER", + "name": "black pudding", + "description": "Writhing, sticky, black sludge undulates across the ground. A faint sizzling sound comes from the ground beneath it as it lurches toward you.", + "default_faction": "ooze", + "bodytype": "blob", + "symbol": "O", + "species": [ "BLOB" ], + "diff": 1, + "volume": "62500 ml", + "weight": "81500 g", + "color": "dark_gray", + "hp": 100, + "speed": 75, + "phase": "LIQUID", + "aggression": 8, + "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], + "morale": 100, + "melee_skill": 5, + "melee_dice": 2, + "melee_dice_sides": 4, + "melee_cut": 0, + "armor_bash": 12, + "armor_stab": 14, + "armor_bullet": 14, + "armor_acid": 15, + "harvest": "exempt", + "death_function": [ "MELT" ], + "special_attacks": [ + { + "type": "spell", + "spell_data": { "id": "ooze_acidicspray" }, + "cooldown": 20, + "monster_message": "The black pudding burns %3$s with acid!" + } + ], + "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "POISON", "NO_BREATHE", "ACIDPROOF" ] + }, + { + "id": "mon_krabgek", + "name": "krabgek", + "description": "A large baleful eye peers out from the darkness, its gleam hinting at a weird intelligence and unnerving malevolence. The eye oozes some pinkish liquid, and the weirdly humanoid figure is covered in sharp blue-black triangular plates.", + "symbol": "K", + "color": "dark_gray", + "type": "MONSTER", + "flags": [ "SEES", "HEARS", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM", "BIOPROOF" ], + "harvest": "mutant_human", + "material": [ "hflesh" ], + "bodytype": "human", + "default_faction": "magical_beast", + "species": [ "MAGICAL_BEAST", "HUMAN" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 60, + "speed": 100, + "aggression": 30, + "morale": 100, + "melee_skill": 3, + "melee_cut": 20, + "melee_dice": 3, + "melee_dice_sides": 10, + "dodge": 6, + "vision_night": 30, + "vision_day": 30, + "path_settings": { "max_dist": 35 }, + "death_function": [ "NORMAL" ], + "anger_triggers": [ "HURT", "PLAYER_CLOSE", "PLAYER_WEAK" ], + "special_attacks": [ + { + "id": "scratch", + "cooldown": 1, + "damage_max_instance": [ { "damage_type": "cut", "amount": 25, "armor_multiplier": 1.2 } ] + }, + { + "type": "spell", + "spell_data": { "id": "krab_gaze" }, + "cooldown": 5, + "monster_message": "The krabgek gazes at %3$s!" + } + ] + }, + { + "id": "mon_owlbear_cub", + "type": "MONSTER", + "name": "owlbear cub", + "copy-from": "mon_owlbear", + "volume": "112500 ml", + "weight": "112500 g", + "hp": 75, + "speed": 90, + "symbol": "w", + "color": "yellow", + "morale": 40, + "melee_skill": 2, + "melee_dice": 2, + "melee_dice_sides": 4, + "melee_cut": 3, + "dodge": 2, + "harvest": "owlbear_cub", + "upgrades": { "age_grow": 20, "into": "mon_owlbear" } + }, + { + "id": "mon_bulette", + "type": "MONSTER", + "name": "bulette", + "description": "The bulette (or landshark) was the result of a mad wizard's experimental cross breeding of a snapping turtle and armadillo with infusions of demons' ichor. They range temperate climates feeding on horses, men, and most other flesh. The stupid bulette is irascible and always hungry, and they fear nothing.", + "default_faction": "magical_beast", + "bodytype": "bear", + "species": [ "MAGICAL_BEAST" ], + "volume": "850000 ml", + "weight": "900 kg", + "hp": 320, + "speed": 100, + "material": [ "arcane_skin" ], + "symbol": "U", + "color": "light_gray", + "aggression": 0, + "morale": 60, + "melee_skill": 6, + "melee_dice": 4, + "melee_dice_sides": 3, + "melee_damage": [ { "damage_type": "bash", "amount": 20 }, { "damage_type": "cut", "amount": 10 } ], + "dodge": 2, + "armor_bash": 32, + "armor_cut": 30, + "armor_bullet": 24, + "harvest": "bulette", + "anger_triggers": [ "SOUND" ], + "death_function": [ "NORMAL" ], + "special_attacks": [ + { + "id": "scratch", + "cooldown": 4, + "damage_max_instance": [ { "damage_type": "cut", "amount": 60, "armor_multiplier": 0.9 } ] + }, + { + "id": "slam", + "cooldown": 3, + "damage_max_instance": [ { "damage_type": "bash", "amount": 80, "armor_multiplier": 0.8 } ] + }, + [ "SMASH", 10 ] + ], + "flags": [ "SEES", "HEARS", "SMELLS", "PATH_AVOID_DANGER_1", "WARM", "CAN_DIG", "HIT_AND_RUN", "HARDTOSHOOT" ] + }, + { + "id": "mon_wisp", + "type": "MONSTER", + "name": "will-o-wisp", + "description": "Will-o’-wisps can be yellow, white, green, or blue. They are easily mistaken for lanterns, especially in the foggy marshes and swamps where they reside.", + "default_faction": "magical_beast", + "bodytype": "blob", + "species": [ "MAGICAL_BEAST" ], + "volume": "1500 ml", + "weight": "136 g", + "hp": 20, + "speed": 160, + "luminance": 16, + "material": [ "powder" ], + "symbol": "o", + "color": "yellow", + "aggression": 5, + "morale": 40, + "melee_skill": 6, + "melee_dice": 1, + "melee_dice_sides": 4, + "melee_damage": [ { "damage_type": "electric", "amount": 8 } ], + "dodge": 9, + "vision_day": 20, + "vision_night": 20, + "harvest": "", + "death_drops": "wisp_death", + "anger_triggers": [ "PLAYER_CLOSE" ], + "death_function": [ "DISINTEGRATE" ], + "flags": [ + "SEES", + "HEARS", + "FLIES", + "PATH_AVOID_DANGER_1", + "ELECTRIC", + "HARDTOSHOOT", + "NOGIB", + "NOHEAD", + "NO_BREATHE", + "SWARMS" + ] + }, + { + "id": "mon_troll", + "type": "MONSTER", + "name": "troll", + "description": "Monstrous, green-skinned humanoid. Trolls are renowned for their thick hides and natural regenerative ability.", + "default_faction": "magical_beast", + "bodytype": "human", + "species": [ "MAGICAL_BEAST" ], + "volume": "875000 ml", + "weight": "875 kg", + "hp": 480, + "speed": 110, + "material": [ "flesh" ], + "symbol": "T", + "color": "light_green", + "aggression": 8, + "anger_triggers": [ "HURT", "PLAYER_CLOSE" ], + "morale": 100, + "melee_skill": 5, + "melee_dice": 5, + "melee_dice_sides": 7, + "melee_cut": 12, + "dodge": 1, + "armor_cut": 16, + "armor_bullet": 13, + "vision_day": 40, + "vision_night": 3, + "harvest": "human_large_leather", + "death_function": [ "NORMAL" ], + "special_attacks": [ { "type": "bite", "cooldown": 30 }, [ "GRAB", 15 ], [ "scratch", 15 ], [ "slam", 10 ], [ "SMASH", 30 ] ], + "regenerates": 1, + "flags": [ "SEES", "SMELLS", "KEENNOSE", "PATH_AVOID_DANGER_1", "WARM", "GRABS", "BLEED", "FLAMMABLE" ] + }, + { + "id": "mon_stirge", + "type": "MONSTER", + "name": "stirge", + "description": "This horrid flying creature looks like a cross between a large bat and oversized mosquito.", + "default_faction": "magical_beast", + "species": [ "MAGICAL_BEAST" ], + "diff": 2, + "volume": "1000 ml", + "weight": "1250 g", + "hp": 20, + "speed": 133, + "material": [ "iflesh" ], + "symbol": "s", + "color": "red", + "aggression": 10, + "morale": 10, + "melee_skill": 4, + "melee_dice": 1, + "melee_dice_sides": 4, + "melee_cut": 2, + "dodge": 4, + "vision_day": 20, + "vision_night": 20, + "harvest": "stirge", + "special_attacks": [ { "type": "spell", "spell_data": { "id": "blood_suck", "min_level": 3 }, "cooldown": 3 } ], + "anger_triggers": [ "PLAYER_CLOSE" ], + "death_function": [ "NORMAL" ], + "flags": [ "SEES", "SMELLS", "HEARS", "FLIES", "HIT_AND_RUN", "PATH_AVOID_FIRE", "SWARMS" ] + }, + { + "id": "mon_shrieker", + "type": "MONSTER", + "name": "shrieker", + "description": "A shrieker is a human-sized mushroom that emits a piercing screech to drive off creatures that disturb it.", + "default_faction": "magical_beast", + "species": [ "FUNGUS" ], + "diff": 2, + "volume": "62500 ml", + "weight": "81500 g", + "hp": 25, + "speed": 100, + "material": [ "veggy" ], + "symbol": "7", + "color": "light_gray", + "aggression": 0, + "morale": 0, + "melee_cut": 0, + "dodge": 0, + "vision_day": 10, + "vision_night": 10, + "harvest": "shrieker", + "special_attacks": [ [ "SHRIEK_ALERT", 1 ] ], + "anger_triggers": [ "PLAYER_CLOSE" ], + "death_function": [ "NORMAL" ], + "flags": [ "SEES", "NOHEAD", "POISON", "IMMOBILE", "NO_BREATHE", "PACIFIST" ] + }, + { + "id": "mon_lemure", + "type": "MONSTER", + "name": "lemure", + "description": "A lemure resembles a molten mass of flesh with a vaguely humanoid head and torso.", + "default_faction": "magical_beast", + "bodytype": "blob", + "species": [ "MAGICAL_BEAST" ], + "diff": 2, + "volume": "62500 ml", + "weight": "45 kg", + "hp": 20, + "speed": 50, + "material": [ "flesh" ], + "symbol": "0", + "color": "magenta", + "aggression": 100, + "morale": 100, + "melee_skill": 4, + "melee_dice": 1, + "melee_dice_sides": 4, + "melee_cut": 1, + "dodge": 2, + "vision_day": 40, + "vision_night": 40, + "harvest": "lemure", + "anger_triggers": [ "PLAYER_CLOSE" ], + "death_function": [ "NORMAL" ], + "regenerates": 1, + "flags": [ "SEES", "SMELLS", "HEARS", "STUMBLES", "PATH_AVOID_FIRE", "REVIVES" ] + } +] diff --git a/data/mods/Magical_Nights/monsters/orcs.json b/data/mods/Magical_Nights/monsters/orcs.json new file mode 100755 index 000000000000..fccf64f475e3 --- /dev/null +++ b/data/mods/Magical_Nights/monsters/orcs.json @@ -0,0 +1,89 @@ +[ + { + "id": "mon_orc_warrior", + "type": "MONSTER", + "name": "Orc Warrior", + "description": "A big, badly behaved brutish humanoid. Armed with a sword and possessing more than enough strength to use it to deadly effect, you don't want to be in the way of one when its angry. It's also well armored, alongside a hide one might slightly exaggerate as being ironlike. Generally less intelligent than goblins, but it's ill advised to mention that.", + "default_faction": "orcs", + "bodytype": "human", + "species": [ "ORC" ], + "volume": "90 L", + "weight": "120 kg", + "hp": 150, + "speed": 90, + "material": [ "flesh" ], + "symbol": "O", + "color": "green", + "aggression": 90, + "morale": 80, + "vision_day": 20, + "vision_night": 10, + "melee_skill": 6, + "melee_dice": 3, + "melee_dice_sides": 8, + "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], + "dodge": 1, + "armor_bash": 15, + "armor_cut": 18, + "armor_bullet": 8, + "armor_stab": 12, + "harvest": "human", + "//": "We haven't demihuman, so I went with the Troll solution of just going human.", + "death_function": [ "NORMAL" ], + "death_drops": "orc_warrior_drops", + "special_attacks": [ { "type": "bite", "cooldown": 5 } ], + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "PATH_AVOID_DANGER_1", + "GROUP_MORALE", + "ATTACKMON", + "PUSH_MON", + "SWARMS", + "BONES", + "CAN_OPEN_DOORS" + ] + }, + { + "type": "MONSTER", + "id": "mon_orc_archer", + "name": { "str": "Orc 'Arrer" }, + "description": "A big brute who wields a powerful bow. Not as respected among orc society, but still very effective. It won't hesitate to slam you with the bow if necessary, though.", + "copy-from": "mon_orc_warrior", + "melee_skill": 3, + "dodge": 2, + "death_drops": "orc_archer_drops", + "starting_ammo": { "arrow_metal_sharpened_fletched": 30 }, + "extend": { + "special_attacks": [ + { + "type": "gun", + "cooldown": 15, + "move_cost": 120, + "gun_type": "longbow", + "ammo_type": "arrow_metal_sharpened_fletched", + "fake_skills": [ [ "gun", 6 ], [ "rifle", 6 ] ], + "fake_dex": 8, + "fake_per": 8, + "require_targeting_player": false, + "description": "The orc fires its bow at you!", + "ranges": [ [ 2, 18, "DEFAULT" ] ], + "no_ammo_sound": "grunting" + } + ] + } + }, + { + "id": "mon_orc_blood_warrior", + "type": "MONSTER", + "copy-from": "mon_orc_warrior", + "name": { "str": "Orc Blood Warrior" }, + "description": "As a deviation from the normal verdant skin of the orcs, the blood warriors are believed to be blessed by the gods of the orcs. They certainly look the part, and from what you can tell their strength matches up with it. You best be ready for a fight, because they'll certainly give you one.", + "hp": 300, + "color": "red", + "melee_dice_sides": 12, + "melee_damage": [ { "damage_type": "cut", "amount": 8 }, { "damage_type": "stab", "amount": 4 } ], + "death_drops": "orc_blood_warrior_drops" + } +] diff --git a/data/mods/Magical_Nights/npc/TALK_HEALER_GREY.json b/data/mods/Magical_Nights/npc/TALK_HEALER_GREY.json new file mode 100644 index 000000000000..d10254b5097b --- /dev/null +++ b/data/mods/Magical_Nights/npc/TALK_HEALER_GREY.json @@ -0,0 +1,51 @@ +[ + { + "type": "talk_topic", + "id": "TALK_HEALER_GREY", + "dynamic_line": { + "u_has_var": "talked_to_healer_grey", + "type": "dialogue", + "context": "healer_grey", + "value": "yes", + "no": "I must purge this land of its curse. Will you help or hinder our mission?", + "yes": "Blessed be." + }, + "responses": [ + { + "text": "Hello .", + "topic": "TALK_HEALER_GREY_INTRO", + "effect": { "u_add_var": "talked_to_HEALER_GREY", "type": "dialogue", "context": "healer_grey", "value": "yes" } + }, + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "Let's trade items.", "topic": "TALK_HEALER_GREY", "effect": "start_trade" }, + { "text": "Can I do anything for you?", "topic": "TALK_MISSION_LIST" }, + { "text": "About the mission…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { + "text": "About one of those missions…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { "text": "Goodbye.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_HEALER_GREY_INTRO", + "dynamic_line": "Blessed be. May you purge that which opposes the calm.", + "responses": [ + { "text": "Why don't you go somewhere else?", "topic": "TALK_HEALER_GREY_LEAVE" }, + { "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_HEALER_GREY" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_HEALER_GREY_LEAVE", + "dynamic_line": "I must purge this place before I can move on.", + "responses": [ + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "What can you sell me?", "topic": "TALK_HEALER_GREY", "effect": "start_trade" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Magical_Nights/npc/TALK_OLD_MAGUS.json b/data/mods/Magical_Nights/npc/TALK_OLD_MAGUS.json new file mode 100644 index 000000000000..b8467b4120af --- /dev/null +++ b/data/mods/Magical_Nights/npc/TALK_OLD_MAGUS.json @@ -0,0 +1,62 @@ +[ + { + "type": "talk_topic", + "id": "TALK_OLD_MAGUS", + "dynamic_line": { + "u_has_var": "talked_to_old_magus", + "type": "dialogue", + "context": "old_magus", + "value": "yes", + "no": "Huh? *mumble mumble* … Who are you?", + "yes": "Oh, you again." + }, + "responses": [ + { + "text": "Hello .", + "topic": "TALK_OLD_MAGUS_INTRO", + "effect": { "u_add_var": "talked_to_old_magus", "type": "dialogue", "context": "old_magus", "value": "yes" } + }, + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "Let's trade items.", "topic": "TALK_OLD_MAGUS", "effect": "start_trade" }, + { + "text": "Can I do anything for you?", + "topic": "TALK_MISSION_LIST", + "condition": { + "and": [ + { "not": "has_assigned_mission" }, + { + "not": { "npc_has_var": "npc_magus_book_done", "type": "dialogue", "context": "old_magus", "value": "yes" } + } + ] + } + }, + { "text": "About the mission…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { + "text": "About one of those missions…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { "text": "Goodbye.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_OLD_MAGUS_INTRO", + "dynamic_line": "I'm busy, what is it?", + "responses": [ + { "text": "Why don't you go somewhere else?", "topic": "TALK_OLD_MAGUS_LEAVE" }, + { "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_OLD_MAGUS" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_OLD_MAGUS_LEAVE", + "dynamic_line": "And leave my tower and all my research? I think not.", + "responses": [ + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "What can you sell me?", "topic": "TALK_OLD_MAGUS", "effect": "start_trade" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Magical_Nights/npc/TALK_TECHNO_KID.json b/data/mods/Magical_Nights/npc/TALK_TECHNO_KID.json new file mode 100644 index 000000000000..cdf6a546a3df --- /dev/null +++ b/data/mods/Magical_Nights/npc/TALK_TECHNO_KID.json @@ -0,0 +1,51 @@ +[ + { + "type": "talk_topic", + "id": "TALK_TECHNO_KID", + "dynamic_line": { + "u_has_var": "talked_to_techno_kid", + "type": "dialogue", + "context": "techno_kid", + "value": "yes", + "no": "Do you seek power as well?", + "yes": "Ah, hello again." + }, + "responses": [ + { + "text": "Hey .", + "topic": "TALK_TECHNO_KID_INTRO", + "effect": { "u_add_var": "talked_to_techno_kid", "type": "dialogue", "context": "techno_kid", "value": "yes" } + }, + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "Let's trade items.", "topic": "TALK_TECHNO_KID", "effect": "start_trade" }, + { "text": "Can I do anything for you?", "topic": "TALK_MISSION_LIST" }, + { "text": "About the mission…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { + "text": "About one of those missions…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { "text": "Goodbye.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_TECHNO_KID_INTRO", + "dynamic_line": "Yes, yes… *electrical crackling* Isn't it beautiful?", + "responses": [ + { "text": "Why don't you go somewhere else?", "topic": "TALK_TECHNO_KID_LEAVE" }, + { "text": "Let's trade then.", "effect": "start_trade", "topic": "TALK_TECHNO_KID" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_TECHNO_KID_LEAVE", + "dynamic_line": "I must find more power before I can leave.", + "responses": [ + { "text": "Wanna get outta here?", "topic": "TALK_SUGGEST_FOLLOW" }, + { "text": "What can you sell me?", "topic": "TALK_TECHNO_KID", "effect": "start_trade" }, + { "text": "I'm sorry, I gotta go.", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Magical_Nights/npc/classes.json b/data/mods/Magical_Nights/npc/classes.json new file mode 100644 index 000000000000..ce3354bb46ba --- /dev/null +++ b/data/mods/Magical_Nights/npc/classes.json @@ -0,0 +1,79 @@ +[ + { + "type": "npc_class", + "id": "NC_MAGE_TEST", + "name": "Mage Test", + "job_description": "I'm a wandering debug tester for the arcane arts.", + "traits": [ + { "trait": "STORMSHAPER" }, + { "group": "BG_survival_story_EVACUEE" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "spells": [ { "id": "lightning_bolt", "level": 6 }, { "id": "windrun", "level": 6 } ] + }, + { + "type": "npc_class", + "id": "NC_OLD_MAGUS", + "name": "Master Magus", + "job_description": "I'm an old Magus. Get off my lawn!", + "worn_override": "NC_OLD_MAGUS_worn", + "traits": [ + { "trait": "MAGUS" }, + { "group": "BG_survival_story_RURAL" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ -4, -1 ] }, + "bonus_dex": { "rng": [ -2, 0 ] }, + "bonus_int": { "rng": [ 2, 5 ] }, + "bonus_per": { "rng": [ -2, -1 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -2 ] } ] } ] } }, + { "skill": "spellcraft", "bonus": { "rng": [ 4, 6 ] } } + ], + "spells": [ { "id": "magic_missile", "level": 18 }, { "id": "gravity_well", "level": 10 }, { "id": "foxs_cunning", "level": 7 } ] + }, + { + "type": "npc_class", + "id": "NC_TECHNO_KID", + "name": "Techno-student", + "job_description": "I'm searching for more power.", + "traits": [ + { "trait": "TECHNOMANCER" }, + { "group": "BG_survival_story_TEENAGER" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ -2, 1 ] }, + "bonus_dex": { "rng": [ -1, 1 ] }, + "bonus_int": { "rng": [ 0, 3 ] }, + "bonus_per": { "rng": [ -1, 1 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ -1, -4 ] } ] } ] } }, + { "skill": "spellcraft", "bonus": { "rng": [ 0, 2 ] } } + ], + "spells": [ { "id": "quantum_tunnel_lesser", "level": 2 }, { "id": "animated_blade", "level": 2 } ] + }, + { + "type": "npc_class", + "id": "NC_BIO_PRIEST", + "name": "Healer", + "job_description": "I will purge this land of its curse.", + "traits": [ + { "trait": "BIOMANCER" }, + { "group": "BG_survival_story_UNIVERSAL" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" } + ], + "bonus_str": { "rng": [ -2, 2 ] }, + "bonus_dex": { "rng": [ -2, 2 ] }, + "bonus_int": { "rng": [ 0, 4 ] }, + "bonus_per": { "rng": [ 0, 3 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -3 ] } ] } ] } }, + { "skill": "spellcraft", "bonus": { "rng": [ 1, 3 ] } } + ], + "spells": [ { "id": "light_healing", "level": 3 }, { "id": "bio_bonespear", "level": 6 } ] + } +] diff --git a/data/mods/Magical_Nights/npc/factions.json b/data/mods/Magical_Nights/npc/factions.json new file mode 100644 index 000000000000..397dbe5f64a6 --- /dev/null +++ b/data/mods/Magical_Nights/npc/factions.json @@ -0,0 +1,123 @@ +[ + { + "type": "faction", + "id": "wizards_ancient", + "name": "The Ancient Ones", + "likes_u": 0, + "respects_u": 0, + "known_by_u": false, + "size": 5, + "power": 100, + "food_supply": 115200, + "wealth": 100000, + "currency": "embued_coin", + "relations": { + "lobby_beggars": { + "kill on sight": false, + "watch your back": false, + "share my stuff": true, + "guard your stuff": true, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "free_merchants": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "old_guard": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "no_faction": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "wasteland_scavengers": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + } + }, + "description": "The spellcrafters of old. Hidden from the world until the cataclysm, they have their own agenda and care little for you or yours." + }, + { + "type": "faction", + "id": "healers_grey", + "name": "The Grey Flame", + "likes_u": 10, + "respects_u": 10, + "known_by_u": false, + "size": 50, + "power": 50, + "food_supply": 11520, + "wealth": 1000, + "relations": { + "lobby_beggars": { + "kill on sight": false, + "watch your back": false, + "share my stuff": true, + "guard your stuff": true, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "free_merchants": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "old_guard": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "no_faction": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + }, + "wasteland_scavengers": { + "kill on sight": false, + "watch your back": false, + "share my stuff": false, + "guard your stuff": false, + "lets you in": false, + "defends your space": false, + "knows your voice": true + } + }, + "description": "A collection of those cursed by the cataclysm. They have sworn to rid this world of its curse and will stop at nothing to accomplish their task." + } +] diff --git a/data/mods/Magical_Nights/npc/items_worn.json b/data/mods/Magical_Nights/npc/items_worn.json new file mode 100644 index 000000000000..2304f92949ef --- /dev/null +++ b/data/mods/Magical_Nights/npc/items_worn.json @@ -0,0 +1,15 @@ +[ + { + "type": "item_group", + "id": "NC_OLD_MAGUS_worn", + "subtype": "collection", + "items": [ + { "item": "socks" }, + { "item": "tunic" }, + { "item": "long_underpants" }, + { "item": "undershirt" }, + { "item": "slippers" }, + { "item": "robe" } + ] + } +] diff --git a/data/mods/Magical_Nights/npc/missiondef.json b/data/mods/Magical_Nights/npc/missiondef.json new file mode 100644 index 000000000000..57018db96623 --- /dev/null +++ b/data/mods/Magical_Nights/npc/missiondef.json @@ -0,0 +1,101 @@ +[ + { + "id": "MISSION_GET_MAGIC_BOOK", + "type": "mission_definition", + "name": "Retrieve Magic Book", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 4, + "value": 250000, + "item": "magus_spellbook", + "start": { + "effect": [ { "npc_remove_item_with": "magus_spellbook" }, "assign_guard", { "clear_npc_rule": "investigate_noises" } ] + }, + "end": { "effect": [ { "npc_add_var": "npc_magus_book_done", "type": "dialogue", "context": "old_magus", "value": "yes" } ] }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "Where did I put that blasted…", + "offer": "I seem to have misplaced my book, The Tome of The Battle Mage. That worthless apprentice probably stole it. Bring it to me.", + "accepted": "…What? Oh you're still here. Go find my book.", + "rejected": "Just as useless as that apprentice…", + "advice": "You want me to do your job for you? Bah. That apprentice said something about wanting to look around town, you might start there. Oh, and it's called The Tome of The Battle Mage, you can read at least the title, can't you?", + "inquire": "Where's my book?", + "success": "Finally. Took you long enough.", + "success_lie": "Nonsense! Useless! Waste of my time!", + "failure": "Ugh, why am I cursed with useless people?" + } + }, + { + "id": "MISSION_GET_POWER_CBM", + "type": "mission_definition", + "name": "Find Power Storage CBM", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 2, + "value": 150000, + "item": "bio_power_storage", + "start": { + "effect": [ { "npc_remove_item_with": "bio_power_storage" }, "assign_guard", { "clear_npc_rule": "investigate_noises" } ] + }, + "end": { "effect": [ { "u_buy_item": "techno_fundamentals", "count": 1 } ] }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "More power… moar power… MOAR POWAA!", + "offer": "I need more power. Find me more power storage and I'll give you this book.", + "accepted": "I don't care where it comes from so long as it's clean.", + "rejected": "You want more power too, don't you?", + "advice": "Electronic Stores might have what I need. Or you could just cut it out of something.", + "inquire": "Find anything?", + "success": "Perfect. More power… power…", + "success_lie": "I don't understand.", + "failure": "I must find more power, this setback is inconvenient." + } + }, + { + "id": "MISSION_PURGE_50_Z", + "type": "mission_definition", + "name": "Kill 50 Zombies", + "goal": "MGOAL_KILL_MONSTER_SPEC", + "monster_species": "ZOMBIE", + "monster_kill_goal": 50, + "difficulty": 5, + "value": 250000, + "start": { "effect": "follow_only" }, + "end": { "effect": "stop_following" }, + "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_PURGE_150_Z", + "dialogue": { + "describe": "Will you answer the call?", + "offer": "This world has fallen to chaos and death. Remove 50 of the cursed from this world; assist me in purging this curse and you shall be rewarded.", + "accepted": "Blessed be. I shall observe your efforts and judge you as one of the many or one of the few.", + "rejected": "You will not help purge this curse? Perhaps you are a part of the curse…", + "advice": "The awakened congregate in towns and cities, the closer to the center the more you will find.", + "inquire": "Blessed be.", + "success": "Blessed be. You are one of the few. We shall do great works together.", + "success_lie": "Deception is the realm of the cursed. You disappoint me.", + "failure": "Was the curse too strong for you?" + } + }, + { + "id": "MISSION_PURGE_150_Z", + "type": "mission_definition", + "name": "Kill 150 Zombies", + "goal": "MGOAL_KILL_MONSTER_SPEC", + "monster_species": "ZOMBIE", + "monster_kill_goal": 150, + "difficulty": 7, + "value": 250000, + "start": { "effect": "follow_only" }, + "end": { "effect": "stop_following" }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "You have proven you are one of the few, will you stand with the few again?", + "offer": "We must continue the purge. Remove 150 more of the cursed from this land and you shall be blessed with greatness.", + "accepted": "Blessed be. You are a true testament to the few.", + "rejected": "I see. Perhaps you will find your way back to us one day.", + "advice": "The awakened stir in even the darkest of corners. Seek them out and destroy them.", + "inquire": "Blessed be.", + "success": "Blessed be. You are a valuable asset to our cause. Perhaps you may even be our salvation.", + "success_lie": "You have come so far. Only to fall.", + "failure": "The curse of this land infects that which does not seek to purge." + } + } +] diff --git a/data/mods/Magical_Nights/npc/npc.json b/data/mods/Magical_Nights/npc/npc.json new file mode 100644 index 000000000000..a1acec955c06 --- /dev/null +++ b/data/mods/Magical_Nights/npc/npc.json @@ -0,0 +1,38 @@ +[ + { + "type": "npc", + "id": "magus_old", + "//": "old magus in the wizard tower.", + "name_suffix": "magus", + "class": "NC_OLD_MAGUS", + "attitude": 0, + "mission": 7, + "mission_offered": "MISSION_GET_MAGIC_BOOK", + "chat": "TALK_OLD_MAGUS", + "faction": "wizards_ancient" + }, + { + "type": "npc", + "id": "techno_kid", + "//": "possibly crazy techno kid", + "name_suffix": "technologist", + "class": "NC_TECHNO_KID", + "attitude": 0, + "mission": 7, + "mission_offered": "MISSION_GET_POWER_CBM", + "chat": "TALK_TECHNO_KID", + "faction": "no_faction" + }, + { + "type": "npc", + "id": "healer_priest", + "//": "a priest of the grey flame", + "name_suffix": "healer", + "class": "NC_BIO_PRIEST", + "attitude": 0, + "mission": 7, + "mission_offered": "MISSION_PURGE_50_Z", + "chat": "TALK_HEALER_GREY", + "faction": "healers_grey" + } +] diff --git a/data/mods/Magical_Nights/obsolete.json b/data/mods/Magical_Nights/obsolete.json new file mode 100644 index 000000000000..3283d55cddb4 --- /dev/null +++ b/data/mods/Magical_Nights/obsolete.json @@ -0,0 +1,19 @@ +[ + { + "type": "recipe", + "result": "flu_shot", + "obsolete": true + }, + { + "id": "armor_stonefist", + "type": "MIGRATION", + "replace": "stonefist" + }, + { + "id": "bio_fuel_cell_blood", + "type": "bionic", + "name": { "str": "Obsolete Blood Power Generator CBM" }, + "description": "This bionic is obsolete!", + "occupied_bodyparts": [ [ "torso", 8 ] ] + } +] diff --git a/data/mods/Magical_Nights/professions.json b/data/mods/Magical_Nights/professions.json new file mode 100644 index 000000000000..755ed61efe5e --- /dev/null +++ b/data/mods/Magical_Nights/professions.json @@ -0,0 +1,269 @@ +[ + { + "type": "profession", + "id": "wizard_novice", + "name": "Would-be Wizard", + "description": "You found a pamphlet with bright colors claiming you can be a Wizard, oddly serene with the world falling down around you.", + "points": 1, + "items": { + "both": [ "jeans", "tshirt", "gloves_light", "hat_ball", "boots", "socks", "hoodie", "knit_scarf", "wizard_beginner" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + } + }, + { + "type": "profession", + "id": "pyromaniac", + "name": "Pyromaniac Kelvinist", + "description": "You have loved fire all of your life. You have now discovered your inner fire, and want to exercise that upon the world.", + "points": 2, + "items": { + "both": [ "lighter", "sneakers", "pants", "tshirt", "jacket_light", "pyro" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "PYROMANIA", "KELVINIST" ] + }, + { + "type": "profession", + "id": "druid", + "name": "Druid", + "description": "The ancient circle of druids is gone with the Cataclysm. Nature must thrive.", + "points": 2, + "items": { + "both": [ "druid_spellbook", "leathersandals", "robe", "rope_makeshift_30", "hide_bag", "hat_fur", "gloves_wraps_fur" ] + }, + "traits": [ "DRUID" ] + }, + { + "type": "profession", + "id": "priest_magic2", + "name": "Priest", + "description": "When the apocalypse struck you did everything you could to protect your parish faithful, but it appears that prayers were not enough. Now that they are all dead, you should probably find something more tangible to protect you.", + "points": 0, + "flags": [ "SCEN_ONLY" ], + "skills": [ { "level": 3, "name": "speech" } ], + "items": { + "both": { + "items": [ + "pants", + "longshirt", + "socks", + "cassock", + "dress_shoes", + "holy_symbol", + "smart_phone", + "holybook_bible1", + "priest_beginner" + ] + }, + "male": [ "briefs" ], + "female": [ "bra", "panties" ] + } + }, + { + "type": "profession", + "id": "shinto_priest_magic2", + "name": "Kannushi", + "description": "You were one of the maintainers of a Shinto shrine, performing rituals and sacred tasks. You preferred it when only the spirits of the dead inhabited your shrine, and not their rotting corpses.", + "points": 0, + "flags": [ "SCEN_ONLY" ], + "skills": [ { "level": 1, "name": "fabrication" }, { "level": 1, "name": "tailor" } ], + "items": { + "both": { + "items": [ + "kariginu", + "eboshi", + "pants", + "smart_phone", + "tabi_dress", + "geta", + "holy_symbol", + "holybook_kojiki", + "priest_beginner" + ] + }, + "male": [ "briefs" ], + "female": [ "bra", "panties" ] + } + }, + { + "type": "profession", + "id": "imam_magic2", + "name": { "male": "Imam", "female": "Mourchida" }, + "description": "You spent much of your time prior to the apocalypse at the local mosque, studying the words of the Prophet and the Quran and guiding your community in prayer. Back then they came from far and wide to listen to you, now they come to eat your brains.", + "points": 0, + "flags": [ "SCEN_ONLY" ], + "//": "No knife, fire, or decent storage/armor. Skill points are countered.", + "skills": [ { "level": 2, "name": "speech" }, { "level": 1, "name": "barter" } ], + "items": { + "both": { + "items": [ "pants", "tshirt", "socks", "kufi", "thawb", "lowtops", "holybook_quran", "smart_phone", "priest_beginner" ] + }, + "male": [ "briefs" ], + "female": [ "bra", "panties" ] + } + }, + { + "type": "profession", + "id": "rabbi_magic2", + "name": "Rabbi", + "description": "You were celebrating with your flock in the temple when the Cataclysm struck. You sure could use a messiah right now!", + "points": 0, + "flags": [ "SCEN_ONLY" ], + "skills": [ { "level": 2, "name": "speech" }, { "level": 1, "name": "firstaid" } ], + "items": { + "both": { + "items": [ + "pants", + "leather_belt", + "dress_shirt", + "socks", + "kittel", + "kippah", + "dress_shoes", + "holy_symbol", + "smart_phone", + "holybook_talmud", + "holybook_tanakh", + "priest_beginner" + ] + }, + "male": [ "briefs" ], + "female": [ "bra", "panties" ] + } + }, + { + "type": "profession", + "id": "guru_magic2", + "name": "Guru", + "description": "You spent many years traveling the world, becoming wise and learned. Normally, you can answer any question, but even you are not quite sure what to do about the ravenous undead.", + "points": 2, + "flags": [ "SCEN_ONLY" ], + "//": "1.5 pts skills, cutting implement, and plenty of storage, so lack of fire only goes so far.", + "skills": [ { "level": 2, "name": "speech" }, { "level": 1, "name": "survival" } ], + "items": { + "both": { + "items": [ + "jeans", + "tshirt", + "socks", + "robe", + "turban", + "waterskin", + "pockknife", + "mbag", + "leathersandals", + "holy_symbol", + "smart_phone", + "wristwatch", + "priest_beginner" + ] + }, + "male": [ "briefs" ], + "female": [ "panties" ] + } + }, + { + "type": "profession", + "id": "preacher_magic2", + "name": "Preacher", + "description": "You devoted your life to spreading the good word; always on the road, traveling from town to town. Now everything has gone to hell, you can't host your daily podcast, and the undead listening to your sermons don't seem particularly moved.", + "points": 2, + "flags": [ "SCEN_ONLY" ], + "//": "Storage + 2 points in skills, - no knife or fire.", + "skills": [ { "level": 2, "name": "speech" }, { "level": 1, "name": "driving" }, { "level": 1, "name": "computer" } ], + "items": { + "both": { + "items": [ + "dress_shirt", + "pants", + "socks", + "dress_shoes", + "wristwatch", + "backpack", + "laptop", + "flyer", + "flyer", + "flyer", + "smart_phone", + "holy_symbol", + "priest_beginner" + ] + }, + "male": [ "briefs" ], + "female": [ "bra", "panties" ] + } + }, + { + "type": "profession", + "id": "novice_necromancer", + "name": "Novice Necromancer", + "description": "You always had to hide your magic, as it was generally not an acceptable type of magic in the wizarding world, but with the Cataclysm you need to pull every trick out of the book.", + "spells": [ { "id": "summon_zombie", "level": 5 }, { "id": "necrotic_gaze", "level": 1 } ], + "points": 2, + "skills": [ { "level": 1, "name": "spellcraft" } ], + "items": { + "both": [ "jeans", "tshirt", "gloves_light", "hat_ball", "boots", "socks", "hoodie", "knit_scarf", "primitive_knife", "summon_undead_spellbook" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "ANIMIST" ] + }, + { + "type": "profession", + "id": "novice_stormshaper", + "name": "Novice Stormshaper", + "description": "The son of a weatherman, you were always interested in the weather. Recently you found it was possible to manipulate the weather yourself through arcane means! Unfortunately you did not have long to enjoy your power, as events unfolded…", + "spells": [ { "id": "lightning_bolt", "level": 1 }, { "id": "windrun", "level": 1 } ], + "points": 0, + "items": { + "both": [ "jeans", "tshirt", "hat_ball", "sneakers", "socks", "hoodie", "novice_storm_spellbook" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "STORMSHAPER" ] + }, + { + "type": "profession", + "id": "novice_earthshaper", + "name": "Novice Earthshaper", + "description": "You always were tough in a fight. Your coach managed to teach you a trick or two to make you a little tougher.", + "spells": [ { "id": "stonefist", "level": 1 }, { "id": "seismic_stomp", "level": 1 } ], + "points": 0, + "items": { + "both": [ "jeans", "tshirt", "boxing_gloves", "hat_ball", "sneakers", "socks", "hoodie", "novice_earth_spellbook" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "EARTHSHAPER" ] + }, + { + "type": "profession", + "id": "novice_technomancer", + "name": "Novice Technomancer", + "description": "With the recent Cataclysm, the way you found to cheat on tests may have to find some other use.", + "spells": [ { "id": "synaptic_stimulation", "level": 4 } ], + "points": 0, + "items": { + "both": [ "jeans", "tshirt", "gloves_light", "hat_ball", "sneakers", "socks", "hoodie", "novice_techno_spellbook" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "TECHNOMANCER" ] + }, + { + "type": "profession", + "id": "novice_kelvinist", + "name": "Novice Kelvinist", + "description": "Even from a young age, you'd always felt drawn to the hot and cold. Fire had always warmed your spirits, and every Winter you were praying for a snow day simply because you loved them so much, even as you got older. It's only natural that you'd find yourself learning the magic to control these primal elements.", + "spells": [ { "id": "create_lighter", "level": 1 }, { "id": "chilling_touch", "level": 1 } ], + "points": 0, + "items": { + "both": [ "jeans", "tshirt", "hat_ball", "gloves_light", "sneakers", "socks", "hoodie", "novice_kelvin_spellbook" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "KELVINIST" ] + } +] diff --git a/data/mods/Magical_Nights/qualities.json b/data/mods/Magical_Nights/qualities.json new file mode 100644 index 000000000000..d4425faa8100 --- /dev/null +++ b/data/mods/Magical_Nights/qualities.json @@ -0,0 +1,34 @@ +[ + { + "type": "recipe_category", + "id": "CC_ENCHANTED", + "recipe_subcategories": [ + "CSC_ALL", + "CSC_ENCHANTED_MATERIALS", + "CSC_ENCHANTED_TOOLS", + "CSC_ENCHANTED_WEAPONS", + "CSC_ENCHANTED_AMMO", + "CSC_ENCHANTED_ARMOR", + "CSC_ENCHANTED_POTIONS", + "CSC_ENCHANTED_RUNES", + "CSC_ENCHANTED_MODS", + "CSC_ENCHANTED_OTHER", + "CSC_ENCHANTED_ENCHANTING" + ] + }, + { + "type": "tool_quality", + "id": "MANA_FOCUS", + "name": "mana focusing" + }, + { + "type": "tool_quality", + "id": "MANA_INFUSE", + "name": "mana infusing" + }, + { + "type": "tool_quality", + "id": "MANA_WEAVE", + "name": "mana weaving" + } +] diff --git a/data/mods/Magical_Nights/readme.md b/data/mods/Magical_Nights/readme.md new file mode 100644 index 000000000000..f93807224fb1 --- /dev/null +++ b/data/mods/Magical_Nights/readme.md @@ -0,0 +1,12 @@ +# The Ancestry of this Mod +This mod, Magical Nights, is built off of the version of Magiclysm found in Cataclysm: Bright Nights. As such, some thanks goes to KorGgenT, Aptronym, and LaVeyanFiend for their past work on Magiclysm. + +I adopted that version of Magiclysm, becoming its maintainer. I rebalanced Demon Spiders, I rebalanced almost every single spell in the mod, and even added my own content (in the form of my own take on Goblins, some clothing mods (including owlbear fur), and the dragonbone weapons). +However, I found myself disagreeing fundamentally with much of KorG's original vision for Magiclysm, particularly in the lore. Thus, Magical Nights was born. + +# What is the big lore shift you've made? +I'm glad you asked! Under KorG's vision, the public has basically always known about magic. However, for whatever reason, the public didn't much care for magic compared to technology. As such, Magical Academies could be found in the cities, but it was rare for anyone in the public to actually use (much) magic. + +My approach is instead that magic has long been hidden, ever since the immense persecution that it once suffered. You wouldn't find evidence of pre-cataclysm magic in cities aside from the odd basement or appearance in a book store. Instead, magic is more out in the countryside. Mage towers, Magic Academies, and all sorts of magic are located out in the countryside instead. + +Due to the influx of magic following the tearing of the veil between worlds, some magic has made its way into cities and towns. However, it will most likely primarily be magical anomalies and threats. Some intriguing uses and aspects of these urban influxes of the arcane may be discoverable by the player, given some effort. diff --git a/data/mods/Magical_Nights/recipes.json b/data/mods/Magical_Nights/recipes.json new file mode 100644 index 000000000000..73edd61d6c3e --- /dev/null +++ b/data/mods/Magical_Nights/recipes.json @@ -0,0 +1,33 @@ +[ + { + "type": "recipe", + "result": "egg_owlbear", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_OTHER", + "skill_used": "cooking", + "time": "2 m", + "autolearn": true, + "result_mult": 40, + "byproducts": [ [ "stone_shell", 3 ] ], + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "components": [ [ [ "egg_owlbear_rock", 1 ] ] ] + }, + { + "type": "recipe", + "result": "glow_light", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_LIGHTING", + "skill_used": "spellcraft", + "difficulty": 3, + "time": "2 m", + "autolearn": true, + "components": [ + [ [ "mana_potion_lesser", 1 ] ], + [ [ "flask_glass", 1 ], [ "beaker", 1 ] ], + [ [ "glow_dust", 2 ] ], + [ [ "diamond", 1 ], [ "bulette_pearl", 1 ] ], + [ [ "string_6", 1 ] ], + [ [ "rag", 2 ] ] + ] + } +] diff --git a/data/mods/Magical_Nights/recipes/alchemy.json b/data/mods/Magical_Nights/recipes/alchemy.json new file mode 100644 index 000000000000..4fadcbe145f5 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/alchemy.json @@ -0,0 +1,67 @@ +[ + { + "type": "recipe", + "result": "dragon_essence", + "qualities": [ + { "id": "CONCENTRATE", "level": 1 }, + { "id": "FINE_DISTILL", "level": 1 }, + { "id": "SEPARATE", "level": 1 }, + { "id": "CONTAIN", "level": 1 }, + { "id": "MANA_FOCUS", "level": 1 } + ], + "tools": [ [ [ "food_processor", 40 ] ], [ [ "surface_heat", 20, "LIST" ] ] ], + "components": [ [ [ "dragon_scale", 4, "LIST" ], [ "meat_dragon", 40 ] ] ], + "time": "2 h", + "skill_used": "cooking", + "difficulty": 3, + "skills_required": [ "spellcraft", 2 ], + "book_learn": [ [ "black_dragons", 2 ] ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER" + }, + { + "type": "recipe", + "result": "spell_scroll_acid_resistance", + "qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ [ [ "paint_brush", -1 ] ] ], + "components": [ + [ [ "blood_tainted", 2000 ], [ "blood", 8 ], [ "dragon_blood", 2000 ] ], + [ [ "acid", 4 ] ], + [ [ "water", 2 ], [ "water_clean", 2 ] ] + ], + "time": "2 h", + "skill_used": "spellcraft", + "difficulty": 2, + "book_learn": [ [ "black_dragons", 2 ] ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "flags": [ "SECRET" ] + }, + { + "type": "recipe", + "result": "mana_dust", + "qualities": [ { "id": "CONTAIN", "level": 1 } ], + "tools": [ [ [ "mortar_pestle", -1 ] ] ], + "components": [ [ [ "crystallized_mana", 1 ] ] ], + "time": "5 m", + "skill_used": "fabrication", + "difficulty": 1, + "skills_required": [ "spellcraft", 2 ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "autolearn": true + }, + { + "type": "recipe", + "result": "mana_infused_blood", + "qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "components": [ [ [ "mana_dust", 1 ] ], [ [ "blood", 1 ] ] ], + "time": "30 m", + "skill_used": "cooking", + "difficulty": 3, + "skills_required": [ "spellcraft", 3 ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "autolearn": true + } +] diff --git a/data/mods/Magical_Nights/recipes/armor.json b/data/mods/Magical_Nights/recipes/armor.json new file mode 100644 index 000000000000..92ab82c9c4eb --- /dev/null +++ b/data/mods/Magical_Nights/recipes/armor.json @@ -0,0 +1,122 @@ +[ + { + "result": "helmet_demonchitin", + "byproducts": [ [ "demon_chitin_piece", 3 ] ], + "qualities": [ + { "id": "CHISEL", "level": 1 }, + { "id": "SEW", "level": 3 }, + { "id": "LEATHER_AWL", "level": 1 }, + { "id": "MANA_INFUSE", "level": 2 } + ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 7, + "time": "4 h", + "autolearn": true, + "book_learn": [ [ "magic_armormaking", 6 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_plate", 1 ] ], [ [ "demon_chitin_piece", 1 ] ] ] + }, + { + "result": "armguard_demonchitin", + "byproducts": [ [ "demon_chitin_piece", 8 ] ], + "qualities": [ + { "id": "CHISEL", "level": 1 }, + { "id": "SEW", "level": 3 }, + { "id": "LEATHER_AWL", "level": 1 }, + { "id": "MANA_INFUSE", "level": 2 } + ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 6, + "time": "2 h", + "autolearn": true, + "book_learn": [ [ "magic_armormaking", 5 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_plate", 1 ] ], [ [ "demon_chitin_piece", 2 ] ] ] + }, + { + "result": "armor_demonchitin", + "qualities": [ + { "id": "CHISEL", "level": 1 }, + { "id": "SEW", "level": 3 }, + { "id": "LEATHER_AWL", "level": 1 }, + { "id": "MANA_INFUSE", "level": 2 } + ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 8, + "time": "4 h", + "autolearn": true, + "book_learn": [ [ "magic_armormaking", 7 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_plate", 4 ] ], [ [ "demon_chitin_piece", 6 ] ] ] + }, + { + "result": "boots_demonchitin", + "qualities": [ + { "id": "CHISEL", "level": 1 }, + { "id": "SEW", "level": 3 }, + { "id": "LEATHER_AWL", "level": 1 }, + { "id": "MANA_INFUSE", "level": 2 } + ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 5, + "time": "2 h 40 m", + "autolearn": true, + "book_learn": [ [ "magic_armormaking", 4 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_plate", 1 ] ], [ [ "demon_chitin_piece", 2 ] ] ] + }, + { + "result": "gauntlets_demonchitin", + "qualities": [ + { "id": "CHISEL", "level": 1 }, + { "id": "SEW", "level": 3 }, + { "id": "LEATHER_AWL", "level": 1 }, + { "id": "MANA_INFUSE", "level": 2 } + ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 5, + "time": "2 h", + "autolearn": true, + "book_learn": [ [ "magic_armormaking", 4 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 10 ] ] ] + }, + { + "result": "demonchitin_armor_horse", + "type": "recipe", + "copy-from": "armor_demonchitin", + "category": "CC_ANIMALS", + "subcategory": "CSC_ANIMALS_EQUINE ARMOR", + "time": "17 h 30 m", + "book_learn": [ [ "textbook_tailor", 5 ], [ "tailor_portfolio", 5 ] ], + "skills_required": [ [ "spellcraft", 6 ], [ "fabrication", 4 ], [ "survival", 4 ] ], + "using": [ [ "cordage", 7 ] ], + "components": [ [ [ "demon_chitin_plate", 4 ] ], [ [ "demon_chitin_piece", 20 ] ] ] + }, + { + "result": "demonchitin_harness_dog", + "type": "recipe", + "copy-from": "armor_demonchitin", + "category": "CC_ANIMALS", + "subcategory": "CSC_ANIMALS_CANINE ARMOR", + "skills_required": [ [ "spellcraft", 6 ], [ "fabrication", 4 ], [ "survival", 4 ] ], + "time": "5 h", + "using": [ [ "cordage", 1 ] ], + "components": [ [ [ "demon_chitin_piece", 12 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/recipes/blacksmithing.json b/data/mods/Magical_Nights/recipes/blacksmithing.json new file mode 100644 index 000000000000..56b29c8fa7f6 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/blacksmithing.json @@ -0,0 +1,80 @@ +[ + { + "result": "orichalcum_ingot", + "type": "recipe", + "category": "CC_OTHER", + "subcategory": "CSC_MATERIALS", + "skill_used": "fabrication", + "difficulty": 5, + "time": "180 m", + "batch_time_factors": [ 50, 2 ], + "book_learn": [ [ "welding_book", 4 ] ], + "tools": [ [ [ "demon_forge", 15 ] ], [ [ "tongs", -1 ] ] ], + "components": [ [ [ "orichalcum_sliver", 8 ], [ "orichalcum_lump", 2 ] ], [ [ "mercury", 100 ] ] ] + }, + { + "result": "orichalcum_ingot", + "id_suffix": "with_bronze", + "type": "recipe", + "category": "CC_OTHER", + "skill_used": "fabrication", + "difficulty": 5, + "time": "180 m", + "batch_time_factors": [ 50, 2 ], + "book_learn": [ [ "welding_book", 4 ] ], + "tools": [ [ [ "demon_forge", 15 ] ], [ [ "tongs", -1 ] ] ], + "components": [ [ [ "scrap_bronze", 9 ] ], [ [ "mercury", 400 ] ] ] + }, + { + "result": "mithril_ingot", + "type": "recipe", + "category": "CC_OTHER", + "subcategory": "CSC_MATERIALS", + "skill_used": "fabrication", + "difficulty": 6, + "time": "180 m", + "batch_time_factors": [ 50, 2 ], + "book_learn": [ [ "welding_book", 5 ] ], + "tools": [ [ [ "demon_forge", 15 ] ], [ [ "tongs", -1 ] ] ], + "components": [ [ [ "mithril_lump", 2 ] ], [ [ "mercury", 100 ] ] ] + }, + { + "result": "mithril_ingot", + "id_suffix": "with_silver", + "type": "recipe", + "category": "CC_OTHER", + "skill_used": "fabrication", + "difficulty": 6, + "time": "180 m", + "batch_time_factors": [ 50, 2 ], + "book_learn": [ [ "welding_book", 5 ] ], + "tools": [ [ [ "demon_forge", 15 ] ], [ [ "tongs", -1 ] ] ], + "components": [ [ [ "silver_small", 9 ] ], [ [ "mercury", 400 ] ] ] + }, + { + "type": "recipe", + "result": "fireproof_mortar", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_OTHER", + "skill_used": "fabrication", + "difficulty": 2, + "time": "20 m", + "book_learn": [ [ "metal_legends", 2 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "con_mix", 50 ] ], [ [ "rock_quern", -1 ], [ "clay_quern", -1 ], [ "mortar_pestle", -1 ] ] ], + "components": [ [ [ "material_cement", 50 ] ], [ [ "material_sand", 150 ] ], [ [ "demon_chitin_piece", 10 ] ] ] + }, + { + "type": "recipe", + "result": "alumentum", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_OTHER", + "skill_used": "spellcraft", + "difficulty": 3, + "time": "16 m", + "autolearn": true, + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "COOK", "level": 3 }, { "id": "DISTILL", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "components": [ [ [ "charcoal", 50 ] ], [ [ "crystallized_mana", 10 ] ], [ [ "denat_alcohol", 10 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/recipes/construction.json b/data/mods/Magical_Nights/recipes/construction.json new file mode 100644 index 000000000000..68f7e7813600 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/construction.json @@ -0,0 +1,20 @@ +[ + { + "type": "construction", + "id": "constr_magiclysm_translocator_gate", + "group": "build_translocator_gate", + "category": "FURN", + "required_skills": [ [ "fabrication", 6 ], [ "spellcraft", 6 ] ], + "time": "360 m", + "qualities": [ [ { "id": "HAMMER", "level": 2 } ], [ { "id": "SAW_W", "level": 2 } ] ], + "components": [ + [ [ "wood_sheet", 2 ], [ "wood_panel", 4 ] ], + [ [ "2x4", 4 ] ], + [ [ "nail", 24 ] ], + [ [ "teleporter", 1 ] ], + [ [ "sheet", 2 ] ] + ], + "pre_special": "check_empty", + "post_furniture": "f_magiclysm_translocator_gate" + } +] diff --git a/data/mods/Magical_Nights/recipes/cooking.json b/data/mods/Magical_Nights/recipes/cooking.json new file mode 100644 index 000000000000..5b16d46d214c --- /dev/null +++ b/data/mods/Magical_Nights/recipes/cooking.json @@ -0,0 +1,33 @@ +[ + { + "type": "recipe", + "result": "purified_meat", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_MEAT", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 1 ], + "difficulty": 3, + "book_learn": [ [ "cooking_poison", 2 ] ], + "time": "15 m", + "batch_time_factors": [ 67, 5 ], + "qualities": [ { "id": "COOK", "level": 1 }, { "id": "MAGIC_MUTAGEN", "level": 1 } ], + "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ], + "components": [ [ [ "mutant_meat", 3 ] ] ] + }, + { + "type": "recipe", + "result": "impure_meat", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_MEAT", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 3 ], + "difficulty": 5, + "book_learn": [ [ "cooking_poison", 2 ] ], + "time": "15 m", + "autolearn": true, + "batch_time_factors": [ 67, 5 ], + "qualities": [ { "id": "COOK", "level": 1 }, { "id": "MAGIC_MUTAGEN", "level": 1 } ], + "tools": [ [ [ "surface_heat", 7, "LIST" ] ] ], + "components": [ [ [ "meat_tainted", 4 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/recipes/deconstruction.json b/data/mods/Magical_Nights/recipes/deconstruction.json new file mode 100644 index 000000000000..28167913bdef --- /dev/null +++ b/data/mods/Magical_Nights/recipes/deconstruction.json @@ -0,0 +1,69 @@ +[ + { + "result": "broken_claygolem", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 2, + "time": "4 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "//": "Balanced based on weight", + "components": [ [ [ "clay_lump", 231 ] ] ] + }, + { + "result": "broken_stonegolem", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 4, + "time": "4 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "components": [ [ [ "rock", 222 ] ], [ [ "sharp_rock", 33 ] ] ] + }, + { + "result": "broken_irongolem", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 6, + "time": "6 h", + "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "SAW_M", "level": 1 } ], + "components": [ [ [ "scrap", 800 ] ], [ [ "steel_lump", 200 ] ] ] + }, + { + "result": "broken_plasticgolem", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 3, + "time": "5 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "components": [ [ [ "plastic_chunk", 1400 ] ] ] + }, + { + "result": "broken_resingolem_fresh", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 3, + "time": "8 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "//": "Terrible yields on purpose", + "components": [ [ [ "plastic_chunk", 200 ] ] ] + }, + { + "result": "broken_resingolem_half", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 3, + "time": "6 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "//": "Poor yields on purpose", + "components": [ [ [ "plastic_chunk", 800 ] ] ] + }, + { + "result": "broken_resingolem_cured", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 3, + "time": "5 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "//": "Slightly less than pure plastic to account for differences between resin and plastic, I suppose", + "components": [ [ [ "plastic_chunk", 1200 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/recipes/dragon_black.json b/data/mods/Magical_Nights/recipes/dragon_black.json new file mode 100644 index 000000000000..01ef4a4f95ab --- /dev/null +++ b/data/mods/Magical_Nights/recipes/dragon_black.json @@ -0,0 +1,248 @@ +[ + { + "type": "recipe", + "result": "black_dragon_tanning_hide", + "byproducts": [ [ "dragon_black_scale", 20 ] ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_MATERIALS", + "skill_used": "survival", + "skills_required": [ "spellcraft", 5 ], + "difficulty": 3, + "time": "48 m", + "batch_time_factors": [ 20, 10 ], + "qualities": [ + { "id": "CUT", "level": 1 }, + { "id": "COOK", "level": 2 }, + { "id": "BOIL", "level": 1 }, + { "id": "CONTAIN", "level": 1 }, + { "id": "MANA_INFUSE", "level": 1 } + ], + "tools": [ [ [ "surface_heat", 20, "LIST" ] ] ], + "book_learn": [ [ "black_dragons", 2 ] ], + "components": [ [ [ "dragon_essence", 1 ] ], [ [ "black_dragon_hide_raw", 1 ] ] ] + }, + { + "result": "suit_black_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 5, + "skills_required": [ "spellcraft", 3 ], + "time": "70 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 250 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 40 ] ], [ [ "dragon_black_scale", 150 ] ], [ [ "dragon_essence", 15 ] ] ] + }, + { + "result": "suit_black_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 7, + "skills_required": [ "spellcraft", 5 ], + "time": "340 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 250 ], [ "welding_standard", 50 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 40 ] ], [ [ "dragon_black_scale", 1500 ] ], [ [ "dragon_essence", 15 ] ] ] + }, + { + "result": "boots_black_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 5, + "skills_required": [ "spellcraft", 3 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 100 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 15 ] ], [ [ "dragon_essence", 2 ] ] ] + }, + { + "result": "boots_black_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 7, + "skills_required": [ "spellcraft", 5 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 100 ], [ "welding_standard", 10 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 6 ] ], [ [ "dragon_black_scale", 75 ] ], [ [ "dragon_essence", 4 ] ] ] + }, + { + "result": "helmet_black_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 5, + "skills_required": [ "spellcraft", 3 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 100 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 3 ] ], [ [ "dragon_black_scale", 8 ] ], [ [ "dragon_essence", 2 ] ] ] + }, + { + "result": "helmet_black_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 7, + "skills_required": [ "spellcraft", 5 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 100 ], [ "welding_standard", 10 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 1 ] ], [ [ "dragon_black_scale", 90 ] ], [ [ "dragon_essence", 4 ] ] ] + }, + { + "result": "gloves_black_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 5, + "skills_required": [ "spellcraft", 3 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 100 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 3 ] ], [ [ "dragon_black_scale", 10 ] ], [ [ "dragon_essence", 3 ] ] ] + }, + { + "result": "gauntlets_black_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 7, + "skills_required": [ "spellcraft", 5 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 100 ], [ "welding_standard", 10 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 50 ] ], [ [ "dragon_essence", 5 ] ] ] + }, + { + "result": "suit_xlblack_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 6, + "skills_required": [ "spellcraft", 4 ], + "time": "70 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 350 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 60 ] ], [ [ "dragon_black_scale", 250 ] ], [ [ "dragon_essence", 20 ] ] ] + }, + { + "result": "suit_xlblack_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 8, + "skills_required": [ "spellcraft", 6 ], + "time": "340 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 350 ], [ "welding_standard", 100 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 60 ] ], [ [ "dragon_black_scale", 2250 ] ], [ [ "dragon_essence", 25 ] ] ] + }, + { + "result": "boots_xlblack_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 6, + "skills_required": [ "spellcraft", 4 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 150 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 6 ] ], [ [ "dragon_black_scale", 20 ] ], [ [ "dragon_essence", 3 ] ] ] + }, + { + "result": "boots_xlblack_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 8, + "skills_required": [ "spellcraft", 6 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 150 ], [ "welding_standard", 20 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 8 ] ], [ [ "dragon_black_scale", 125 ] ], [ [ "dragon_essence", 6 ] ] ] + }, + { + "result": "helmet_xlblack_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 6, + "skills_required": [ "spellcraft", 4 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 150 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 12 ] ], [ [ "dragon_essence", 3 ] ] ] + }, + { + "result": "helmet_xlblack_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 8, + "skills_required": [ "spellcraft", 6 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 150 ], [ "welding_standard", 20 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 2 ] ], [ [ "dragon_black_scale", 140 ] ], [ [ "dragon_essence", 6 ] ] ] + }, + { + "result": "gloves_xlblack_dragon_hide", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "difficulty": 6, + "skills_required": [ "spellcraft", 4 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 5 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 150 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 4 ] ], [ [ "dragon_black_scale", 15 ] ], [ [ "dragon_essence", 4 ] ] ] + }, + { + "result": "gauntlets_xlblack_dragon_scale", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "fabrication", + "difficulty": 8, + "skills_required": [ "spellcraft", 6 ], + "time": "30 h", + "book_learn": [ [ "black_dragons", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 2 }, { "id": "CHISEL", "level": 3 } ], + "using": [ [ "sewing_standard", 150 ], [ "welding_standard", 20 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 6 ] ], [ [ "dragon_black_scale", 75 ] ], [ [ "dragon_essence", 7 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/recipes/enchanting.json b/data/mods/Magical_Nights/recipes/enchanting.json new file mode 100644 index 000000000000..40e3779df36d --- /dev/null +++ b/data/mods/Magical_Nights/recipes/enchanting.json @@ -0,0 +1,723 @@ +[ + { + "type": "recipe", + "result": "cestus_plus_one", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ENCHANTING", + "skill_used": "fabrication", + "difficulty": 6, + "time": "3 h", + "autolearn": false, + "reversible": false, + "book_learn": [ [ "weapon_enchanting_guide", 6 ] ], + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "components": [ [ [ "cestus", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "cestus_plus_two", + "components": [ [ [ "cestus_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "flaming_fist_plus_one", + "components": [ [ [ "flaming_fist", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "flaming_fist_plus_two", + "components": [ [ [ "flaming_fist_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "crowbar_plus_one", + "components": [ [ [ "crowbar", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "crowbar_plus_two", + "components": [ [ [ "crowbar_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_hunting_plus_one", + "components": [ [ [ "knife_hunting", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_hunting_plus_two", + "components": [ [ [ "knife_hunting_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "jack_plus_one", + "components": [ [ [ "jack", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "jack_plus_two", + "components": [ [ [ "jack_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "scalpel_plus_one", + "components": [ [ [ "scalpel", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "scalpel_plus_two", + "components": [ [ [ "scalpel_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_butcher_plus_one", + "components": [ [ [ "knife_butcher", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_butcher_plus_two", + "components": [ [ [ "knife_butcher_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_meat_cleaver_plus_one", + "components": [ [ [ "knife_meat_cleaver", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_meat_cleaver_plus_two", + "components": [ [ [ "knife_meat_cleaver_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_carving_plus_one", + "components": [ [ [ "knife_carving", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_carving_plus_two", + "components": [ [ [ "knife_carving_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "cudgel_plus_one", + "components": [ [ [ "cudgel", 1 ] ], [ [ "mana_dust", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "cudgel_plus_two", + "components": [ [ [ "cudgel_plus_one", 1 ] ], [ [ "mana_dust", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "q_staff_plus_one", + "components": [ [ [ "q_staff", 1 ] ], [ [ "mana_dust", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "q_staff_plus_two", + "components": [ [ [ "q_staff_plus_one", 1 ] ], [ [ "mana_dust", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "i_staff_plus_one", + "components": [ [ [ "i_staff", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "i_staff_plus_two", + "components": [ [ [ "i_staff_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "longsword_plus_one", + "components": [ [ [ "longsword", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "longsword_plus_two", + "components": [ [ [ "longsword_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "sledge_plus_one", + "components": [ [ [ "hammer_sledge", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "sledge_plus_two", + "components": [ [ [ "sledge_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "sledge_heavy_plus_one", + "components": [ [ [ "hammer_sledge_heavy", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "sledge_heavy_plus_two", + "components": [ [ [ "sledge_heavy_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "warhammer_plus_one", + "components": [ [ [ "warhammer", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "warhammer_plus_two", + "components": [ [ [ "warhammer_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "bat_plus_one", + "components": [ [ [ "bat", 1 ] ], [ [ "mana_dust", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "bat_plus_two", + "components": [ [ [ "bat_plus_one", 1 ] ], [ [ "mana_dust", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "bat_metal_plus_one", + "components": [ [ [ "bat_metal", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "bat_metal_plus_two", + "components": [ [ [ "bat_metal_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "spear_steel_plus_one", + "components": [ [ [ "spear_steel", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "spear_steel_plus_two", + "components": [ [ [ "spear_steel_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "qiang_plus_one", + "components": [ [ [ "qiang", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "qiang_plus_two", + "components": [ [ [ "qiang_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "halberd_plus_one", + "components": [ [ [ "halberd", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "halberd_plus_two", + "components": [ [ [ "halberd_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "glaive_plus_one", + "components": [ [ [ "glaive", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "glaive_plus_two", + "components": [ [ [ "glaive_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "naginata_plus_one", + "components": [ [ [ "naginata", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "naginata_plus_two", + "components": [ [ [ "naginata_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "mace_plus_one", + "components": [ [ [ "mace", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "mace_plus_two", + "components": [ [ [ "mace_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "morningstar_plus_one", + "components": [ [ [ "morningstar", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "morningstar_plus_two", + "components": [ [ [ "morningstar_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "jian_plus_one", + "components": [ [ [ "jian", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "jian_plus_two", + "components": [ [ [ "jian_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "scimitar_plus_one", + "components": [ [ [ "scimitar", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "scimitar_plus_two", + "components": [ [ [ "scimitar_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "estoc_plus_one", + "components": [ [ [ "estoc", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "estoc_plus_two", + "components": [ [ [ "estoc_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "arming_sword_plus_one", + "components": [ [ [ "arming_sword", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "arming_sword_plus_two", + "components": [ [ [ "arming_sword_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "broadsword_plus_one", + "components": [ [ [ "broadsword", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "broadsword_plus_two", + "components": [ [ [ "broadsword_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "battleaxe_plus_one", + "components": [ [ [ "battleaxe", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "battleaxe_plus_two", + "components": [ [ [ "battleaxe_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "cavalry_sabre_plus_one", + "components": [ [ [ "cavalry_sabre", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "cavalry_sabre_plus_two", + "components": [ [ [ "cavalry_sabre_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "cutlass_plus_one", + "components": [ [ [ "cutlass", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "cutlass_plus_two", + "components": [ [ [ "cutlass_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "fire_ax_plus_one", + "components": [ [ [ "fire_ax", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "fire_ax_plus_two", + "components": [ [ [ "fire_ax_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "katana_plus_one", + "components": [ [ [ "katana", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "katana_plus_two", + "components": [ [ [ "katana_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_combat_plus_one", + "components": [ [ [ "knife_combat", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_combat_plus_two", + "components": [ [ [ "knife_combat_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_rambo_plus_one", + "components": [ [ [ "knife_rambo", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_rambo_plus_two", + "components": [ [ [ "knife_rambo_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "knife_trench_plus_one", + "components": [ [ [ "knife_trench", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "knife_trench_plus_two", + "components": [ [ [ "knife_trench_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "kris_plus_one", + "components": [ [ [ "kris", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "kris_plus_two", + "components": [ [ [ "kris_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "kukri_plus_one", + "components": [ [ [ "kukri", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "kukri_plus_two", + "components": [ [ [ "kukri_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "nodachi_plus_one", + "components": [ [ [ "nodachi", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "nodachi_plus_two", + "components": [ [ [ "nodachi_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "pickaxe_plus_one", + "components": [ [ [ "pickaxe", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "pickaxe_plus_two", + "components": [ [ [ "pickaxe_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "pike_plus_one", + "components": [ [ [ "pike", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "pike_plus_two", + "components": [ [ [ "pike_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "rapier_plus_one", + "components": [ [ [ "rapier", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "rapier_plus_two", + "components": [ [ [ "rapier_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "tanto_plus_one", + "components": [ [ [ "tanto", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "tanto_plus_two", + "components": [ [ [ "tanto_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "wakizashi_plus_one", + "components": [ [ [ "wakizashi", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "wakizashi_plus_two", + "components": [ [ [ "wakizashi_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "zweihander_plus_one", + "components": [ [ [ "zweihander", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "zweihander_plus_two", + "components": [ [ [ "zweihander_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "khopesh_plus_one", + "components": [ [ [ "khopesh", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "khopesh_plus_two", + "components": [ [ [ "khopesh_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "sword_xiphos_plus_one", + "components": [ [ [ "sword_xiphos", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "sword_xiphos_plus_two", + "components": [ [ [ "sword_xiphos_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "dao_plus_one", + "components": [ [ [ "dao", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "dao_plus_two", + "components": [ [ [ "dao_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 1 } ], + "result": "lucerne_plus_one", + "components": [ [ [ "lucern_hammer", 1 ] ], [ [ "mana_dust", 20 ] ], [ [ "mercury", 10 ] ] ] + }, + { + "type": "recipe", + "copy-from": "cestus_plus_one", + "qualities": [ { "id": "MANA_INFUSE", "level": 2 } ], + "result": "lucerne_plus_two", + "components": [ [ [ "lucerne_plus_one", 1 ] ], [ [ "mana_dust", 40 ] ], [ [ "mercury", 20 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/recipes/magic_tools.json b/data/mods/Magical_Nights/recipes/magic_tools.json new file mode 100644 index 000000000000..74338388e782 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/magic_tools.json @@ -0,0 +1,127 @@ +[ + { + "type": "recipe", + "result": "copper_circlet", + "byproducts": [ [ "tinder", 40 ] ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_TOOLS", + "skill_used": "fabrication", + "skills_required": [ "spellcraft", 2 ], + "difficulty": 3, + "time": "30 m", + "autolearn": true, + "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "CUT_FINE", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "components": [ [ [ "scrap_copper", 1 ], [ "copper", 100 ] ], [ [ "splinter", 3 ] ] ] + }, + { + "type": "recipe", + "result": "copper_infuser", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_TOOLS", + "skill_used": "fabrication", + "skills_required": [ "spellcraft", 2 ], + "difficulty": 3, + "time": "20 m", + "book_learn": [ [ "alchemy_basic", 3 ], [ "necro_basic", 4 ], [ "techno_basic", 4 ] ], + "qualities": [ { "id": "CHISEL", "level": 1 } ], + "components": [ [ [ "copper_bracelet", 1 ] ] ] + }, + { + "type": "recipe", + "result": "silver_infuser", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_TOOLS", + "skill_used": "fabrication", + "skills_required": [ "spellcraft", 3 ], + "difficulty": 4, + "time": "20 m", + "book_learn": [ [ "alchemy_basic", 3 ], [ "necro_basic", 4 ], [ "techno_basic", 4 ] ], + "qualities": [ { "id": "CHISEL", "level": 1 } ], + "components": [ [ [ "silver_bracelet", 1 ] ] ] + }, + { + "type": "recipe", + "result": "rune_alchemist", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_TOOLS", + "skill_used": "fabrication", + "skills_required": [ "spellcraft", 6 ], + "difficulty": 2, + "time": "120m", + "autolearn": true, + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "components": [ [ [ "pebble", 1 ] ] ] + }, + { + "type": "recipe", + "result": "cauldron_demon_chitin", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_TOOLS", + "skill_used": "fabrication", + "skills_required": [ "spellcraft", 3 ], + "difficulty": 4, + "time": "180 m", + "book_learn": [ [ "cooking_poison", 3 ] ], + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "components": [ [ [ "demon_chitin_piece", 16 ] ], [ [ "bone_glue", 10 ] ] ] + }, + { + "type": "recipe", + "result": "demon_forge", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_TOOLS", + "skill_used": "fabrication", + "skills_required": [ "spellcraft", 3 ], + "difficulty": 4, + "time": "180 m", + "book_learn": [ [ "metal_legends", 3 ] ], + "qualities": [ + { "id": "CHISEL", "level": 2 }, + { "id": "MANA_INFUSE", "level": 2 }, + { "id": "HAMMER", "level": 2 }, + { "id": "SMOOTH", "level": 1 } + ], + "components": [ + [ [ "demon_chitin_plate", 24 ] ], + [ [ "fireproof_mortar", 30 ] ], + [ [ "pilot_light", 1 ] ], + [ [ "pipe", 3 ] ], + [ [ "crystallized_mana", 80 ] ] + ] + }, + { + "result": "butchering_kit_plus_one", + "type": "recipe", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_TOOLS", + "skill_used": "fabrication", + "reversible": true, + "time": "30 s", + "autolearn": true, + "components": [ + [ [ "knife_butcher_plus_one", 1 ] ], + [ [ "knife_carving_plus_one", 1 ] ], + [ [ "knife_meat_cleaver_plus_one", 1 ] ], + [ [ "leather", 2 ], [ "rag", 2 ] ], + [ [ "string_6", 2 ], [ "cordage_6", 2 ] ] + ] + }, + { + "result": "butchering_kit_plus_two", + "type": "recipe", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_TOOLS", + "skill_used": "fabrication", + "reversible": true, + "time": "30 s", + "autolearn": true, + "components": [ + [ [ "knife_butcher_plus_two", 1 ] ], + [ [ "knife_carving_plus_two", 1 ] ], + [ [ "knife_meat_cleaver_plus_two", 1 ] ], + [ [ "leather", 2 ], [ "rag", 2 ] ], + [ [ "string_6", 2 ], [ "cordage_6", 2 ] ] + ] + } +] diff --git a/data/mods/Magical_Nights/recipes/materials.json b/data/mods/Magical_Nights/recipes/materials.json new file mode 100644 index 000000000000..85f515544928 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/materials.json @@ -0,0 +1,93 @@ +[ + { + "type": "recipe", + "result": "cured_hide", + "id_suffix": "scraped_owlbear", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_MATERIALS", + "skill_used": "survival", + "difficulty": 1, + "time": "5 m", + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "cured_owlbear_pelt", 1 ] ] ] + }, + { + "type": "recipe", + "result": "cured_owlbear_pelt", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_MATERIALS", + "skill_used": "survival", + "difficulty": 1, + "time": "10 m", + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 } ], + "components": [ [ [ "salt_water", 1 ], [ "saline", 2 ], [ "salt", 2 ] ], [ [ "raw_owlbear_fur", 1 ] ] ] + }, + { + "type": "recipe", + "result": "cured_owlbear_pelt", + "id_suffix": "smoked", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_MATERIALS", + "skill_used": "survival", + "skills_required": [ "cooking", 2 ], + "difficulty": 1, + "time": "25 m", + "batch_time_factors": [ 80, 1 ], + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 } ], + "tools": [ [ [ "char_smoker", 5 ] ] ], + "components": [ [ [ "raw_owlbear_fur", 1 ] ] ] + }, + { + "type": "recipe", + "result": "owlbear_fur", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_MATERIALS", + "skill_used": "survival", + "difficulty": 3, + "time": "12 m", + "batch_time_factors": [ 20, 10 ], + "autolearn": true, + "qualities": [ + { "id": "CUT", "level": 1 }, + { "id": "COOK", "level": 2 }, + { "id": "BOIL", "level": 1 }, + { "id": "CONTAIN", "level": 1 } + ], + "tools": [ [ [ "surface_heat", 4, "LIST" ] ] ], + "components": [ + [ [ "water_clean", 1 ], [ "water", 1 ] ], + [ [ "tanbark", 1 ], [ "acorns", 1 ], [ "hops", 1 ], [ "pine_bough", 1 ], [ "brain", 1 ] ], + [ [ "salt_water", 1 ], [ "saline", 2 ], [ "salt", 2 ] ], + [ [ "edible_tallow_lard", 1, "LIST" ], [ "tallow_tainted", 1 ] ], + [ [ "cured_owlbear_pelt", 1 ] ] + ] + }, + { + "type": "recipe", + "result": "owlbear_fur", + "id_suffix": "modern", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_MATERIALS", + "skill_used": "survival", + "difficulty": 3, + "time": "5 m", + "batch_time_factors": [ 50, 5 ], + "autolearn": true, + "book_learn": [ [ "textbook_survival", 2 ], [ "modern_tanner", 2 ] ], + "qualities": [ + { "id": "CHEM", "level": 1 }, + { "id": "COOK", "level": 3 }, + { "id": "BOIL", "level": 2 }, + { "id": "CONTAIN", "level": 1 } + ], + "tools": [ [ [ "surface_heat", 1, "LIST" ] ] ], + "components": [ + [ [ "water_clean", 1 ], [ "water", 1 ] ], + [ [ "lye_powder", 2 ], [ "aspirin", 2 ], [ "chem_phenol", 20 ] ], + [ [ "cured_owlbear_pelt", 1 ] ] + ] + } +] diff --git a/data/mods/Magical_Nights/recipes/mods.json b/data/mods/Magical_Nights/recipes/mods.json new file mode 100644 index 000000000000..18074f98ab6f --- /dev/null +++ b/data/mods/Magical_Nights/recipes/mods.json @@ -0,0 +1,68 @@ +[ + { + "type": "recipe", + "result": "magic_suppressor", + "category": "CC_WEAPON", + "subcategory": "CSC_ENCHANTED_MODS", + "skill_used": "mechanics", + "skills_required": [ [ "spellcraft", 4 ], [ "gun", 4 ] ], + "difficulty": 4, + "time": "2 m 36 s", + "book_learn": [ [ "techno_basic", 4 ] ], + "qualities": [ { "id": "SAW_M_FINE", "level": 1 } ], + "tools": [ [ [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] ], + "components": [ [ [ "filter_liquid", 1 ], [ "muffler", 1 ] ], [ [ "pipe", 1 ] ], [ [ "scrap", 2 ] ], [ [ "glow_dust", 1 ] ] ] + }, + { + "type": "recipe", + "result": "mana_dot_sight", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_MODS", + "skill_used": "electronics", + "difficulty": 7, + "skills_required": [ [ "spellcraft", 7 ], [ "gun", 4 ] ], + "time": "3 h", + "book_learn": [ [ "techno_basic", 5 ] ], + "using": [ [ "soldering_standard", 20 ], [ "surface_heat", 20 ] ], + "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "CHEM", "level": 2 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ + [ [ "mold_plastic", -1 ] ], + [ [ "rune_alchemist", -1 ], [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] + ], + "components": [ + [ [ "plastic_chunk", 2 ] ], + [ [ "amplifier", 1 ] ], + [ [ "power_supply", 1 ] ], + [ [ "light_minus_battery_cell", 1 ] ], + [ [ "crystallized_mana", 15 ] ], + [ [ "silver_small", 10 ] ], + [ [ "gold_small", 10 ] ], + [ [ "chem_aluminium_powder", 10 ] ], + [ [ "chem_chromium_oxide", 10 ] ], + [ [ "lens", 2 ] ] + ] + }, + { + "type": "recipe", + "result": "mana_laser_under", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_MODS", + "skill_used": "electronics", + "difficulty": 4, + "skills_required": [ [ "spellcraft", 4 ], [ "gun", 4 ] ], + "time": "3 h", + "book_learn": [ [ "techno_basic", 4 ] ], + "using": [ [ "soldering_standard", 10 ] ], + "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ], [ "rune_alchemist", -1 ] ] ], + "components": [ + [ [ "amplifier", 1 ] ], + [ [ "power_supply", 1 ] ], + [ [ "lens", 2 ], [ "lens_small", 2 ] ], + [ [ "light_minus_battery_cell", 1 ] ], + [ [ "scrap", 1 ], [ "plastic_chunk", 1 ] ], + [ [ "small_mana_crystal", 1 ] ], + [ [ "cable", 5 ] ] + ] + } +] diff --git a/data/mods/Magical_Nights/recipes/recipe_potions.json b/data/mods/Magical_Nights/recipes/recipe_potions.json new file mode 100644 index 000000000000..2ef23d114753 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/recipe_potions.json @@ -0,0 +1,249 @@ +[ + { + "type": "recipe", + "result": "potion_starter", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 2 ], + "difficulty": 3, + "charges": 7, + "time": "120 m", + "batch_time_factors": [ 75, 4 ], + "book_learn": [ [ "alchemy_basic", 3 ], [ "necro_basic", 4 ] ], + "qualities": [ { "id": "CHEM", "level": 1 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "using": [ [ "hard_liquor", 7 ] ] + }, + { + "type": "recipe", + "result": "potion_starter_superior", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 4 ], + "difficulty": 4, + "charges": 7, + "time": "120 m", + "batch_time_factors": [ 75, 4 ], + "book_learn": [ [ "alchemy_basic", 3 ], [ "necro_basic", 4 ] ], + "qualities": [ { "id": "CHEM", "level": 1 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], + "components": [ [ [ "chem_ethanol", 7 ] ], [ [ "alumentum", 1 ] ] ] + }, + { + "type": "recipe", + "result": "mana_potion_lesser", + "qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ] ] ], + "components": [ [ [ "lotus", 1 ] ], [ [ "potion_starter", 1 ] ] ], + "time": "1 h", + "batch_time_factors": [ 75, 4 ], + "skill_used": "cooking", + "difficulty": 3, + "skills_required": [ "spellcraft", 3 ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "autolearn": true + }, + { + "type": "recipe", + "result": "mana_potion", + "qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ] ] ], + "components": [ [ [ "mana_dust", 1 ] ], [ [ "lotus", 1 ] ], [ [ "potion_starter", 1 ] ] ], + "time": "3 h", + "batch_time_factors": [ 75, 4 ], + "skill_used": "cooking", + "difficulty": 4, + "skills_required": [ "spellcraft", 4 ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "autolearn": true + }, + { + "type": "recipe", + "result": "mana_potion_greater", + "qualities": [ { "id": "CONTAIN", "level": 1 }, { "id": "MANA_INFUSE", "level": 2 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ] ] ], + "components": [ [ [ "glow_dust", 1 ] ], [ [ "lotus", 1 ] ], [ [ "potion_starter_superior", 1 ] ] ], + "time": "4 h", + "batch_time_factors": [ 75, 4 ], + "skill_used": "cooking", + "difficulty": 5, + "skills_required": [ "spellcraft", 5 ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "autolearn": true + }, + { + "type": "recipe", + "result": "manatouched_serum", + "qualities": [ { "id": "MAGIC_MUTAGEN", "level": 2 }, { "id": "MANA_INFUSE", "level": 2 }, { "id": "CONCENTRATE", "level": 1 } ], + "components": [ [ [ "mana_dust", 20 ] ], [ [ "mana_potion", 4 ], [ "mana_potion_greater", 1 ], [ "mana_infused_blood", 6 ] ] ], + "skill_used": "cooking", + "difficulty": 4, + "skills_required": [ "spellcraft", 6 ], + "time": "4 h", + "batch_time_factors": [ 80, 5 ], + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_OTHER", + "autolearn": true + }, + { + "type": "recipe", + "result": "cats_grace_potion", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 5 ], + "difficulty": 5, + "time": "60 m", + "batch_time_factors": [ 50, 4 ], + "book_learn": [ [ "alchemy_basic", 4 ] ], + "qualities": [ { "id": "CHEM", "level": 2 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ], [ "rune_magus", -1 ], [ "rune_magus_weapon", -1 ] ] ], + "components": [ + [ [ "potion_starter", 5 ] ], + [ [ "hairball", 2 ] ], + [ + [ "catfood", 1 ], + [ "fish", 1 ], + [ "salted_fish", 1 ], + [ "fish_cooked", 1 ], + [ "fish_smoked", 1 ], + [ "dry_fish", 1 ], + [ "rehydrated_fish", 1 ], + [ "fish_canned", 1 ], + [ "fish_pickled", 1 ], + [ "fish_fried", 1 ], + [ "lutefisk", 1 ] + ], + [ [ "adderall", 10 ], [ "meth", 6 ], [ "prozac", 15 ] ] + ] + }, + { + "type": "recipe", + "result": "ogres_strength_potion", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 5 ], + "difficulty": 5, + "time": "60 m", + "batch_time_factors": [ 50, 4 ], + "book_learn": [ [ "alchemy_basic", 4 ] ], + "qualities": [ { "id": "CHEM", "level": 2 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ], [ "rune_magus", -1 ], [ "rune_magus_weapon", -1 ] ] ], + "components": [ [ [ "potion_starter", 5 ] ], [ [ "sinew", 40 ] ], [ [ "adrenal_gland_large", 2 ] ] ] + }, + { + "type": "recipe", + "result": "eagles_sight_potion", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 5 ], + "difficulty": 5, + "time": "60 m", + "batch_time_factors": [ 50, 4 ], + "book_learn": [ [ "alchemy_basic", 4 ] ], + "qualities": [ { "id": "CHEM", "level": 2 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ], [ "rune_magus", -1 ], [ "rune_magus_weapon", -1 ] ] ], + "components": [ + [ [ "potion_starter", 5 ] ], + [ + [ "egg_bird", 5 ], + [ "egg_bird_unfert", 5 ], + [ "egg_grouse", 5 ], + [ "egg_duck", 3 ], + [ "egg_crow", 5 ], + [ "egg_chicken", 5 ], + [ "egg_pheasant", 5 ], + [ "egg_cockatrice", 5 ], + [ "egg_turkey", 3 ], + [ "egg_goose_canadian", 2 ] + ], + [ [ "feather", 20 ], [ "down_feather", 20 ] ], + [ + [ "liver", 3 ], + [ "veggy_canned", 3 ], + [ "veggy_salted", 5 ], + [ "carrot", 3 ], + [ "irradiated_carrot", 3 ], + [ "pumpkin", 4 ], + [ "irradiated_pumpkin", 4 ], + [ "raw_dandelion", 6 ], + [ "zucchini", 4 ], + [ "irradiated_zucchini", 4 ], + [ "rose_hips", 6 ] + ] + ] + }, + { + "type": "recipe", + "result": "foxs_cunning_potion", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 5 ], + "difficulty": 5, + "time": "60 m", + "batch_time_factors": [ 50, 4 ], + "book_learn": [ [ "alchemy_basic", 4 ] ], + "qualities": [ { "id": "CHEM", "level": 2 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_alchemist", -1 ], [ "rune_magus", -1 ], [ "rune_magus_weapon", -1 ] ] ], + "components": [ + [ [ "potion_starter", 5 ] ], + [ [ "brain", 2 ], [ "brain_cooked", 2 ] ], + [ + [ "adderall", 10 ], + [ "caff_gum", 30 ], + [ "chaw", 10 ], + [ "cig", 20 ], + [ "cigar", 5 ], + [ "handrolled_cig", 20 ] + ] + ] + }, + { + "type": "recipe", + "result": "twisted_restore_potion", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 4 ], + "difficulty": 4, + "time": "60 m", + "result_mult": 5, + "batch_time_factors": [ 50, 4 ], + "book_learn": [ [ "necro_basic", 3 ] ], + "qualities": [ { "id": "CHEM", "level": 2 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ + [ [ "surface_heat", 10, "LIST" ] ], + [ [ "rune_alchemist", -1 ], [ "rune_animist", -1 ], [ "rune_animist_weapon", -1 ] ] + ], + "components": [ [ [ "potion_starter", 5 ] ], [ [ "blood", 3 ] ], [ [ "slime_scrap", 4 ], [ "meat_tainted", 12 ] ] ] + }, + { + "type": "recipe", + "result": "twisted_restore_potion_improved", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_POTIONS", + "skill_used": "cooking", + "skills_required": [ "spellcraft", 6 ], + "difficulty": 6, + "time": "60 m", + "result_mult": 5, + "batch_time_factors": [ 50, 4 ], + "book_learn": [ [ "necro_basic", 5 ] ], + "qualities": [ { "id": "CHEM", "level": 2 }, { "id": "CONCENTRATE", "level": 1 }, { "id": "MANA_FOCUS", "level": 1 } ], + "tools": [ [ [ "surface_heat", 10, "LIST" ] ], [ [ "rune_animist", -1 ], [ "rune_animist_weapon", -1 ] ] ], + "components": [ + [ [ "potion_starter", 5 ] ], + [ [ "blood", 5 ] ], + [ [ "slime_scrap", 5 ], [ "meat_tainted", 15 ] ], + [ [ "bandages", 5 ], [ "bandages_makeshift_bleached", 7 ], [ "bandages_makeshift_boiled", 7 ] ] + ] + } +] diff --git a/data/mods/Magical_Nights/recipes/weapons.json b/data/mods/Magical_Nights/recipes/weapons.json new file mode 100644 index 000000000000..cdf7d7dd4d09 --- /dev/null +++ b/data/mods/Magical_Nights/recipes/weapons.json @@ -0,0 +1,501 @@ +[ + { + "type": "recipe", + "result": "rune_magus_weapon", + "//": "Forging and water included for glass heat-tempering process", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 2 ], [ "bashing", 2 ] ], + "difficulty": 4, + "time": "360 m", + "autolearn": true, + "using": [ [ "forging_standard", 2 ] ], + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "water", -1 ] ], [ [ "tongs", -1 ] ] ], + "components": [ + [ [ "q_staff", 1 ] ], + [ [ "jar_glass", 2 ] ], + [ [ "rune_magus", 2 ] ], + [ [ "tallow", 2 ], [ "tallow_tainted", 2 ], [ "cooking_oil", 16 ], [ "cooking_oil2", 16 ], [ "lamp_oil", 250 ] ] + ] + }, + { + "type": "recipe", + "result": "rune_biomancer_weapon", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 2 ], [ "stabbing", 2 ] ], + "difficulty": 4, + "time": "2 m", + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 } ], + "tools": [ [ [ "fire", -1 ] ] ], + "components": [ + [ [ "stick_long", 1 ], [ "pool_cue", 1 ] ], + [ [ "rag", 1 ], [ "felt_patch", 1 ], [ "leather", 1 ], [ "fur", 1 ] ], + [ [ "duct_tape", 20 ], [ "filament", 20, "LIST" ] ], + [ [ "bone", 3 ], [ "bone_human", 3 ], [ "bone_tainted", 6 ] ], + [ [ "rune_biomancer", 1 ] ] + ] + }, + { + "type": "recipe", + "result": "rune_animist_weapon", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 2 ], [ "stabbing", 2 ] ], + "difficulty": 4, + "time": "360 m", + "autolearn": true, + "using": [ [ "forging_standard", 2 ], [ "steel_tiny", 1 ] ], + "qualities": [ + { "id": "ANVIL", "level": 3 }, + { "id": "HAMMER", "level": 3 }, + { "id": "CHISEL", "level": 3 }, + { "id": "MANA_INFUSE", "level": 1 } + ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "2x4", 1 ], [ "stick", 1 ] ], [ [ "rune_animist", 1 ] ] ] + }, + { + "type": "recipe", + "result": "rune_druid_weapon", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 2 ], [ "archery", 2 ] ], + "difficulty": 4, + "time": "360 m", + "autolearn": true, + "qualities": [ { "id": "CUT", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "components": [ [ [ "compositebow", 1 ] ], [ [ "rune_druid", 2 ] ] ] + }, + { + "type": "recipe", + "result": "rune_technomancer_weapon", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "difficulty": 5, + "skills_required": [ [ "spellcraft", 2 ], [ "mechanics", 2 ] ], + "time": "360 m", + "autolearn": true, + "using": [ [ "forging_standard", 14 ], [ "steel_standard", 3 ] ], + "qualities": [ + { "id": "ANVIL", "level": 3 }, + { "id": "HAMMER", "level": 3 }, + { "id": "CHISEL", "level": 3 }, + { "id": "MANA_INFUSE", "level": 1 } + ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "rune_technomancer", 1 ] ] ] + }, + { + "type": "recipe", + "result": "rune_stormshaper_weapon", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "difficulty": 4, + "skills_required": [ [ "spellcraft", 2 ], [ "bashing", 2 ] ], + "time": "360 m", + "autolearn": true, + "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "MANA_INFUSE", "level": 1 } ], + "using": [ [ "forging_standard", 5 ] ], + "components": [ + [ [ "stick", 1 ], [ "2x4", 1 ] ], + [ [ "scrap_copper", 10 ], [ "copper", 1000 ] ], + [ [ "silver_small", 100 ] ], + [ [ "cordage_short", 2, "LIST" ], [ "filament", 40, "LIST" ], [ "duct_tape", 40 ] ], + [ [ "rune_stormshaper", 1 ] ] + ] + }, + { + "type": "recipe", + "result": "rune_earthshaper_weapon", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 2 ], [ "bashing", 2 ] ], + "difficulty": 4, + "time": "360 m", + "autolearn": true, + "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "SAW_M", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "components": [ [ [ "leather", 4 ] ], [ [ "scrap", 8 ] ], [ [ "rock", 1 ] ], [ [ "rune_earthshaper", 1 ] ] ] + }, + { + "result": "rune_kelvinist_weapon", + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "fabrication", + "difficulty": 8, + "skills_required": [ [ "spellcraft", 2 ], [ "cutting", 2 ] ], + "time": "420 m", + "autolearn": true, + "using": [ [ "forging_standard", 4 ], [ "steel_standard", 2 ] ], + "qualities": [ + { "id": "ANVIL", "level": 3 }, + { "id": "HAMMER", "level": 3 }, + { "id": "CHISEL", "level": 3 }, + { "id": "MANA_INFUSE", "level": 1 } + ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fur", 2 ], [ "leather", 2 ] ], [ [ "rune_kelvinist", 1 ] ] ] + }, + { + "type": "recipe", + "result": "animist_doll_zombie", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 4 ] ], + "difficulty": 4, + "time": "120 m", + "result_mult": 3, + "book_learn": [ [ "necro_basic", 3 ] ], + "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT_FINE", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "rune_alchemist", -1 ], [ "rune_animist", -1 ], [ "rune_animist_weapon", -1 ] ] ], + "components": [ + [ [ "brain", 1 ], [ "brain_cooked", 1 ] ], + [ [ "lung", 2 ], [ "lung_cooked", 2 ] ], + [ [ "stomach", 1 ], [ "hstomach", 1 ] ], + [ [ "liver", 1 ], [ "liver_cooked", 1 ] ], + [ [ "kidney", 2 ], [ "kidney_cooked", 2 ] ], + [ [ "leather", 6 ], [ "tanned_hide", 1 ] ], + [ [ "sinew", 60 ] ], + [ [ "bone", 1 ], [ "bone_human", 1 ], [ "bone_tainted", 2 ] ], + [ [ "needle_bone", 1 ] ] + ] + }, + { + "type": "recipe", + "result": "animist_doll_skeleton", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 5 ] ], + "difficulty": 5, + "time": "180 m", + "result_mult": 3, + "book_learn": [ [ "necro_basic", 4 ] ], + "qualities": [ + { "id": "SEW", "level": 1 }, + { "id": "CUT_FINE", "level": 1 }, + { "id": "HAMMER_FINE", "level": 1 }, + { "id": "MANA_INFUSE", "level": 1 } + ], + "tools": [ [ [ "rune_alchemist", -1 ], [ "rune_animist", -1 ], [ "rune_animist_weapon", -1 ] ] ], + "components": [ + [ [ "brain", 1 ], [ "brain_cooked", 1 ] ], + [ [ "lung", 2 ], [ "lung_cooked", 2 ] ], + [ [ "stomach", 1 ], [ "hstomach", 1 ] ], + [ [ "liver", 1 ], [ "liver_cooked", 1 ] ], + [ [ "kidney", 2 ], [ "kidney_cooked", 2 ] ], + [ [ "leather", 6 ], [ "tanned_hide", 1 ] ], + [ [ "sinew", 60 ] ], + [ [ "bone", 4 ], [ "bone_human", 4 ], [ "bone_tainted", 8 ] ], + [ [ "needle_bone", 1 ] ] + ] + }, + { + "type": "recipe", + "result": "animist_doll_decayed_pouncer", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 7 ] ], + "difficulty": 7, + "time": "210 m", + "result_mult": 3, + "book_learn": [ [ "necro_basic", 6 ] ], + "qualities": [ { "id": "SEW", "level": 1 }, { "id": "CUT_FINE", "level": 1 }, { "id": "MANA_INFUSE", "level": 1 } ], + "tools": [ [ [ "rune_animist", -1 ], [ "rune_animist_weapon", -1 ] ] ], + "components": [ + [ [ "brain", 1 ], [ "brain_cooked", 1 ] ], + [ [ "lung", 2 ], [ "lung_cooked", 2 ] ], + [ [ "stomach", 1 ], [ "hstomach", 1 ] ], + [ [ "liver", 1 ], [ "liver_cooked", 1 ] ], + [ [ "kidney", 2 ], [ "kidney_cooked", 2 ] ], + [ [ "fur", 6 ], [ "tanned_pelt", 1 ] ], + [ [ "hairball", 2 ] ], + [ [ "sinew", 60 ] ], + [ [ "bone", 1 ], [ "bone_human", 1 ], [ "bone_tainted", 2 ] ], + [ [ "needle_bone", 1 ] ] + ] + }, + { + "type": "recipe", + "result": "shotcestus", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_WEAPONS", + "skill_used": "mechanics", + "difficulty": 4, + "skills_required": [ [ "spellcraft", 4 ], [ "bashing", 2 ], [ "shotgun", 2 ] ], + "time": "4 h 30 m", + "book_learn": [ [ "techno_basic", 4 ] ], + "qualities": [ + { "id": "HAMMER", "level": 3 }, + { "id": "CUT_FINE", "level": 1 }, + { "id": "SAW_M", "level": 2 }, + { "id": "SAW_M_FINE", "level": 1 }, + { "id": "SCREW_FINE", "level": 1 }, + { "id": "MANA_INFUSE", "level": 1 } + ], + "tools": [ [ [ "rune_technomancer", -1 ], [ "rune_technomancer_weapon", -1 ] ] ], + "byproducts": [ [ "splinter", 4 ] ], + "//": "Splinters from stock", + "components": [ [ [ "leather", 4 ] ], [ [ "pipe_double_shotgun", 1 ], [ "shotgun_d", 1 ] ], [ [ "scrap", 8 ] ] ] + }, + { + "type": "recipe", + "result": "mjolnir", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_BASHING", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 7 ], [ "bashing", 6 ] ], + "difficulty": 10, + "time": 480000, + "book_learn": [ [ "book_mythological", 10 ] ], + "using": [ [ "forging_standard", 3 ] ], + "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ + [ [ "warhammer", 1 ] ], + [ [ "gold_small", 1 ] ], + [ [ "silver_small", 2 ] ], + [ [ "rebar", 1 ] ], + [ [ "orichalcum_ingot", 2 ] ] + ] + }, + { + "type": "recipe", + "result": "gungnir", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_PIERCING", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 7 ], [ "stabbing", 6 ] ], + "difficulty": 10, + "time": 480000, + "book_learn": [ [ "book_mythological", 10 ] ], + "using": [ [ "forging_standard", 3 ] ], + "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "spear_steel", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "silver_small", 2 ] ], [ [ "orichalcum_ingot", 2 ] ] ] + }, + { + "type": "recipe", + "result": "gram", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 7 ], [ "cutting", 6 ] ], + "difficulty": 10, + "time": 480000, + "book_learn": [ [ "book_mythological", 10 ] ], + "using": [ [ "forging_standard", 3 ] ], + "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "jian", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "orichalcum_ingot", 2 ] ] ] + }, + { + "type": "recipe", + "result": "ichaival", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_RANGED", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 7 ], [ "archery", 6 ] ], + "difficulty": 10, + "time": 480000, + "book_learn": [ [ "book_mythological", 10 ] ], + "using": [ [ "forging_standard", 3 ] ], + "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "compositebow", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "orichalcum_ingot", 1 ] ] ] + }, + { + "type": "recipe", + "result": "laevateinn", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "skills_required": [ [ "spellcraft", 7 ] ], + "difficulty": 10, + "time": 480000, + "book_learn": [ [ "book_mythological", 10 ] ], + "using": [ [ "forging_standard", 3 ] ], + "qualities": [ { "id": "HAMMER", "level": 3 }, { "id": "CHISEL", "level": 3 } ], + "tools": [ [ [ "tongs", -1 ] ], [ [ "anvil", -1 ] ], [ [ "swage", -1 ] ] ], + "components": [ [ [ "i_staff", 1 ] ], [ [ "gold_small", 1 ] ], [ [ "orichalcum_ingot", 1 ] ] ] + }, + { + "type": "recipe", + "result": "arrow_odin", + "category": "CC_AMMO", + "subcategory": "CSC_AMMO_ARROWS", + "skill_used": "fabrication", + "skills_required": [ [ "archery", 4 ], [ "spellcraft", 5 ] ], + "using": [ [ "forging_standard", 1 ] ], + "difficulty": 5, + "charges": 4, + "time": "30 m", + "book_learn": [ [ "book_mythological", 9 ] ], + "qualities": [ { "id": "HAMMER", "level": 2 }, { "id": "CUT", "level": 1 }, { "id": "ANVIL", "level": 3 } ], + "tools": [ [ [ "tongs", -1 ] ] ], + "components": [ + [ [ "orichalcum_ingot", 1 ] ], + [ [ "adhesive", 1, "LIST" ], [ "filament", 10, "LIST" ] ], + [ [ "stick", 1 ], [ "broom", 1 ], [ "2x4", 1 ] ], + [ [ "fletching", 1, "LIST" ] ] + ] + }, + { + "type": "recipe", + "result": "dbone_battleaxe", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 7, + "autolearn": true, + "time": "8 h", + "book_learn": [ [ "textbook_weapwest", 8 ], [ "recipe_melee", 7 ] ], + "using": [ [ "blacksmithing_advanced", 12 ] ], + "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "fabric_hides_any", 2, "LIST" ] ], [ [ "dragon_bone", 12 ] ] ] + }, + { + "type": "recipe", + "result": "dbone_tachi", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 7, + "autolearn": true, + "time": "8 h", + "book_learn": [ [ "textbook_weapeast", 8 ] ], + "using": [ [ "blacksmithing_advanced", 8 ] ], + "components": [ [ [ "2x4", 2 ], [ "stick", 4 ] ], [ [ "fabric_hides_any", 2, "LIST" ] ], [ [ "dragon_bone", 8 ] ] ] + }, + { + "type": "recipe", + "result": "dbone_longsword", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 7, + "autolearn": true, + "time": "7 h", + "book_learn": [ [ "textbook_weapwest", 7 ] ], + "using": [ [ "blacksmithing_advanced", 16 ] ], + "components": [ [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fabric_hides_any", 1, "LIST" ] ], [ [ "dragon_bone", 16 ] ] ] + }, + { + "type": "recipe", + "result": "dbone_qiang", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_PIERCING", + "skill_used": "fabrication", + "difficulty": 7, + "autolearn": true, + "time": "7 h 40 m", + "book_learn": [ [ "textbook_armschina", 6 ] ], + "using": [ [ "blacksmithing_advanced", 4 ] ], + "components": [ + [ [ "filament", 100, "LIST" ] ], + [ [ "stick_long", 1 ] ], + [ [ "fabric_hides_any", 2, "LIST" ] ], + [ [ "dragon_bone", 4 ] ] + ] + }, + { + "type": "recipe", + "result": "black_dbone_battleaxe", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 8, + "autolearn": true, + "time": "8 h", + "book_learn": [ [ "textbook_weapwest", 8 ], [ "recipe_melee", 7 ] ], + "using": [ [ "blacksmithing_advanced", 12 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 2 ] ], [ [ "dragon_essence", 1 ] ] ] + }, + { + "type": "recipe", + "result": "black_dbone_tachi", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 8, + "autolearn": true, + "time": "8 h", + "book_learn": [ [ "textbook_weapeast", 7 ] ], + "using": [ [ "blacksmithing_advanced", 8 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 1 ] ], [ [ "dragon_essence", 1 ] ] ] + }, + { + "type": "recipe", + "result": "black_dbone_longsword", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 8, + "autolearn": true, + "time": "7 h", + "book_learn": [ [ "textbook_weapwest", 7 ] ], + "using": [ [ "blacksmithing_advanced", 16 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 1 ] ], [ [ "dragon_essence", 1 ] ] ] + }, + { + "type": "recipe", + "result": "black_dbone_qiang", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_PIERCING", + "skill_used": "fabrication", + "difficulty": 8, + "autolearn": true, + "time": "7 h 40 m", + "book_learn": [ [ "textbook_armschina", 6 ] ], + "using": [ [ "blacksmithing_advanced", 4 ] ], + "components": [ [ [ "black_dragon_tanned_hide", 2 ] ], [ [ "dragon_essence", 1 ] ] ] + }, + { + "type": "recipe", + "result": "orich_longsword", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 8, + "time": "7 h", + "book_learn": [ [ "textbook_weapwest", 7 ], [ "scots_cookbook", 9 ] ], + "using": [ [ "blacksmithing_advanced", 16 ] ], + "components": [ [ [ "orichalcum_ingot", 2 ] ], [ [ "2x4", 1 ], [ "stick", 2 ] ], [ [ "fabric_hides_any", 1, "LIST" ] ] ] + }, + { + "type": "recipe", + "result": "orich_fire_ax", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_CUTTING", + "skill_used": "fabrication", + "difficulty": 9, + "time": "7 h", + "book_learn": [ [ "textbook_fireman", 8 ], [ "textbook_fabrication", 9 ] ], + "using": [ [ "blacksmithing_intermediate", 16 ] ], + "tools": [ [ [ "crucible", -1 ], [ "crucible_clay", -1 ] ] ], + "components": [ [ [ "orichalcum_ingot", 2 ] ], [ [ "2x4", 2 ], [ "stick", 4 ] ] ] + }, + { + "type": "recipe", + "result": "orich_knife_combat", + "category": "CC_WEAPON", + "subcategory": "CSC_WEAPON_PIERCING", + "skill_used": "fabrication", + "difficulty": 6, + "time": "6 h", + "using": [ [ "blacksmithing_advanced", 4 ] ], + "book_learn": [ [ "manual_knives", 4 ], [ "recipe_melee", 5 ] ], + "components": [ [ [ "orichalcum_ingot", 1 ] ], [ [ "fabric_hides_any", 2, "LIST" ] ] ] + } +] diff --git a/data/mods/Magical_Nights/requirements/alchemy.json b/data/mods/Magical_Nights/requirements/alchemy.json new file mode 100644 index 000000000000..7956b1b9fe85 --- /dev/null +++ b/data/mods/Magical_Nights/requirements/alchemy.json @@ -0,0 +1,8 @@ +[ + { + "id": "dragon_scale", + "type": "requirement", + "//": "Dragon scales. For when any color is interchangeable.", + "components": [ [ [ "dragon_black_scale", 1 ] ] ] + } +] diff --git a/data/mods/Magical_Nights/requirements/cooking_components.json b/data/mods/Magical_Nights/requirements/cooking_components.json new file mode 100644 index 000000000000..8628d93a98df --- /dev/null +++ b/data/mods/Magical_Nights/requirements/cooking_components.json @@ -0,0 +1,18 @@ +[ + { + "id": "meat_raw_steak", + "type": "requirement", + "//": "override of vanilla raw steak, includes purified and impure meat", + "components": [ + [ + [ "meat", 1 ], + [ "mutant_meat", 1 ], + [ "human_flesh", 1 ], + [ "mutant_human_flesh", 1 ], + [ "purified_meat", 1 ], + [ "impure_meat", 1 ], + [ "meat_dragon", 1 ] + ] + ] + } +] diff --git a/data/mods/Magical_Nights/requirements/spell_requirements.json b/data/mods/Magical_Nights/requirements/spell_requirements.json new file mode 100644 index 000000000000..faf146ae03d9 --- /dev/null +++ b/data/mods/Magical_Nights/requirements/spell_requirements.json @@ -0,0 +1,23 @@ +[ + { + "id": "spell_components_flamesword", + "type": "requirement", + "//": "Wooden swords usable for the Flamesword spell", + "components": [ [ [ "sword_wood", 1 ], [ "sword_nail", 1 ], [ "sword_crude", 1 ] ] ] + }, + { + "id": "spell_components_flamebreath", + "type": "requirement", + "//": "100ml portions of combustible dusts usable for the Flamebreath spell", + "components": [ [ [ "sugar", 28 ], [ "flour", 4 ], [ "tinder", 100 ], [ "cinnamon", 40 ], [ "chilly-p", 40 ] ] ] + }, + { + "id": "spell_components_decayingboneclub", + "type": "requirement", + "//": "Weapon materials and 1000 energy from blood suitable for the Decaying Boneclub spell", + "components": [ + [ [ "bone", 3 ], [ "bone_human", 3 ], [ "bone_tainted", 6 ] ], + [ [ "blood", 4 ], [ "blood_tainted", 200 ], [ "dragon_blood", 20 ] ] + ] + } +] diff --git a/data/mods/Magical_Nights/scenarios.json b/data/mods/Magical_Nights/scenarios.json new file mode 100644 index 000000000000..c7f85235218a --- /dev/null +++ b/data/mods/Magical_Nights/scenarios.json @@ -0,0 +1,36 @@ +[ + { + "type": "scenario", + "id": "lost_faith", + "name": "Lost Faith", + "flags": [ "LONE_START" ], + "surround_groups": [ [ "GROUP_CHURCH_ZOMBIE", 70.0 ] ], + "points": 2, + "description": "You've been preaching your faith for a long time, but the recent events have begun to make you doubt it. Wandering in your temple, you just found books that may restore your faith or shatter it completely.", + "start_name": "Church", + "allowed_locs": [ "sloc_church" ], + "professions": [ "priest_magic2", "shinto_priest_magic2", "imam_magic2", "rabbi_magic2", "guru_magic2", "preacher_magic2" ] + }, + { + "type": "scenario", + "id": "magic_basement", + "name": "The Wizard's Apprentice", + "flags": [ "LONE_START" ], + "points": 3, + "description": "You have been an apprentice to a wizard for some time now, working on a prototype device that could perhaps be used to escape from the Cataclysm. Something went wrong with the maiden voyage though, and your teacher teleported his insides into his outsides. Now you have to figure out how to survive on your own. At least he left his notebook…", + "start_name": "Wizard's Secret Basement Study", + "allowed_locs": [ "sloc_magic_basement" ], + "professions": [ "wizard_novice", "novice_necromancer", "novice_earthshaper", "novice_technomancer", "novice_stormshaper", "novice_kelvinist" ] + }, + { + "type": "scenario", + "id": "lake_retreat", + "name": "The Wizard's Vacation", + "flags": [ "LONE_START" ], + "points": 6, + "description": "You have been an apprentice to a wizard for some time now, you've saved for years for your dream vacation at a secluded wizard tower. Your journey of self-discovery is interrupted by the Cataclysm. Now you have to figure out how to survive on your own.", + "start_name": "Wizard's Retreat Vacation", + "allowed_locs": [ "sloc_lake_retreat" ], + "professions": [ "wizard_novice", "novice_necromancer", "novice_earthshaper", "novice_technomancer", "novice_stormshaper", "novice_kelvinist" ] + } +] diff --git a/data/mods/Magical_Nights/species.json b/data/mods/Magical_Nights/species.json new file mode 100755 index 000000000000..fdbe87e95230 --- /dev/null +++ b/data/mods/Magical_Nights/species.json @@ -0,0 +1,30 @@ +[ + { + "type": "SPECIES", + "id": "MAGICAL_BEAST", + "name": { "str": "magical beast" } + }, + { + "type": "SPECIES", + "id": "DRAGON", + "name": { "str": "dragon" }, + "anger_triggers": [ "HURT", "PLAYER_CLOSE", "PLAYER_WEAK", "STALK" ] + }, + { + "type": "SPECIES", + "id": "LIZARDFOLK", + "name": { "str_sp": "lizardfolk" }, + "anger_triggers": [ "FRIEND_ATTACKED" ], + "fear_triggers": [ "FIRE" ] + }, + { + "type": "SPECIES", + "id": "GOBLIN", + "name": { "str": "goblin" } + }, + { + "type": "SPECIES", + "id": "ORC", + "name": { "str": "orc"} + } +] diff --git a/data/mods/Magical_Nights/start_locations.json b/data/mods/Magical_Nights/start_locations.json new file mode 100644 index 000000000000..ee7e4741972c --- /dev/null +++ b/data/mods/Magical_Nights/start_locations.json @@ -0,0 +1,14 @@ +[ + { + "type": "start_location", + "id": "sloc_magic_basement", + "name": "Wizard's Secret Basement Study", + "terrain": [ "magic_basement" ] + }, + { + "type": "start_location", + "id": "sloc_lake_retreat", + "name": "Wizard's lake retreat", + "terrain": [ "lake_retreat_ground" ] + } +] diff --git a/data/mods/Magical_Nights/ter_fur_transform/ter_fur_transform.json b/data/mods/Magical_Nights/ter_fur_transform/ter_fur_transform.json new file mode 100644 index 000000000000..a16ce0995923 --- /dev/null +++ b/data/mods/Magical_Nights/ter_fur_transform/ter_fur_transform.json @@ -0,0 +1,139 @@ +[ + { + "type": "ter_furn_transform", + "id": "move_earth", + "fail_message": "The earth here does not listen to your command to move.", + "terrain": [ + { "result": "t_hole", "valid_terrain": [ "t_pit", "t_slope_down" ], "message": "The pit has deepened further." }, + { + "result": "t_pit", + "valid_terrain": [ + "t_pit_corpsed", + "t_pit_covered", + "t_pit_glass", + "t_pit_glass_covered", + "t_pit_spiked", + "t_pit_spiked_covered", + "t_rootcellar", + "t_pit_shallow" + ], + "message": "More debris shifts out of the pit." + }, + { + "result": "t_pit_shallow", + "valid_terrain": [ + "t_grave", + "t_dirt", + "t_sand", + "t_clay", + "t_dirtmound", + "t_grass", + "t_grass_long", + "t_grass_tall", + "t_grass_dead", + "t_grass_white", + "t_dirtfloor", + "t_fungus_floor_in", + "t_fungus_floor_sup", + "t_fungus_floor_out", + "t_sandbox" + ], + "message": "The earth moves out of the way for you." + }, + { + "result": "t_sand", + "valid_terrain": [ + "t_pavement", + "t_pavement_y", + "t_sidewalk", + "t_concrete", + "t_thconc_floor", + "t_thconc_floor_olight", + "t_strconc_floor", + "t_floor", + "t_floor_waxed", + "t_carpet_red", + "t_carpet_yellow", + "t_carpet_purple", + "t_carpet_green", + "t_linoleum_white", + "t_linoleum_gray", + "t_slope_up", + "t_rock_red", + "t_rock_blue", + "t_floor_red", + "t_floor_green", + "t_floor_blue", + "t_pavement_bg_dp", + "t_pavement_y_bg_dp", + "t_sidewalk_bg_dp" + ], + "message": "The rocks here are ground into sand." + }, + { "result": "t_rock_floor", "valid_terrain": [ "t_rock" ], "message": "The rock crumbles to dust." }, + { + "result": "t_hole", + "valid_terrain": [ "t_null" ], + "message": "All the dust in the air here falls to the ground.", + "message_good": false + } + ] + }, + { + "type": "ter_furn_transform", + "id": "fungicide", + "terrain": [ { "result": "t_dirt_barren", "valid_flags": [ "FUNGUS" ], "message": "The fungus here dies back." } ], + "furniture": [ { "result": "f_null", "valid_flags": [ "FUNGUS" ], "message": "The fungus here dies back." } ] + }, + { + "type": "ter_furn_transform", + "id": "lava_bomb", + "terrain": [ { "result": "t_lava", "valid_flags": [ "DIGGABLE" ] } ] + }, + { + "type": "ter_furn_transform", + "id": "earthshaper_pillar", + "//": "Furniture alteration has to be able to reasonably check for most intervening furniture and remove it.", + "terrain": [ + { + "result": "t_rock_smooth", + "valid_flags": [ "DIGGABLE", "FLAT" ], + "message": "The ground shakes, a section of unnaturally smooth stone wall rising up." + } + ], + "furniture": [ { "result": "f_null", "valid_flags": [ "TRANSPARENT", "WALL" ] } ] + }, + { + "type": "ter_furn_transform", + "id": "druidic_renewal", + "//": "TODO: Update the birch and willow transformations if they ever make those trees behave consistent relative to blackjack oak and pine.", + "terrain": [ + { + "result": [ [ "t_tree_blackjack_harvested", 10 ], [ "t_tree_harvested", 90 ] ], + "valid_terrain": [ "t_tree_dead" ], + "message": "The dead tree regrows." + }, + { + "result": "t_tree_pine_harvested", + "valid_terrain": [ "t_tree_deadpine" ], + "message": "The dead tree regrows." + }, + { + "result": "t_tree_hickory_harvested", + "valid_terrain": [ "t_tree_hickory_dead" ], + "message": "The dead tree regrows." + }, + { "result": "t_tree_birch", "valid_terrain": [ "t_tree_birch_harvested" ], "message": "The dead tree regrows." }, + { + "result": "t_tree_willow", + "valid_terrain": [ "t_tree_willow_harvested" ], + "message": "The dead tree regrows." + }, + { + "result": "t_grass", + "valid_terrain": [ "t_grass_dead" ], + "message": "Life springs anew from the dead grass." + } + ] + } +] diff --git a/data/mods/Magical_Nights/terrain.json b/data/mods/Magical_Nights/terrain.json new file mode 100644 index 000000000000..5d90160216ef --- /dev/null +++ b/data/mods/Magical_Nights/terrain.json @@ -0,0 +1,64 @@ +[ + { + "type": "terrain", + "id": "t_tree_burnt", + "name": "burnt tree", + "description": "This tree looks like it has been burnt badly, but it is somehow still standing.", + "symbol": "7", + "color": "dark_gray", + "move_cost": 0, + "coverage": 60, + "flags": [ "NOITEM", "SUPPORTS_ROOF", "TREE", "REDUCE_SCENT" ], + "bash": { + "str_min": 30, + "str_max": 180, + "sound": "crunch!", + "sound_fail": "whack!", + "ter_set": "t_dirt", + "items": [ { "item": "ash", "count": [ 3, 10 ] } ] + } + }, + { + "type": "terrain", + "id": "t_webbed_corpse", + "name": "burnt tree", + "description": "This is a large coccoon-like object that looks to be the vague shape of some creature. You don't want to know how long it stayed alive while being sucked dry by these spiders.", + "symbol": "7", + "color": "light_gray", + "move_cost": 0, + "coverage": 30, + "bash": { + "str_min": 30, + "str_max": 180, + "sound": "crunch!", + "sound_fail": "whump!", + "ter_set": "t_dirt", + "items": [ { "item": "ash", "count": [ 3, 10 ] } ] + } + }, + { + "type": "terrain", + "id": "t_demon_web_wall", + "name": "webbing wall", + "description": "This wall seems to be made up of a combination of webbing, wood splinters, detritus, and some kind of dark-colored resin.", + "symbol": "LINE_OXOX", + "color": "dark_gray", + "move_cost": 0, + "coverage": 100, + "roof": "t_flat_roof", + "flags": [ "NOITEM", "SUPPORTS_ROOF", "WALL", "AUTO_WALL_SYMBOL", "MINEABLE", "BLOCK_WIND" ], + "connects_to": "WALL" + }, + { + "type": "terrain", + "id": "t_dirt_barren", + "name": "barren dirt", + "description": "It's dirt. The ground here is infertile. Could also be dug out for construction projects.", + "symbol": ".", + "color": "brown", + "move_cost": 2, + "flags": [ "TRANSPARENT", "DIGGABLE", "FLAT" ], + "looks_like": "t_dirt", + "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 50, "str_max": 100, "str_min_supported": 100, "bash_below": true } + } +] diff --git a/data/mods/Magical_Nights/tool_qualities.json b/data/mods/Magical_Nights/tool_qualities.json new file mode 100644 index 000000000000..1c48775418cd --- /dev/null +++ b/data/mods/Magical_Nights/tool_qualities.json @@ -0,0 +1,7 @@ +[ + { + "type": "tool_quality", + "id": "MAGIC_MUTAGEN", + "name": "magic mutagen mixer" + } +] diff --git a/data/mods/Magical_Nights/traits/classes.json b/data/mods/Magical_Nights/traits/classes.json new file mode 100644 index 000000000000..fb056eb14dab --- /dev/null +++ b/data/mods/Magical_Nights/traits/classes.json @@ -0,0 +1,106 @@ +[ + { + "type": "mutation", + "id": "MAGUS", + "name": "Magus", + "points": 0, + "description": "A tradition as old as magic, the Magus focuses on binding and shaping the energy of the universe to their will.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_magus", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "ANIMIST", + "name": { "str": "Animist" }, + "points": 0, + "description": "The animist tradition is a relatively new school of magical thought, formed through combination of many older ways that focus on harmony and connection to the natural world. This does not mean that animists are passive: the natural world is a savage place.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_animist", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "KELVINIST", + "name": "Kelvinist", + "points": 0, + "description": "Disciples of the great Archwizard Lord Kelvin. Kelvinists focus their magic on manipulation and control of the temperature of their environment, leading to spectacularly powerful explosions or bone-chilling cold.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_kelvinist", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "STORMSHAPER", + "name": "Stormshaper", + "points": 0, + "description": "Stormshapers follow ancient arcane disciplines of meditation and harmony with the winds and tides that shape the planet. Through their deep connection to these forces, they can request powerful changes.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_stormshaper", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "TECHNOMANCER", + "name": "Technomancer", + "points": 0, + "description": "Technomancers are the new breed of modern magician, blending their arcane might with their advanced knowledge of the fundamental nature of the universe. They use technology to enhance their magic and vice versa.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_technomancer", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "EARTHSHAPER", + "name": "Earthshaper", + "points": 0, + "description": "Earthshapers have allowed their minds to sink deep within the stones and metals of the planet, and become one with its secrets. To a master Earthshaper, spells can be as permanent as the stones they are created from, and time is measured in geological eras.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_earthshaper", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "BIOMANCER", + "name": { "str": "Biomancer" }, + "points": 0, + "description": "The Biomancer focuses on manipulating and even absorbing flesh; their own, and that of other living or dead things. Most other wizards find their powers gross and disturbing, but no one can question the potency of their abilities, and certainly not their adaptability to any situation.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_biomancer", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + }, + { + "type": "mutation", + "id": "DRUID", + "name": "Druid", + "points": 0, + "description": "Druids follow a wild tradition of allegiance and rebirth within the world of nature, especially the cycle of death and rebirth that is the plant world. A powerful Druid is as much a part of that world as the human one.", + "starting_trait": false, + "purifiable": false, + "valid": false, + "spells_learned": [ [ "create_rune_druid", 1 ] ], + "mana_modifier": 500, + "mana_regen_multiplier": 1.2 + } +] diff --git a/data/mods/Magical_Nights/traits/manatouched.json b/data/mods/Magical_Nights/traits/manatouched.json new file mode 100644 index 000000000000..6aa12a7d9870 --- /dev/null +++ b/data/mods/Magical_Nights/traits/manatouched.json @@ -0,0 +1,194 @@ +[ + { + "type": "mutation_category", + "id": "MANATOUCHED", + "name": "Manatouched", + "threshold_mut": "THRESH_MANA", + "mutagen_message": "Your ley lines surge with mana.", + "iv_message": "A crackle of power comes from within.", + "iv_sound": true, + "iv_sound_message": "a crackle", + "iv_sound_id": "crackle", + "iv_noise": 1, + "iv_additional_mutations": 0, + "memorial_message": "Ascended to the metaphysical." + }, + { + "type": "mutation", + "id": "THRESH_MANA", + "name": { "str": "Manatouched" }, + "points": 1, + "description": "Magic is in you. Magic is you.", + "mana_multiplier": 1.5, + "valid": false, + "purifiable": false, + "threshold": true + }, + { + "type": "mutation", + "id": "MANA_CRYST_MANA", + "name": { "str": "Mana Solidification" }, + "points": 1, + "category": [ "MANATOUCHED" ], + "threshreq": [ "THRESH_MANA" ], + "description": "Your internal ley lines have become much easier for you to control, resulting in you being able to naturally create crystallized mana.", + "spells_learned": [ [ "manatouched_crystal", 5 ] ] + }, + { + "type": "mutation", + "id": "MANA_SEEKER_BOLTS", + "name": { "str": "Seeker Bolts" }, + "description": "Your hands glow with mana energy. You can fire seeker bolts from your fingertips.", + "points": 2, + "mana_modifier": 250, + "lumination": [ [ "hand_r", 8 ], [ "hand_l", 8 ] ], + "prereqs": [ "MANA_LUM" ], + "category": [ "MANATOUCHED" ], + "threshreq": [ "THRESH_MANA" ], + "spells_learned": [ [ "manatouched_seeker_bolts", 0 ] ] + }, + { + "type": "mutation", + "id": "MANA_SUBTLE_SPELL", + "name": { "str": "Subtle Spell" }, + "description": "You no longer need to move your arms to cast spells, due to your ley lines becoming untethered from your arms. Arm encumbrance no longer applies to spell failure chance.", + "points": 3, + "lumination": [ [ "arm_r", 4 ], [ "arm_l", 4 ] ], + "threshreq": [ "THRESH_MANA" ], + "prereqs": [ "MANA_LUM" ], + "category": [ "MANATOUCHED" ], + "flags": [ "SUBTLE_SPELL" ] + }, + { + "type": "mutation", + "id": "MANA_SILENT_SPELL", + "name": { "str": "Silent Spell" }, + "description": "You no longer need to use your voice to enforce your will upon the world. Mouth encumbrance no longer applies to spell failure chance.", + "points": 3, + "lumination": [ [ "mouth", 4 ] ], + "threshreq": [ "THRESH_MANA" ], + "prereqs": [ "MANA_LUM" ], + "category": [ "MANATOUCHED" ], + "flags": [ "SILENT_SPELL" ] + }, + { + "id": "WEAK", + "type": "mutation", + "name": { "str": "Weak" }, + "passive_mods": { "str_mod": -2 }, + "points": -1, + "description": "Your body is unnaturally weak. -2 Strength.", + "category": [ "MANATOUCHED" ], + "cancels": [ "STR_UP_2", "STR_UP_3", "STR_UP_4", "STR_ALPHA" ] + }, + { + "id": "STR_UP_2", + "type": "mutation", + "copy-from": "STR_UP_2", + "extend": { "cancels": [ "WEAK" ] } + }, + { + "id": "STR_UP_3", + "type": "mutation", + "copy-from": "STR_UP_3", + "extend": { "cancels": [ "WEAK" ] } + }, + { + "id": "STR_UP_4", + "type": "mutation", + "copy-from": "STR_UP_4", + "extend": { "cancels": [ "WEAK" ] } + }, + { + "id": "STR_UP_ALPHA", + "type": "mutation", + "copy-from": "STR_UP_ALPHA", + "extend": { "cancels": [ "WEAK" ] } + }, + { + "type": "mutation", + "id": "MANA_LUM", + "name": { "str": "Mana Luminance" }, + "points": 0, + "bodytemp_modifiers": [ 100, 100 ], + "description": "Your body discards unusable mana as light and heat, making you glow softly.", + "category": [ "MANATOUCHED" ], + "threshreq": [ "THRESH_MANA" ], + "lumination": [ [ "torso", 8 ] ] + }, + { + "type": "mutation", + "id": "ALBINO", + "copy-from": "ALBINO", + "extend": { "category": [ "MANATOUCHED" ] } + }, + { + "type": "mutation", + "id": "ROT2", + "copy-from": "ROT2", + "extend": { "category": [ "MANATOUCHED" ] } + }, + { + "id": "sp_mana_siphon", + "type": "SPELL", + "name": "Mana Siphon", + "description": "This is the spell portion of the mana siphon series of mutations. If you have this spell you probably debugged it in.", + "valid_targets": [ "self" ], + "min_damage": 5, + "damage_increment": 5, + "max_damage": 180, + "max_level": 35, + "effect": "recover_energy", + "effect_str": "MANA", + "flags": [ "SILENT", "NO_LEGS", "NO_HANDS", "NO_EXPLOSION_VFX" ] + }, + { + "type": "enchantment", + "id": "ench_mana_siphon_1", + "hit_you_effect": [ { "id": "sp_mana_siphon", "hit_self": true, "once_in": 5, "message": "You recover some mana." } ] + }, + { + "type": "enchantment", + "id": "ench_mana_siphon_2", + "hit_you_effect": [ { "id": "sp_mana_siphon", "hit_self": true, "min_level": 3, "once_in": 5, "message": "You recover some mana." } ] + }, + { + "type": "enchantment", + "id": "ench_mana_siphon_3", + "hit_you_effect": [ { "id": "sp_mana_siphon", "hit_self": true, "min_level": 6, "once_in": 5, "message": "You recover some mana." } ] + }, + { + "type": "mutation", + "id": "MANA_SIPHON_1", + "name": { "str": "Mana Siphon" }, + "points": 1, + "description": "Violence excites your ley lines. Whenever you hit an enemy in melee, you have a chance of regaining some mana.", + "category": [ "MANATOUCHED" ], + "threshreq": [ "THRESH_MANA" ], + "changes_to": [ "MANA_SIPHON_2" ], + "enchantments": [ "ench_mana_siphon_1" ] + }, + { + "type": "mutation", + "id": "MANA_SIPHON_2", + "name": { "str": "Mana Drain" }, + "points": 2, + "description": "Violence excites your ley lines. Whenever you hit an enemy in melee, you have a chance of regaining some mana.", + "category": [ "MANATOUCHED" ], + "threshreq": [ "THRESH_MANA" ], + "prereqs": [ "MANA_SIPHON_1" ], + "changes_to": [ "MANA_SIPHON_3" ], + "enchantments": [ "ench_mana_siphon_2" ] + }, + { + "type": "mutation", + "id": "MANA_SIPHON_3", + "name": { "str": "Mana Vortex" }, + "points": 3, + "description": "Violence excites your ley lines. Whenever you hit an enemy in melee, you have a chance of regaining some mana.", + "category": [ "MANATOUCHED" ], + "threshreq": [ "THRESH_MANA" ], + "prereqs": [ "MANA_SIPHON_2" ], + "enchantments": [ "ench_mana_siphon_3" ] + } +] diff --git a/data/mods/Magical_Nights/traits/mutation.json b/data/mods/Magical_Nights/traits/mutation.json new file mode 100755 index 000000000000..db0a23f4449c --- /dev/null +++ b/data/mods/Magical_Nights/traits/mutation.json @@ -0,0 +1,270 @@ +[ + { + "type": "mutation_type", + "id": "MANA_ADD" + }, + { + "type": "mutation_type", + "id": "MANA_MULT" + }, + { + "type": "mutation_type", + "id": "MANA_REGEN" + }, + { + "type": "mutation", + "id": "MANA_ADD1", + "name": "Lesser Mana Efficiency", + "points": 1, + "description": "You are able to store a little more mana in your body than usual.", + "cancels": [ "MANA_SUB1", "MANA_SUB2", "MANA_SUB3" ], + "changes_to": [ "MANA_ADD2" ], + "types": [ "MANA_ADD" ], + "starting_trait": true, + "category": [ "MANATOUCHED" ], + "flags": [ "NON_THRESH" ], + "mana_modifier": 500 + }, + { + "type": "mutation", + "id": "MANA_ADD2", + "name": "Mana Efficiency", + "points": 2, + "description": "You are able to store more mana in your body than usual.", + "cancels": [ "MANA_SUB1", "MANA_SUB2", "MANA_SUB3" ], + "changes_to": [ "MANA_ADD3" ], + "types": [ "MANA_ADD" ], + "starting_trait": true, + "category": [ "MANATOUCHED" ], + "prereqs": [ "MANA_ADD1" ], + "flags": [ "NON_THRESH" ], + "mana_modifier": 1000 + }, + { + "type": "mutation", + "id": "MANA_ADD3", + "name": "Greater Mana Efficiency", + "points": 4, + "description": "You are able to store a lot more mana in your body than usual.", + "cancels": [ "MANA_SUB1", "MANA_SUB2", "MANA_SUB3" ], + "types": [ "MANA_ADD" ], + "category": [ "MANATOUCHED" ], + "prereqs": [ "MANA_ADD2" ], + "flags": [ "NON_THRESH" ], + "mana_modifier": 2000 + }, + { + "type": "mutation", + "id": "MANA_SUB1", + "name": "Lesser Mana Inefficiency", + "points": -1, + "description": "You are able to store a little less mana in your body than usual.", + "cancels": [ "MANA_ADD1", "MANA_ADD2", "MANA_ADD3" ], + "changes_to": [ "MANA_SUB2" ], + "types": [ "MANA_ADD" ], + "flags": [ "NON_THRESH" ], + "mana_modifier": -500 + }, + { + "type": "mutation", + "id": "MANA_SUB2", + "name": "Mana Inefficiency", + "points": -2, + "description": "You are able to store less mana in your body than usual.", + "cancels": [ "MANA_ADD1", "MANA_ADD2", "MANA_ADD3" ], + "changes_to": [ "MANA_SUB3" ], + "types": [ "MANA_ADD" ], + "prereqs": [ "MANA_SUB1" ], + "flags": [ "NON_THRESH" ], + "mana_modifier": -1000 + }, + { + "type": "mutation", + "id": "MANA_SUB3", + "name": "Greater Mana Inefficiency", + "points": -3, + "description": "You are able to store a lot less mana in your body than usual.", + "cancels": [ "MANA_ADD1", "MANA_ADD2", "MANA_ADD3" ], + "types": [ "MANA_ADD" ], + "prereqs": [ "MANA_SUB2" ], + "flags": [ "NON_THRESH" ], + "mana_modifier": -2000 + }, + { + "type": "mutation", + "id": "MANA_REGEN1", + "name": "Lesser Mana Regeneration", + "points": 1, + "description": "Your natural mana regeneration is slightly faster than normal.", + "cancels": [ "BAD_MANA_REGEN1", "BAD_MANA_REGEN2", "BAD_MANA_REGEN3" ], + "changes_to": [ "MANA_REGEN2" ], + "types": [ "MANA_REGEN" ], + "category": [ "FISH", "ELFA", "ALPHA", "PLANT", "CEPHALOPOD", "MANATOUCHED" ], + "starting_trait": true, + "flags": [ "NON_THRESH" ], + "mana_regen_multiplier": 1.1 + }, + { + "type": "mutation", + "id": "MANA_REGEN2", + "name": "Mana Regeneration", + "points": 3, + "description": "Your natural mana regeneration is faster than normal.", + "prereqs": [ "MANA_REGEN1" ], + "cancels": [ "BAD_MANA_REGEN1", "BAD_MANA_REGEN2", "BAD_MANA_REGEN3" ], + "changes_to": [ "MANA_REGEN3" ], + "types": [ "MANA_REGEN" ], + "category": [ "FISH", "ELFA", "PLANT", "MANATOUCHED" ], + "starting_trait": true, + "flags": [ "NON_THRESH" ], + "mana_regen_multiplier": 1.25 + }, + { + "type": "mutation", + "id": "MANA_REGEN3", + "name": "Greater Mana Regeneration", + "points": 8, + "description": "Your natural mana regeneration is much faster than normal.", + "prereqs": [ "MANA_REGEN2" ], + "cancels": [ "BAD_MANA_REGEN1", "BAD_MANA_REGEN2", "BAD_MANA_REGEN3" ], + "types": [ "MANA_REGEN" ], + "threshreq": [ "THRESH_PLANT", "THRESH_MANA" ], + "category": [ "PLANT", "MANATOUCHED" ], + "flags": [ "NON_THRESH" ], + "mana_regen_multiplier": 1.5 + }, + { + "type": "mutation", + "id": "BAD_MANA_REGEN1", + "name": "Poor Mana Regeneration", + "points": -1, + "description": "Your natural mana regeneration is slightly slower than normal.", + "cancels": [ "MANA_REGEN1", "MANA_REGEN2", "MANA_REGEN3" ], + "changes_to": [ "BAD_MANA_REGEN2" ], + "types": [ "MANA_REGEN" ], + "category": [ "LIZARD", "BEAST", "LUPINE", "URSINE", "CATTLE", "SLIME", "MEDICAL", "CHIMERA" ], + "starting_trait": true, + "flags": [ "NON_THRESH" ], + "mana_regen_multiplier": 0.9 + }, + { + "type": "mutation", + "id": "BAD_MANA_REGEN2", + "name": "Very Poor Mana Regeneration", + "points": -3, + "description": "Your natural mana regeneration is slower than normal.", + "prereqs": [ "BAD_MANA_REGEN1" ], + "cancels": [ "MANA_REGEN1", "MANA_REGEN2", "MANA_REGEN3" ], + "changes_to": [ "BAD_MANA_REGEN3" ], + "types": [ "MANA_REGEN" ], + "category": [ "BEAST", "CATTLE", "SLIME", "MEDICAL", "CHIMERA" ], + "flags": [ "NON_THRESH" ], + "mana_regen_multiplier": 0.75 + }, + { + "type": "mutation", + "id": "BAD_MANA_REGEN3", + "name": { "str": "Abysmal Mana Regeneration" }, + "points": -6, + "description": "Your natural mana regeneration is much slower than normal.", + "prereqs": [ "BAD_MANA_REGEN2" ], + "cancels": [ "MANA_REGEN1", "MANA_REGEN2", "MANA_REGEN3" ], + "types": [ "MANA_REGEN" ], + "category": [ "BEAST", "MEDICAL" ], + "flags": [ "NON_THRESH" ], + "mana_regen_multiplier": 0.5 + }, + { + "type": "mutation", + "id": "MANA_MULT1", + "name": "Lesser Mana Sensitivity", + "points": 1, + "description": "You can sense the mana in your body slightly better than normal, allowing you to tap into more of your reserves.", + "cancels": [ "BAD_MANA_MULT1", "BAD_MANA_MULT2", "BAD_MANA_MULT3" ], + "changes_to": [ "MANA_MULT2" ], + "types": [ "MANA_MULT" ], + "category": [ "BIRD", "LIZARD", "SLIME", "FELINE", "CATTLE", "URSINE", "PLANT", "CEPHALOPOD", "ALPHA", "ELFA", "MANATOUCHED" ], + "starting_trait": true, + "flags": [ "NON_THRESH" ], + "mana_multiplier": 1.25 + }, + { + "type": "mutation", + "id": "MANA_MULT2", + "name": "Mana Sensitivity", + "points": 3, + "description": "You can sense the mana in your body better than normal, allowing you to tap into more of your reserves.", + "cancels": [ "BAD_MANA_MULT1", "BAD_MANA_MULT2", "BAD_MANA_MULT3" ], + "changes_to": [ "MANA_MULT3" ], + "types": [ "MANA_MULT" ], + "category": [ "BIRD", "SLIME", "CATTLE", "PLANT", "CEPHALOPOD", "ELFA", "MANATOUCHED" ], + "starting_trait": true, + "prereqs": [ "MANA_MULT1" ], + "flags": [ "NON_THRESH" ], + "mana_multiplier": 1.9 + }, + { + "type": "mutation", + "id": "MANA_MULT3", + "name": "Greater Mana Sensitivity", + "points": 8, + "description": "You can sense the mana in your body much better than normal, allowing you to tap into more of your reserves.", + "cancels": [ "BAD_MANA_MULT1", "BAD_MANA_MULT2", "BAD_MANA_MULT3" ], + "types": [ "MANA_MULT" ], + "category": [ "SLIME", "CATTLE", "CEPHALOPOD", "MANATOUCHED" ], + "prereqs": [ "MANA_MULT2" ], + "flags": [ "NON_THRESH" ], + "mana_multiplier": 2.5 + }, + { + "type": "mutation", + "id": "BAD_MANA_MULT1", + "name": "Poor Mana Sensitivity", + "points": -1, + "description": "You have a hard time sensing the mana in your body, making less of your reserves available for use.", + "cancels": [ "MANA_MULT1", "MANA_MULT2", "MANA_MULT3" ], + "changes_to": [ "BAD_MANA_MULT2" ], + "types": [ "MANA_MULT" ], + "category": [ "BEAST", "FISH", "LUPINE", "INSECT", "TROGLOBITE", "SPIDER", "RAT", "MOUSE", "MEDICAL", "CHIMERA", "RAPTOR" ], + "starting_trait": true, + "flags": [ "NON_THRESH" ], + "mana_multiplier": 0.85 + }, + { + "type": "mutation", + "id": "BAD_MANA_MULT2", + "name": "Very Poor Mana Sensitivity", + "points": -3, + "description": "You have a hard time sensing the mana in your body, making less of your reserves available for use.", + "cancels": [ "MANA_MULT1", "MANA_MULT2", "MANA_MULT3" ], + "changes_to": [ "BAD_MANA_MULT3" ], + "types": [ "MANA_MULT" ], + "category": [ "BEAST", "INSECT", "TROGLOBITE", "MOUSE", "MEDICAL", "CHIMERA", "RAPTOR" ], + "prereqs": [ "BAD_MANA_MULT1" ], + "flags": [ "NON_THRESH" ], + "mana_multiplier": 0.65 + }, + { + "type": "mutation", + "id": "BAD_MANA_MULT3", + "name": { "str": "Abysmal Mana Sensitivity" }, + "points": -6, + "description": "You have a hard time sensing the mana in your body, making less of your reserves available for use.", + "cancels": [ "MANA_MULT1", "MANA_MULT2", "MANA_MULT3" ], + "types": [ "MANA_MULT" ], + "category": [ "INSECT", "MEDICAL", "CHIMERA" ], + "prereqs": [ "BAD_MANA_MULT2" ], + "flags": [ "NON_THRESH" ], + "mana_multiplier": 0.35 + }, + { + "type": "mutation", + "id": "DEBUG_spell_mutation", + "name": "Debug Spell Mutation", + "points": 20, + "valid": false, + "description": "Gives all of the debug spells at max level.", + "debug": true, + "spells_learned": [ [ "example_template", 10 ], [ "debug_stamina", 0 ], [ "debug_hp", 0 ], [ "debug_bionic", 0 ], [ "debug_effect", 0 ] ] + } +] diff --git a/data/mods/Magical_Nights/traps.json b/data/mods/Magical_Nights/traps.json new file mode 100644 index 000000000000..278152784cf3 --- /dev/null +++ b/data/mods/Magical_Nights/traps.json @@ -0,0 +1,15 @@ +[ + { + "type": "trap", + "id": "tr_bear", + "name": "bear trap", + "color": "blue", + "symbol": "^", + "action": "spell", + "visibility": 2, + "trap_radius": 2, + "avoidance": 99, + "difficulty": 99, + "spell_data": { "id": "bear_trap" } + } +] diff --git a/data/mods/Magical_Nights/vehicleparts/frames.json b/data/mods/Magical_Nights/vehicleparts/frames.json new file mode 100644 index 000000000000..5cc54ca28bb7 --- /dev/null +++ b/data/mods/Magical_Nights/vehicleparts/frames.json @@ -0,0 +1,99 @@ +[ + { + "id": "folding_orichalcum_frame", + "type": "vehicle_part", + "name": "foldable orichalcum frame", + "item": "fold_orichalcum_frame", + "location": "structure", + "symbol": "h", + "durability": 250, + "description": "A light metal framework, designed to fold. Other vehicle components can be mounted on it. If all the frames and components of a vehicle are foldable, the vehicle can be folding into a small package and picked up as a normal item.", + "folded_volume": "5 L", + "breaks_into": [ { "item": "orichalcum_lump", "count": [ 0, 2 ] } ], + "requirements": { + "install": { "skills": [ [ "mechanics", 2 ], [ "spellcraft", 1 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, + "removal": { "skills": [ [ "mechanics", 2 ], [ "spellcraft", 1 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, + "repair": { "skills": [ [ "mechanics", 3 ], [ "spellcraft", 1 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } + }, + "flags": [ "INITIAL_PART", "MOUNTABLE", "FOLDABLE" ], + "damage_reduction": { "all": 12 } + }, + { + "abstract": "orichalcum_frame", + "type": "vehicle_part", + "name": "orichalcum frame", + "item": "orichalcum_frame", + "location": "structure", + "durability": 2000, + "description": "An expensive magical metal framework. Other vehicle components can be mounted on it, and it can be attached to other frames to increase the vehicle's size.", + "breaks_into": "orichalcum_frame_break", + "requirements": { + "install": { "skills": [ [ "mechanics", 2 ] ], "time": "20 m", "using": [ [ "welding_standard", 10 ] ] }, + "removal": { "skills": [ [ "mechanics", 2 ] ], "time": "10 m", "using": "vehicle_weld_removal" }, + "repair": { "skills": [ [ "mechanics", 2 ] ], "time": "5 m", "using": [ [ "welding_standard", 5 ] ] } + }, + "flags": [ "MOUNTABLE" ], + "damage_reduction": { "all": 78 } + }, + { + "id": "frame_orichalcum_cover", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "^" + }, + { + "id": "frame_orichalcum_cross", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "c", + "extend": { "flags": [ "INITIAL_PART" ] } + }, + { + "id": "frame_orichalcum_horizontal", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "h" + }, + { + "id": "frame_orichalcum_horizontal_2", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "=" + }, + { + "id": "frame_orichalcum_ne", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "u" + }, + { + "id": "frame_orichalcum_nw", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "y" + }, + { + "id": "frame_orichalcum_se", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "n" + }, + { + "id": "frame_orichalcum_sw", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "b" + }, + { + "id": "frame_orichalcum_vertical", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "j" + }, + { + "id": "frame_orichalcum_vertical_2", + "copy-from": "orichalcum_frame", + "type": "vehicle_part", + "symbol": "H" + } +] diff --git a/data/mods/Magical_Nights/vehicleparts/vehicle_parts.json b/data/mods/Magical_Nights/vehicleparts/vehicle_parts.json new file mode 100644 index 000000000000..fba26970bd98 --- /dev/null +++ b/data/mods/Magical_Nights/vehicleparts/vehicle_parts.json @@ -0,0 +1,8 @@ +[ + { + "type": "item_group", + "id": "orichalcum_frame_break", + "subtype": "collection", + "entries": [ { "item": "orichalcum_lump", "count": [ 4, 6 ] }, { "item": "orichalcum_sliver", "count": [ 4, 6 ] } ] + } +] diff --git a/data/mods/Magical_Nights/vehicles/summoned_vehicles.json b/data/mods/Magical_Nights/vehicles/summoned_vehicles.json new file mode 100644 index 000000000000..6c2a1c900358 --- /dev/null +++ b/data/mods/Magical_Nights/vehicles/summoned_vehicles.json @@ -0,0 +1,80 @@ +[ + { + "id": "floating_disk", + "type": "vehicle", + "name": "Floating disk", + "blueprint": [ "o" ], + "parts": [ { "x": 0, "y": 0, "parts": [ "mana_frame" ] } ] + }, + { + "id": "mana_wheel", + "category": "veh_parts", + "type": "WHEEL", + "name": "mana wheel", + "description": "A column of mana energy that enables a floating disk to move.", + "weight": "500 g", + "volume": "500 ml", + "price": "1 cent", + "bashing": 8, + "to_hit": -4, + "material": [ "steel" ], + "symbol": "]", + "color": "light_gray", + "diameter": 20, + "width": 10 + }, + { + "type": "vehicle_part", + "id": "mana_frame", + "name": "mana frame", + "symbol": "O", + "color": "magenta", + "broken_symbol": "M", + "broken_color": "red", + "damage_modifier": 10, + "noise_factor": 1, + "fuel_type": "mana", + "durability": 20, + "item": "mana_wheel", + "m2c": 90, + "rolling_resistance": 0.45, + "wheel_type": "standard", + "contact_area": 20, + "description": "A shape of pure mana that can float and carry items.", + "size": "37500 ml", + "power": 200, + "location": "structure", + "//": "This should not be interactable nor visible as a vehicle part, its part of a summoned magic 'vehicle'", + "requirements": { + "install": { "skills": [ [ "mechanics", 20 ], [ "spellcraft", 1 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] }, + "removal": { "skills": [ [ "mechanics", 20 ], [ "spellcraft", 1 ] ], "time": "30 m", "using": [ [ "vehicle_weld_removal", 1 ] ] }, + "repair": { "skills": [ [ "mechanics", 20 ], [ "spellcraft", 1 ] ], "time": "60 m", "using": [ [ "welding_standard", 5 ] ] } + }, + "flags": [ "INITIAL_PART", "ENGINE", "STABLE", "E_STARTS_INSTANTLY", "STEERABLE", "WHEEL", "OBSTACLE", "CARGO", "MAGIC_FOLLOW" ], + "damage_reduction": { "all": 12 } + }, + { + "id": "mana", + "name": "mana energy", + "default": "mana", + "type": "ammunition_type" + }, + { + "id": "mana", + "type": "AMMO", + "category": "chems", + "name": "mana core power", + "description": "Seeing this is a bug.", + "weight": "10 g", + "volume": "10 ml", + "bashing": 1, + "phase": "solid", + "material": "flesh", + "flags": [ "PSEUDO", "PERPETUAL" ], + "fuel": { "energy": 500 }, + "symbol": "?", + "color": "magenta", + "count": 1, + "ammo_type": "mana" + } +] diff --git a/data/mods/Magical_Nights/worldgen/black_dragon_lair.json b/data/mods/Magical_Nights/worldgen/black_dragon_lair.json new file mode 100644 index 000000000000..1eb1874ffc0a --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/black_dragon_lair.json @@ -0,0 +1,491 @@ +[ + { + "type": "mapgen", + "method": "json", + "//": "ground entrance", + "om_terrain": [ + [ "black_dragon_lair_z-0_NW", "black_dragon_lair_z-0_NE" ], + [ "black_dragon_lair_z-0_SW", "black_dragon_lair_z-0_SE" ] + ], + "object": { + "fill_ter": "t_water_sh", + "predecessor_mapgen": "forest_water", + "rows": [ + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "........................~~......................", + "......................~1~~......................", + "....................~~a~~a2~....................", + ".............1......||| |||....................", + "..............~~~..~| |~~~.~~1~............", + "............~~i~i~.~| ____ |~~~~~~~.~~..........", + "..............~~~..e| _>>_ |e~g~~~g~~i~.........", + "...................~ _>>_ ~~g~f~g~~~~.........", + "...................e| ____ |e~g~~~g~............", + ".................1~~| |~~~~~.~~............", + "...............~~~~~||| |||~.~i~~..............", + "..............~~i~~~~~a~~a~~...~~...............", + "...............~~.~~.~~~~1~.....................", + ".......................~~.......................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................", + "................................................" + ], + "terrain": { + "~": "t_sand", + "f": "t_sand", + "_": "t_floor_blue", + " ": "t_floor_green", + "|": "t_rock_smooth", + "e": "t_rock_blue", + "a": "t_rock_green", + ">": "t_slope_down", + "<": "t_slope_up", + "X": "t_rock", + "g": "t_trunk", + "i": "t_improvised_shelter", + ".": [ + [ "t_grass_tall", 5 ], + [ "t_grass_dead", 4 ], + [ "t_stump", 3 ], + [ "t_tree_dead", 3 ], + [ "t_trunk", 3 ], + [ "t_tree_deadpine", 2 ], + [ "t_tree_hickory_dead", 2 ], + [ "t_grass_long", 5 ], + [ "t_water_sh", 25 ], + [ "t_swater_sh", 25 ], + [ "t_water_dp", 50 ], + [ "t_moss", 10 ], + [ "t_mud", 10 ], + [ "t_underbrush", 3 ], + [ "t_dirt", 2 ], + "t_shrub" + ] + }, + "furniture": { + "d": "f_boulder_small", + "c": "f_boulder_medium", + "b": "f_boulder_large", + "f": "f_firering", + "1": "f_fog", + "2": "f_swamp_gas" + }, + "place_monsters": [ + { "monster": "GROUP_LIZARDFOLK", "x": [ 4, 19 ], "y": [ 24, 44 ], "density": 0.1, "repeat": [ 1, 3 ] }, + { "monster": "GROUP_LIZARDFOLK", "x": [ 24, 44 ], "y": [ 24, 44 ], "density": 0.1, "repeat": [ 1, 3 ] }, + { "monster": "GROUP_LIZARDFOLK", "x": [ 24, 44 ], "y": [ 4, 23 ], "density": 0.1, "repeat": [ 1, 3 ] } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "//": "z -1, open area entrance", + "om_terrain": [ + [ "black_dragon_lair_z-1_NW", "black_dragon_lair_z-1_NE" ], + [ "black_dragon_lair_z-1_SW", "black_dragon_lair_z-1_SE" ] + ], + "object": { + "fill_ter": "t_water_sh", + "rows": [ + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "XXXX.......XXXX................XXXXXX.......XXXX", + "XX..........XX..................XXXX..........XX", + "XX....1.....XX.................XXXX.......1...XX", + "XXXX.........XX........>>.......XX............XX", + "XXXXXX........XX.......>>......XX.......>>....XX", + "XXXX..........................XXXX......>>....XX", + "XX.............................XX.............XX", + "XX......>>.....................XX.............XX", + "XX......>>.....................XX.............XX", + "XXXX...........................XX.............XX", + "XXX.XXXX.............1..........XX..........XXXX", + "XXX.XXXXXX.....................XXXX...1...XXXXXX", + "XXX..XXXXXXX....................XXXX.....XXXXXXX", + "XXX..XXXXXX........................XX.....XXXXXX", + "XXXX..XXXX...................1......XX.....XXXXX", + "XXXXX.XX.............................XX.....XXXX", + "XXXX..........................................XX", + "XX............................................XX", + "XX........................................>>..XX", + "XX........................................>>..XX", + "XX..........1......... ....................XX", + "XX.................. << ...........1......XX", + "XX.................. << ..................XX", + "XX.................... ....................XX", + "XXXX..........................................XX", + "XXXXXX........................................XX", + "XXXXXX........................................XX", + "XXXX.......1.................................XXX", + "XX........................................XXXXXX", + "XX..................1....................XXXXXXX", + "XX........>>........................XXX.XXX1XXXX", + "XX........>>........................XXX.XX...XXX", + "XX.................................XXXX......XXX", + "XX...............................XXXXXXXXX...XXX", + "XXXX............2................XXXXXXXXXX.XXXX", + "XXXXXX.........................XXXXXXXXXXXX.XXXX", + "XXXXXXXXX...............X......1......XXXXX..XXX", + "XXXXXXXXXX.............XX...............XXXX.XXX", + "XXXXXXXXXXX.1....XXXXXXXX........>>......XXXXXXX", + "XXXXXXX.............XXXXXX.......>>.........XXXX", + "XXXXXXX.....2........XXXXX...................XXX", + "XXXXXXX............XXXXXXXXX..2..............XXX", + "XXXXXXXXX............XXXXXX............XXX...XXX", + "XXXXXXXXXX..........XXXXXXXX.....XXXXXXXXXXXXXXX", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ], + "place_monsters": [ + { "monster": "GROUP_BLACKDRAGON_LAIR_1", "x": [ 4, 23 ], "y": [ 4, 23 ], "density": 0.1, "repeat": [ 4, 10 ] }, + { + "monster": "GROUP_BLACKDRAGON_LAIR_1", + "x": [ 4, 19 ], + "y": [ 24, 44 ], + "density": 0.1, + "repeat": [ 4, 10 ] + }, + { + "monster": "GROUP_BLACKDRAGON_LAIR_1", + "x": [ 24, 44 ], + "y": [ 24, 44 ], + "density": 0.1, + "repeat": [ 4, 10 ] + }, + { + "monster": "GROUP_BLACKDRAGON_LAIR_1", + "x": [ 24, 44 ], + "y": [ 4, 23 ], + "density": 0.1, + "repeat": [ 4, 10 ] + }, + { + "monster": "GROUP_BLACKDRAGON_LAIR_1", + "x": [ 10, 23 ], + "y": [ 10, 23 ], + "density": 0.1, + "repeat": [ 4, 10 ] + } + ], + "terrain": { + ">": "t_slope_down", + "<": "t_slope_up", + "X": "t_rock", + " ": "t_sand", + "~": "t_water_dp_underground", + ".": [ + [ "t_grass_tall", 5 ], + [ "t_stump", 1 ], + [ "t_pit_shallow", 2 ], + [ "t_pit_corpsed", 2 ], + [ "t_pit_spiked", 2 ], + [ "t_pit_glass", 2 ], + [ "t_grass_long", 5 ], + [ "t_water_murky", 25 ], + [ "t_water_sh_underground", 25 ], + [ "t_swater_sh_underground", 25 ], + [ "t_sand_underground", 3 ], + [ "t_water_dp_underground", 40 ], + [ "t_moss_underground", 10 ], + [ "t_underbrush", 3 ], + [ "t_dirt_underground", 2 ], + [ "t_mud_underground", 2 ], + "t_shrub" + ] + }, + "furniture": { "a": "f_boulder_small", "c": "f_boulder_medium", "b": "f_boulder_large", "1": "f_fog", "2": "f_swamp_gas" }, + "items": { ".": [ { "item": "lair_black_dragon", "chance": 5 } ] } + } + }, + { + "type": "mapgen", + "method": "json", + "//": "dragon nests, open to cavern below", + "om_terrain": [ + [ "black_dragon_lair_z-2_NW", "black_dragon_lair_z-2_NE" ], + [ "black_dragon_lair_z-2_SW", "black_dragon_lair_z-2_SE" ] + ], + "object": { + "fill_ter": "t_sand", + "rows": [ + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "XXXXXXXXXXX...XX XXXXXXXXXX XXX..XXXXXXXXXX", + "XXXXXXXXXXX... XXXXXXX .....XXXXXXXXX", + "XXXXX..XXXX...XX XXXXXXX .......XXXXXXXXX", + "XXXX....XXXXXXXXXX XXXXXXXXXX X.......XXXXXXXXX", + "XXXX....XXXXXXXXXXXXXXX>>XXX XX..XXXXXXXXXXXXX", + "XXXX.............XXXXXX<>XXXXXX", + "XX.....XXXXXX......XXXXXXXXXX XX..XXXXXX<>XXXXXX....XX.....XXX.....XXXXXXXXXXXXX", + "XXX XXX<>XXXX", + "XXXXXXX....XXXXX....XXXXXX XX..XXX..XXXXX<>XX .........................XXXXXX", + "XXX..XXXXX<>XXXXX....XXXX", + "XX.......................XXX XX<": "t_slope_down", "<": "t_slope_up" }, + "furniture": { "a": "f_boulder_small", "c": "f_boulder_medium", "b": "f_boulder_large" }, + "items": { " ": [ { "item": "lair_loot_generic", "chance": 10, "repeat": [ 2, 4 ] } ] } + } + }, + { + "type": "mapgen", + "method": "json", + "//": "z -2, reserved for loot/habitat rooms, should be vaulted x2 with dragon entrances from above?", + "om_terrain": [ + [ "black_dragon_lair_z-3_NW", "black_dragon_lair_z-3_NE" ], + [ "black_dragon_lair_z-3_SW", "black_dragon_lair_z-3_SE" ] + ], + "object": { + "fill_ter": "t_water_sh", + "rows": [ + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "XXXXXXXXXXX > XXXXXXXXXXXXXXXXXXXXXX..XXXXXXXXXX", + "XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX.....XXXXXXXXX", + "XXXXX..XXXX XXXXXXXXXXXXXXXXXX.......XXXXXXXXX", + "XXXX....XXXXXXXXXXXXXXXXXXXXXXXX1.....XXXXXXXXXX", + "XXXX.1...XXXXXXXXXXXXXX>>XXXXXXXX..XXXXXXXXXXXXX", + "XXXX.............XXXXXX<>XXXXXX", + "XX.....XXXXXX......XXXXXXXXXXXXX..XXXXXX<>XXXXXX....XX.....XXX.....XXXXXXXXXXXXX", + "XXXXXXXX<>...........XXXXX", + "XXXXXXXXXXXXXXXXX...........................XXXX", + "XXX > XXXXXXXXXXX............................XXX", + "XXX XXXXXXXXXX.........................XXXXXXX", + "XXX XXXXXXXXX.........1...............XXXXXXXX", + "XXXXXXXXXXXXXX.........................XXXXXXXXX", + "XXXXXXXXXXXXXXX....XXXXXXXXX..XXXX....XXXX>>XXXX", + "XXXXXXX....XXXXX....XXXXXXXXXX..XXX..XXXXX<>XXXXX.........................XXXXXX", + "XXX..XXXXX<>.................XXXX", + "XXXXX.XXXXXXXXXXXX...........................XXX", + "XXXXX.XXXXXXXXXXXXX.............XXXXX.........XX", + "XXXX...XXXXXXXXXXXXXXXX......XXXXXXXXXXXX...XXXX", + "XX.......XXXXXXXXXXXX.....XXXXXXXXXXXXXX...XXXXX", + "XX....2...XXXX....XXXXXX....XXXXXXXXXXXXX...XXXX", + "XXX........................XXXXXX>>XXXXX....XXXX", + "XX.......................XXXXXXXX< XX", + "XXXXX....XXXXXXXXX....XXXX.........XXXXXXXX XX", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXX.....XXXXXXXXXX XX", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ], + "place_monsters": [ + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 5, "y": 5, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 35, "y": 3, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 20, "y": 14, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 37, "y": 14, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 23, "y": 17, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 20, "y": 32, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 39, "y": 33, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 41, "y": 40, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 5, "y": 40, "density": 0.1, "repeat": [ 4, 10 ] }, + { "monster": "GROUP_BLACKDRAGON_LAIR_2", "x": 20, "y": 43, "density": 0.1, "repeat": [ 4, 10 ] } + ], + "terrain": { + ">": "t_slope_down", + "<": "t_slope_up", + "X": "t_rock", + " ": "t_sand", + "~": "t_water_cube", + ".": [ + [ "t_grass_tall", 5 ], + [ "t_stump", 1 ], + [ "t_pit_shallow", 2 ], + [ "t_pit_corpsed", 2 ], + [ "t_pit_spiked", 2 ], + [ "t_pit_glass", 2 ], + [ "t_grass_long", 5 ], + [ "t_water_sh_underground", 25 ], + [ "t_swater_sh_underground", 25 ], + [ "t_sand_underground", 3 ], + [ "t_water_dp_underground", 40 ], + [ "t_moss_underground", 10 ], + [ "t_underbrush", 3 ], + [ "t_dirt_underground", 2 ], + "t_shrub" + ] + }, + "furniture": { "a": "f_boulder_small", "c": "f_boulder_medium", "b": "f_boulder_large", "1": "f_fog", "2": "f_swamp_gas" }, + "place_items": [ { "item": "boss_treasure_items", "x": 44, "y": 46, "chance": 100 } ], + "items": { + ".": [ { "item": "lair_black_dragon", "chance": 15, "repeat": [ 0, 2 ] } ], + " ": [ + { "item": "lair_black_dragon_treasure", "chance": 10, "repeat": [ 0, 2 ] }, + { "item": "enchanted_small_items", "chance": 10, "repeat": [ 0, 2 ] }, + { "item": "enchanted_combat_items", "chance": 10, "repeat": [ 0, 2 ] }, + { "item": "enchanted_melee_weapons_plus2", "chance": 5 }, + { "item": "spellbook_loot_1", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "spellbook_loot_2", "chance": 20, "repeat": [ 1, 2 ] } + ] + } + } + }, + { + "type": "mapgen", + "method": "json", + "//": "z, -3 underwater passageways up to loot rooms", + "om_terrain": [ + [ "black_dragon_lair_z-4_NW", "black_dragon_lair_z-4_NE" ], + [ "black_dragon_lair_z-4_SW", "black_dragon_lair_z-4_SE" ] + ], + "object": { + "fill_ter": "t_water_dp_underground", + "rows": [ + "XXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "XXXXXXXXX < XXXXXXXXXXXXXXXXX XXXXXXX", + "XXXX XXXXXXXXXXXXXX XXXXXX", + "XXXX XXXXXXX XXXXXXXXXXXXX XXXXX XXXXXX", + "XXX XXXXXXXXX XXXXXXXXXXXXXX XXXXXXX XXXXXX", + "XXX XXXXXXXXX XXXXXX << XXXXXXXX XXXXX", + "X XXXXX XXX XXXXXX << XXXXXXX << XXXX", + "X XXXXX XXX XXXXXXXXXXXXXX XX XXX << XXXX", + "X XXXX XX XXX XXXXXXXXX XX XXXXX XXX", + "X XXX << XX XXX XXXXXX XXX", + "X XXX << XX XX XX XXXX XXX", + "X XXX XXX XX XX XXX XXXXXXX XX", + "X XXXX XXX X XXXX XXX XXXXXX XXX X", + "XX XXXX XXXX XXXXXXXX XXXX X", + "XXX XXX XXXX XXXXXXXXXXX << XXXXX X", + "XXX XXX XX XXXXXXXXXXX XXXXXXXXXXX X", + "XXX < XXX XXXXXXXXXXXXX XXXXXXXXXXXXX X", + "XXX XXX XXXXX XXXXX XXXXXXXXXXXXX X", + "XXXXXXXXX XXXXX XXX XXX XXXXXXXXXXXX X", + "XXXXXXX XXXXXX XXXXXXXXXXX XX", + "XXXXXX XXXXXXX XXXXX << XXX", + "XXXXXX XXXXXXXXXXXXXX XXXX XXXXX XXX << XXX", + "XXXXXX XXXXXXXXXXXXXXX XXXXX XXX XXXX XXX", + "XXXXXX XXXXXXXXXXXXXX XXXX XXXXX XXXX", + "XXXXXX XXXXXXX XXXXX XXXXXXX XXXX", + "XXXXXX XXX XXXXXX XXXXXXXX XXXXX XXXX", + "XXXXXX XX XX XXXXXXX XXXXXXXX XXXX", + "XXXXXX X XXXXXXXXXXX XXXX XXXX", + "XXX XXXXXXXXXXXXXXXX XX XXXXX XXXX", + "XX XXXXXXXXXXXXXXXXXX XXXXXXX XXXX", + "XX XXXXXXXXXXXXXX XXXXXXXXXXXX XXXX", + "XX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXX", + "XX XXXXX << XXXXXX XXXX XXXXXXXXXXXXXXX XXXX", + "XX XXXXX << XXXXXX XXX XXXXX XXX XXXX", + "XX XXXXXX XXX << XXXX XXXX", + "XX XXXXXX XXX XXX XXXX X XXXX", + "XX XXXXXXX XXXXXXXXXXXXXXXX XXXXX XXX XXXX", + "XX XXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXX XXXX", + "XX XXXX XXXX XXXXXXX XXXXXXXXX XXXX", + "XX XX XXXX XXX XXX XXX XX XXXXX XXXX", + "XX XXXXXXXX XXXX XXX << XXXX", + "XX XXXXXXXXX XXXXX XXX << XXXXX", + "XX XXXXXXXXXX XXXXXXX XXXXXX XXXXXXXXXXX", + "XX XXXXXX XXXXXXX XXXXXXXXXXXXXXXXXX X", + "XXX XXXX XXXXX XXXXXXXXXXXXXXX < X", + "XXXXXXX XXXXXX XX", + "XXXXXXXX XX", + "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + ], + "place_monster": [ + { "monster": "mon_crocodile", "x": 10, "y": 2, "repeat": [ 1, 2 ], "chance": 50 }, + { "monster": "mon_crocodile", "x": 24, "y": 9, "repeat": [ 1, 2 ], "chance": 50 }, + { "monster": "mon_crocodile", "x": 20, "y": 19, "repeat": [ 1, 2 ], "chance": 50 }, + { "monster": "mon_crocodile", "x": 14, "y": 33, "repeat": [ 1, 2 ], "chance": 50 }, + { "monster": "mon_crocodile", "x": 7, "y": 18, "repeat": [ 1, 2 ], "chance": 50 }, + { "monster": "mon_crocodile", "x": 20, "y": 45, "repeat": [ 1, 2 ], "chance": 50 } + ], + "terrain": { "<": "t_slope_up", "X": "t_rock", " ": "t_water_dp_underground" } + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/demon_spider_lair.json b/data/mods/Magical_Nights/worldgen/demon_spider_lair.json new file mode 100644 index 000000000000..d7eee068a8a9 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/demon_spider_lair.json @@ -0,0 +1,79 @@ +[ + { + "type": "palette", + "id": "demon_spider_lair", + "terrain": { + "7": [ + [ "t_tree_burnt", 60 ], + "t_tree", + "t_tree_apple", + "t_tree_peach", + "t_tree_pear", + "t_tree_hickory", + "t_tree_beech", + "t_tree_coffee", + "t_tree_pine", + "t_tree_birch", + "t_tree_willow", + "t_tree_maple", + "t_webbed_corpse" + ], + "~": [ "t_lava" ], + " ": [ [ "t_grass_dead", 2 ], [ "t_dirt", 15 ], [ "t_sand", 10 ], [ "t_dirtmound", 3 ], [ "t_rock_floor_no_roof", 8 ] ], + ".": [ "t_dirtfloor" ], + "$": [ "t_dirtfloor" ], + "S": [ "t_lava" ], + "s": [ [ "t_dirtfloor", 6 ], [ "t_dirt", 15 ], [ "t_sand", 10 ], [ "t_dirtmound", 4 ], [ "t_rock_floor_no_roof", 3 ] ], + "#": [ [ "t_demon_web_wall", 10 ], "t_tree_burnt" ] + }, + "fields": { + " ": { "field": "fd_web", "intensity": 2 }, + ".": { "field": "fd_web", "intensity": 3 }, + "s": { "field": "fd_web", "intensity": 3 }, + "S": { "field": "fd_web", "intensity": 3 }, + "~": { "field": "fd_web", "intensity": 3 } + }, + "items": { "$": { "item": "demon_spider_lair_treasure", "chance": 90, "repeat": [ 3, 6 ] } }, + "monster": { + "S": { "monster": "mon_demon_spider_queen", "chance": 100 }, + "s": { "monster": "mon_demon_spider", "chance": 100 }, + ".": { "monster": "mon_demon_spiderling", "chance": 8 }, + " ": { "monster": "mon_demon_spiderling", "chance": 1 } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "demon_spider_lair" ], + "weight": 100, + "object": { + "rows": [ + " 7 ", + " 7 7 ", + " ### ####7 ", + " ########### ", + " ############ 7 ", + " #####.######## 7 ", + " 7 ####..########### ", + " ###...........#### ", + " ####...$..7...##### ", + " ####.............###7 ", + " ###..$....s....#######", + " #####..........$..#####", + " ####.....~S..s..#####", + " ####...s..~~......### ", + " ######.7...s....####7 ", + " ####..........~..#### ", + " 7 #####..s........#####", + " #######.....7.##### ", + " #####7......#### ", + " 7 ####....#### ", + " 7 ####....#### ", + " 7 ####...#### 7 ", + " ####..#### 7 ", + " ##### .#### " + ], + "palettes": [ "demon_spider_lair" ] + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/forest_tomb.json b/data/mods/Magical_Nights/worldgen/forest_tomb.json new file mode 100644 index 000000000000..9e2e259afeba --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/forest_tomb.json @@ -0,0 +1,134 @@ +[ + { + "type": "palette", + "id": "tomb", + "terrain": { + ".": "t_rock_floor", + " ": [ [ "t_grass_dead", 15 ], [ "t_dirt", 4 ], [ "t_dirtmound", 3 ], [ "t_rock_floor_no_roof", 4 ] ], + "T": "t_tree_dead", + "R": "t_railroad_rubble", + "S": "t_shrub", + "<": "t_slope_up", + ">": "t_slope_down", + "#": "t_rock" + }, + "furniture": { "H": "f_altar", "C": "f_coffin_c" }, + "items": { "R": { "item": "animist_items", "chance": 25 }, "H": { "item": "forest_tomb_spellbook", "chance": 100 } }, + "monster": { "x": { "monster": "mon_skeleton", "chance": 50 }, "Z": { "monster": "mon_zombie_necro", "chance": 100 } } + }, + { + "type": "palette", + "id": "tomb_roof", + "terrain": { ".": "t_rock_roof", " ": "t_open_air", ">": "t_slope_down" } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "forest_tomb" ], + "//": "Ground level - Z-0.", + "weight": 100, + "object": { + "fill_ter": "t_rock_floor", + "rows": [ + " S ", + " S ", + " S ", + " S ", + " S ", + " S S ", + " ##<############### ", + " ################## ", + " S ####C.##>>##..C### ", + " ###x..........###............... ", + " .................. ", + " .................. ", + " .................> ", + " .................. ", + " .................. ", + " .................. ", + " .................. ", + " .................. ", + " .............>.... ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "tomb_roof" ] + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/goblin_camp.json b/data/mods/Magical_Nights/worldgen/goblin_camp.json new file mode 100644 index 000000000000..0e614fee0508 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/goblin_camp.json @@ -0,0 +1,104 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "goblin_camp", + "object": { + "rows": [ + "........................", + ".||||||||||^^||||||||||.", + ".|.p.p.p.........r___r|.", + ".|..............._____|.", + ".|...f...........__F__|.", + ".|..............._____|.", + ".|.C.C...........____r|.", + ".|.CC.................|.", + ".|%%%%%%%.............|.", + ".|%kk`dc%.............|.", + ".|%`````%.....#######.|.", + ".|%B````(.....#R,R,R#.|.", + ".|%s````%.....),,,,,#.|.", + ".|%`````%.....#R,R,R#.|.", + ".|%%%%%%%.....#######.|.", + ".|....................|.", + ".|............#######.|.", + ".|............#b,b,b#.|.", + ".|............),,,,,#.|.", + ".|............#b,b,b#.|.", + ".|............#######.|.", + ".|.t.t.t.t............|.", + ".||||||||||^^||||||||||.", + "........................" + ], + "place_loot": [ + { "item": "water", "x": 3, "y": 2, "repeat": [ 3, 6 ] }, + { "item": "bum_wine", "x": 5, "y": 2, "repeat": [ 3, 6 ] }, + { "item": "beer", "x": 7, "y": 2, "repeat": [ 3, 6 ] }, + { "item": "2x4", "x": 5, "y": 4, "repeat": [ 3, 6 ] } + ], + "place_monster": [ + { "monster": "mon_goblin_warrior", "x": [ 3, 20 ], "y": [ 3, 5 ], "repeat": 2 }, + { "monster": "mon_goblin_slinger", "x": [ 3, 11 ], "y": [ 15, 20 ], "repeat": 2 }, + { "monster": "mon_goblin_warrior", "x": [ 12, 19 ], "y": [ 9, 21 ], "repeat": 2 }, + { "monster": "mon_goblin_chieftain", "x": [ 2, 7 ], "y": [ 9, 13 ] } + ], + "terrain": { + ".": [ [ "t_grass", 2 ], [ "t_grass_long", 2 ], [ "t_dirt", 3 ] ], + "C": [ [ "t_grass", 2 ], [ "t_grass_long", 2 ], [ "t_dirt", 3 ] ], + "K": [ [ "t_grass", 2 ], [ "t_grass_long", 2 ], [ "t_dirt", 3 ] ], + "t": [ [ "t_grass", 2 ], [ "t_grass_long", 2 ], [ "t_dirt", 3 ] ], + "f": [ [ "t_grass", 2 ], [ "t_grass_long", 2 ], [ "t_dirt", 3 ] ], + "p": "t_dirt", + "|": "t_wall_log", + "^": "t_splitrail_fencegate_c", + "_": "t_rock_floor_no_roof", + "F": "t_rock_floor_no_roof", + "r": "t_rock_floor_no_roof", + "#": "t_wall_rammed_earth", + ",": "t_dirtfloor_thatchroof", + "b": "t_dirtfloor_thatchroof", + "R": "t_dirtfloor_thatchroof", + "%": "t_wall_wood", + "(": "t_door_c", + ")": "t_door_makeshift_c", + "`": "t_floor", + "B": "t_floor", + "k": "t_floor", + "c": "t_floor", + "d": "t_floor", + "s": "t_floor" + }, + "furniture": { + "F": "f_forge_rock", + "R": "f_rack_wood", + "C": "f_crate_o", + "b": "f_straw_bed", + "B": "f_bed", + "d": "f_desk", + "c": "f_chair", + "k": "f_bookcase", + "s": "f_safe_l", + "t": "f_target", + "f": "f_firering", + "p": "f_cupboard", + "r": "f_rack_coat" + }, + "items": { + "s": { "item": "enchanted_rings_common", "chance": 100 }, + "k": { "item": "magic_shop_books", "chance": 100 }, + "B": { "item": "bed", "chance": 100, "repeat": [ 1, 2 ] }, + "C": { "item": "dry_goods", "chance": 100, "repeat": [ 1, 2 ] }, + "R": [ + { "item": "tools_earthworking", "chance": 25 }, + { "item": "tailoring_fabric", "chance": 55 }, + { "item": "home_hw", "chance": 40 }, + { "item": "tools_common", "chance": 40 }, + { "item": "kitchen_counters", "chance": 40 }, + { "item": "tinware", "chance": 40 }, + { "item": "supplies_hardware", "chance": 15 } + ], + "r": [ { "item": "goblin_slinger_drops", "chance": 50 }, { "item": "goblin_warrior_drops", "chance": 50 } ] + } + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/lake_retreat.json b/data/mods/Magical_Nights/worldgen/lake_retreat.json new file mode 100644 index 000000000000..f00ce6f52451 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/lake_retreat.json @@ -0,0 +1,487 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_ground", + "object": { + "fill_ter": "t_floor", + "rows": [ + "/%//////................", + "//.//.////..............", + "......9..//.......9.....", + "..9.......//....%...9...", + "..........//...%%.......", + "....9......//.....9..9..", + "...........//...........", + "..........|++|......9...", + "...9.....|| ||.........", + "........||a g||........", + ".......|| g||....9..", + "......||y X g||......", + "..9...|H X Ih k0.....9", + "......|t X I C0.9....", + "....9.||C g||......", + ".......||y g||.....9.", + "9...%...|| g||........", + ".........||< ||.....9...", + "...9......|00|..........", + ".......9.........9....9.", + "...........9............", + "......9...........%.....", + "..........9...9.....9...", + ".9......................" + ], + "terrain": { + " ": "t_floor", + ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub" ], + "%": [ [ "t_grass", 5 ], "t_dirt" ], + "/": "t_dirt", + "|": "t_rock_red", + "<": "t_wood_stairs_up", + ">": "t_wood_stairs_down", + "0": "t_window_domestic", + "+": "t_door_red_c", + "9": [ + "t_tree_blackjack", + [ "t_tree_walnut", 5 ], + [ "t_tree_chestnut", 5 ], + "t_tree_beech", + "t_tree_hazelnut", + "t_tree_cottonwood", + [ "t_tree", 5 ], + [ "t_tree_elm", 3 ], + "t_tree_dead", + "t_tree_apple", + "t_tree_pear", + "t_tree_cherry", + "t_tree_peach", + "t_tree_apricot", + "t_tree_plum", + "t_tree_mulberry", + "t_tree_elderberry", + [ "t_tree_pine", 5 ], + "t_tree_birch", + [ "t_tree_willow", 3 ], + "t_tree_maple", + "t_tree_hickory", + "t_tree_almond", + "t_tree_pecan" + ] + }, + "furniture": { + "%": [ [ "f_boulder_medium", 2 ], [ "f_boulder_small", 1 ], [ "f_boulder_large", 3 ] ], + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "h": "f_chair", + "X": "f_sofa", + "t": "f_table", + "7": "f_bench", + "C": "f_armchair", + "a": "f_rack_coat", + "g": "f_bookcase", + "k": "f_floor_lamp", + "I": "f_desk", + "H": "f_fireplace" + }, + "items": { + "g": [ + { "item": "homebooks", "chance": 20, "repeat": [ 2, 4 ] }, + { "item": "magic_shop_books", "chance": 30 }, + { "item": "novels", "chance": 20, "repeat": [ 2, 4 ] } + ], + "I": [ + { "item": "office", "chance": 30, "repeat": [ 2, 4 ] }, + { "item": "magic_shop_potions", "chance": 20, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_wands", "chance": 15 }, + { "item": "enchanted_small_items", "chance": 20 } + ], + "R": { "item": "trash", "chance": 25, "repeat": [ 1, 2 ] }, + "W": { "item": "stash_wood", "chance": 25, "repeat": [ 1, 2 ] }, + "t": { "item": "livingroom", "chance": 25, "repeat": [ 1, 2 ] }, + "a": [ + { "item": "jackets", "chance": 80, "repeat": [ 1, 2 ] }, + { "item": "bags", "chance": 60, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_clothes", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 20, "repeat": [ 1, 2 ] } + ] + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_z1", + "object": { + "fill_ter": "t_floor", + "rows": [ + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "..........|00|..........", + ".........||rr||.........", + "........||r r||........", + ".......|| y||.......", + "......||W c ||......", + "......0s cu hth 0......", + "......0m cu hth 0......", + "......||R c ||......", + ".......|| C||.......", + "........||y a||........", + ".........||><||.........", + "..........|00|..........", + "........................", + "........................", + "........................", + "........................", + "........................" + ], + "terrain": { + " ": "t_floor", + ".": "t_open_air", + "|": "t_rock_green", + "<": "t_wood_stairs_up", + ">": "t_wood_stairs_down", + "0": "t_window_domestic", + "+": "t_door_green_c" + }, + "furniture": { + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "h": "f_chair", + "t": "f_table", + "R": "f_trashcan", + "C": "f_armchair", + "a": "f_rack_coat", + "k": "f_floor_lamp", + "r": "f_rack_wood", + "s": "f_sink", + "u": "f_stool", + "W": "f_woodstove", + "c": "f_counter", + "m": "f_glass_fridge" + }, + "items": { + "c": [ + { "item": "dishes_utility", "chance": 30 }, + { "item": "condiments", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "SUS_knife_drawer", "chance": 20, "repeat": [ 1, 2 ] }, + { "item": "SUS_junk_drawer", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "SUS_cookware", "chance": 20 } + ], + "s": { "item": "oven", "chance": 20, "repeat": [ 2, 4 ] }, + "m": { "item": "fridge", "chance": 20, "repeat": [ 2, 4 ] }, + "R": { "item": "trash", "chance": 25, "repeat": [ 1, 2 ] }, + "W": { "item": "stash_wood", "chance": 25, "repeat": [ 1, 2 ] }, + "t": { "item": "condiments", "chance": 25, "repeat": [ 1, 2 ] }, + "a": { "item": "jackets", "chance": 25, "repeat": [ 1, 2 ] }, + "r": [ + { "item": "condiments", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "groce_ingredient", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "groce_bread", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "pantry_liquids", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "dry_goods", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "preserved_food", "chance": 30, "repeat": [ 1, 2 ] } + ] + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_z2", + "object": { + "fill_ter": "t_floor", + "rows": [ + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "..........|00|..........", + ".........||s&||.........", + "........||c ||........", + ".......||||+|+|||.......", + "......||fy | yg||......", + "......0I dd|I d0......", + "......0IC dd|Ih d0......", + "......||g | f||......", + ".......|||+||+|||.......", + "........|| ||........", + ".........||<>||.........", + "..........|00|..........", + "........................", + "........................", + "........................", + "........................", + "........................" + ], + "terrain": { + " ": "t_floor", + ".": "t_open_air", + "|": "t_rock_blue", + "<": "t_wood_stairs_up", + ">": "t_wood_stairs_down", + "0": "t_window_domestic", + "+": "t_door_green_c" + }, + "furniture": { + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "h": "f_chair", + "t": "f_table", + "C": "f_armchair", + "g": "f_bookcase", + "I": "f_desk", + "s": "f_sink", + "d": "f_bed", + "f": "f_wardrobe", + "c": "f_shower" + }, + "toilets": { "&": { } }, + "items": { + "g": [ + { "item": "homebooks", "chance": 50, "repeat": [ 2, 4 ] }, + { "item": "magic_shop_books", "chance": 20 }, + { "item": "novels", "chance": 80, "repeat": [ 2, 4 ] } + ], + "I": [ + { "item": "bedroom", "chance": 70, "repeat": [ 2, 4 ] }, + { "item": "magic_shop_potions", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_wands", "chance": 15 }, + { "item": "enchanted_small_items", "chance": 30, "repeat": [ 1, 2 ] } + ], + "d": { "item": "bed", "chance": 20, "repeat": [ 2, 4 ] }, + "s": { "item": "softdrugs", "chance": 20, "repeat": [ 2, 4 ] }, + "c": { "item": "shower", "chance": 25, "repeat": [ 1, 2 ] }, + "f": [ + { "item": "enchanted_worn_items", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 10 }, + { "item": "magic_shop_clothes", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "pants", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "shirts", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "bags", "chance": 30, "repeat": [ 1, 2 ] } + ] + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_z3", + "object": { + "fill_ter": "t_concrete", + "rows": [ + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "..........|00|..........", + ".........|| ||.........", + "........00 00........", + ".......00 MM 00.......", + "......|| MMMM ||......", + "......0h M$NM h0......", + "......0h MNNM h0......", + "......|| MMMM ||......", + ".......00 MM 00.......", + "........00 00........", + ".........||><||.........", + "..........|00|..........", + "........................", + "........................", + "........................", + "........................", + "........................" + ], + "terrain": { + " ": "t_concrete", + ".": "t_open_air", + "|": "t_rock_green", + ">": "t_wood_stairs_down", + "<": "t_wood_stairs_up", + "0": "t_laminated_glass", + "+": "t_door_green_c", + "M": "t_water_pool_shallow", + "N": [ "t_shrub_lilac", "t_shrub_hydrangea" ], + "$": [ "t_tree_apple", "t_tree_pear", "t_tree_cherry", "t_tree_peach", "t_tree_apricot", "t_tree_plum", "t_tree_willow" ] + }, + "furniture": { "h": "f_bench" }, + "items": { "h": [ { "item": "enchanted_small_items", "chance": 20 }, { "item": "magic_shop_books", "chance": 30 } ] }, + "place_npcs": [ { "class": "magus_old", "x": 10, "y": 12 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_z4", + "object": { + "fill_ter": "t_concrete", + "rows": [ + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "........................", + "..........||||..........", + ".........|| ||.........", + "........|| ||........", + ".......|| ||.......", + "......|| ||......", + "......| |......", + "......| |......", + "......|| ||......", + ".......|| ||.......", + "........|| ||........", + ".........|||>||.........", + "..........||||..........", + "........................", + "........................", + "........................", + "........................", + "........................" + ], + "terrain": { + " ": "t_glass_roof", + ".": "t_open_air", + "|": "t_rock_floor_no_roof", + ">": "t_wood_stairs_down", + "0": "t_laminated_glass" + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_boathouse", + "object": { + "fill_ter": "t_grass", + "rows": [ + "~~~~~~~--||||||||||...9.", + "~~~~~~--dddddd|b |.9...", + "~~~~~~~~~~~~~d|b r|...9.", + "~~~~~~~~~~~~~d w|9....", + "~~~~~~~~~~~~~d w|...9.", + "~~~~~~~~~~~~~d|b 0.....", + "~-dddddddddddd|b r|...9.", + "--.......|||||||+||.9...", + "--.............///......", + "..........9....///...9..", + ".....U.......9.//.9.....", + "...M.U........//....9...", + ".....U..9....//...9..9..", + "............//.9........", + "...........//......9...9", + "..9........////.........", + "...........//////...9...", + "................//.....9", + "......9.......9..//.....", + "..................////..", + "...............9..9//.9.", + "...9........9......////.", + "..........9.......9.9.//", + "//............9.......//" + ], + "place_vehicles": [ + { "vehicle": "kayak_racing", "x": 11, "y": 2, "rotation": 180, "chance": 30, "status": 0 }, + { "vehicle": "canoe", "x": 2, "y": 5, "rotation": 180, "chance": 40, "status": 0 } + ], + "place_loot": [ { "item": "rope_30", "x": 12, "y": 6, "chance": 100 }, { "item": "stepladder", "x": 17, "y": 1, "chance": 100 } ], + "terrain": { + " ": "t_floor", + "b": "t_floor", + "r": "t_floor", + "w": "t_floor", + "*": "t_wall_log_half", + "d": "t_dock", + "/": "t_dirt", + "M": "t_dirt", + "U": "t_dirt", + "~": "t_water_dp", + "-": "t_water_sh", + ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub", "t_fern" ], + "|": "t_wall_log", + "0": "t_window_domestic", + "+": "t_door_c", + "9": [ + "t_tree_blackjack", + [ "t_tree_walnut", 5 ], + [ "t_tree_chestnut", 5 ], + "t_tree_beech", + "t_tree_hazelnut", + "t_tree_cottonwood", + [ "t_tree", 5 ], + [ "t_tree_elm", 3 ], + "t_tree_dead", + "t_tree_apple", + "t_tree_pear", + "t_tree_cherry", + "t_tree_peach", + "t_tree_apricot", + "t_tree_plum", + "t_tree_mulberry", + "t_tree_elderberry", + [ "t_tree_pine", 5 ], + "t_tree_birch", + [ "t_tree_willow", 3 ], + "t_tree_maple", + "t_tree_hickory", + "t_tree_almond", + "t_tree_pecan" + ] + }, + "furniture": { "r": "f_rack", "b": "f_bench", "U": "f_bench", "t": "f_table", "M": "f_firering", "w": "f_workbench" }, + "items": { + "r": { "item": "fishing_items", "chance": 40, "repeat": [ 1, 2 ] }, + "b": { "item": "fishing_items", "chance": 20, "repeat": [ 1, 2 ] }, + "d": { "item": "fishing_items", "chance": 5, "repeat": [ 1, 2 ] }, + "w": { "item": "home_hw", "chance": 30, "repeat": [ 1, 2 ] }, + "M": { "item": "stash_wood", "chance": 100, "repeat": [ 6, 10 ] } + }, + "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 10, 22 ], "y": [ 15, 22 ], "density": 0.1 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "lake_retreat_boathouse_roof", + "object": { + "fill_ter": "t_tar_flat_roof", + "rows": [ + " .......... ", + " .......... ", + " .......... ", + " .......... ", + " .......... ", + " .......... ", + " .......... ", + " .......... ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { ".": "t_tar_flat_roof" } + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/magic_academy.json b/data/mods/Magical_Nights/worldgen/magic_academy.json new file mode 100644 index 000000000000..ef36e715bef2 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/magic_academy.json @@ -0,0 +1,533 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_ground", + "object": { + "fill_ter": "t_floor", + "rows": [ + ",.####################.,", + ",.#d h&o==jjjj==o%h d#.,", + ",.#@@ +========+ @@#.,", + ",.########=~~=########.,", + ",...#d h0o=~~=o$h d#...,", + ",...#@@ +====+ @@#...,", + ",...#######==#######...,", + ",[...##S +==+ S##..[.,", + ",.....#t ##++## t#.....,", + ",.....#9##< >##9#..[..,", + ",..[..###c c###.....,", + ",.....##c E E c##...[.,", + ",,,,,,* *,,,,,,", + ",,,,,,* HHHH *,,,,,,", + "......##c c##......", + "...[..###c rr c###......", + ".....##<## h ##<##..[..", + ".[...#B t##++##t B#.....", + "....##B S#==#S B##....", + "...####+###==###+####...", + "####xxy +======+ yxx####", + "#D ) Eoj=~~=joI ) D#", + "#@@#HHTR#j====j#IEHH#@@#", + "########################" + ], + "palettes": [ "standard_domestic_palette" ], + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ], + "terrain": { + "[": [ [ "t_region_tree_fruit", 2 ], [ "t_region_tree_nut", 2 ], "t_region_tree_shade" ], + " ": "t_floor", + "#": "t_rock_wall", + ",": "t_concrete", + "~": "t_water_pool_shallow_outdoors", + "=": "t_grass_golf", + "j": "t_grass_golf", + "}": "t_grass_golf" + }, + "furniture": { ")": "f_beaded_door", "&": "f_desk", "%": "f_desk", "$": "f_desk", "0": "f_desk" }, + "place_loot": [ + { "item": "television", "x": 4, "y": 20, "chance": 100 }, + { "item": "television", "x": 19, "y": 20, "chance": 100 }, + { "item": "stereo", "x": 18, "y": 20, "chance": 100 }, + { "item": "stereo", "x": 5, "y": 20, "chance": 100 } + ], + "items": { + "&": [ { "item": "classless_items", "chance": 50 }, { "item": "druid_items", "chance": 70 } ], + "%": [ { "item": "classless_items", "chance": 50 }, { "item": "biomancer_items", "chance": 70 } ], + "$": [ { "item": "classless_items", "chance": 50 }, { "item": "earthshaper_items", "chance": 70 } ], + "0": [ { "item": "classless_items", "chance": 50 }, { "item": "technomancer_items", "chance": 70 } ], + "x": { "item": "enchanted_small_items", "chance": 40 }, + "r": [ + { "item": "academy_lore", "chance": 100 }, + { "item": "enchanted_small_items", "chance": 20 }, + { "item": "enchanted_combat_items", "chance": 20 } + ], + "d": [ + { "item": "magic_shop_clothes", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 20 }, + { "item": "enchanted_small_items", "chance": 40 } + ], + "D": [ + { "item": "magic_shop_clothes", "chance": 60, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 20 }, + { "item": "enchanted_combat_items", "chance": 10 } + ], + "R": [ { "item": "magic_shop_books", "chance": 40, "repeat": [ 0, 2 ] }, { "item": "spellbook_loot_2", "chance": 10 } ], + "j": [ + { "item": "enchanted_small_items", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 2 }, + { "item": "enchanted_misc", "chance": 2 } + ] + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_basement", + "object": { + "fill_ter": "t_thconc_floor", + "rows": [ + "``####################``", + "``#@d|vRR H|FFF 666#``", + "``#@ ) lH| 6#``", + "``###||+|||||4 JA 6###``", + "````#H JWWQ|O J n#````", + "````#H Z|1 J 5#````", + "````##T Z|2 Y##````", + "`````##JJy Q|3 7##`````", + "``````#|||+|||+||#``````", + "``````#qq| < |U#``````", + "``````#q + +U#``````", + "``````#||||| ||#``````", + "``````# #``````", + "``````# $ $ ~~~ i#``````", + "``````# ~~~ i#``````", + "``````# ! ! ~~~ i#``````", + "`````## ~~~ ##`````", + "`````# % % ~~~ #`````", + "````## ~~~ ##````", + "```## = = = ~~~~~ ##```", + "####i ~~~~~ i####", + "#9 |i = = = ~~~~~ i| 9#", + "#9 ] ] 9#", + "########################" + ], + "palettes": [ "standard_domestic_palette" ], + "traps": { "=": "tr_rollmat" }, + "terrain": { " ": "t_thconc_floor", "`": "t_rock", "]": "t_door_glass_green_c", "#": "t_rock_blue", "~": "t_water_pool" }, + "furniture": { ")": "f_beaded_door", "}": "f_huge_mana_crystal", "!": "f_ergometer", "$": "f_treadmill", "%": "f_exercise" }, + "place_loot": [ { "item": "television", "x": 8, "y": 1, "chance": 100 }, { "item": "stereo", "x": 7, "y": 1, "chance": 100 } ], + "items": { + "q": [ + { "item": "alchemy_items", "chance": 45, "repeat": [ 1, 3 ] }, + { "item": "magic_shop_potions", "chance": 30, "repeat": [ 1, 2 ] } + ], + "l": { "item": "enchanted_small_items", "chance": 30 }, + "v": { "item": "boss_treasure_items", "chance": 40, "repeat": [ 1, 3 ] }, + "d": [ + { "item": "magic_shop_clothes", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 10 }, + { "item": "enchanted_small_items", "chance": 20 }, + { "item": "enchanted_combat_items", "chance": 20 } + ], + "R": [ { "item": "magic_shop_books", "chance": 30 }, { "item": "enchanted_misc", "chance": 2 } ], + "i": [ { "item": "enchanted_small_items", "chance": 20 }, { "item": "enchanted_combat_items", "chance": 30 } ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 2, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_2nd", + "object": { + "fill_ter": "t_floor", + "rows": [ + "__####################__", + "__#d h&o,______,o%h d#__", + "__#@@ +,,,__,,,+ @@#__", + "__########,__,########__", + "____#d h0o,__,o$h d#____", + "____#@@ +,,,,+ @@#____", + "____#######,,#######____", + "_____##S +,,+ S##_____", + "______#t ##++## t#______", + "______#9##> <##9#______", + "______### ###______", + "______## hhhh ##______", + "______)y ffff y)______", + "______)y hhhh y)______", + "______## ##______", + "______### ff ###______", + "_____##>## hh ##>##_____", + "_____#` v##))##vE`#_____", + "____##`E R#__#R `##____", + "___###)]))#__#))])###___", + "#####,,,===__===,,,#####", + "#k ],=}=______=}=,] k#", + "#RHH)====______====)HHR#", + "########################" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { + "_": "t_open_air", + "/": "t_open_air_rooved_outside", + ",": "t_concrete", + "#": "t_rock_wall", + ")": "t_wall_glass", + "]": "t_door_glass_c", + "=": "t_grass_golf", + "j": "t_grass_golf", + "}": "t_grass_golf" + }, + "furniture": { + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "`": "f_magic_bench", + "}": "f_huge_mana_crystal", + "&": "f_desk", + "%": "f_desk", + "$": "f_desk", + "0": "f_desk" + }, + "items": { + "&": [ { "item": "classless_items", "chance": 50 }, { "item": "kelvinist_items", "chance": 70 } ], + "%": [ { "item": "classless_items", "chance": 50 }, { "item": "animist_items", "chance": 70 } ], + "$": [ { "item": "classless_items", "chance": 50 }, { "item": "magus_items", "chance": 70 } ], + "0": [ { "item": "classless_items", "chance": 50 }, { "item": "stormshaper_items", "chance": 70 } ], + "H": [ + { "item": "magic_shop_clothes", "chance": 10 }, + { "item": "enchanted_small_items", "chance": 20 }, + { "item": "magic_shop_books", "chance": 20 } + ], + "`": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_tools_and_loot", "chance": 50 }, + { "item": "magic_shop_potions", "chance": 20 } + ], + "v": { "item": "boss_treasure_items", "chance": 40, "repeat": [ 0, 2 ] }, + "d": [ + { "item": "magic_shop_clothes", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 20 }, + { "item": "enchanted_small_items", "chance": 20 } + ], + "R": [ { "item": "classless_items", "chance": 40 }, { "item": "enchanted_misc", "chance": 2 } ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_3rd", + "object": { + "fill_ter": "t_floor", + "rows": [ + "__....................__", + "__......________......__", + "__......________......__", + "__........____........__", + "____......____......____", + "____......____......____", + "____.......__.......____", + "_____......__......_____", + "______...##))##...______", + "______..##< >##..______", + "______.##))]]))##.______", + "______##y ##______", + "______)i h h h h )______", + "______)i & & & & )______", + "______## ##______", + "______.##R && R##.______", + "_____...## E y##..._____", + "_____....##))##...._____", + "____......#__#......____", + "___........__........___", + ".....______________.....", + ".....______________.....", + ".....______________.....", + "........................" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { "_": "t_open_air", ")": "t_wall_glass", "#": "t_rock_wall", "]": "t_door_glass_c", ".": "t_shingle_flat_roof" }, + "furniture": { "&": "f_magic_bench" }, + "items": { + "&": [ { "item": "magic_tools_and_loot", "chance": 50, "repeat": [ 1, 2 ] }, { "item": "magic_shop_potions", "chance": 30 } ], + "R": [ + { "item": "magic_shop_books", "chance": 30 }, + { "item": "magic_recipe_basic", "prob": 50 }, + { "item": "magic_recipe_advanced", "prob": 15 } + ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_4th", + "object": { + "fill_ter": "t_floor", + "rows": [ + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "_________##))##_________", + "________##> <##________", + "_______##))]]))##_______", + "______##y ##______", + "______)i h h h h )______", + "______)i & & & & )______", + "______## ##______", + "_______##R && R##_______", + "________## E y##________", + "_________##))##_________", + "__________#__#__________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { "_": "t_open_air", ")": "t_wall_glass", "#": "t_rock_wall", "]": "t_door_glass_c" }, + "furniture": { "&": "f_magic_bench" }, + "items": { + "&": [ { "item": "magic_tools_and_loot", "chance": 50 }, { "item": "magic_shop_potions", "chance": 30 } ], + "R": [ + { "item": "magic_shop_books", "chance": 30 }, + { "item": "magic_recipe_basic", "prob": 50 }, + { "item": "magic_recipe_advanced", "prob": 15 } + ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_5th", + "object": { + "fill_ter": "t_floor", + "rows": [ + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "_________##))##_________", + "________##< >##________", + "_______##))]]))##_______", + "______##Tx y##______", + "______)Hl ee lH)______", + "______)Hl ee lH)______", + "______##y ee T##______", + "_______##y y##_______", + "________##k Es##________", + "_________##))##_________", + "__________#__#__________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { "_": "t_open_air", ")": "t_wall_glass", "#": "t_rock_wall", "]": "t_door_glass_c" }, + "place_loot": [ { "item": "television", "x": 9, "y": 11, "chance": 100 }, { "item": "stereo", "x": 13, "y": 16, "chance": 100 } ], + "items": { + "l": { "item": "enchanted_small_items", "chance": 10 }, + "H": [ + { "item": "magic_shop_clothes", "chance": 60 }, + { "item": "enchanted_worn_items", "chance": 20 }, + { "item": "enchanted_combat_items", "chance": 6 }, + { "item": "enchanted_small_items", "chance": 10 } + ], + "s": [ { "item": "enchanted_small_items", "chance": 20 }, { "item": "enchanted_combat_items", "chance": 2 } ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_6th", + "object": { + "fill_ter": "t_floor", + "rows": [ + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "_________##))##_________", + "________##> <##________", + "_______##))]]))##_______", + "______##R R##______", + "______)rh RRRR hr)______", + "______)rh RRRR hr)______", + "______##R R##______", + "_______##R hh R##_______", + "________##RrrR##________", + "_________##))##_________", + "__________#__#__________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { "_": "t_open_air", ")": "t_wall_glass", "#": "t_rock_wall", "]": "t_door_glass_c" }, + "items": { + "r": [ + { "item": "magic_shop_books", "chance": 20 }, + { "item": "magic_shop_wands", "chance": 20 }, + { "item": "enchanted_small_items", "chance": 10 }, + { "item": "enchanted_combat_items", "chance": 4 } + ], + "R": [ { "item": "magic_shop_books", "chance": 30 } ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_7th", + "object": { + "fill_ter": "t_floor", + "rows": [ + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "_________##))##_________", + "________##< >##________", + "_______##))]]))##_______", + "______##? ?##______", + "______) A= =A )______", + "______) A= =A )______", + "______##? - - ?##______", + "_______##? ?##_______", + "________##? ?##________", + "_________##))##_________", + "__________#__#__________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { "_": "t_open_air", ")": "t_wall_glass", "#": "t_rock_wall", "-": "t_floor", "]": "t_door_glass_c" }, + "furniture": { "=": "f_magic_bench", "-": "f_alembic", "?": "f_rack_wood" }, + "items": { + "=": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_potions", "chance": 30 }, + { "item": "magic_recipe_basic", "chance": 40 }, + { "item": "magic_shop_wands", "chance": 10 }, + { "item": "magic_recipe_basic", "prob": 25 } + ], + "?": [ { "item": "alchemy_items", "chance": 45 }, { "item": "magic_shop_potions", "chance": 30 } ] + }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_8th", + "object": { + "fill_ter": "t_floor", + "rows": [ + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "_________##))##_________", + "________##> <##________", + "_______## ##_______", + "______## ==== ##______", + "______)i ===-== i)______", + "______)i ==0=== i)______", + "______## ==== ##______", + "_______## ##_______", + "________## ii ##________", + "_________##))##_________", + "__________#__#__________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________" + ], + "palettes": [ "standard_domestic_palette" ], + "terrain": { + "_": "t_open_air", + ")": "t_wall_glass", + "#": "t_rock_wall", + "]": "t_door_glass_c", + "=": "t_grass_golf", + "0": "t_grass_golf", + "-": "t_grass_golf" + }, + "furniture": { "0": "f_orrery", "-": "f_magic_circle" }, + "place_monsters": [ { "monster": "GROUP_TOWER_GOLEM", "x": 12, "y": 12, "density": 0.01, "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_academy_roof", + "object": { + "fill_ter": "t_shingle_flat_roof", + "rows": [ + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________", + "_________ _________", + "________ > ________", + "_______ _______", + "______ ______", + "______ ______", + "______ ______", + "______ ______", + "_______ _______", + "________ ________", + "_________ _________", + "__________ __ __________", + "________________________", + "________________________", + "________________________", + "________________________", + "________________________" + ], + "terrain": { ">": "t_stairs_down", "_": "t_open_air" } + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/magic_basement.json b/data/mods/Magical_Nights/worldgen/magic_basement.json new file mode 100644 index 000000000000..51f943221a70 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/magic_basement.json @@ -0,0 +1,117 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "magic_basement" ], + "weight": 100, + "object": { + "fill_ter": "t_carpet_green", + "rows": [ + " ", + " ||||||||||||||| ", + " |gUU|yRRRRRRET| ", + " ||||||~~~%........E| ", + " ||????|||||........L| ", + " ||.......E!|...E....|| ", + " |&.........|.yrrr...<| ", + " ||...$...Py||||||/|||| ", + " ||TIII|||||RRR......| ", + " ||||||88S|.....H..x| ", + " |~~~/.....H..x| ", + " |B~~|.....s..x| ", + " |BYt|RRRR.....| ", + " ||||||||||||||| ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "standard_domestic_palette" ], + "place_traps": [ { "trap": "tr_magic_door", "x": 21, "y": 4 } ], + "place_item": [ { "item": "television", "x": 21, "y": 10 }, { "item": "wizard_photo", "x": 16, "y": 6 } ], + "place_loot": [ + { "item": "corpse", "x": 2, "y": 6, "chance": 100 }, + { "item": "translocate_spellbook", "x": 2, "y": 6, "chance": 100 }, + { "item": "robe", "x": 2, "y": 6, "chance": 100 }, + { "item": "candle", "x": 3, "y": 5, "chance": 100 }, + { "item": "candle", "x": 3, "y": 6, "chance": 100 }, + { "item": "candle", "x": 3, "y": 7, "chance": 100 } + ], + "terrain": { + "~": "t_thconc_floor", + "g": "t_thconc_floor", + "U": "t_thconc_floor", + "8": "t_thconc_floor", + "Y": "t_thconc_floor", + "B": "t_thconc_floor", + "S": "t_thconc_floor", + "_": "t_water_pool_shallow", + " ": "t_rock", + "/": "t_door_green_c", + ".": "t_carpet_green", + "-": "t_wall_w", + "|": "t_wall_metal", + "<": "t_wood_stairs_up", + "%": "t_secretdoor_metal_c" + }, + "furniture": { "&": "f_magiclysm_translocator_gate", "!": "f_rack_coat", "?": "f_bookcase", "=": "f_bookcase" }, + "items": { + "?": [ { "item": "magic_shop_books", "chance": 40 }, { "item": "magic_shop_potions", "chance": 60 } ], + "=": [ { "item": "novels", "chance": 30 }, { "item": "homebooks", "chance": 10 } ], + "~": [ { "item": "magic_shop_potions", "chance": 15, "repeat": [ 1, 2 ] } ], + "I": [ + { "item": "magic_shop_potions", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_wands", "chance": 15 }, + { "item": "enchanted_small_items", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "magic_CBM", "chance": 30, "repeat": [ 1, 2 ] } + ], + "!": [ + { "item": "enchanted_worn_items", "chance": 20, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 10 }, + { "item": "magic_shop_clothes", "chance": 30, "repeat": [ 1, 2 ] } + ] + }, + "vehicles": { "$": { "vehicle": "swivel_chair", "chance": 100, "status": 0 } }, + "place_nested": [ { "chunks": [ "magic_door_graffiti_snippet" ], "x": 12, "y": 6 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "magic_door_appear", + "method": "json", + "object": { + "place_terrain": [ { "ter": "t_carpet_green", "x": 12, "y": 6 } ], + "place_furniture": [ { "furn": "f_beaded_door", "x": 12, "y": 6 } ] + } + }, + { + "type": "trap", + "id": "tr_magic_door", + "name": "magic door", + "color": "brown", + "symbol": "+", + "visibility": 99, + "avoidance": 99, + "difficulty": 99, + "action": "map_regen", + "map_regen": "magic_door_appear", + "benign": true + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "magic_door_graffiti_snippet", + "object": { "mapgensize": [ 1, 1 ], "place_graffiti": [ { "snippet": "magic_door_graffiti", "x": 0, "y": 0 } ] } + }, + { + "type": "snippet", + "category": "magic_door_graffiti", + "text": [ "A circle of esoteric symbols etched into the metal wall, they draw your eye with their otherwordly shapes." ] + } +] diff --git a/data/mods/Magical_Nights/worldgen/magic_cabin.json b/data/mods/Magical_Nights/worldgen/magic_cabin.json new file mode 100644 index 000000000000..fccda2169aea --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/magic_cabin.json @@ -0,0 +1,167 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_cabin", + "object": { + "fill_ter": "t_floor", + "rows": [ + ".......spppppppppp9..9..", + "9.ppp..sp||o|o|o||......", + "..pbp.9sp| NNNNNx||o||.9", + "..ppp..ss+ |YDY|..", + "9.......||t ttG o..", + "....9..||||| B| h o..", + ".9....||@@B| B|III|4.", + "..|||||Y + B|||||..", + "..|Q + By| ||.", + "..o S||||||B Y hhho.", + "..|& + KKy|R G tGto.", + "%^||||| |B Y hhho.", + "%.UU|A| @@ + y||.", + "%...+Z|x@@D|y VVOVSF||%%", + "%.M.||||oo|||+||ooo||..%", + "%.......UU.p.s.p.......%", + "%............s..111111.%", + "%.........ssss9........%", + "%.........spbp..222222.%", + "%......ssssUUU.........%", + "%........9.....9333333.%", + "%..........9......9....%", + "%.....9.............9..%", + "%%%%%%%%%%%%%%%%%%%%%%%%" + ], + "place_nested": [ + { + "chunks": [ [ "roof_6x6_garden_3", 25 ], [ "roof_6x6_greenhouse_1", 25 ], [ "roof_5x5_coop", 25 ], [ "roof_6x6_garden_2", 25 ] ], + "x": 2, + "y": 16 + } + ], + "place_loot": [ { "item": "television", "x": 10, "y": 6, "chance": 100 }, { "item": "stepladder", "x": 21, "y": 15, "chance": 100 } ], + "terrain": { + ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ] ], + "p": "t_grass_long", + "M": "t_grass_long", + "b": "t_grass_long", + "U": "t_grass_long", + "|": "t_wall_log", + "z": "t_floor_blue", + "+": "t_door_locked", + "o": "t_window_domestic", + "%": "t_privacy_fence", + "4": "t_gutter_downspout", + "^": "t_privacy_fencegate_c", + "s": "t_dirt", + "1": "t_shrub_strawberry", + "2": "t_shrub_blackberry", + "3": "t_shrub_huckleberry", + "9": [ + "t_tree_blackjack", + "t_tree_walnut", + "t_tree_chestnut", + "t_tree_beech", + "t_tree_hazelnut", + "t_tree_cottonwood", + "t_tree", + "t_tree_elm", + "t_tree_dead", + "t_tree_apple", + "t_tree_pear", + "t_tree_cherry", + "t_tree_peach", + "t_tree_apricot", + "t_tree_plum", + "t_tree_mulberry", + "t_tree_elderberry", + "t_tree_pine", + "t_tree_birch", + "t_tree_willow", + "t_tree_maple", + "t_tree_hickory", + "t_tree_almond", + "t_tree_pecan" + ] + }, + "furniture": { + "p": [ "f_datura", "f_bluebell", "f_mutpoppy", "f_dahlia", "f_flower_tulip", "f_chamomile", "f_flower_spurge", "f_lily" ], + "b": "f_birdbath", + "B": "f_bookcase", + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "@": "f_bed", + "t": "f_table", + "Q": "f_shower", + "S": "f_sink", + "Y": "f_armchair", + "R": "f_fireplace", + "C": "f_counter", + "N": "f_sofa", + "D": "f_table", + "K": "f_wardrobe", + "x": "f_floor_lamp", + "G": "f_table", + "I": "f_desk", + "h": "f_chair", + "V": "f_counter", + "M": "f_rotary_clothesline", + "O": "f_oven", + "F": "f_fridge", + "U": "f_bench", + "A": "f_air_conditioner", + "Z": "f_water_heater" + }, + "toilets": { "&": { } }, + "items": { + "I": { "item": "office", "chance": 30 }, + "Q": { "item": "shower", "chance": 30 }, + "S": { "item": "softdrugs", "chance": 30 }, + "@": { "item": "bed", "chance": 20, "repeat": [ 1, 2 ] }, + "V": { "item": "kitchen_counters", "chance": 20, "repeat": [ 1, 2 ] }, + "t": { "item": "dishes_dining", "chance": 30 }, + "D": { "item": "magic_shop_wands", "chance": 30 }, + "F": { "item": "fridge", "chance": 20, "repeat": [ 1, 2 ] }, + "G": { "item": "magic_shop_potions", "chance": 30, "repeat": [ 1, 2 ] }, + "O": { "item": "oven", "chance": 20, "repeat": [ 1, 2 ] }, + "K": { "item": "allclothes", "chance": 20, "repeat": [ 1, 2 ] }, + "B": { "item": "magic_shop_books", "chance": 20, "repeat": [ 1, 2 ] } + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_cabin_roof", + "object": { + "fill_ter": "t_shingle_flat_roof", + "rows": [ + " ", + " |22222223 ", + " |.......32223 ", + " |...........3 ", + " ||...&.......3 ", + " ||............3 ", + " ||.............5 ", + " |222|..............3 ", + " |..................33 ", + " |=..................3 ", + " |.........Q.........3 ", + " |-|.................3 ", + " |................33 ", + " |...............33 ", + " |---------------3 ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { ".": "t_shingle_flat_roof" }, + "furniture": { "Q": "f_chimney" } + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/magic_shop.json b/data/mods/Magical_Nights/worldgen/magic_shop.json new file mode 100644 index 000000000000..657d5dbe76da --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/magic_shop.json @@ -0,0 +1,235 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_shop", + "object": { + "fill_ter": "t_floor", + "rows": [ + "........ss..............", + ".....9..ss..p9pMMp9p....", + "........ss..............", + "..9....pssp||||||o||||||", + ".......pssp|<|BBBxBBBBB|", + "....9..pssp|+|B*J**J* B|", + ".9....||++|| *W**J* B|", + ".....|| ****** |", + "....||K t t N|", + "...||K t t tttt K||", + "..|| K|.", + "..| HH HH HH ##+##+#|.", + "..o #& S#LL|.", + "..|y CCCC?CC H|||o|||||.", + "..o a H|zzzzzzz%.", + "..|yPPPyPP H|z......%.", + "..||######+###|z......%.", + ".9.||BYx y@@oz......%.", + "....||B h +z......%.", + ".....||f III yoz......%.", + "..9..4||||o||||z......%.", + "........%pppMMpz9..b..%.", + ".9..9...^zzzzzzz....9.%.", + "........%%%%%%%%%%%%%%%." + ], + "place_nested": [ { "chunks": [ [ "roof_6x6_garden_3", 50 ], [ "roof_6x6_garden_4", 50 ] ], "x": 16, "y": 15 } ], + "terrain": { + ".": [ [ "t_grass", 5 ], [ "t_grass_long", 2 ], "t_dirt", "t_shrub" ], + "p": "t_grass_long", + "M": "t_grass_long", + "b": "t_grass_long", + "U": "t_grass_long", + "R": "t_grass_long", + "|": "t_rock_wall", + "z": "t_floor_blue", + "#": "t_wall_b", + "+": "t_door_red_c", + "o": "t_window_domestic", + "J": "t_carpet_green", + "W": "t_carpet_green", + "*": "t_carpet_green", + "%": "t_privacy_fence", + "<": "t_stairs_up", + "4": "t_gutter_downspout", + "^": "t_privacy_fencegate_c", + "s": "t_sidewalk", + "?": "t_console_broken", + "9": [ + "t_tree_blackjack", + "t_tree_walnut", + "t_tree_chestnut", + "t_tree_beech", + "t_tree_hazelnut", + "t_tree_cottonwood", + "t_tree", + "t_tree_elm", + "t_tree_dead", + "t_tree_apple", + "t_tree_pear", + "t_tree_cherry", + "t_tree_peach", + "t_tree_apricot", + "t_tree_plum", + "t_tree_mulberry", + "t_tree_elderberry", + "t_tree_pine", + "t_tree_birch", + "t_tree_willow", + "t_tree_maple", + "t_tree_hickory", + "t_tree_almond", + "t_tree_pecan" + ] + }, + "furniture": { + "p": [ "f_datura", "f_bluebell", "f_mutpoppy", "f_dahlia", "f_flower_tulip", "f_chamomile", "f_flower_spurge", "f_lily" ], + "b": "f_birdbath", + "B": "f_bookcase", + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "f": "f_filing_cabinet", + "@": "f_sofa", + "Y": "f_armchair", + "x": "f_floor_lamp", + "N": "f_bigmirror", + "I": "f_desk", + "K": "f_wardrobe", + "M": "f_bench", + "L": "f_locker", + "h": "f_chair", + "J": "f_armchair", + "W": "f_table", + "C": "f_counter", + "a": "f_stool", + "t": "f_table", + "H": "f_displaycase", + "P": "f_glass_cabinet", + "S": "f_sink" + }, + "toilets": { "&": { } }, + "items": { + "I": { "item": "office", "chance": 30 }, + "f": { "item": "office_paper", "chance": 30 }, + "L": { "item": "cleaning", "chance": 30 }, + "y": { "item": "trash", "chance": 20, "repeat": [ 2, 4 ] }, + "B": { "item": "magic_shop_books", "chance": 20, "repeat": [ 1, 2 ] }, + "K": { "item": "magic_shop_clothes", "chance": 20, "repeat": [ 1, 2 ] }, + "H": { "item": "magic_shop_wands", "chance": 20, "repeat": [ 1, 2 ] }, + "P": { "item": "magic_shop_potions", "chance": 20, "repeat": [ 1, 2 ] }, + "t": { "item": "magic_shop_books", "chance": 20, "repeat": [ 1, 2 ] }, + "S": { "item": "softdrugs", "chance": 20, "repeat": [ 1, 2 ] } + } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_shop_2ndfloor", + "object": { + "fill_ter": "t_floor", + "rows": [ + " ", + " ", + " ", + " |o|##########", + " |>|4********#", + " |+||********#", + " ||oo||.y|********#", + " ||y.N.Y..|********#", + " ||B..N.t.R|********#", + " ||B...N.t.B|*******##", + " ||Y........xo*******# ", + " |y...hh.....+*******# ", + " oC..tttt....o*******# ", + " oC...hh....y|######## ", + " oC.........I| ", + " |CFCOCC...hI| ", + " ||%%%%%%+%%%| ", + " ||Q.S%....K| ", + " ||..+.@@..o ", + " ||&%.@@t.| ", + " |||ooo||| ", + " 4 ", + " ", + " " + ], + "terrain": { + ".": "t_floor", + " ": "t_open_air", + "*": "t_tile_flat_roof", + "o": "t_window_domestic", + "|": "t_rock_wall", + "%": "t_wall_b", + "+": "t_door_c", + ">": "t_stairs_down", + "#": "t_glass_railing", + "4": "t_gutter_downspout" + }, + "toilets": { "&": { } }, + "furniture": { + "@": "f_bed", + "t": "f_table", + "Q": "f_shower", + "S": "f_sink", + "B": "f_bookcase", + "Y": "f_armchair", + "R": "f_fireplace", + "C": "f_counter", + "N": "f_sofa", + "K": "f_wardrobe", + "x": "f_floor_lamp", + "I": "f_desk", + "h": "f_chair", + "O": "f_oven", + "F": "f_fridge", + "y": [ "f_indoor_plant_y", "f_indoor_plant" ] + }, + "items": { + "I": { "item": "office", "chance": 30 }, + "Q": { "item": "shower", "chance": 30 }, + "S": { "item": "softdrugs", "chance": 30 }, + "@": { "item": "bed", "chance": 20, "repeat": [ 1, 2 ] }, + "C": { "item": "kitchen_counters", "chance": 20, "repeat": [ 1, 2 ] }, + "t": { "item": "dishes_dining", "chance": 30 }, + "F": { "item": "fridge", "chance": 20, "repeat": [ 1, 2 ] }, + "O": { "item": "oven", "chance": 20, "repeat": [ 1, 2 ] }, + "K": { "item": "allclothes", "chance": 20, "repeat": [ 1, 2 ] }, + "B": { "item": "magic_shop_books", "chance": 20, "repeat": [ 1, 2 ] } + }, + "place_npcs": [ { "class": "healer_priest", "x": 10, "y": 10 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "magic_shop_roof", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " |23 ", + " |.3 ", + " |.53 ", + " |2222|..3 ", + " ||.......3 ", + " ||........3 ", + " ||.........3 ", + " ||..........3 ", + " |..A...:....3 ", + " |...........3 ", + " |...........3 ", + " |.......&...3 ", + " |...........3 ", + " ||..........3 ", + " ||...X.....3 ", + " ||........3 ", + " ||.......3 ", + " |5------3 ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ] + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/multitile_city_buildings.json b/data/mods/Magical_Nights/worldgen/multitile_city_buildings.json new file mode 100644 index 000000000000..8b3ed8364426 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/multitile_city_buildings.json @@ -0,0 +1,63 @@ +[ + { + "type": "city_building", + "id": "magic_shop", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "magic_shop_north" }, + { "point": [ 0, 0, 1 ], "overmap": "magic_shop_2ndfloor_north" }, + { "point": [ 0, 0, 2 ], "overmap": "magic_shop_roof_north" } + ] + }, + { + "type": "city_building", + "id": "wizard_tower_1", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "wizardtower1_ground_north" }, + { "point": [ 0, 0, 1 ], "overmap": "wizardtower1_living_north" }, + { "point": [ 0, 0, 2 ], "overmap": "wizardtower1_golems_north" }, + { "point": [ 0, 0, 3 ], "overmap": "wizardtower1_study_north" }, + { "point": [ 0, 0, 4 ], "overmap": "wizardtower1_roof_north" } + ] + }, + { + "type": "city_building", + "id": "wizard_tower_2", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "wizardtower2_ground_north" }, + { "point": [ 0, 0, 1 ], "overmap": "wizardtower2_stairs1_north" }, + { "point": [ 0, 0, 2 ], "overmap": "wizardtower2_stairs2_north" }, + { "point": [ 0, 0, 3 ], "overmap": "wizardtower2_study_north" }, + { "point": [ 0, 0, 4 ], "overmap": "wizardtower2_roof_north" } + ] + }, + { + "type": "city_building", + "id": "house_detatched5", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "house_detatched5_north" }, + { "point": [ 0, 0, 1 ], "overmap": "house_detatched5_roof_north" }, + { "point": [ 0, 0, -1 ], "overmap": "magic_basement_north" } + ] + }, + { + "type": "city_building", + "id": "magic_academy", + "locations": [ "land" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "magic_academy_ground_north" }, + { "point": [ 0, 0, 1 ], "overmap": "magic_academy_2nd_north" }, + { "point": [ 0, 0, 2 ], "overmap": "magic_academy_3rd_north" }, + { "point": [ 0, 0, 3 ], "overmap": "magic_academy_4th_north" }, + { "point": [ 0, 0, 4 ], "overmap": "magic_academy_5th_north" }, + { "point": [ 0, 0, 5 ], "overmap": "magic_academy_6th_north" }, + { "point": [ 0, 0, 6 ], "overmap": "magic_academy_7th_north" }, + { "point": [ 0, 0, 7 ], "overmap": "magic_academy_8th_north" }, + { "point": [ 0, 0, 8 ], "overmap": "magic_academy_roof_north" }, + { "point": [ 0, 0, -1 ], "overmap": "magic_academy_basement_north" } + ] + } +] diff --git a/data/mods/Magical_Nights/worldgen/nested_mapgen.json b/data/mods/Magical_Nights/worldgen/nested_mapgen.json new file mode 100644 index 000000000000..cc50d122b24c --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/nested_mapgen.json @@ -0,0 +1,270 @@ +[ + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "room_6x6_guns_N", + "weight": 1000, + "//": "a nested map for magiclysm basements. ID allows it to spawn wherever 6x6 gun basements spawn at the same weight.", + "object": { + "mapgensize": [ 6, 6 ], + "rotation": [ 0, 3 ], + "rows": [ + "|||+||", + "|RR ?|", + "|E &|", + "|T h |", + "|Y 0!|", + "||||||" + ], + "palettes": [ "standard_domestic_palette" ], + "furniture": { "0": "f_magic_bench", "!": "f_alembic", "&": "f_magic_circle", "?": "f_rack_wood" }, + "items": { + "E": { "item": "enchanted_small_items", "chance": 5 }, + "R": [ + { "item": "magic_shop_books", "chance": 40, "repeat": [ 0, 2 ] }, + { "item": "spellbook_loot_2", "chance": 2 }, + { "item": "academy_lore", "chance": 50 } + ], + "?": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_potions", "chance": 30 }, + { "item": "magic_tools_and_loot", "chance": 20 }, + { "item": "magic_shop_wands", "chance": 5 } + ], + "0": [ + { "item": "enchanted_small_items", "chance": 5, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 1 }, + { "item": "enchanted_misc", "chance": 1 }, + { "item": "classless_items", "chance": 30 } + ] + }, + "nested": { + "0": { + "chunks": [ + [ "druid_loot_spawn", 40 ], + [ "stormshaper_loot_spawn", 40 ], + [ "magus_loot_spawn", 40 ], + [ "animist_loot_spawn", 40 ], + [ "kelvinist_loot_spawn", 40 ], + [ "technomancer_loot_spawn", 40 ], + [ "earthshaper_loot_spawn", 40 ], + [ "biomancer_loot_spawn", 40 ] + ] + } + } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "room_6x6_guns_S", + "weight": 1000, + "//": "a nested map for magiclysm basements. ID allows it to spawn wherever 6x6 gun basements spawn at the same weight.", + "object": { + "mapgensize": [ 6, 6 ], + "rotation": [ 0, 3 ], + "rows": [ + "||||||", + "|yT0!|", + "|H h |", + "|H &|", + "|RR ?|", + "|||+||" + ], + "palettes": [ "standard_domestic_palette" ], + "furniture": { "0": "f_magic_bench", "!": "f_alembic", "&": "f_magic_circle", "?": "f_rack_wood" }, + "items": { + "H": { "item": "enchanted_small_items", "chance": 5 }, + "R": [ + { "item": "magic_shop_books", "chance": 40 }, + { "item": "spellbook_loot_2", "chance": 2 }, + { "item": "academy_lore", "chance": 50 } + ], + "?": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_potions", "chance": 30 }, + { "item": "magic_tools_and_loot", "chance": 20 }, + { "item": "magic_shop_wands", "chance": 5 } + ], + "0": [ + { "item": "enchanted_small_items", "chance": 5, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 1 }, + { "item": "enchanted_misc", "chance": 1 }, + { "item": "classless_items", "chance": 30 } + ] + }, + "nested": { + "0": { + "chunks": [ + [ "druid_loot_spawn", 40 ], + [ "stormshaper_loot_spawn", 40 ], + [ "magus_loot_spawn", 40 ], + [ "animist_loot_spawn", 40 ], + [ "kelvinist_loot_spawn", 40 ], + [ "technomancer_loot_spawn", 40 ], + [ "earthshaper_loot_spawn", 40 ], + [ "biomancer_loot_spawn", 40 ] + ] + } + } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "room_6x6_guns_E", + "weight": 1000, + "//": "a nested map for magiclysm basements. ID allows it to spawn wherever 6x6 gun basements spawn at the same weight.", + "object": { + "mapgensize": [ 6, 6 ], + "rotation": [ 0, 3 ], + "rows": [ + "||||||", + "|RR&?|", + "|E +", + "|T h |", + "|Yy0!|", + "||||||" + ], + "palettes": [ "standard_domestic_palette" ], + "furniture": { "0": "f_magic_bench", "!": "f_alembic", "&": "f_magic_circle", "?": "f_rack_wood" }, + "items": { + "E": { "item": "enchanted_small_items", "chance": 5 }, + "R": [ + { "item": "magic_shop_books", "chance": 40 }, + { "item": "spellbook_loot_2", "chance": 2 }, + { "item": "academy_lore", "chance": 50 } + ], + "?": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_potions", "chance": 30 }, + { "item": "magic_tools_and_loot", "chance": 20 }, + { "item": "magic_shop_wands", "chance": 5 } + ], + "0": [ + { "item": "enchanted_small_items", "chance": 5, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 1 }, + { "item": "enchanted_misc", "chance": 1 }, + { "item": "classless_items", "chance": 30 } + ] + }, + "nested": { + "0": { + "chunks": [ + [ "druid_loot_spawn", 40 ], + [ "stormshaper_loot_spawn", 40 ], + [ "magus_loot_spawn", 40 ], + [ "animist_loot_spawn", 40 ], + [ "kelvinist_loot_spawn", 40 ], + [ "technomancer_loot_spawn", 40 ], + [ "earthshaper_loot_spawn", 40 ], + [ "biomancer_loot_spawn", 40 ] + ] + } + } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "room_6x6_guns_W", + "weight": 1000, + "//": "a nested map for magiclysm basements. ID allows it to spawn wherever 6x6 gun basements spawn at the same weight.", + "object": { + "mapgensize": [ 6, 6 ], + "rotation": [ 0, 3 ], + "rows": [ + "||||||", + "|RRT?|", + "+ &|", + "| h0|", + "|HH !|", + "||||||" + ], + "palettes": [ "standard_domestic_palette" ], + "furniture": { "0": "f_magic_bench", "!": "f_alembic", "&": "f_magic_circle", "?": "f_rack_wood" }, + "items": { + "H": { "item": "enchanted_small_items", "chance": 5 }, + "R": [ + { "item": "magic_shop_books", "chance": 40 }, + { "item": "spellbook_loot_2", "chance": 2 }, + { "item": "academy_lore", "chance": 50 } + ], + "?": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_shop_potions", "chance": 30 }, + { "item": "magic_tools_and_loot", "chance": 20 }, + { "item": "magic_shop_wands", "chance": 5 } + ], + "0": [ + { "item": "enchanted_small_items", "chance": 5, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 1 }, + { "item": "enchanted_misc", "chance": 1 }, + { "item": "classless_items", "chance": 30 } + ] + }, + "nested": { + "0": { + "chunks": [ + [ "druid_loot_spawn", 40 ], + [ "stormshaper_loot_spawn", 40 ], + [ "magus_loot_spawn", 40 ], + [ "animist_loot_spawn", 40 ], + [ "kelvinist_loot_spawn", 40 ], + [ "technomancer_loot_spawn", 40 ], + [ "earthshaper_loot_spawn", 40 ], + [ "biomancer_loot_spawn", 40 ] + ] + } + } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "druid_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "druid_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "biomancer_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "biomancer_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "earthshaper_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "earthshaper_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "technomancer_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "technomancer_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "kelvinist_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "kelvinist_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "animist_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "animist_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "magus_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "magus_items", "x": 0, "y": 0, "chance": 70 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "stormshaper_loot_spawn", + "object": { "mapgensize": [ 1, 1 ], "place_loot": [ { "group": "stormshaper_items", "x": 0, "y": 0, "chance": 70 } ] } + } +] diff --git a/data/mods/Magical_Nights/worldgen/orc_camp.json b/data/mods/Magical_Nights/worldgen/orc_camp.json new file mode 100755 index 000000000000..f199b0b6a627 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/orc_camp.json @@ -0,0 +1,101 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "orc_camp", + "weight": 100, + "object": { + "fill_ter": "t_null", + "rows": [ + "###########HH###########", + "#**********************#", + "#*----............----*#", + "#*-QG-............-GQ-*#", + "#*-GG-............-GG-*#", + "#*--=-............-=--*#", + "#*.................*..*#", + "#*....................I#", + "#*%%.....------.......*#", + "#*%......-Bold-.......I#", + "#*.......WrrrrW.......*#", + "H*.......WrrrrW.......*H", + "H*.......-rrrr-.......*H", + "#*.......--++--.......*#", + "#**...................P#", + "#**...................*#", + "#*....................P#", + "#*....................*#", + "#*--=-...-=--=-*..-=--*#", + "#*-GG-...-GGGG-...-GG-*#", + "#*-QG-...-RSSR-...-GQ-*#", + "#*----...------...----*#", + "#**********************#", + "###########HH###########" + ], + "place_monster": [ + { "monster": "mon_orc_warrior", "x": [ 3, 20 ], "y": [ 6, 16 ], "repeat": 2 }, + { "monster": "mon_orc_archer", "x": [ 3, 20 ], "y": [ 6, 16 ], "repeat": 2 }, + { "monster": "mon_goblin_chieftain", "x": [ 10, 13 ], "y": [ 10, 12 ] } + ], + "items": { + "%": [ + { "item": "preserved_food", "chance": 75, "repeat": [ 2, 4 ] }, + { "item": "stash_food", "chance": 66, "repeat": [ 2, 4 ] } + ], + "B": { "item": "bed", "chance": 80 }, + "R": [ + { "item": "camping", "chance": 50, "repeat": [ 1, 3 ] }, + { "item": "gear_survival", "chance": 30, "repeat": [ 1, 3 ] }, + { "item": "tools_home", "chance": 50, "repeat": [ 1, 3 ] }, + { "item": "hand_tools", "chance": 50, "repeat": [ 1, 3 ] } + ], + "S": [ + { "item": "supplies_hardware", "chance": 66, "repeat": [ 2, 4 ] }, + { "item": "supplies_metal", "chance": 50, "repeat": [ 2, 4 ] }, + { "item": "tailoring_fabric", "chance": 33, "repeat": [ 2, 4 ] } + ], + "o": [ + { "item": "enchanted_rings_uncommon", "chance": 100 }, + { "item": "magic_tools_and_loot", "chance": 95, "repeat": [ 2, 3 ] } + ], + "d": [ { "item": "spell_scroll_tier_1", "chance": 66, "repeat": [ 2, 3 ] }, { "item": "spellbook_tier_1", "chance": 10 } ] + }, + "furniture": { + "%": "f_crate_o", + "Q": "f_makeshift_bed", + "I": "f_target", + "P": "f_punching_bag", + "B": "f_bed", + "R": [ "f_rack", "f_utility_shelf" ], + "S": "f_rack_wood", + "o": "f_safe_l", + "d": "f_desk", + "l": "f_stool", + "z": "f_brazier" + }, + "terrain": { + "+": [ [ "t_door_c", 3 ], "t_door_locked" ], + "#": "t_junk_wall", + "=": "t_door_c", + "-": "t_wall_log", + "%": "t_region_groundcover", + "*": [ [ "t_region_groundcover", 15 ], "t_region_shrub" ], + ".": [ [ "t_region_groundcover", 4 ], "t_region_groundcover_forest" ], + "G": "t_floor", + "H": "t_gate_metal_c", + "I": "t_region_groundcover", + "P": "t_region_groundcover", + "Q": "t_floor", + "R": "t_floor", + "S": "t_floor", + "W": "t_window", + "o": "t_rock_floor", + "r": "t_rock_floor", + "d": "t_rock_floor", + "~": [ [ "t_region_groundcover_barren", 3 ], "t_region_groundcover" ], + "B": "t_rock_floor", + "l": "t_rock_floor" + } + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/overmap_specials.json b/data/mods/Magical_Nights/worldgen/overmap_specials.json new file mode 100644 index 000000000000..10ce65f371ae --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/overmap_specials.json @@ -0,0 +1,194 @@ +[ + { + "type": "overmap_special", + "id": "magic_cabin", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "magic_cabin_north" }, + { "point": [ 0, 0, 1 ], "overmap": "magic_cabin_roof_north" } + ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 5 ], + "flags": [ "ELECTRIC_GRID" ] + }, + { + "type": "overmap_special", + "id": "demon_spider_lair", + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "demon_spider_lair_north" } ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 2 ] + }, + { + "type": "overmap_special", + "id": "black_dragon_lair", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "black_dragon_lair_z-0_NW_north" }, + { "point": [ 1, 0, 0 ], "overmap": "black_dragon_lair_z-0_NE_north" }, + { "point": [ 0, 1, 0 ], "overmap": "black_dragon_lair_z-0_SW_north" }, + { "point": [ 1, 1, 0 ], "overmap": "black_dragon_lair_z-0_SE_north" }, + { "point": [ 0, 0, -1 ], "overmap": "black_dragon_lair_z-1_NW_north" }, + { "point": [ 1, 0, -1 ], "overmap": "black_dragon_lair_z-1_NE_north" }, + { "point": [ 0, 1, -1 ], "overmap": "black_dragon_lair_z-1_SW_north" }, + { "point": [ 1, 1, -1 ], "overmap": "black_dragon_lair_z-1_SE_north" }, + { "point": [ 0, 0, -2 ], "overmap": "black_dragon_lair_z-2_NW_north" }, + { "point": [ 1, 0, -2 ], "overmap": "black_dragon_lair_z-2_NE_north" }, + { "point": [ 0, 1, -2 ], "overmap": "black_dragon_lair_z-2_SW_north" }, + { "point": [ 1, 1, -2 ], "overmap": "black_dragon_lair_z-2_SE_north" }, + { "point": [ 0, 0, -3 ], "overmap": "black_dragon_lair_z-3_NW_north" }, + { "point": [ 1, 0, -3 ], "overmap": "black_dragon_lair_z-3_NE_north" }, + { "point": [ 0, 1, -3 ], "overmap": "black_dragon_lair_z-3_SW_north" }, + { "point": [ 1, 1, -3 ], "overmap": "black_dragon_lair_z-3_SE_north" }, + { "point": [ 0, 0, -4 ], "overmap": "black_dragon_lair_z-4_NW_north" }, + { "point": [ 1, 0, -4 ], "overmap": "black_dragon_lair_z-4_NE_north" }, + { "point": [ 0, 1, -4 ], "overmap": "black_dragon_lair_z-4_SW_north" }, + { "point": [ 1, 1, -4 ], "overmap": "black_dragon_lair_z-4_SE_north" } + ], + "locations": [ "forest_with_swamp" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 1 ] + }, + { + "type": "overmap_special", + "id": "Lake Retreat", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 2, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 3, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 4, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 5, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 6, 0, 0 ], "overmap": "lake_surface" }, + { "point": [ 0, 1, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 1, 0 ], "overmap": "lake_surface" }, + { "point": [ 2, 1, 0 ], "overmap": "lake_shore" }, + { "point": [ 3, 1, 0 ], "overmap": "lake_shore" }, + { "point": [ 4, 1, 0 ], "overmap": "lake_shore" }, + { "point": [ 5, 1, 0 ], "overmap": "lake_shore" }, + { "point": [ 6, 1, 0 ], "overmap": "lake_surface" }, + { "point": [ 0, 2, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 2, 0 ], "overmap": "lake_shore" }, + { "point": [ 2, 2, 0 ], "overmap": "lake_retreat_boathouse_north" }, + { "point": [ 2, 2, 1 ], "overmap": "lake_retreat_boathouse_roof_north" }, + { "point": [ 3, 2, 0 ], "overmap": "forest_thick" }, + { "point": [ 4, 2, 0 ], "overmap": "forest_thick" }, + { "point": [ 5, 2, 0 ], "overmap": "lake_shore" }, + { "point": [ 6, 2, 0 ], "overmap": "lake_surface" }, + { "point": [ 0, 3, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 3, 0 ], "overmap": "lake_shore" }, + { "point": [ 2, 3, 0 ], "overmap": "forest" }, + { "point": [ 3, 3, 0 ], "overmap": "lake_retreat_ground_north" }, + { "point": [ 3, 3, 1 ], "overmap": "lake_retreat_z1_north" }, + { "point": [ 3, 3, 2 ], "overmap": "lake_retreat_z2_north" }, + { "point": [ 3, 3, 3 ], "overmap": "lake_retreat_z3_north" }, + { "point": [ 3, 3, 4 ], "overmap": "lake_retreat_z4_north" }, + { "point": [ 4, 3, 0 ], "overmap": "forest" }, + { "point": [ 5, 3, 0 ], "overmap": "lake_shore" }, + { "point": [ 6, 3, 0 ], "overmap": "lake_surface" }, + { "point": [ 0, 4, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 4, 0 ], "overmap": "lake_shore" }, + { "point": [ 2, 4, 0 ], "overmap": "forest_thick" }, + { "point": [ 3, 4, 0 ], "overmap": "forest_thick" }, + { "point": [ 4, 4, 0 ], "overmap": "lake_shore" }, + { "point": [ 5, 4, 0 ], "overmap": "lake_shore" }, + { "point": [ 6, 4, 0 ], "overmap": "lake_surface" }, + { "point": [ 0, 5, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 5, 0 ], "overmap": "lake_shore" }, + { "point": [ 2, 5, 0 ], "overmap": "lake_shore" }, + { "point": [ 3, 5, 0 ], "overmap": "lake_shore" }, + { "point": [ 4, 5, 0 ], "overmap": "lake_shore" }, + { "point": [ 5, 5, 0 ], "overmap": "lake_surface" }, + { "point": [ 6, 5, 0 ], "overmap": "lake_surface" }, + { "point": [ 0, 6, 0 ], "overmap": "lake_surface" }, + { "point": [ 1, 6, 0 ], "overmap": "lake_surface" }, + { "point": [ 2, 6, 0 ], "overmap": "lake_surface" }, + { "point": [ 3, 6, 0 ], "overmap": "lake_surface" }, + { "point": [ 4, 6, 0 ], "overmap": "lake_surface" }, + { "point": [ 5, 6, 0 ], "overmap": "lake_surface" }, + { "point": [ 6, 6, 0 ], "overmap": "lake_surface" } + ], + "locations": [ "lake_surface" ], + "city_distance": [ 3, -1 ], + "city_sizes": [ 4, 12 ], + "occurrences": [ 0, 1 ], + "flags": [ "CLASSIC", "LAKE" ] + }, + { + "type": "overmap_special", + "id": "goblin_camp", + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "goblin_camp_north" } ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 5 ] + }, + { + "type": "overmap_special", + "id": "forest_tomb", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "forest_tomb_north" }, + { "point": [ 0, 0, 1 ], "overmap": "forest_tomb_roof_north" }, + { "point": [ 0, 0, -1 ], "overmap": "forest_tomb_bottom_north" } + ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 1 ] + }, + { + "type": "overmap_special", + "id": "wizardtower1", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "wizardtower1_ground_north" }, + { "point": [ 0, 0, 1 ], "overmap": "wizardtower1_living_north" }, + { "point": [ 0, 0, 2 ], "overmap": "wizardtower1_golems_north" }, + { "point": [ 0, 0, 3 ], "overmap": "wizardtower1_study_north" }, + { "point": [ 0, 0, 4 ], "overmap": "wizardtower1_roof_north" } + ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 5 ], + "flags": [ "ELECTRIC_GRID" ] + }, + { + "type": "overmap_special", + "id": "wizardtower2", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "wizardtower2_ground_north" }, + { "point": [ 0, 0, 1 ], "overmap": "wizardtower2_stairs1_north" }, + { "point": [ 0, 0, 2 ], "overmap": "wizardtower2_stairs2_north" }, + { "point": [ 0, 0, 3 ], "overmap": "wizardtower2_study_north" }, + { "point": [ 0, 0, 4 ], "overmap": "wizardtower2_roof_north" } + ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 5 ], + "flags": [ "ELECTRIC_GRID" ] + }, + { + "type": "overmap_special", + "id": "forest_tomb", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "magic_academy_ground_north" }, + { "point": [ 0, 0, 1 ], "overmap": "magic_academy_2nd_north" }, + { "point": [ 0, 0, 2 ], "overmap": "magic_academy_3rd_north" }, + { "point": [ 0, 0, 3 ], "overmap": "magic_academy_4th_north" }, + { "point": [ 0, 0, 4 ], "overmap": "magic_academy_5th_north" }, + { "point": [ 0, 0, 5 ], "overmap": "magic_academy_6th_north" }, + { "point": [ 0, 0, 6 ], "overmap": "magic_academy_7th_north" }, + { "point": [ 0, 0, 7 ], "overmap": "magic_academy_8th_north" }, + { "point": [ 0, 0, 8 ], "overmap": "magic_academy_roof_north" }, + { "point": [ 0, 0, -1 ], "overmap": "magic_academy_basement_north" } + ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 1 ], + "flags": [ "ELECTRIC_GRID" ] + } +] diff --git a/data/mods/Magical_Nights/worldgen/overmap_terrain.json b/data/mods/Magical_Nights/worldgen/overmap_terrain.json new file mode 100644 index 000000000000..ff1fbc8c711a --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/overmap_terrain.json @@ -0,0 +1,473 @@ +[ + { + "type": "overmap_terrain", + "id": "magic_shop", + "name": "magic shop", + "sym": "M", + "color": "red", + "see_cost": 5, + "extras": "build", + "mondensity": 2, + "flags": [ "SIDEWALK" ] + }, + { + "type": "overmap_terrain", + "id": "magic_shop_2ndfloor", + "name": "magic shop", + "sym": "M", + "color": "red", + "see_cost": 5, + "extras": "build", + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "magic_shop_roof", + "name": "magic shop roof", + "sym": "M", + "color": "red", + "see_cost": 5, + "extras": "build", + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "magic_cabin", + "name": "cabin", + "sym": "F", + "color": "green", + "see_cost": 5, + "extras": "build", + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "magic_cabin_roof", + "name": "cabin", + "sym": "F", + "color": "green", + "see_cost": 5, + "extras": "build", + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "demon_spider_lair", + "name": "Demon Spider Nest", + "sym": "F", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "used_bookstore", + "name": "used bookstore", + "sym": "B", + "color": "white", + "see_cost": 5, + "extras": "build", + "mondensity": 1, + "flags": [ "SIDEWALK" ] + }, + { + "type": "overmap_terrain", + "id": "used_bookstore_roof", + "name": "used bookstore", + "sym": "B", + "color": "white", + "see_cost": 5, + "extras": "build", + "mondensity": 1 + }, + { + "type": "overmap_terrain", + "id": "magic_basement", + "copy-from": "generic_city_house_basement" + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_NW", + "name": "Black Dragon Lair", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_NE", + "name": "Black Dragon Lair", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_SE", + "name": "Black Dragon Lair", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_SW", + "name": "Black Dragon Lair", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_NW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_NE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_SE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_SW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_NW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_NE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_SE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_SW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_NW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_NE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_SE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_SW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_NW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_NE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_SE", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_SW", + "name": "Black Dragon Lair", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_ground", + "name": "Lake Retreat", + "sym": "F", + "color": "green", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z1", + "name": "Lake Retreat", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z2", + "name": "Lake Retreat", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z3", + "name": "Lake Retreat", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z4", + "name": "Lake Retreat", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_boathouse", + "name": "Lake Retreat Boathouse", + "sym": "#", + "color": "light_blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_boathouse_roof", + "name": "Lake Retreat Boathouse", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "wizardtower1_ground", + "copy-from": "generic_city_building", + "sym": "W", + "color": "light_blue", + "name": "wizard tower" + }, + { + "type": "overmap_terrain", + "id": "wizardtower1_living", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower1_golems", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower1_study", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower1_roof", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower2_ground", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower2_stairs1", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower2_stairs2", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower2_study", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "wizardtower2_roof", + "copy-from": "wizardtower1_ground" + }, + { + "type": "overmap_terrain", + "id": "forest_tomb", + "name": "Forest Tomb", + "sym": "F", + "color": "brown", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "forest_tomb_roof", + "copy-from": "forest_tomb" + }, + { + "type": "overmap_terrain", + "id": "forest_tomb_bottom", + "copy-from": "forest_tomb" + }, + { + "type": "overmap_terrain", + "id": "magic_academy_ground", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "see_cost": 5, + "mondensity": 2, + "flags": [ "SIDEWALK" ] + }, + { + "type": "overmap_terrain", + "id": "magic_academy_2nd", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_3rd", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_4th", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_5th", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_6th", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_7th", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_8th", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_basement", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "mondensity": 2, + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "magic_academy_roof", + "name": "magic academy", + "sym": "#", + "color": "light_blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "goblin_camp", + "name": "Goblin Camp", + "sym": "G", + "color": "green", + "see_cost": 5, + "extras": "build", + "mondensity": 2 + } +] diff --git a/data/mods/Magical_Nights/worldgen/regional_overlay.json b/data/mods/Magical_Nights/worldgen/regional_overlay.json new file mode 100644 index 000000000000..09669a10eeb7 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/regional_overlay.json @@ -0,0 +1,10 @@ +[ + { + "type": "region_overlay", + "regions": [ "all" ], + "city": { + "shops": {"used_bookstore": 225} + }, + "field_coverage": { "other": { "f_boulder_large": 0.98, "f_glow_boulder": 0.02 } } + } +] diff --git a/data/mods/Magical_Nights/worldgen/used_bookstore.json b/data/mods/Magical_Nights/worldgen/used_bookstore.json new file mode 100644 index 000000000000..f04a7e33bc44 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/used_bookstore.json @@ -0,0 +1,95 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "used_bookstore", + "object": { + "rows": [ + ",.................******", + ",#WWW#+###WWW##W##******", + ",W cC N cc NN N#******", + ",W cC N TT NN N#******", + ",W CCC N cc NN N#******", + ",# N#******", + ",#N NNN NNN N#******", + ",#NNN NNNN N N#******", + ",#NNN NN$$$$D$#W##******", + ",W $M $#d********", + ",W NNN$MO $#d********", + ",#N ###$MMMM$#d********", + ",#N +s&$$$$$$#*********", + ",##############********,", + ",**********************,", + ",**********************,", + ",**********************,", + ",**********************,", + ",**********************,", + ",**********************,", + ",**********************,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,,", + ",,,,,,,,,,,,,,,,,,,,,,,," + ], + "place_vehicles": [ { "vehicle": "car", "x": 4, "y": 17, "chance": 100, "fuel": 20, "status": 33, "rotation": 180 } ], + "fill_ter": "t_carpet_yellow", + "terrain": { + ".": "t_sidewalk", + "W": "t_window_domestic", + "+": "t_door_white_c", + "$": "t_rock_wall", + "#": "t_wall_w", + "D": "t_door_metal_c", + "*": "t_pavement", + ",": [ "t_dirt", [ "t_grass", 4 ] ] + }, + "furniture": { + "c": "f_chair", + "N": "f_bookcase", + "M": "f_bookcase", + "T": "f_table", + "s": "f_sink", + "O": "f_magic_circle", + "d": "f_dumpster", + "C": "f_counter" + }, + "monster": { "O": { "monster": "mon_krabgek", "chance": 100 }, "z": { "monster": "mon_krabgek", "chance": 33 } }, + "toilets": { "&": { } }, + "items": { "M": { "item": "spellbook_loot_1", "chance": 60 }, "N": { "item": "novels", "chance": 60, "repeat": [ 1, 3 ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "used_bookstore_roof", + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " |2222222 ", + " |......5#2223 ", + " |....&......3 ", + " |...........3 ", + " |...........3 ", + " |...........52223 ", + " |...............3 ", + " |...............3 ", + " |......A........3 ", + " |...............3 ", + " |...............3 ", + " |...............3 ", + " 52222222222222225 ", + " " + ], + "palettes": [ "roof_palette" ] + } + } +] diff --git a/data/mods/Magical_Nights/worldgen/wizard-towers.json b/data/mods/Magical_Nights/worldgen/wizard-towers.json new file mode 100644 index 000000000000..fb35cda16f02 --- /dev/null +++ b/data/mods/Magical_Nights/worldgen/wizard-towers.json @@ -0,0 +1,189 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "wizardtower1_ground", "wizardtower1_living", "wizardtower1_golems", "wizardtower1_study", "wizardtower1_roof" ] ], + "weight": 100, + "object": { + "fill_ter": "t_floor", + "rows": [ + "!!!!!!!!!!!!!!!!!!!#####...................;;;;;........................................................................", + "!,,,,,,,,,,,,,,,,,,[[[[#...................;;;;;........................................................................", + "!,^,,,,,,######,,,,[[[[#.........#wwww#....;;;;;.........!!!!!!.........................................................", + "!,,,,,,###EBB|###,,[[[,!.......###EBBE###..............!!!!!!!!!!.......................................................", + "!,,,,#w#aa BB|BB#w#[[[,!.....###aa BB dd###..........!!!!!!!!!!!!!!.....................................................", + "!,,,##Ad | ##[[,!....##bb Adb##........!!!!!!!!!!!!!!!!....................................................", + "!,,,w bbb|aEb #[[,!....#b b#........!!!!!###ww#!!!!!.............#wwww#..................!!!!!!.........", + "!,,##||||+||||||||+##[,!...##||||||HH ||+||##......!!!!!##|V ##!!!!!...........##mm ##................!!!!!!!!........", + "!,,#< =[,!...#> <|||+|a uuw......!!!!##>|V 8##!!!!..........##mh F##..............!!!!!!!!!!.......", + "!,##< hTTh hhh##!!..##> | uu##....!!!!## |V 08##!!!!........## y c c##............!!!!!!!!!!!!......", + "!##|||+| hTTh 123cw,,.;w||||| |& ||#....!!!!#U |V mw!!!!........w 9cL w............!!!!!!!!!!!!......", + ",#WD|& | hTTh ow,,.;wH A|A ## |CsC +t#....!!!!#U |## hmw!!!!........w 9##cc w............!!!!!!!!!!!!......", + ",# + | hTTh 5w,,.;wH b||| ##+||||+||#....!!!!##M#### mw!!!!........wd 9## w............!!!!!!!!!!!!......", + ",#fx|st| 4w,,.;wH + |u t| U#....!!!!#0 # mw!!!!........wdA 99 w............!!!!!!!!!!!!......", + ",######## &F##,,.;##H A| |u | U##....!!!!##0 # 0##!!!!........## O ##............!!!!!!!!!!!!......", + ",]UUU& + |67| ||#,,,.;;#HHHbb| |u CsC|cc#......!!!!##0 # <##!!!!..........## >##..............!!!!!!!!!!.......", + ",] # |||| #,,,.;;##|||||+||+|||||##......!!!!!##0 M ##!!!!!...........## $ ##................!!!!!!!!........", + ",] # ||HHHH w,,,.;;;#E + Adw;.......!!!!!######!!!!!.............#wwww#..................!!!!!!.........", + ",] # + #,,,.;;;##E|b d##;.......!!!!!!!!!!!!!!!!....................................................", + ",] ##|+|b b#,,,.;;;;###b BB #w#;;........!!!!!!!!!!!!!!.....................................................", + ",] # |H bw,,,.;;;;;;###EBBE###;;;;..........!!!!!!!!!!.......................................................", + ",] -# |H r#,,,.;;;;;;;;#wwww#;;;;;;............!!!!!!.........................................................", + ",]MMMMMM]# Y|H A##,,,........;;;;;;;;;;;;;...........................................................................", + ",*______-#=##ww#ww##,,,,.........;;;;;;;;;;;............................................................................" + ], + "palettes": [ "wizardtower1_palette" ], + "terrain": { ",": [ [ "t_region_groundcover_forest", 5 ], "t_region_shrub", "t_region_tree" ] } + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "wizardtower2_ground", "wizardtower2_stairs1", "wizardtower2_stairs2", "wizardtower2_study", "wizardtower2_roof" ] ], + "weight": 100, + "object": { + "fill_ter": "t_floor", + "rows": [ + ",,,,,,,,,,,,,,,[[,,,,,,,................................................................................................", + ",,,,,,,,,,,,,,^[[,,,,,,,................................................................................................", + ",,,,,,,[[[[[[[[[[,,,,,,,................................................................................................", + ",,,,,,,[[[[[[[[[[,,,,,,,................................................................................................", + ",,,,,*#==#w#w#w#w#,,,,,,......!!!!!!!!!!!!..............................................................................", + ",,,,*## ##,,,,,.....!!!!!!!!!!!!!!....................................::::::::::..............!!!!!!!!!!.......", + ",,,,## bHHHHb ##,,,,....!!!!!!!!!!!!!!!!..................................:: ::............!!!!!!!!!!!!......", + ",,,,w ###### w,,,,....!!!!!##ww##!!!!!.............##ww##..............:: ##ww## ::..........!!!!!!!!!!!!!!.....", + ",,,,w ## ## w,,,,....!!!!## ##!!!!............## << ##.............: ##0>>0## :..........!!!!!!!!!!!!!!.....", + ",,,,#++## ##+##,,,,....!!!## 0##!!!...........##0 ##............: ##9 9## :..........!!!!!!!!!!!!!!.....", + ",,,,# # # s#,,,,....!!!# #!!!...........# #............: #9 9# :..........!!!!!!!!!!!!!!.....", + ",,,,w + << # t#,,,,....!!!w >> w!!!...........w ## w............: + cc + :..........!!!!!!!!!!!!!!.....", + ",,,,w + ## # &#,,,,....!!!w ## w!!!...........w ## w............: + cL + :..........!!!!!!!!!!!!!!.....", + ",,,,# # # ~#,,,,....!!!# #!!!...........# #............: #y y# :..........!!!!!!!!!!!!!!.....", + ",,,,##### ##+##,,,,....!!!##0 ##!!!...........## 0##............: ##9 h 9## :..........!!!!!!!!!!!!!!.....", + ",,,,#BBE## ## w,,,,....!!!!## << ##!!!!............## >> ##.............: ##mmmm## :..........!!!!!!!!!!!!!!.....", + ",,,,wBB #+#+## hw,,,,....!!!!!##ww##!!!!!.............##ww##..............:: ##ww## ::..........!!!!!!!!!!!!!!.....", + ",,,,## h # b##,,,,....!!!!!!!!!!!!!!!!..................................:: ::............!!!!!!!!!!!!......", + ",,,,*##dd #BBEBB##*,,,,.....!!!!!!!!!!!!!!....................................::::::::::..............!!!!!!!!!!.......", + ",,,,,*#ww###ww#ww#*,,,,,......!!!!!!!!!!!!..............................................................................", + ",,,,,,,,,,,,,,,,,,,,,,,,................................................................................................", + ",,,,,,,,,,,,,,,,,,,,,,,,................................................................................................", + ",,,,,,,,,,,,,,,,,,,,,,,,................................................................................................", + ",,,,,,,,,,,,,,,,,,,,,,,,................................................................................................" + ], + "palettes": [ "wizardtower1_palette" ], + "terrain": { ",": [ [ "t_region_groundcover_forest", 5 ], "t_region_shrub", "t_region_tree" ] } + } + }, + { + "type": "palette", + "id": "wizardtower1_palette", + "terrain": { + ".": "t_open_air", + "*": "t_region_shrub_decorative", + "_": "t_pavement", + ";": "t_tile_flat_roof", + "^": "t_region_tree_fruit", + "[": "t_sidewalk", + "!": "t_privacy_fence", + "#": "t_rock_wall", + "|": "t_wall_w", + ":": "t_railing", + "M": "t_door_metal_locked", + "+": "t_door_c", + "=": "t_door_locked", + "w": "t_window_domestic", + ">": "t_stairs_down", + "<": "t_stairs_up", + "-": "t_gates_mech_control", + "]": "t_concrete_wall" + }, + "furniture": { + "&": "f_trashcan", + "a": "f_wardrobe", + "A": "f_armchair", + "b": "f_bookcase", + "B": "f_bed", + "c": "f_cupboard", + "C": "f_counter", + "d": "f_desk", + "D": "f_dryer", + "e": "f_water_heater", + "E": "f_dresser", + "f": "f_home_furnace", + "F": "f_fridge", + "h": "f_chair", + "H": "f_sofa", + "i": "f_filing_cabinet", + "I": "f_dishwasher", + "L": "f_alembic", + "m": "f_magic_bench", + "o": "f_oven", + "O": "f_orrery", + "r": "f_rack", + "R": "f_rack", + "s": "f_sink", + "t": "f_toilet", + "T": "f_table", + "u": "f_bathtub", + "U": "f_utility_shelf", + "V": "f_utility_shelf", + "~": "f_shower", + "W": "f_washer", + "x": "f_water_heater", + "y": "f_huge_mana_crystal", + "Y": "f_rack_coat", + "1": "f_cupboard", + "2": "f_cupboard", + "3": "f_cupboard", + "4": "f_cupboard", + "5": "f_sink", + "6": "f_cupboard", + "7": "f_cupboard", + "8": "f_bookcase", + "9": "f_bookcase" + }, + "items": { + "&": { "item": "trash", "chance": 50, "repeat": [ 1, 2 ] }, + "a": [ + { "item": "dresser", "chance": 50, "repeat": [ 1, 8 ] }, + { "item": "allclothes", "chance": 10, "repeat": [ 1, 3 ] }, + { "item": "enchanted_misc", "chance": 25 } + ], + "b": [ { "item": "novels", "chance": 50, "repeat": [ 1, 15 ] }, { "item": "homebooks", "chance": 25, "repeat": [ 1, 5 ] } ], + "B": { "item": "bed", "chance": 20 }, + "c": { "item": "kitchen_counters", "chance": 5, "repeat": [ 1, 3 ] }, + "C": { "item": "snacks", "chance": 10, "repeat": [ 1, 2 ] }, + "d": { "item": "SUS_office_desk", "chance": 25 }, + "D": { "item": "snacks", "chance": 10, "repeat": [ 1, 2 ] }, + "E": { "item": "dresser", "chance": 50, "repeat": [ 1, 5 ] }, + "f": [ { "item": "SUS_fridge", "chance": 95 }, { "item": "potions_common", "chance": 25, "repeat": [ 1, 3 ] } ], + "i": [ { "item": "SUS_office_filing_cabinet", "chance": 30 }, { "item": "office", "chance": 50, "repeat": [ 1, 4 ] } ], + "I": { "item": "SUS_dishwasher", "chance": 50 }, + "m": { "item": "magic_tools_and_loot", "chance": 60 }, + "o": { "item": "SUS_oven", "chance": 70 }, + "r": { "item": "a_television", "chance": 100 }, + "R": { "item": "shoes", "chance": 20, "repeat": [ 1, 4 ] }, + "U": [ { "item": "tools_common", "chance": 40, "repeat": [ 1, 3 ] }, { "item": "mischw", "chance": 10 } ], + "V": [ + { "item": "tools_general", "chance": 60, "repeat": [ 1, 3 ] }, + { "item": "mischw", "chance": 10 }, + { "item": "magic_tools_and_loot", "chance": 20 } + ], + "Y": [ { "item": "coat_rack", "chance": 70 }, { "item": "magic_shop_clothes", "chance": 60 } ], + "1": [ { "item": "SUS_dishes", "chance": 100 }, { "item": "SUS_silverware", "chance": 100 } ], + "2": [ { "item": "SUS_cookware", "chance": 100 }, { "item": "SUS_spice_collection", "chance": 50 } ], + "3": [ { "item": "SUS_utensils", "chance": 100 }, { "item": "SUS_knife_drawer", "chance": 100 } ], + "4": [ { "item": "SUS_junk_drawer", "chance": 100 }, { "item": "SUS_appliances_cupboard", "chance": 100 } ], + "5": { "item": "SUS_kitchen_sink", "chance": 100 }, + "6": { "item": "SUS_pantry", "chance": 100 }, + "7": [ { "item": "SUS_breakfast_cupboard", "chance": 50 }, { "item": "SUS_coffee_cupboard", "chance": 50 } ], + "8": [ { "item": "homebooks", "chance": 45, "repeat": [ 1, 5 ] }, { "item": "spellbook_loot_1", "chance": 20 } ], + "9": [ + { "item": "homebooks", "chance": 45, "repeat": [ 1, 5 ] }, + { "item": "spellbook_loot_1", "chance": 40 }, + { "item": "spellbook_loot_2", "chance": 15 } + ] + }, + "monsters": { "0": { "monster": "GROUP_TOWER_GOLEM" } }, + "monster": { "$": { "monster": "mon_resingolem_half", "chance": 100 } } + } +] From fd8bc3d7ad1043042ea137d0b4e6fcb443521a51 Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:46:21 -0500 Subject: [PATCH 02/11] Obsolete Magiclysm --- data/mods/Magiclysm/modinfo.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/mods/Magiclysm/modinfo.json b/data/mods/Magiclysm/modinfo.json index 003da373fe5e..78aef8e3d81c 100644 --- a/data/mods/Magiclysm/modinfo.json +++ b/data/mods/Magiclysm/modinfo.json @@ -5,6 +5,7 @@ "name": "Magiclysm", "authors": [ "KorGgenT", "Aptronym", "LaVeyanFiend" ], "maintainers": [ ], + "obsolete": true, "description": "Cataclysm but with magic spells, BN Edition!", "category": "content", "dependencies": [ "bn" ] From 60405795bc5727335702d4f09de49252486b179a Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:48:26 -0500 Subject: [PATCH 03/11] Add Magical Nights' license hopefully this isn't too controversial --- LICENSE.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LICENSE.txt b/LICENSE.txt index 9de6bc08f88b..de291c6db5f2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,5 +1,7 @@ Cataclysm is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. +The mod Magical Nights is licensed under the Creative Commons Attribution-ShareAlike 4.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. + Documentation site (doc/*, excluding doc/src/content/docs/*) is licensed under the AGPL 3.0-only license, see doc/LICENSE for text of license. Scripts (scripts/*) are licensed under the AGPL 3.0-only license, see doc/LICENSE for text of license. From abbf58d80e3bb9a4df0481bd80121402d44cdeae Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:55:26 -0500 Subject: [PATCH 04/11] Semantics --- .github/semantic.yml | 2 +- doc/src/assets/semantic.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/semantic.yml b/.github/semantic.yml index e50f0e805370..1d52779715fe 100644 --- a/.github/semantic.yml +++ b/.github/semantic.yml @@ -62,7 +62,7 @@ scopes: - mods/generic_guns - mods/innawoods - mods/limit_fungal_growth - - mods/magiclysm + - mods/Magical_Nights - mods/manualbionicinstall - mods/modular_turrets - mods/more_classes_scenarios diff --git a/doc/src/assets/semantic.json b/doc/src/assets/semantic.json index 43969c00904f..02d44959fe46 100644 --- a/doc/src/assets/semantic.json +++ b/doc/src/assets/semantic.json @@ -56,7 +56,7 @@ "mods/generic_guns", "mods/innawoods", "mods/limit_fungal_growth", - "mods/magiclysm", + "mods/Magical_Nights", "mods/manualbionicinstall", "mods/modular_turrets", "mods/more_classes_scenarios", From 3bad56607955a033f64b97bfc39ceb9dfa1e70bf Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 11:58:18 -0500 Subject: [PATCH 05/11] Fix more bits of docs --- doc/src/content/docs/en/contribute/changelog_guidelines.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/content/docs/en/contribute/changelog_guidelines.mdx b/doc/src/content/docs/en/contribute/changelog_guidelines.mdx index 484a7bd25cbf..f276b2e496e6 100644 --- a/doc/src/content/docs/en/contribute/changelog_guidelines.mdx +++ b/doc/src/content/docs/en/contribute/changelog_guidelines.mdx @@ -137,7 +137,7 @@ fix(UI, i18n): recipe names not translated unless learned Example PR title: ``` -feat(mods/magiclysm, content): add missing owlbear pelts recipe +feat(mods/Magical_Nights, content): add missing owlbear pelts recipe fix(mods/no_hope): No Hope doesn't make the world freezing ``` From 512758f208a7454a9793345cb84c56bffeb8e631 Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:06:37 -0500 Subject: [PATCH 06/11] Put magiclysm back in semantics We actually do keep obsolete mods in the semantics, who knew --- .github/semantic.yml | 1 + doc/src/assets/semantic.json | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/semantic.yml b/.github/semantic.yml index 1d52779715fe..6459711854f5 100644 --- a/.github/semantic.yml +++ b/.github/semantic.yml @@ -62,6 +62,7 @@ scopes: - mods/generic_guns - mods/innawoods - mods/limit_fungal_growth + - mods/magiclysm - mods/Magical_Nights - mods/manualbionicinstall - mods/modular_turrets diff --git a/doc/src/assets/semantic.json b/doc/src/assets/semantic.json index 02d44959fe46..993050369888 100644 --- a/doc/src/assets/semantic.json +++ b/doc/src/assets/semantic.json @@ -56,6 +56,7 @@ "mods/generic_guns", "mods/innawoods", "mods/limit_fungal_growth", + "mods/magiclysm", "mods/Magical_Nights", "mods/manualbionicinstall", "mods/modular_turrets", From fc644c4d60f7ecbf27b786f514fb9284c49c2c18 Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:10:30 -0500 Subject: [PATCH 07/11] Explicitly blacklist testing Magiclysm now that it's obsolete Any testing needs should be covered by Magical Nights anyway --- build-scripts/mod_test_blacklist | 1 + 1 file changed, 1 insertion(+) diff --git a/build-scripts/mod_test_blacklist b/build-scripts/mod_test_blacklist index 1616fcb993f3..1c2105c42805 100644 --- a/build-scripts/mod_test_blacklist +++ b/build-scripts/mod_test_blacklist @@ -1,3 +1,4 @@ +Magiclysm no_hope crt_expansion Graphical_Overmap From 8403188ee29becdf4ee93d9d7f0cd0e56a0c925e Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:31:15 +0000 Subject: [PATCH 08/11] style(autofix.ci): automated formatting --- data/mods/Magical_Nights/flags.json | 8 ++--- data/mods/Magical_Nights/materials.json | 10 +++--- data/mods/Magical_Nights/modinfo.json | 2 +- .../mods/Magical_Nights/monster_factions.json | 8 ++--- data/mods/Magical_Nights/professions.json | 13 ++++++- data/mods/Magical_Nights/scenarios.json | 18 ++++++++-- data/mods/Magical_Nights/species.json | 6 ++-- .../worldgen/overmap_specials.json | 34 +++++++++---------- .../worldgen/regional_overlay.json | 4 +-- 9 files changed, 63 insertions(+), 40 deletions(-) diff --git a/data/mods/Magical_Nights/flags.json b/data/mods/Magical_Nights/flags.json index cc7872cb8cb5..f81c979dcd6d 100644 --- a/data/mods/Magical_Nights/flags.json +++ b/data/mods/Magical_Nights/flags.json @@ -12,9 +12,9 @@ "info": "This clothing has a demon chitin padding sewn into it to greatly increase its overall fire resistance." }, { - "id": "blackdragon_coated", - "type": "json_flag", - "context": [ "ARMOR", "TOOL_ARMOR" ], - "info": "This clothing has a coating of black dragon scales applied to it in order to greatly increase its overall acid resistance." + "id": "blackdragon_coated", + "type": "json_flag", + "context": [ "ARMOR", "TOOL_ARMOR" ], + "info": "This clothing has a coating of black dragon scales applied to it in order to greatly increase its overall acid resistance." } ] diff --git a/data/mods/Magical_Nights/materials.json b/data/mods/Magical_Nights/materials.json index 41c1ae5bb2b4..c93ec0196645 100644 --- a/data/mods/Magical_Nights/materials.json +++ b/data/mods/Magical_Nights/materials.json @@ -142,10 +142,10 @@ "bash_dmg_verb": "dented", "cut_dmg_verb": "scratched", "bash_resist": 13, - "cut_resist": 20, - "acid_resist": 10, - "fire_resist": 10, - "bullet_resist": 16, - "elec_resist": 10 + "cut_resist": 20, + "acid_resist": 10, + "fire_resist": 10, + "bullet_resist": 16, + "elec_resist": 10 } ] diff --git a/data/mods/Magical_Nights/modinfo.json b/data/mods/Magical_Nights/modinfo.json index c19e56d3d594..4b6a671ac4a6 100644 --- a/data/mods/Magical_Nights/modinfo.json +++ b/data/mods/Magical_Nights/modinfo.json @@ -7,7 +7,7 @@ "maintainers": [ "Robbietheneko" ], "description": "Bright Nights, but with magic! From the ashes of Magiclysm rises a new mod, and a new head at the controls. ", "category": "content", - "conflicts": ["magiclysm"], + "conflicts": [ "magiclysm" ], "dependencies": [ "bn" ] }, { diff --git a/data/mods/Magical_Nights/monster_factions.json b/data/mods/Magical_Nights/monster_factions.json index e0b75264093d..ea3c0cdf6a30 100755 --- a/data/mods/Magical_Nights/monster_factions.json +++ b/data/mods/Magical_Nights/monster_factions.json @@ -21,11 +21,11 @@ { "type": "MONSTER_FACTION", "name": "goblins", - "friendly": [ "orcs" ] + "friendly": [ "orcs" ] }, { - "type": "MONSTER_FACTION", - "name": "orcs", - "friendly": [ "goblins" ] + "type": "MONSTER_FACTION", + "name": "orcs", + "friendly": [ "goblins" ] } ] diff --git a/data/mods/Magical_Nights/professions.json b/data/mods/Magical_Nights/professions.json index 755ed61efe5e..8b4f6fcd9bec 100644 --- a/data/mods/Magical_Nights/professions.json +++ b/data/mods/Magical_Nights/professions.json @@ -204,7 +204,18 @@ "points": 2, "skills": [ { "level": 1, "name": "spellcraft" } ], "items": { - "both": [ "jeans", "tshirt", "gloves_light", "hat_ball", "boots", "socks", "hoodie", "knit_scarf", "primitive_knife", "summon_undead_spellbook" ], + "both": [ + "jeans", + "tshirt", + "gloves_light", + "hat_ball", + "boots", + "socks", + "hoodie", + "knit_scarf", + "primitive_knife", + "summon_undead_spellbook" + ], "male": [ "boxer_briefs" ], "female": [ "bra", "panties" ] }, diff --git a/data/mods/Magical_Nights/scenarios.json b/data/mods/Magical_Nights/scenarios.json index c7f85235218a..c7103a00fc86 100644 --- a/data/mods/Magical_Nights/scenarios.json +++ b/data/mods/Magical_Nights/scenarios.json @@ -20,7 +20,14 @@ "description": "You have been an apprentice to a wizard for some time now, working on a prototype device that could perhaps be used to escape from the Cataclysm. Something went wrong with the maiden voyage though, and your teacher teleported his insides into his outsides. Now you have to figure out how to survive on your own. At least he left his notebook…", "start_name": "Wizard's Secret Basement Study", "allowed_locs": [ "sloc_magic_basement" ], - "professions": [ "wizard_novice", "novice_necromancer", "novice_earthshaper", "novice_technomancer", "novice_stormshaper", "novice_kelvinist" ] + "professions": [ + "wizard_novice", + "novice_necromancer", + "novice_earthshaper", + "novice_technomancer", + "novice_stormshaper", + "novice_kelvinist" + ] }, { "type": "scenario", @@ -31,6 +38,13 @@ "description": "You have been an apprentice to a wizard for some time now, you've saved for years for your dream vacation at a secluded wizard tower. Your journey of self-discovery is interrupted by the Cataclysm. Now you have to figure out how to survive on your own.", "start_name": "Wizard's Retreat Vacation", "allowed_locs": [ "sloc_lake_retreat" ], - "professions": [ "wizard_novice", "novice_necromancer", "novice_earthshaper", "novice_technomancer", "novice_stormshaper", "novice_kelvinist" ] + "professions": [ + "wizard_novice", + "novice_necromancer", + "novice_earthshaper", + "novice_technomancer", + "novice_stormshaper", + "novice_kelvinist" + ] } ] diff --git a/data/mods/Magical_Nights/species.json b/data/mods/Magical_Nights/species.json index fdbe87e95230..d20476d224bf 100755 --- a/data/mods/Magical_Nights/species.json +++ b/data/mods/Magical_Nights/species.json @@ -23,8 +23,8 @@ "name": { "str": "goblin" } }, { - "type": "SPECIES", - "id": "ORC", - "name": { "str": "orc"} + "type": "SPECIES", + "id": "ORC", + "name": { "str": "orc" } } ] diff --git a/data/mods/Magical_Nights/worldgen/overmap_specials.json b/data/mods/Magical_Nights/worldgen/overmap_specials.json index 10ce65f371ae..dc8e0248f4e5 100644 --- a/data/mods/Magical_Nights/worldgen/overmap_specials.json +++ b/data/mods/Magical_Nights/worldgen/overmap_specials.json @@ -138,15 +138,15 @@ "city_sizes": [ 0, 20 ], "occurrences": [ 0, 1 ] }, - { + { "type": "overmap_special", "id": "wizardtower1", "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "wizardtower1_ground_north" }, { "point": [ 0, 0, 1 ], "overmap": "wizardtower1_living_north" }, - { "point": [ 0, 0, 2 ], "overmap": "wizardtower1_golems_north" }, - { "point": [ 0, 0, 3 ], "overmap": "wizardtower1_study_north" }, - { "point": [ 0, 0, 4 ], "overmap": "wizardtower1_roof_north" } + { "point": [ 0, 0, 2 ], "overmap": "wizardtower1_golems_north" }, + { "point": [ 0, 0, 3 ], "overmap": "wizardtower1_study_north" }, + { "point": [ 0, 0, 4 ], "overmap": "wizardtower1_roof_north" } ], "locations": [ "wilderness" ], "city_distance": [ 20, -1 ], @@ -154,15 +154,15 @@ "occurrences": [ 0, 5 ], "flags": [ "ELECTRIC_GRID" ] }, - { + { "type": "overmap_special", "id": "wizardtower2", "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "wizardtower2_ground_north" }, { "point": [ 0, 0, 1 ], "overmap": "wizardtower2_stairs1_north" }, - { "point": [ 0, 0, 2 ], "overmap": "wizardtower2_stairs2_north" }, - { "point": [ 0, 0, 3 ], "overmap": "wizardtower2_study_north" }, - { "point": [ 0, 0, 4 ], "overmap": "wizardtower2_roof_north" } + { "point": [ 0, 0, 2 ], "overmap": "wizardtower2_stairs2_north" }, + { "point": [ 0, 0, 3 ], "overmap": "wizardtower2_study_north" }, + { "point": [ 0, 0, 4 ], "overmap": "wizardtower2_roof_north" } ], "locations": [ "wilderness" ], "city_distance": [ 20, -1 ], @@ -170,25 +170,25 @@ "occurrences": [ 0, 5 ], "flags": [ "ELECTRIC_GRID" ] }, - { + { "type": "overmap_special", "id": "forest_tomb", "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "magic_academy_ground_north" }, { "point": [ 0, 0, 1 ], "overmap": "magic_academy_2nd_north" }, - { "point": [ 0, 0, 2 ], "overmap": "magic_academy_3rd_north" }, - { "point": [ 0, 0, 3 ], "overmap": "magic_academy_4th_north" }, - { "point": [ 0, 0, 4 ], "overmap": "magic_academy_5th_north" }, - { "point": [ 0, 0, 5 ], "overmap": "magic_academy_6th_north" }, - { "point": [ 0, 0, 6 ], "overmap": "magic_academy_7th_north" }, - { "point": [ 0, 0, 7 ], "overmap": "magic_academy_8th_north" }, - { "point": [ 0, 0, 8 ], "overmap": "magic_academy_roof_north" }, + { "point": [ 0, 0, 2 ], "overmap": "magic_academy_3rd_north" }, + { "point": [ 0, 0, 3 ], "overmap": "magic_academy_4th_north" }, + { "point": [ 0, 0, 4 ], "overmap": "magic_academy_5th_north" }, + { "point": [ 0, 0, 5 ], "overmap": "magic_academy_6th_north" }, + { "point": [ 0, 0, 6 ], "overmap": "magic_academy_7th_north" }, + { "point": [ 0, 0, 7 ], "overmap": "magic_academy_8th_north" }, + { "point": [ 0, 0, 8 ], "overmap": "magic_academy_roof_north" }, { "point": [ 0, 0, -1 ], "overmap": "magic_academy_basement_north" } ], "locations": [ "wilderness" ], "city_distance": [ 20, -1 ], "city_sizes": [ 0, 20 ], "occurrences": [ 0, 1 ], - "flags": [ "ELECTRIC_GRID" ] + "flags": [ "ELECTRIC_GRID" ] } ] diff --git a/data/mods/Magical_Nights/worldgen/regional_overlay.json b/data/mods/Magical_Nights/worldgen/regional_overlay.json index 09669a10eeb7..d0cfa67f5d76 100644 --- a/data/mods/Magical_Nights/worldgen/regional_overlay.json +++ b/data/mods/Magical_Nights/worldgen/regional_overlay.json @@ -2,9 +2,7 @@ { "type": "region_overlay", "regions": [ "all" ], - "city": { - "shops": {"used_bookstore": 225} - }, + "city": { "shops": { "used_bookstore": 225 } }, "field_coverage": { "other": { "f_boulder_large": 0.98, "f_glow_boulder": 0.02 } } } ] From ac354569c4a7432a007003471eb59b0323fa5c4f Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 13:10:38 -0500 Subject: [PATCH 09/11] elipses Oops --- data/mods/Magical_Nights/Spells/classless.json | 2 +- data/mods/Magical_Nights/items/melee.json | 2 +- data/mods/Magical_Nights/items/spell_scrolls.json | 4 ++-- data/mods/Magical_Nights/items/spellbooks.json | 2 +- data/mods/Magical_Nights/monsters/golems.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/mods/Magical_Nights/Spells/classless.json b/data/mods/Magical_Nights/Spells/classless.json index 930a9b465c29..eaaf57b6a79f 100644 --- a/data/mods/Magical_Nights/Spells/classless.json +++ b/data/mods/Magical_Nights/Spells/classless.json @@ -260,7 +260,7 @@ { "id": "summon_lemon", "type": "SPELL", - "name": { "str": "Summon... Lemon?" }, + "name": { "str": "Summon… Lemon?" }, "description": "While at first this spell may appear to be \"Summon Demon\", in reality it appears to be a spell to summon a lemon. Cursive truly is the bane of your existence.", "valid_targets": [ "none" ], "effect": "spawn_item", diff --git a/data/mods/Magical_Nights/items/melee.json b/data/mods/Magical_Nights/items/melee.json index 323fe2f79dee..103b904ac3dc 100644 --- a/data/mods/Magical_Nights/items/melee.json +++ b/data/mods/Magical_Nights/items/melee.json @@ -130,7 +130,7 @@ "type": "TOOL", "id": "gaul_maraz", "name": { "str": "Gaul Maraz" }, - "description": "An impressively ornate golden warhammer with a sapphire and a ruby embedded within. The engraved words on it appear to be in some strange mix of ancient French and German. You can sense a faint magic aura being emitted by it, and picking up the weapon gives you the distinct impression that there's even more power within laying dormant. If only you could harness that power and awaken it once more...", + "description": "An impressively ornate golden warhammer with a sapphire and a ruby embedded within. The engraved words on it appear to be in some strange mix of ancient French and German. You can sense a faint magic aura being emitted by it, and picking up the weapon gives you the distinct impression that there's even more power within laying dormant. If only you could harness that power and awaken it once more…", "material": [ "orichalcum_metal" ], "proportional": { "bashing": 1.4, "price": 15, "weight": 1.05 }, "color": "yellow" diff --git a/data/mods/Magical_Nights/items/spell_scrolls.json b/data/mods/Magical_Nights/items/spell_scrolls.json index 9ee021975289..b63a682dda6a 100644 --- a/data/mods/Magical_Nights/items/spell_scrolls.json +++ b/data/mods/Magical_Nights/items/spell_scrolls.json @@ -892,8 +892,8 @@ "copy-from": "spell_scroll", "id": "spell_scroll_summon_lemon", "//": "Classless spell", - "name": { "str": "Scroll of Summon... Demon(?)", "str_pl": "Scrolls of Summon... Demon(?)" }, - "description": "You can tell this is an authentic magic scroll by all the cursive writing. It does make it a bit hard to read, though...", + "name": { "str": "Scroll of Summon… Demon(?)", "str_pl": "Scrolls of Summon… Demon(?)" }, + "description": "You can tell this is an authentic magic scroll by all the cursive writing. It does make it a bit hard to read, though…", "use_action": { "type": "learn_spell", "spells": [ "summon_lemon" ] } }, { diff --git a/data/mods/Magical_Nights/items/spellbooks.json b/data/mods/Magical_Nights/items/spellbooks.json index a99bf3285a20..fa200afe8b6b 100644 --- a/data/mods/Magical_Nights/items/spellbooks.json +++ b/data/mods/Magical_Nights/items/spellbooks.json @@ -33,7 +33,7 @@ "category": "spellbooks", "name": { "str": "A Beginner's Guide to Magic", "str_pl": "copies of A Beginner's Guide to Magic" }, "//": "2 Magus, 1 classless spell", - "description": "Looks just like a typical pamphlet claiming to teach people magic. Yet, for some reason you can't quite put your finger on, you get the feeling that there's a little more truth than usual to this one...", + "description": "Looks just like a typical pamphlet claiming to teach people magic. Yet, for some reason you can't quite put your finger on, you get the feeling that there's a little more truth than usual to this one…", "weight": "585 g", "volume": "250 ml", "price": "50 USD", diff --git a/data/mods/Magical_Nights/monsters/golems.json b/data/mods/Magical_Nights/monsters/golems.json index a8f10cfbfc83..c1824de1d774 100644 --- a/data/mods/Magical_Nights/monsters/golems.json +++ b/data/mods/Magical_Nights/monsters/golems.json @@ -197,7 +197,7 @@ "id": "mon_resingolem_cured", "type": "MONSTER", "name": { "str": "hardened resin golem" }, - "description": "Traditionally, creating a golem is a long and arduous process, taking several months for a golem so large as this one. However, the advent of modern materials has allowed for much simpler and quicker to make golems. This golem appears to be fully cured, meaning it'll be almost like stone. You can't quite tell whether that's just a pattern on it, or if it's something more sinister...", + "description": "Traditionally, creating a golem is a long and arduous process, taking several months for a golem so large as this one. However, the advent of modern materials has allowed for much simpler and quicker to make golems. This golem appears to be fully cured, meaning it'll be almost like stone. You can't quite tell whether that's just a pattern on it, or if it's something more sinister…", "default_faction": "robot", "bodytype": "human", "species": [ "ROBOT" ], From d3fa171c7425d0a8d44e846f1c74a414f58dadd1 Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 13:41:14 -0500 Subject: [PATCH 10/11] Blacklist magiclysm the correct way this time I thought it was based on *folder name* --- build-scripts/mod_test_blacklist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-scripts/mod_test_blacklist b/build-scripts/mod_test_blacklist index 1c2105c42805..88800208f61c 100644 --- a/build-scripts/mod_test_blacklist +++ b/build-scripts/mod_test_blacklist @@ -1,4 +1,4 @@ -Magiclysm +magiclysm no_hope crt_expansion Graphical_Overmap From 738a765086235664f3c6d103fd2f330e242ac342 Mon Sep 17 00:00:00 2001 From: RobbieNeko <30732426+RobbieNeko@users.noreply.github.com> Date: Sun, 5 Jan 2025 14:10:17 -0500 Subject: [PATCH 11/11] Correct a mistake in an MN update oops! --- .../mods/Magical_Nights/worldgen/overmap_specials.json | 9 +++++++++ data/mods/Magical_Nights/worldgen/overmap_terrain.json | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/data/mods/Magical_Nights/worldgen/overmap_specials.json b/data/mods/Magical_Nights/worldgen/overmap_specials.json index dc8e0248f4e5..8fa4d0595bac 100644 --- a/data/mods/Magical_Nights/worldgen/overmap_specials.json +++ b/data/mods/Magical_Nights/worldgen/overmap_specials.json @@ -125,6 +125,15 @@ "city_sizes": [ 0, 20 ], "occurrences": [ 0, 5 ] }, + { + "type": "overmap_special", + "id": "orc_camp", + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "orc_camp_north" } ], + "locations": [ "wilderness" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 20 ], + "occurrences": [ 0, 2 ] + }, { "type": "overmap_special", "id": "forest_tomb", diff --git a/data/mods/Magical_Nights/worldgen/overmap_terrain.json b/data/mods/Magical_Nights/worldgen/overmap_terrain.json index ff1fbc8c711a..3ccea999617d 100644 --- a/data/mods/Magical_Nights/worldgen/overmap_terrain.json +++ b/data/mods/Magical_Nights/worldgen/overmap_terrain.json @@ -469,5 +469,15 @@ "see_cost": 5, "extras": "build", "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "orc_camp", + "name": "Orc Camp", + "sym": "O", + "color": "green", + "see_cost": 5, + "extras": "build", + "mondensity": 2 } ]