From b96862c9d71f7cd7ad532686851ff3dc916444f9 Mon Sep 17 00:00:00 2001 From: histoire <> Date: Tue, 28 Mar 2023 03:56:15 +0000 Subject: [PATCH] initial commit FossilOrigin-Name: 8d766a175beea27236b2d3fd3761f97321e6db3872743c5d12023a64af5930bc --- Magiclysm_huge.png | Bin 0 -> 17926 bytes Magiclysm_large.png | Bin 0 -> 128327 bytes Magiclysm_normal.png | Bin 0 -> 418550 bytes Magiclysm_normal_offset.png | Bin 0 -> 1166 bytes Spells/#earthshaper.json# | 336 +++++ Spells/animist.json | 217 ++++ Spells/biomancer.json | 277 +++++ Spells/classless.json | 259 ++++ Spells/debug.json | 234 ++++ Spells/dragonbreath.json | 24 + Spells/druid.json | 299 +++++ Spells/earthshaper.json | 336 +++++ Spells/item_only.json | 107 ++ Spells/kelvinist.json | 308 +++++ Spells/lizardfolk_shaman.json | 41 + Spells/magus.json | 278 +++++ Spells/manatouched.json | 47 + Spells/monsterspells.json | 114 ++ Spells/stormshaper.json | 287 +++++ Spells/technomancer.json | 416 +++++++ bionics.json | 15 + construction_group.json | 7 + cooking_components.json | 21 + effects/effects.json | 263 ++++ furniture.json | 226 ++++ harvest.json | 348 ++++++ itemgroups/itemgroups.json | 1066 ++++++++++++++++ itemgroups/recipe_books.json | 21 + itemgroups/spellbooks.json | 197 +++ items/alchemy_items.json | 284 +++++ items/ammo_types.json | 44 + items/archery.json | 51 + items/armor.json | 108 ++ items/bionics.json | 40 + items/black_dragon_items.json | 381 ++++++ items/books_lore.json | 50 + items/cast_spell_items.json | 152 +++ items/class_runes.json | 110 ++ items/comestibles.json | 87 ++ items/constructs.json | 69 ++ items/enchanted.json | 76 ++ items/enchanted_belts.json | 195 +++ items/enchanted_boots.json | 67 + items/enchanted_bracers.json | 95 ++ items/enchanted_gunmods.json | 83 ++ items/enchanted_masks.json | 51 + items/enchanted_melee.json | 921 ++++++++++++++ items/enchanted_misc.json | 188 +++ items/enchanted_ranged.json | 92 ++ items/enchanted_rings.json | 318 +++++ items/enchanted_tokens.json | 168 +++ items/enchanted_unarmed.json | 113 ++ items/enchanted_wands.json | 349 ++++++ items/ethereal_items.json | 466 +++++++ items/fuel.json | 78 ++ items/mana_crystals.json | 40 + items/melee.json | 88 ++ items/metals.json | 70 ++ items/mutagen.json | 26 + items/obsolete.json | 40 + items/recipe_books.json | 155 +++ items/spell_scrolls.json | 863 +++++++++++++ items/spellbooks.json | 367 ++++++ items/tools.json | 135 ++ items/vehicle/frames.json | 25 + items/vehicle_parts.json | 18 + items/weapons.json | 56 + lore.md | 35 + magic_balance.md | 57 + martialarts.json | 305 +++++ materials.json | 92 ++ mod_tileset.json | 1441 ++++++++++++++++++++++ modinfo.json | 19 + monster_attacks.json | 30 + monster_factions.json | 21 + monstergroups.json | 118 ++ monstergroups_egg.json | 7 + monsters.json | 57 + monsters/demon_spider.json | 117 ++ monsters/dragon.json | 168 +++ monsters/golems.json | 132 ++ monsters/lizardfolk.json | 139 +++ monsters/monsters.json | 342 +++++ npc/TALK_HEALER_GREY.json | 51 + npc/TALK_OLD_MAGUS.json | 62 + npc/TALK_TECHNO_KID.json | 51 + npc/classes.json | 79 ++ npc/factions.json | 123 ++ npc/items_worn.json | 15 + npc/missiondef.json | 101 ++ npc/npc.json | 38 + obsolete.json | 7 + professions.json | 255 ++++ qualities.json | 33 + recipes.json | 33 + recipes/alchemy.json | 67 + recipes/armor.json | 117 ++ recipes/blacksmithing.json | 54 + recipes/construction.json | 20 + recipes/cooking.json | 33 + recipes/deconstruction.json | 29 + recipes/dragon_black.json | 248 ++++ recipes/magic_tools.json | 105 ++ recipes/mods.json | 68 + recipes/recipe_potions.json | 249 ++++ recipes/weapons.json | 355 ++++++ requirements/alchemy.json | 8 + requirements/cooking_components.json | 17 + scenarios.json | 35 + species.json | 17 + start_locations.json | 14 + ter_fur_transform/ter_fur_transform.json | 139 +++ terrain.json | 64 + tool_qualities.json | 7 + traits/classes.json | 98 ++ traits/manatouched.json | 194 +++ traits/mutation.json | 269 ++++ traps.json | 15 + vehicle_groups.json | 42 + vehicleparts/frames.json | 99 ++ vehicleparts/vehicle_parts.json | 8 + vehicles/bikes.json | 13 + vehicles/summoned_vehicles.json | 80 ++ vehicles/vans_busses.json | 178 +++ worldgen/black_dragon_lair.json | 491 ++++++++ worldgen/demon_spider_lair.json | 79 ++ worldgen/forest_tomb.json | 134 ++ worldgen/lake_retreat.json | 487 ++++++++ worldgen/magic_academy.json | 524 ++++++++ worldgen/magic_basement.json | 117 ++ worldgen/magic_cabin.json | 167 +++ worldgen/magic_shop.json | 235 ++++ worldgen/multitile_city_buildings.json | 63 + worldgen/nested_mapgen.json | 270 ++++ worldgen/overmap_specials.json | 132 ++ worldgen/overmap_terrain.json | 463 +++++++ worldgen/regional_overlay.json | 11 + worldgen/used_bookstore.json | 95 ++ worldgen/wizard-towers.json | 188 +++ 139 files changed, 22289 insertions(+) create mode 100644 Magiclysm_huge.png create mode 100644 Magiclysm_large.png create mode 100644 Magiclysm_normal.png create mode 100644 Magiclysm_normal_offset.png create mode 100644 Spells/#earthshaper.json# create mode 100644 Spells/animist.json create mode 100644 Spells/biomancer.json create mode 100644 Spells/classless.json create mode 100644 Spells/debug.json create mode 100644 Spells/dragonbreath.json create mode 100644 Spells/druid.json create mode 100644 Spells/earthshaper.json create mode 100644 Spells/item_only.json create mode 100644 Spells/kelvinist.json create mode 100644 Spells/lizardfolk_shaman.json create mode 100644 Spells/magus.json create mode 100644 Spells/manatouched.json create mode 100644 Spells/monsterspells.json create mode 100644 Spells/stormshaper.json create mode 100644 Spells/technomancer.json create mode 100644 bionics.json create mode 100644 construction_group.json create mode 100644 cooking_components.json create mode 100644 effects/effects.json create mode 100644 furniture.json create mode 100644 harvest.json create mode 100644 itemgroups/itemgroups.json create mode 100644 itemgroups/recipe_books.json create mode 100644 itemgroups/spellbooks.json create mode 100644 items/alchemy_items.json create mode 100644 items/ammo_types.json create mode 100644 items/archery.json create mode 100644 items/armor.json create mode 100644 items/bionics.json create mode 100644 items/black_dragon_items.json create mode 100644 items/books_lore.json create mode 100644 items/cast_spell_items.json create mode 100644 items/class_runes.json create mode 100644 items/comestibles.json create mode 100644 items/constructs.json create mode 100644 items/enchanted.json create mode 100644 items/enchanted_belts.json create mode 100644 items/enchanted_boots.json create mode 100644 items/enchanted_bracers.json create mode 100644 items/enchanted_gunmods.json create mode 100644 items/enchanted_masks.json create mode 100644 items/enchanted_melee.json create mode 100644 items/enchanted_misc.json create mode 100644 items/enchanted_ranged.json create mode 100644 items/enchanted_rings.json create mode 100644 items/enchanted_tokens.json create mode 100644 items/enchanted_unarmed.json create mode 100644 items/enchanted_wands.json create mode 100644 items/ethereal_items.json create mode 100644 items/fuel.json create mode 100644 items/mana_crystals.json create mode 100644 items/melee.json create mode 100644 items/metals.json create mode 100644 items/mutagen.json create mode 100644 items/obsolete.json create mode 100644 items/recipe_books.json create mode 100644 items/spell_scrolls.json create mode 100644 items/spellbooks.json create mode 100644 items/tools.json create mode 100644 items/vehicle/frames.json create mode 100644 items/vehicle_parts.json create mode 100644 items/weapons.json create mode 100644 lore.md create mode 100644 magic_balance.md create mode 100644 martialarts.json create mode 100644 materials.json create mode 100644 mod_tileset.json create mode 100644 modinfo.json create mode 100644 monster_attacks.json create mode 100644 monster_factions.json create mode 100644 monstergroups.json create mode 100644 monstergroups_egg.json create mode 100644 monsters.json create mode 100644 monsters/demon_spider.json create mode 100644 monsters/dragon.json create mode 100644 monsters/golems.json create mode 100644 monsters/lizardfolk.json create mode 100644 monsters/monsters.json create mode 100644 npc/TALK_HEALER_GREY.json create mode 100644 npc/TALK_OLD_MAGUS.json create mode 100644 npc/TALK_TECHNO_KID.json create mode 100644 npc/classes.json create mode 100644 npc/factions.json create mode 100644 npc/items_worn.json create mode 100644 npc/missiondef.json create mode 100644 npc/npc.json create mode 100644 obsolete.json create mode 100644 professions.json create mode 100644 qualities.json create mode 100644 recipes.json create mode 100644 recipes/alchemy.json create mode 100644 recipes/armor.json create mode 100644 recipes/blacksmithing.json create mode 100644 recipes/construction.json create mode 100644 recipes/cooking.json create mode 100644 recipes/deconstruction.json create mode 100644 recipes/dragon_black.json create mode 100644 recipes/magic_tools.json create mode 100644 recipes/mods.json create mode 100644 recipes/recipe_potions.json create mode 100644 recipes/weapons.json create mode 100644 requirements/alchemy.json create mode 100644 requirements/cooking_components.json create mode 100644 scenarios.json create mode 100644 species.json create mode 100644 start_locations.json create mode 100644 ter_fur_transform/ter_fur_transform.json create mode 100644 terrain.json create mode 100644 tool_qualities.json create mode 100644 traits/classes.json create mode 100644 traits/manatouched.json create mode 100644 traits/mutation.json create mode 100644 traps.json create mode 100644 vehicle_groups.json create mode 100644 vehicleparts/frames.json create mode 100644 vehicleparts/vehicle_parts.json create mode 100644 vehicles/bikes.json create mode 100644 vehicles/summoned_vehicles.json create mode 100644 vehicles/vans_busses.json create mode 100644 worldgen/black_dragon_lair.json create mode 100644 worldgen/demon_spider_lair.json create mode 100644 worldgen/forest_tomb.json create mode 100644 worldgen/lake_retreat.json create mode 100644 worldgen/magic_academy.json create mode 100644 worldgen/magic_basement.json create mode 100644 worldgen/magic_cabin.json create mode 100644 worldgen/magic_shop.json create mode 100644 worldgen/multitile_city_buildings.json create mode 100644 worldgen/nested_mapgen.json create mode 100644 worldgen/overmap_specials.json create mode 100644 worldgen/overmap_terrain.json create mode 100644 worldgen/regional_overlay.json create mode 100644 worldgen/used_bookstore.json create mode 100644 worldgen/wizard-towers.json diff --git a/Magiclysm_huge.png b/Magiclysm_huge.png new file mode 100644 index 0000000000000000000000000000000000000000..c213446af942c831c9ce1fd9e3cc418d2fa35f73 GIT binary patch literal 17926 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 literal 0 HcmV?d00001 diff --git a/Magiclysm_normal.png b/Magiclysm_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..f3aa0c36ef7dd1c765d4426fe3c49523e46fdc59 GIT binary patch literal 418550 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%0A$%_*zR)ielS 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

6I`Iw}!>KBzI_BY58)aH$gY1i!*Ty-Rn9NR)D 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 ^((f`9Q>MnqE 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 JS4)}({}09GzxV(E literal 0 HcmV?d00001 diff --git a/Magiclysm_normal_offset.png b/Magiclysm_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/Spells/#earthshaper.json# b/Spells/#earthshaper.json# new file mode 100644 index 0000000..c5aa0fa --- /dev/null +++ b/Spells/#earthshaper.json# @@ -0,0 +1,336 @@ +[ + { + "id": "stonefist", + "type": "SPELL", + "name": "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" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "stonefist", + "spell_class": "EARTHSHAPER", + "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 + }, + { + "id": "seismic_stomp", + "type": "SPELL", + "name": "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" ], + "max_level": 10, + "min_damage": 2, + "max_damage": 10, + "damage_increment": 0.8, + "min_aoe": 3, + "max_aoe": 12, + "aoe_increment": 1, + "min_duration": 1000, + "max_duration": 6000, + "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": "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" ], + "min_damage": 1500, + "max_damage": 10000, + "damage_increment": 750, + "max_level": 12, + "spell_class": "EARTHSHAPER", + "base_casting_time": 500, + "final_casting_time": 300, + "casting_time_increment": -17, + "energy_source": "MANA", + "base_energy_cost": 150, + "energy_increment": 75, + "final_energy_cost": 1000, + "difficulty": 5 + }, + { + "id": "eshaper_shardspray", + "type": "SPELL", + "name": "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" ], + "effect": "cone_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 100, + "max_level": 20, + "min_damage": 10, + "max_damage": 60, + "damage_increment": 2, + "damage_type": "cut", + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5, + "min_range": 1, + "max_range": 10, + "range_increment": 0.5 + }, + { + "id": "eshaper_piercing_bolt", + "type": "SPELL", + "name": "Piercing Bolt", + "description": "This spell projects a piercing rod of conjured iron at those that dare oppose you.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "LOUD" ], + "effect": "projectile_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 115, + "difficulty": 2, + "max_level": 20, + "min_damage": 20, + "max_damage": 50, + "damage_increment": 3, + "damage_type": "stab", + "min_range": 8, + "max_range": 26, + "range_increment": 1.5 + }, + { + "id": "eshaper_shardstorm", + "type": "SPELL", + "name": "Shardstorm", + "description": "Creates an omnidirectional spray of razor sharp metal shards all around you.", + "valid_targets": [ "hostile", "ally", "ground" ], + "flags": [ "SOMATIC", "LOUD" ], + "min_damage": 20, + "max_damage": 60, + "damage_increment": 1.5, + "damage_type": "cut", + "min_aoe": 1, + "max_aoe": 6, + "aoe_increment": 0.25, + "base_energy_cost": 200, + "spell_class": "EARTHSHAPER", + "difficulty": 4, + "max_level": 20, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "target_attack" + }, + { + "id": "eshaper_rockbolt", + "type": "SPELL", + "name": "Rockbolt", + "description": "Fires a conjured stone projectile at high velocity.", + "valid_targets": [ "hostile", "ally" ], + "flags": [ "SOMATIC", "LOUD" ], + "min_damage": 5, + "damage_increment": 1.5, + "damage_type": "bash", + "max_damage": 26, + "min_range": 5, + "range_increment": 0.5, + "max_range": 15, + "base_energy_cost": 50, + "spell_class": "EARTHSHAPER", + "difficulty": 1, + "max_level": 20, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "projectile_attack" + }, + { + "id": "move_earth", + "type": "SPELL", + "name": "Move Earth", + "description": "Your essense flows around you, and the earth follows.", + "valid_targets": [ "hostile", "ally", "ground", "self" ], + "flags": [ "SOMATIC", "LOUD" ], + "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": "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", "CONCENTRATE" ] + }, + { + "id": "lava_bomb_shrapnel", + "type": "SPELL", + "name": "Lava Bomb Shrapnel", + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ally", "self", "ground" ], + "damage_type": "cut", + "max_level": 30, + "min_damage": 5, + "max_damage": 65, + "damage_increment": 2, + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.1 + }, + { + "id": "lava_bomb_heat", + "type": "SPELL", + "name": "Lava Bomb Heat", + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ally", "self", "ground" ], + "damage_type": "fire", + "max_level": 30, + "min_damage": 10, + "max_damage": 90, + "damage_increment": 2.25, + "min_aoe": 3, + "max_aoe": 5, + "aoe_increment": 0.1 + }, + { + "id": "lava_bomb_ter", + "type": "SPELL", + "name": "Lava Bomb Terrain", + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "ter_transform", + "effect_str": "lava_bomb", + "max_level": 30, + "min_aoe": 0, + "max_aoe": 2, + "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": "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": 30, + "difficulty": 12, + "min_damage": 20, + "max_damage": 140, + "damage_increment": 4, + "min_range": 6, + "max_range": 10, + "range_increment": 0.2, + "base_casting_time": 350, + "base_energy_cost": 1000, + "energy_source": "MANA", + "flags": [ "VERBAL", "SOMATIC", "LOUD" ], + "extra_effects": [ { "id": "lava_bomb_shrapnel" }, { "id": "lava_bomb_heat" }, { "id": "lava_bomb_ter" } ] + }, + { + "id": "earthshaper_stoneskin", + "type": "SPELL", + "name": "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" ], + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 200, + "max_level": 20, + "min_damage": 1, + "max_damage": 1, + "min_duration": 10000, + "max_duration": 100000, + "duration_increment": 2000 + }, + { + "id": "earthshaper_pillar", + "type": "SPELL", + "name": "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" ], + "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": 3, + "max_range": 6, + "range_increment": 0.3 + }, + { + "id": "earthshaper_pillar_side_effect", + "type": "SPELL", + "name": "Pillar Side Effect", + "description": "Bash effect that follows, levels reduce damage and AoE.", + "valid_targets": [ "ground" ], + "effect": "bash", + "flags": [ "IGNORE_WALLS", "SILENT" ], + "max_level": 10, + "min_damage": 80, + "max_damage": 20, + "damage_increment": -6, + "min_aoe": 6, + "max_aoe": 1, + "aoe_increment": -0.5 + } +] diff --git a/Spells/animist.json b/Spells/animist.json new file mode 100644 index 0000000..d437e71 --- /dev/null +++ b/Spells/animist.json @@ -0,0 +1,217 @@ +[ + { + "id": "smite", + "type": "SPELL", + "name": "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": 10, + "max_damage": 200, + "damage_increment": 15.0, + "min_range": 1, + "max_range": 1, + "effect": "target_attack", + "base_casting_time": 85, + "base_energy_cost": 250, + "spell_class": "ANIMIST", + "difficulty": 8, + "max_level": 15, + "flags": [ "VERBAL", "SOMATIC", "LOUD" ], + "energy_source": "MANA" + }, + { + "id": "recover_mana", + "type": "SPELL", + "name": "Life Conversion", + "description": "You channel your life force itself into your spiritual energy. You spend hp to regain mana.", + "valid_targets": [ "self" ], + "min_damage": 250, + "damage_increment": 50.0, + "max_damage": 2000, + "max_level": 35, + "effect": "recover_energy", + "effect_str": "MANA", + "spell_class": "ANIMIST", + "energy_source": "HP", + "base_casting_time": 500, + "base_energy_cost": 5, + "energy_increment": 1.0, + "final_energy_cost": 40, + "flags": [ "SOMATIC", "VERBAL", "SILENT", "NO_LEGS" ], + "difficulty": 3 + }, + { + "id": "recover_pain", + "type": "SPELL", + "name": "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": 100, + "damage_increment": 2.0, + "max_level": 45, + "spell_class": "ANIMIST", + "effect": "recover_energy", + "effect_str": "PAIN", + "energy_source": "STAMINA", + "base_casting_time": 50000, + "base_energy_cost": 5000, + "energy_increment": 500.0, + "flags": [ "SOMATIC", "VERBAL", "PAIN_NORESIST" ], + "final_energy_cost": 10000 + }, + { + "id": "summon_zombie", + "type": "SPELL", + "name": "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": 3, + "//": "level 20 will max out your number of summons", + "damage_increment": 0.1, + "max_level": 30, + "difficulty": 2, + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_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", "VERBAL", "CONCENTRATE" ], + "min_duration": 30000, + "max_duration": 150000, + "duration_increment": 4000 + }, + { + "id": "summon_skeleton", + "type": "SPELL", + "name": "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": 3, + "//": "level 20 will max out your number of summons", + "damage_increment": 0.1, + "max_level": 30, + "difficulty": 5, + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_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", "VERBAL", "CONCENTRATE" ], + "min_duration": 30000, + "max_duration": 150000, + "duration_increment": 4000 + }, + { + "id": "summon_decayed_pouncer", + "type": "SPELL", + "name": "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": 3, + "//": "level 20 will max out your number of summons", + "damage_increment": 0.1, + "max_level": 30, + "difficulty": 12, + "spell_class": "ANIMIST", + "effect": "summon", + "effect_str": "mon_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", "VERBAL", "CONCENTRATE" ], + "min_duration": 30000, + "max_duration": 150000, + "duration_increment": 4000 + }, + { + "id": "necrotic_gaze", + "type": "SPELL", + "name": "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", "CONCENTRATE", "SOMATIC" ], + "min_damage": 10, + "max_damage": 160, + "damage_increment": 5.0, + "min_range": 3, + "max_range": 5, + "range_increment": 0.1, + "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", "CONCENTRATE" ] + }, + { + "id": "summon_wisps", + "type": "SPELL", + "name": "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" ], + "energy_source": "MANA", + "spell_class": "ANIMIST", + "difficulty": 2, + "base_casting_time": 250, + "base_energy_cost": 300, + "max_level": 25, + "min_damage": 1, + "max_damage": 8, + "damage_increment": 0.28, + "min_aoe": 3, + "max_aoe": 3, + "min_range": 3, + "max_range": 7, + "range_increment": 0.16, + "min_duration": 6000, + "max_duration": 60000, + "duration_increment": 2160 + } +] diff --git a/Spells/biomancer.json b/Spells/biomancer.json new file mode 100644 index 0000000..a802505 --- /dev/null +++ b/Spells/biomancer.json @@ -0,0 +1,277 @@ +[ + { + "id": "light_healing", + "type": "SPELL", + "name": "Cure Light Wounds", + "description": "Heals a little bit of damage on the target.", + "valid_targets": [ "self", "ally" ], + "min_damage": -5, + "max_damage": -20, + "damage_increment": -1.0, + "max_level": 10, + "min_range": 0, + "max_range": 4, + "range_increment": 0.75, + "effect": "target_attack", + "base_casting_time": 300, + "base_energy_cost": 800, + "flags": [ "SOMATIC", "VERBAL" ], + "spell_class": "BIOMANCER", + "difficulty": 2, + "energy_source": "MANA" + }, + { + "id": "pain_split", + "type": "SPELL", + "name": "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" ], + "spell_class": "BIOMANCER", + "difficulty": 4, + "max_level": 1 + }, + { + "id": "vicious_tentacle", + "type": "SPELL", + "name": "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": 30000, + "max_duration": 90000, + "duration_increment": 3000, + "difficulty": 6, + "max_level": 20, + "flags": [ "SOMATIC", "LOUD" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA" + }, + { + "id": "bio_grotesque", + "type": "SPELL", + "name": "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": 20, + "flags": [ "SOMATIC", "LOUD" ], + "//": "duration is in moves", + "min_duration": 6000, + "max_duration": 12000, + "duration_increment": 300 + }, + { + "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": 20, + "min_damage": 8, + "max_damage": 65, + "damage_increment": 4.0, + "damage_type": "acid", + "min_range": 3, + "max_range": 5, + "flags": [ "VERBAL", "NO_HANDS" ], + "range_increment": 0.25, + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5.0 + }, + { + "id": "bio_fleshpouch", + "type": "SPELL", + "name": "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": 60000, + "max_duration": 360000, + "duration_increment": 15000, + "difficulty": 4, + "max_level": 20, + "flags": [ "NO_HANDS", "NO_LEGS", "SOMATIC" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA" + }, + { + "id": "bio_bonespear", + "type": "SPELL", + "name": "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": 30000, + "max_duration": 90000, + "duration_increment": 3000, + "difficulty": 14, + "max_level": 20, + "flags": [ "LOUD", "SOMATIC" ], + "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", "CONCENTRATE" ] + }, + { + "id": "biomancer_paralytic_dart", + "type": "SPELL", + "name": "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" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 80, + "max_level": 15, + "min_damage": 4, + "max_damage": 28, + "damage_increment": 1.6, + "damage_type": "stab", + "min_range": 3, + "max_range": 9, + "range_increment": 0.4, + "min_duration": 1200, + "max_duration": 12000, + "duration_increment": 720 + }, + { + "id": "biomancer_visceral_projection", + "type": "SPELL", + "name": "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" ], + "spell_class": "BIOMANCER", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 150, + "max_level": 20, + "min_damage": 1, + "max_damage": 10, + "damage_increment": 0.45, + "damage_type": "bio", + "min_aoe": 2, + "max_aoe": 6, + "aoe_increment": 0.2, + "field_id": "fd_blood", + "field_chance": 1, + "min_field_intensity": 1, + "max_field_intensity": 3, + "field_intensity_increment": 0.1 + }, + { + "id": "biomancer_visceral_paralyze", + "type": "SPELL", + "name": "Visceral Paralysis", + "description": "Paralytic side effect of Projection.", + "valid_targets": [ "ally", "hostile" ], + "effect": "target_attack", + "effect_str": "biomancer_dart_venom", + "flags": [ "SILENT" ], + "max_level": 20, + "min_aoe": 2, + "max_aoe": 6, + "aoe_increment": 0.2, + "min_duration": 6000, + "max_duration": 18000, + "duration_increment": 450, + "field_id": "fd_gibs_flesh", + "field_chance": 1, + "min_field_intensity": 1, + "max_field_intensity": 3, + "field_intensity_increment": 0.1 + }, + { + "id": "biomancer_visceral_backlash", + "type": "SPELL", + "name": "Visceral Backlash", + "description": "Hits the user with side effects too.", + "valid_targets": [ "self" ], + "effect": "target_attack", + "effect_str": "biomancer_visceral_side_effects", + "flags": [ "VERBAL" ], + "min_duration": 600, + "max_duration": 600 + }, + { + "id": "biomancer_coagulant_weave", + "type": "SPELL", + "name": "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", "VERBAL" ], + "energy_source": "MANA", + "spell_class": "BIOMANCER", + "difficulty": 5, + "base_casting_time": 400, + "base_energy_cost": 150, + "max_level": 20, + "min_duration": 6000, + "max_duration": 12000, + "duration_increment": 300 + } +] diff --git a/Spells/classless.json b/Spells/classless.json new file mode 100644 index 0000000..4f39507 --- /dev/null +++ b/Spells/classless.json @@ -0,0 +1,259 @@ +[ + { + "id": "crystallize_mana", + "type": "SPELL", + "name": "Crystallize Mana", + "description": "Crystallizes mana into solid form", + "valid_targets": [ "self" ], + "spell_class": "NONE", + "flags": [ "PERMANENT", "NO_LEGS", "CONCENTRATE" ], + "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": "Mana Fatigue", + "description": "Secondary effect of Crystallize Mana", + "valid_targets": [ "self" ], + "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": "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" ], + "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": 20, + "min_duration": 100000, + "max_duration": 1000000, + "duration_increment": 2000 + }, + { + "id": "megablast", + "type": "SPELL", + "name": "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", "VERBAL" ], + "difficulty": 10, + "max_level": 20, + "min_damage": 30, + "max_damage": 100, + "damage_increment": 3.25, + "min_range": 3, + "max_range": 12, + "range_increment": 0.45, + "min_aoe": 1, + "max_aoe": 5, + "aoe_increment": 0.2 + }, + { + "id": "create_atomic_light", + "type": "SPELL", + "name": "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" ], + "difficulty": 1, + "max_level": 20, + "base_casting_time": 1000, + "base_energy_cost": 500, + "min_duration": 100000, + "max_duration": 1000000, + "duration_increment": 2000 + }, + { + "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": 20, + "min_damage": 1, + "max_damage": 10, + "damage_increment": 0.5, + "min_aoe": 0, + "max_aoe": 3, + "aoe_increment": 0.15, + "min_range": 4, + "max_range": 16, + "range_increment": 0.6, + "min_duration": 1000, + "max_duration": 3000, + "duration_increment": 100, + "spell_class": "NONE", + "flags": [ "SOMATIC", "NO_LEGS" ], + "base_casting_time": 200, + "base_energy_cost": 150, + "energy_source": "MANA", + "difficulty": 3, + "damage_type": "none" + }, + { + "id": "ethereal_grasp", + "type": "SPELL", + "name": "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": 20, + "min_damage": 10, + "max_damage": 30, + "damage_increment": 1.0, + "min_aoe": 2, + "max_aoe": 20, + "aoe_increment": 0.5, + "min_range": 5, + "max_range": 20, + "range_increment": 2.0, + "min_duration": 1000, + "max_duration": 5000, + "duration_increment": 200, + "spell_class": "NONE", + "flags": [ "SOMATIC" ], + "base_casting_time": 200, + "base_energy_cost": 400, + "energy_source": "MANA", + "difficulty": 3, + "damage_type": "bash" + }, + { + "id": "obfuscated_body", + "type": "SPELL", + "name": "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" ], + "difficulty": 4, + "max_level": 15, + "base_casting_time": 200, + "base_energy_cost": 400, + "min_duration": 21000, + "max_duration": 90000, + "duration_increment": 4500 + }, + { + "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" ], + "effect": "spawn_item", + "effect_str": "protect_env", + "energy_source": "MANA", + "difficulty": 1, + "max_level": 20, + "flags": [ "CONCENTRATE", "VERBAL", "NO_LEGS" ], + "base_casting_time": 350, + "base_energy_cost": 375, + "min_duration": 10000, + "max_duration": 50000, + "duration_increment": 3000 + }, + { + "id": "translocate_self", + "type": "SPELL", + "name": "Translocate Self", + "description": "Translocates the user to an attuned gate.", + "valid_targets": [ "self" ], + "effect": "translocate", + "difficulty": 15, + "max_level": 25, + "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" ], + "difficulty": 4, + "max_level": 15, + "base_casting_time": 200, + "base_energy_cost": 150, + "min_duration": 84000, + "max_duration": 360000, + "duration_increment": 18000, + "learn_spells": { "acid_resistance_greater": 15 } + }, + { + "id": "acid_resistance_greater", + "type": "SPELL", + "name": "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" ], + "difficulty": 7, + "max_level": 1, + "base_casting_time": 200, + "base_energy_cost": 250, + "min_duration": 180000 + } +] diff --git a/Spells/debug.json b/Spells/debug.json new file mode 100644 index 0000000..00ae210 --- /dev/null +++ b/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.0, + "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.0, + "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.0, + "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/Spells/dragonbreath.json b/Spells/dragonbreath.json new file mode 100644 index 0000000..232766b --- /dev/null +++ b/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.0, + "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/Spells/druid.json b/Spells/druid.json new file mode 100644 index 0000000..f359687 --- /dev/null +++ b/Spells/druid.json @@ -0,0 +1,299 @@ +[ + { + "id": "druid_veggrasp", + "type": "SPELL", + "name": "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", "VERBAL", "NO_LEGS" ], + "effect": "target_attack", + "effect_str": "entangled", + "spell_class": "DRUID", + "base_casting_time": 100, + "base_energy_cost": 175, + "energy_source": "MANA", + "difficulty": 2, + "max_level": 20, + "min_damage": 1, + "max_damage": 20, + "damage_increment": 1.0, + "min_aoe": 4, + "max_aoe": 15, + "aoe_increment": 1.0, + "min_range": 3, + "max_range": 10, + "range_increment": 1.0, + "min_dot": 0, + "max_dot": 2, + "dot_increment": 0.1, + "min_duration": 1000, + "max_duration": 10000, + "duration_increment": 500, + "min_pierce": 1, + "max_pierce": 5, + "pierce_increment": 0.25, + "damage_type": "stab" + }, + { + "id": "druid_rootstrike", + "type": "SPELL", + "name": "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", "VERBAL", "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": 20, + "min_damage": 15, + "max_damage": 60, + "damage_increment": 2.5, + "min_aoe": 25, + "max_aoe": 45, + "aoe_increment": 1.0, + "min_range": 4, + "max_range": 10, + "range_increment": 0.5, + "min_dot": 1, + "max_dot": 2, + "dot_increment": 0.1, + "min_duration": 1000, + "max_duration": 10000, + "duration_increment": 500, + "min_pierce": 10, + "max_pierce": 20, + "pierce_increment": 0.5, + "damage_type": "stab" + }, + { + "id": "druid_woodshaft", + "type": "SPELL", + "name": "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", "VERBAL", "NO_LEGS" ], + "effect": "projectile_attack", + "spell_class": "DRUID", + "base_casting_time": 100, + "base_energy_cost": 50, + "energy_source": "MANA", + "difficulty": 1, + "max_level": 20, + "min_damage": 1, + "max_damage": 25, + "damage_increment": 1.5, + "min_range": 5, + "max_range": 15, + "range_increment": 0.75, + "min_pierce": 1, + "max_pierce": 5, + "pierce_increment": 0.5, + "damage_type": "bash" + }, + { + "id": "druid_naturebow1", + "type": "SPELL", + "name": "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", "VERBAL", "NO_LEGS" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "druid_recurve", + "base_casting_time": 200, + "base_energy_cost": 250, + "min_duration": 10000, + "max_duration": 30000, + "duration_increment": 1000, + "difficulty": 6, + "max_level": 20, + "spell_class": "DRUID", + "energy_source": "MANA" + }, + { + "id": "recover_fatigue", + "type": "SPELL", + "name": "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" ], + "spell_class": "DRUID", + "energy_source": "MANA", + "effect": "recover_energy", + "effect_str": "FATIGUE", + "base_casting_time": 10000, + "min_damage": 50, + "damage_increment": 10.0, + "max_damage": 300, + "max_level": 25, + "base_energy_cost": 500, + "energy_increment": 25.0, + "final_energy_cost": 1125, + "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" ], + "min_damage": 1, + "max_damage": 12, + "damage_increment": 1.0, + "min_range": 3, + "range_increment": 0.8, + "max_range": 7, + "min_aoe": 3, + "max_aoe": 3, + "spell_class": "DRUID", + "base_casting_time": 250, + "energy_source": "MANA", + "max_level": 25, + "min_duration": 6000, + "max_duration": 60000, + "duration_increment": 1000, + "difficulty": 1, + "base_energy_cost": 265, + "effect": "summon", + "effect_str": "mon_cat" + }, + { + "id": "summon_bear", + "type": "SPELL", + "name": "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": 3, + "max_range": 5, + "spell_class": "DRUID", + "base_casting_time": 500, + "energy_source": "MANA", + "max_level": 25, + "difficulty": 10, + "min_duration": 6000, + "max_duration": 30000, + "base_energy_cost": 675, + "final_energy_cost": 475, + "energy_increment": -5.0, + "flags": [ "HOSTILE_50", "CONCENTRATE", "SOMATIC", "VERBAL", "NO_LEGS" ], + "effect": "summon", + "effect_str": "mon_bear" + }, + { + "id": "fungicide", + "type": "SPELL", + "name": "Kill Fungus", + "description": "Kills fungus affected areas", + "valid_targets": [ "ground", "hostile" ], + "effect": "ter_transform", + "effect_str": "fungicide", + "min_aoe": 5, + "max_aoe": 25, + "aoe_increment": 1.0, + "max_level": 20, + "difficulty": 4, + "energy_source": "MANA", + "base_energy_cost": 175, + "base_casting_time": 550, + "flags": [ "CONCENTRATE", "VERBAL", "SOMATIC", "NO_LEGS", "NO_HANDS" ] + }, + { + "id": "create_rune_druid", + "type": "SPELL", + "name": "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", "CONCENTRATE" ] + }, + { + "id": "purify_seed", + "type": "SPELL", + "name": "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.0, + "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" ] + }, + { + "id": "druidic_regrowth", + "type": "SPELL", + "name": "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", "VERBAL", "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "spell_class": "DRUID", + "energy_source": "HP", + "difficulty": 6, + "base_casting_time": 600, + "base_energy_cost": 25, + "max_level": 20, + "min_aoe": 1, + "max_aoe": 5, + "aoe_increment": 0.2, + "min_range": 3, + "max_range": 6, + "range_increment": 0.3 + }, + { + "id": "druidic_healing", + "type": "SPELL", + "name": "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", "VERBAL", "SOMATIC", "NO_LEGS", "NO_HANDS" ], + "spell_class": "DRUID", + "energy_source": "HP", + "difficulty": 5, + "base_casting_time": 400, + "base_energy_cost": 35, + "max_level": 10, + "min_damage": -4, + "max_damage": -12, + "damage_increment": -0.8, + "min_aoe": 0, + "max_aoe": 2, + "aoe_increment": 0.2, + "min_range": 2, + "max_range": 4, + "range_increment": 0.2 + } +] diff --git a/Spells/earthshaper.json b/Spells/earthshaper.json new file mode 100644 index 0000000..c5aa0fa --- /dev/null +++ b/Spells/earthshaper.json @@ -0,0 +1,336 @@ +[ + { + "id": "stonefist", + "type": "SPELL", + "name": "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" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "stonefist", + "spell_class": "EARTHSHAPER", + "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 + }, + { + "id": "seismic_stomp", + "type": "SPELL", + "name": "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" ], + "max_level": 10, + "min_damage": 2, + "max_damage": 10, + "damage_increment": 0.8, + "min_aoe": 3, + "max_aoe": 12, + "aoe_increment": 1, + "min_duration": 1000, + "max_duration": 6000, + "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": "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" ], + "min_damage": 1500, + "max_damage": 10000, + "damage_increment": 750, + "max_level": 12, + "spell_class": "EARTHSHAPER", + "base_casting_time": 500, + "final_casting_time": 300, + "casting_time_increment": -17, + "energy_source": "MANA", + "base_energy_cost": 150, + "energy_increment": 75, + "final_energy_cost": 1000, + "difficulty": 5 + }, + { + "id": "eshaper_shardspray", + "type": "SPELL", + "name": "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" ], + "effect": "cone_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 3, + "base_casting_time": 100, + "base_energy_cost": 100, + "max_level": 20, + "min_damage": 10, + "max_damage": 60, + "damage_increment": 2, + "damage_type": "cut", + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5, + "min_range": 1, + "max_range": 10, + "range_increment": 0.5 + }, + { + "id": "eshaper_piercing_bolt", + "type": "SPELL", + "name": "Piercing Bolt", + "description": "This spell projects a piercing rod of conjured iron at those that dare oppose you.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC", "LOUD" ], + "effect": "projectile_attack", + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 115, + "difficulty": 2, + "max_level": 20, + "min_damage": 20, + "max_damage": 50, + "damage_increment": 3, + "damage_type": "stab", + "min_range": 8, + "max_range": 26, + "range_increment": 1.5 + }, + { + "id": "eshaper_shardstorm", + "type": "SPELL", + "name": "Shardstorm", + "description": "Creates an omnidirectional spray of razor sharp metal shards all around you.", + "valid_targets": [ "hostile", "ally", "ground" ], + "flags": [ "SOMATIC", "LOUD" ], + "min_damage": 20, + "max_damage": 60, + "damage_increment": 1.5, + "damage_type": "cut", + "min_aoe": 1, + "max_aoe": 6, + "aoe_increment": 0.25, + "base_energy_cost": 200, + "spell_class": "EARTHSHAPER", + "difficulty": 4, + "max_level": 20, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "target_attack" + }, + { + "id": "eshaper_rockbolt", + "type": "SPELL", + "name": "Rockbolt", + "description": "Fires a conjured stone projectile at high velocity.", + "valid_targets": [ "hostile", "ally" ], + "flags": [ "SOMATIC", "LOUD" ], + "min_damage": 5, + "damage_increment": 1.5, + "damage_type": "bash", + "max_damage": 26, + "min_range": 5, + "range_increment": 0.5, + "max_range": 15, + "base_energy_cost": 50, + "spell_class": "EARTHSHAPER", + "difficulty": 1, + "max_level": 20, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "projectile_attack" + }, + { + "id": "move_earth", + "type": "SPELL", + "name": "Move Earth", + "description": "Your essense flows around you, and the earth follows.", + "valid_targets": [ "hostile", "ally", "ground", "self" ], + "flags": [ "SOMATIC", "LOUD" ], + "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": "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", "CONCENTRATE" ] + }, + { + "id": "lava_bomb_shrapnel", + "type": "SPELL", + "name": "Lava Bomb Shrapnel", + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ally", "self", "ground" ], + "damage_type": "cut", + "max_level": 30, + "min_damage": 5, + "max_damage": 65, + "damage_increment": 2, + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.1 + }, + { + "id": "lava_bomb_heat", + "type": "SPELL", + "name": "Lava Bomb Heat", + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "projectile_attack", + "valid_targets": [ "hostile", "ally", "self", "ground" ], + "damage_type": "fire", + "max_level": 30, + "min_damage": 10, + "max_damage": 90, + "damage_increment": 2.25, + "min_aoe": 3, + "max_aoe": 5, + "aoe_increment": 0.1 + }, + { + "id": "lava_bomb_ter", + "type": "SPELL", + "name": "Lava Bomb Terrain", + "description": "This is a sub spell for the Lava Bomb spell.", + "effect": "ter_transform", + "effect_str": "lava_bomb", + "max_level": 30, + "min_aoe": 0, + "max_aoe": 2, + "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": "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": 30, + "difficulty": 12, + "min_damage": 20, + "max_damage": 140, + "damage_increment": 4, + "min_range": 6, + "max_range": 10, + "range_increment": 0.2, + "base_casting_time": 350, + "base_energy_cost": 1000, + "energy_source": "MANA", + "flags": [ "VERBAL", "SOMATIC", "LOUD" ], + "extra_effects": [ { "id": "lava_bomb_shrapnel" }, { "id": "lava_bomb_heat" }, { "id": "lava_bomb_ter" } ] + }, + { + "id": "earthshaper_stoneskin", + "type": "SPELL", + "name": "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" ], + "spell_class": "EARTHSHAPER", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 200, + "max_level": 20, + "min_damage": 1, + "max_damage": 1, + "min_duration": 10000, + "max_duration": 100000, + "duration_increment": 2000 + }, + { + "id": "earthshaper_pillar", + "type": "SPELL", + "name": "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" ], + "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": 3, + "max_range": 6, + "range_increment": 0.3 + }, + { + "id": "earthshaper_pillar_side_effect", + "type": "SPELL", + "name": "Pillar Side Effect", + "description": "Bash effect that follows, levels reduce damage and AoE.", + "valid_targets": [ "ground" ], + "effect": "bash", + "flags": [ "IGNORE_WALLS", "SILENT" ], + "max_level": 10, + "min_damage": 80, + "max_damage": 20, + "damage_increment": -6, + "min_aoe": 6, + "max_aoe": 1, + "aoe_increment": -0.5 + } +] diff --git a/Spells/item_only.json b/Spells/item_only.json new file mode 100644 index 0000000..da4a4c9 --- /dev/null +++ b/Spells/item_only.json @@ -0,0 +1,107 @@ +[ + { + "id": "twisted_restore", + "type": "SPELL", + "name": "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" ], + "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": "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" ], + "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": "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", + "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": "Recover Mana", + "description": "You regain mana.", + "valid_targets": [ "self" ], + "min_damage": 250, + "damage_increment": 50.0, + "max_damage": 2000, + "max_level": 35, + "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" ], + "difficulty": 3 + }, + { + "id": "mana_doping", + "type": "SPELL", + "name": { "str": "Pain" }, + "description": "Increases pain", + "valid_targets": [ "self" ], + "flags": [ "SILENT", "NO_LEGS", "NO_HANDS" ], + "//": "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.0, + "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/Spells/kelvinist.json b/Spells/kelvinist.json new file mode 100644 index 0000000..9299e3a --- /dev/null +++ b/Spells/kelvinist.json @@ -0,0 +1,308 @@ +[ + { + "id": "point_flare", + "type": "SPELL", + "name": "Point Flare", + "description": "Causes an intense heat at the location, damaging the target.", + "valid_targets": [ "hostile" ], + "flags": [ "CONCENTRATE", "SOMATIC", "LOUD" ], + "effect": "target_attack", + "damage_type": "fire", + "min_damage": 16, + "damage_increment": 4.0, + "max_damage": 80, + "min_range": 3, + "range_increment": 0.5, + "max_range": 11, + "base_energy_cost": 75, + "spell_class": "KELVINIST", + "difficulty": 4, + "max_level": 16, + "base_casting_time": 300, + "energy_source": "MANA" + }, + { + "id": "create_lighter", + "type": "SPELL", + "name": "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": [ "none" ], + "flags": [ "NO_LEGS" ], + "effect": "spawn_item", + "effect_str": "finger_firelighter", + "min_damage": 1, + "max_damage": 1, + "min_duration": 6000, + "max_duration": 60000, + "duration_increment": 5400, + "max_level": 10, + "spell_class": "KELVINIST", + "energy_source": "MANA", + "base_casting_time": 250, + "final_casting_time": 50, + "casting_time_increment": -20.0, + "base_energy_cost": 65, + "difficulty": 0 + }, + { + "id": "ice_spike", + "type": "SPELL", + "name": "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", "VERBAL" ], + "effect": "target_attack", + "damage_type": "cold", + "min_damage": 30, + "max_damage": 100, + "damage_increment": 3.5, + "min_range": 4, + "max_range": 12, + "range_increment": 0.6, + "max_level": 20, + "difficulty": 6, + "spell_class": "KELVINIST", + "base_casting_time": 200, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "fireball", + "type": "SPELL", + "name": "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", "VERBAL", "NO_LEGS" ], + "max_level": 20, + "min_damage": 24, + "max_damage": 68, + "damage_increment": 1.2, + "min_aoe": 3, + "max_aoe": 5, + "aoe_increment": 0.1, + "min_range": 6, + "max_range": 20, + "range_increment": 1.0, + "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": "Cone of Cold", + "description": "You blast a cone of frigid air toward the target.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "SOMATIC", "VERBAL" ], + "max_level": 20, + "min_damage": 24, + "max_damage": 68, + "damage_increment": 1.2, + "min_aoe": 30, + "max_aoe": 60, + "aoe_increment": 1.4, + "min_range": 6, + "max_range": 20, + "range_increment": 1.0, + "spell_class": "KELVINIST", + "base_casting_time": 200, + "base_energy_cost": 350, + "energy_source": "MANA", + "difficulty": 4, + "field_id": "fd_cold_air2", + "min_field_intensity": 0, + "max_field_intensity": 4, + "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", "VERBAL" ], + "max_level": 20, + "min_damage": 8, + "max_damage": 65, + "damage_increment": 4.0, + "min_range": 3, + "max_range": 5, + "range_increment": 0.25, + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5.0, + "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": "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", "VERBAL" ], + "max_level": 20, + "min_damage": 8, + "max_damage": 65, + "damage_increment": 4.0, + "min_range": 3, + "max_range": 5, + "range_increment": 0.25, + "min_aoe": 25, + "max_aoe": 60, + "aoe_increment": 5.0, + "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": "Chilling Touch", + "description": "Freezes the touched target with intense cold.", + "valid_targets": [ "hostile" ], + "flags": [ "SOMATIC" ], + "effect": "target_attack", + "effect_str": "cold", + "affected_body_parts": [ "torso" ], + "damage_type": "cold", + "min_damage": 3, + "damage_increment": 4.0, + "max_damage": 40, + "min_range": 1, + "max_range": 1, + "base_energy_cost": 50, + "spell_class": "KELVINIST", + "difficulty": 1, + "max_level": 10, + "base_casting_time": 100, + "energy_source": "MANA" + }, + { + "id": "glide_ice", + "type": "SPELL", + "name": "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" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "ice_gliders", + "energy_source": "MANA", + "spell_class": "KELVINIST", + "difficulty": 2, + "max_level": 20, + "base_casting_time": 650, + "base_energy_cost": 100, + "min_duration": 10000, + "max_duration": 100000, + "duration_increment": 2000 + }, + { + "id": "hoary_blast", + "type": "SPELL", + "name": "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", "VERBAL", "NO_LEGS" ], + "max_level": 20, + "min_damage": 24, + "max_damage": 68, + "damage_increment": 1.2, + "min_aoe": 3, + "max_aoe": 5, + "aoe_increment": 0.1, + "min_range": 6, + "max_range": 20, + "range_increment": 1.0, + "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": "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", "VERBAL" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "shield_ice", + "energy_source": "MANA", + "spell_class": "KELVINIST", + "difficulty": 2, + "max_level": 20, + "base_casting_time": 150, + "base_energy_cost": 100, + "min_duration": 10000, + "max_duration": 50000, + "duration_increment": 3000 + }, + { + "id": "frost_armor", + "type": "SPELL", + "name": "Frost Armor", + "description": "Covers you in a thin layer of magical ice to protect you from harm.", + "valid_targets": [ "self" ], + "flags": [ "NO_LEGS", "CONCENTRATE", "VERBAL", "SOMATIC" ], + "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": 20, + "base_casting_time": 200, + "base_energy_cost": 550, + "min_duration": 10000, + "max_duration": 50000, + "duration_increment": 3000 + }, + { + "id": "create_rune_kelvinist", + "type": "SPELL", + "name": "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", "CONCENTRATE" ] + } +] diff --git a/Spells/lizardfolk_shaman.json b/Spells/lizardfolk_shaman.json new file mode 100644 index 0000000..4a5e6c0 --- /dev/null +++ b/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" ], + "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" ], + "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/Spells/magus.json b/Spells/magus.json new file mode 100644 index 0000000..f6d54d3 --- /dev/null +++ b/Spells/magus.json @@ -0,0 +1,278 @@ +[ + { + "id": "magic_missile", + "type": "SPELL", + "name": "Magic Missile", + "description": "I cast Magic Missile at the darkness!", + "valid_targets": [ "hostile" ], + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "SILENT" ], + "min_damage": 1, + "damage_increment": 1.5, + "damage_type": "none", + "max_damage": 20, + "min_range": 8, + "range_increment": 0.8, + "max_range": 20, + "base_energy_cost": 50, + "spell_class": "MAGUS", + "difficulty": 1, + "max_level": 15, + "base_casting_time": 100, + "energy_source": "MANA", + "effect": "target_attack" + }, + { + "id": "phase_door", + "type": "SPELL", + "name": "Phase Door", + "description": "Teleports you in a random direction a short distance.", + "effect": "teleport_random", + "valid_targets": [ "none" ], + "flags": [ "SOMATIC", "SILENT", "NO_LEGS" ], + "min_range": 3, + "max_range": 4, + "range_increment": 0.1, + "min_aoe": 2, + "max_aoe": 4, + "aoe_increment": 0.2, + "max_level": 10, + "difficulty": 2, + "spell_class": "MAGUS", + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 100 + }, + { + "id": "gravity_well", + "type": "SPELL", + "name": "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", "VERBAL", "CONCENTRATE" ], + "min_damage": 20, + "max_damage": 45, + "damage_increment": 1.2, + "damage_type": "bash", + "min_range": 5, + "max_range": 15, + "range_increment": 0.5, + "min_aoe": 1, + "max_aoe": 6, + "aoe_increment": 0.25, + "max_level": 20, + "difficulty": 10, + "spell_class": "MAGUS", + "base_casting_time": 600, + "energy_source": "MANA", + "base_energy_cost": 350 + }, + { + "id": "magus_mana_blast", + "type": "SPELL", + "name": "Mana Blast", + "description": "A blast of concentrated magical power that obliterates a large area.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS" ], + "effect": "projectile_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 150, + "base_energy_cost": 200, + "difficulty": 5, + "max_level": 20, + "min_damage": 20, + "max_damage": 80, + "damage_increment": 3, + "damage_type": "none", + "min_aoe": 1, + "max_aoe": 3, + "aoe_increment": 0.25, + "min_range": 5, + "max_range": 20, + "range_increment": 1 + }, + { + "id": "magus_mana_bolt", + "type": "SPELL", + "name": "Mana Bolt", + "description": "A bolt of magical power that only damages your foes.", + "valid_targets": [ "hostile" ], + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS" ], + "effect": "projectile_attack", + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_casting_time": 100, + "base_energy_cost": 150, + "difficulty": 5, + "max_level": 20, + "min_damage": 20, + "max_damage": 120, + "damage_increment": 5, + "damage_type": "none", + "min_range": 5, + "max_range": 30, + "range_increment": 1.5 + }, + { + "id": "magus_haste", + "type": "SPELL", + "name": "Haste", + "description": "This spell gives you an enormous boost of speed lasting a short period of time.", + "valid_targets": [ "self" ], + "flags": [ "LOUD", "VERBAL", "SOMATIC" ], + "effect": "target_attack", + "effect_str": "haste", + "spell_class": "MAGUS", + "energy_source": "MANA", + "difficulty": 4, + "base_casting_time": 200, + "base_energy_cost": 300, + "max_level": 20, + "min_duration": 600, + "max_duration": 12000, + "duration_increment": 600 + }, + { + "id": "magus_mana_beam", + "type": "SPELL", + "name": "Mana Beam", + "description": "A beam of focused magical power that damages any foes in its path.", + "valid_targets": [ "hostile", "ground" ], + "flags": [ "VERBAL", "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": 20, + "min_damage": 15, + "max_damage": 60, + "damage_increment": 3, + "damage_type": "none", + "min_aoe": 1, + "max_aoe": 1, + "min_range": 5, + "max_range": 20, + "range_increment": 1 + }, + { + "id": "magus_escape", + "type": "SPELL", + "name": "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", "VERBAL" ], + "min_aoe": 5, + "max_aoe": 10, + "aoe_increment": 0.25, + "min_range": 25, + "max_range": 35, + "range_increment": 0.5, + "max_level": 10, + "difficulty": 5, + "spell_class": "MAGUS", + "base_casting_time": 100, + "energy_source": "MANA", + "base_energy_cost": 250 + }, + { + "id": "create_rune_magus", + "type": "SPELL", + "name": "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", "CONCENTRATE" ] + }, + { + "id": "cats_grace", + "type": "SPELL", + "name": "Cat's Grace", + "description": "You become more graceful, agile, and coordinated.", + "valid_targets": [ "self" ], + "min_duration": 6000, + "max_duration": 360000, + "duration_increment": 6000, + "max_level": 30, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "CONCENTRATE" ], + "effect": "target_attack", + "effect_str": "cats_grace" + }, + { + "id": "eagles_sight", + "type": "SPELL", + "name": "Eagle's Sight", + "description": "You gain the perception of an eagle.", + "valid_targets": [ "self" ], + "min_duration": 6000, + "max_duration": 360000, + "duration_increment": 6000, + "max_level": 30, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "CONCENTRATE" ], + "effect": "target_attack", + "effect_str": "eagles_sight" + }, + { + "id": "ogres_strength", + "type": "SPELL", + "name": "Ogre's Strength", + "description": "You gain the strength of an ogre.", + "valid_targets": [ "self" ], + "min_duration": 6000, + "max_duration": 360000, + "duration_increment": 6000, + "max_level": 30, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "CONCENTRATE" ], + "effect": "target_attack", + "effect_str": "ogres_strength" + }, + { + "id": "foxs_cunning", + "type": "SPELL", + "name": "Fox's Cunning", + "description": "You become wily like a fox.", + "valid_targets": [ "self" ], + "min_duration": 6000, + "max_duration": 360000, + "duration_increment": 6000, + "max_level": 30, + "spell_class": "MAGUS", + "energy_source": "MANA", + "base_energy_cost": 500, + "base_casting_time": 1000, + "difficulty": 5, + "flags": [ "VERBAL", "SOMATIC", "NO_LEGS", "CONCENTRATE" ], + "effect": "target_attack", + "effect_str": "foxs_cunning" + } +] diff --git a/Spells/manatouched.json b/Spells/manatouched.json new file mode 100644 index 0000000..108b40c --- /dev/null +++ b/Spells/manatouched.json @@ -0,0 +1,47 @@ +[ + { + "id": "manatouched_crystal", + "type": "SPELL", + "name": "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" ], + "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": "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": 6, + "max_damage": 18, + "damage_increment": 1, + "max_level": 12, + "min_range": 6, + "max_range": 12, + "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/Spells/monsterspells.json b/Spells/monsterspells.json new file mode 100644 index 0000000..f9e5eab --- /dev/null +++ b/Spells/monsterspells.json @@ -0,0 +1,114 @@ +[ + { + "id": "blood_suck", + "type": "SPELL", + "name": { "str": "Blood Suck" }, + "description": "Sucks blood from one foe.", + "valid_targets": [ "hostile" ], + "flags": [ "NO_HANDS", "NO_LEGS" ], + "damage_type": "stab", + "min_damage": 5, + "max_damage": 10, + "damage_increment": 1.0, + "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" ], + "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.0, + "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" ], + "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" + } +] diff --git a/Spells/stormshaper.json b/Spells/stormshaper.json new file mode 100644 index 0000000..5a077e3 --- /dev/null +++ b/Spells/stormshaper.json @@ -0,0 +1,287 @@ +[ + { + "id": "jolt", + "type": "SPELL", + "name": "Jolt", + "description": "A short-ranged fan of electricity shoots from your fingers.", + "effect": "cone_attack", + "valid_targets": [ "ally", "hostile", "ground" ], + "flags": [ "LOUD", "SOMATIC" ], + "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, + "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": "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": 35, + "min_damage": 8, + "max_damage": 200, + "damage_increment": 6, + "min_range": 4, + "max_range": 8, + "range_increment": 0.25, + "difficulty": 6, + "min_aoe": 1, + "max_aoe": 1, + "spell_class": "STORMSHAPER", + "base_casting_time": 200, + "final_casting_time": 100, + "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": "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" ], + "max_level": 10, + "min_damage": 24, + "max_damage": 68, + "damage_increment": 1.2, + "min_aoe": 30, + "max_aoe": 60, + "aoe_increment": 1.4, + "min_range": 6, + "max_range": 20, + "range_increment": 1, + "min_duration": 200, + "max_duration": 1000, + "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": "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": "target_attack", + "effect_str": "enchant_windrun", + "affected_body_parts": [ "torso" ], + "valid_targets": [ "ally", "self" ], + "flags": [ "CONCENTRATE", "SILENT", "VERBAL", "NO_HANDS" ], + "max_level": 10, + "min_duration": 2000, + "max_duration": 10000, + "duration_increment": 1000, + "min_range": 1, + "max_range": 20, + "range_increment": 1 + }, + { + "id": "storm_hammer", + "type": "SPELL", + "name": "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" ], + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "stormhammer", + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 3, + "max_level": 20, + "base_casting_time": 150, + "base_energy_cost": 100, + "min_duration": 10000, + "max_duration": 50000, + "duration_increment": 2000 + }, + { + "id": "create_rune_stormshaper", + "type": "SPELL", + "name": "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", "CONCENTRATE" ] + }, + { + "id": "lightning_blast", + "type": "SPELL", + "name": "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" ], + "min_aoe": 1, + "max_aoe": 2, + "aoe_increment": 0.05, + "max_level": 35, + "min_damage": 4, + "max_damage": 100, + "min_range": 6, + "max_range": 12, + "range_increment": 0.02, + "damage_increment": 3, + "difficulty": 10, + "spell_class": "STORMSHAPER", + "energy_source": "MANA", + "base_casting_time": 120, + "final_casting_time": 50, + "casting_time_increment": -5, + "base_energy_cost": 55, + "damage_type": "electric", + "sound_description": "a crackle", + "effect": "projectile_attack" + }, + { + "id": "lightning_storm", + "type": "SPELL", + "name": "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", "VERBAL", "SOMATIC", "NO_LEGS" ], + "min_aoe": 1, + "max_aoe": 2, + "aoe_increment": 0.05, + "max_level": 35, + "min_damage": 30, + "max_damage": 150, + "min_range": 6, + "max_range": 8, + "range_increment": 0.01, + "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": "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" ], + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 8, + "base_casting_time": 350, + "final_casting_time": 200, + "casting_time_increment": -5, + "base_energy_cost": 300, + "max_level": 30, + "min_damage": 15, + "max_damage": 60, + "damage_increment": 1.5, + "damage_type": "electric", + "min_aoe": 7, + "max_aoe": 7, + "min_range": 12, + "max_range": 24, + "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": "Ionization Thunderclap", + "description": "Adds the actual flashbang effect.", + "valid_targets": [ "hostile", "ground", "self", "ally" ], + "effect": "flashbang", + "flags": [ "LOUD" ], + "max_level": 30, + "min_range": 12, + "max_range": 24, + "range_increment": 0.4 + }, + { + "id": "stormshaper_wall_of_fog", + "type": "SPELL", + "name": "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" ], + "energy_source": "MANA", + "spell_class": "STORMSHAPER", + "difficulty": 2, + "base_casting_time": 125, + "base_energy_cost": 150, + "max_level": 10, + "min_aoe": 5, + "max_aoe": 10, + "aoe_increment": 0.5, + "min_range": 2, + "max_range": 4, + "range_increment": 0.2, + "min_duration": 200, + "max_duration": 800, + "duration_increment": 60, + "field_id": "fd_fog", + "field_chance": 1, + "min_field_intensity": 3, + "max_field_intensity": 3, + "field_intensity_variance": 1 + } +] diff --git a/Spells/technomancer.json b/Spells/technomancer.json new file mode 100644 index 0000000..47214f7 --- /dev/null +++ b/Spells/technomancer.json @@ -0,0 +1,416 @@ +[ + { + "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", "SOMATIC", "NO_LEGS" ], + "effect": "target_attack", + "effect_str": "bless", + "affected_body_parts": [ "torso" ], + "base_casting_time": 100, + "base_energy_cost": 100, + "energy_source": "MANA", + "spell_class": "TECHNOMANCER", + "difficulty": 1, + "max_level": 10, + "min_aoe": 0, + "max_aoe": 5, + "aoe_increment": 0.1, + "min_range": 1, + "max_range": 10, + "range_increment": 2.0, + "//": "duration is in moves", + "min_duration": 6000, + "max_duration": 10000, + "duration_increment": 400 + }, + { + "id": "invisibility", + "type": "SPELL", + "name": "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" ], + "effect": "target_attack", + "effect_str": "invisibility", + "spell_class": "TECHNOMANCER", + "difficulty": 4, + "base_casting_time": 100, + "base_energy_cost": 400, + "energy_source": "MANA", + "min_duration": 1250, + "max_duration": 6000, + "duration_increment": 250, + "max_level": 20 + }, + { + "id": "holy_blade", + "type": "SPELL", + "name": "Holy Blade", + "description": "This blade of light will cut through any evil it makes contact with!", + "valid_targets": [ "self" ], + "flags": [ "VERBAL", "NO_LEGS", "CONCENTRATE" ], + "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": 3000, + "max_duration": 9000, + "duration_increment": 3000, + "difficulty": 5, + "max_level": 20, + "spell_class": "TECHNOMANCER", + "energy_source": "MANA" + }, + { + "id": "spirit_armor", + "type": "SPELL", + "name": "Spiritual Armor", + "description": "Evil will not make it through your defenses if your faith is strong enough!", + "valid_targets": [ "self" ], + "flags": [ "VERBAL", "NO_LEGS", "CONCENTRATE", "SOMATIC" ], + "min_range": 0, + "max_range": 0, + "min_damage": 1, + "max_damage": 1, + "effect": "spawn_item", + "effect_str": "armor_lightplate", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 5, + "max_level": 20, + "base_casting_time": 350, + "base_energy_cost": 375, + "min_duration": 3000, + "max_duration": 9000, + "duration_increment": 3000 + }, + { + "id": "create_atomic_lamp", + "type": "SPELL", + "name": "Lamp", + "description": "Creates a magical lamp.", + "valid_targets": [ "none" ], + "flags": [ "VERBAL", "NO_LEGS", "CONCENTRATE" ], + "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, + "max_level": 20, + "base_casting_time": 200, + "base_energy_cost": 750, + "min_duration": 100000, + "max_duration": 1000000, + "duration_increment": 2000 + }, + { + "id": "recover_bionic_power", + "type": "SPELL", + "name": "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", "VERBAL", "SILENT" ], + "min_damage": 250, + "damage_increment": 50.0, + "max_damage": 15000, + "base_energy_cost": 250, + "energy_increment": 50.0, + "final_energy_cost": 15000, + "max_level": 10, + "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": "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", "CONCENTRATE" ] + }, + { + "id": "taze", + "type": "SPELL", + "name": "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.0, + "final_casting_time": 80, + "base_energy_cost": 50, + "energy_increment": -1.0, + "final_energy_cost": 30, + "max_level": 20, + "damage_type": "electric", + "min_damage": 10, + "max_damage": 30, + "damage_increment": 1.0, + "min_range": 1, + "max_range": 4, + "range_increment": 0.2 + }, + { + "id": "quantum_tunnel_lesser", + "type": "SPELL", + "name": "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" ], + "effect": "teleport_random", + "effect_str": "dazed", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 2, + "max_level": 20, + "base_casting_time": 100, + "casting_time_increment": -1.0, + "final_casting_time": 80, + "base_energy_cost": 100, + "energy_increment": -1.0, + "final_energy_cost": 80, + "min_aoe": 4, + "max_aoe": 1, + "aoe_increment": -0.25, + "min_range": 5, + "max_range": 10, + "range_increment": 0.25, + "min_duration": 100, + "max_duration": 100 + }, + { + "id": "synaptic_stimulation", + "type": "SPELL", + "name": "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", "VERBAL" ], + "effect": "target_attack", + "effect_str": "synaptic_stim", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 5, + "max_level": 20, + "base_casting_time": 500, + "casting_time_increment": -2.5, + "final_casting_time": 450, + "base_energy_cost": 500, + "energy_increment": -5.0, + "final_energy_cost": 400, + "min_duration": 180000, + "max_duration": 360000, + "duration_increment": 10000 + }, + { + "id": "laze", + "type": "SPELL", + "name": "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": 20, + "base_casting_time": 100, + "casting_time_increment": -1.0, + "final_casting_time": 80, + "base_energy_cost": 150, + "energy_increment": -2.0, + "final_energy_cost": 110, + "min_damage": 15, + "max_damage": 60, + "damage_increment": 2.5, + "damage_type": "fire", + "min_range": 10, + "max_range": 25, + "range_increment": 1.0 + }, + { + "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", "VERBAL", "CONCENTRATE" ], + "effect": "summon", + "effect_str": "mon_animated_blade", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 6, + "max_level": 20, + "base_casting_time": 200, + "casting_time_increment": -2.0, + "final_casting_time": 160, + "base_energy_cost": 350, + "energy_increment": -2.0, + "final_energy_cost": 310, + "min_damage": 1, + "max_damage": 2, + "damage_increment": 0.15, + "min_range": 1, + "max_range": 5, + "range_increment": 0.25, + "min_aoe": 3, + "max_aoe": 3, + "min_duration": 1000, + "max_duration": 4500, + "duration_increment": 200 + }, + { + "id": "mirror_image", + "type": "SPELL", + "name": "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", "VERBAL", "CONCENTRATE" ], + "effect": "summon", + "effect_str": "mon_mirror_image", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 4, + "max_level": 20, + "base_casting_time": 150, + "casting_time_increment": -1.0, + "final_casting_time": 130, + "base_energy_cost": 200, + "energy_increment": -2.0, + "final_energy_cost": 160, + "min_damage": 1, + "max_damage": 5, + "damage_increment": 0.5, + "min_range": 1, + "max_range": 10, + "range_increment": 0.5, + "min_aoe": 3, + "max_aoe": 3, + "min_duration": 3000, + "max_duration": 6000, + "duration_increment": 200 + }, + { + "id": "holographic_transposition", + "type": "SPELL", + "name": "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", "SOMATIC", "SWAP_POS" ], + "effect": "target_attack", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "difficulty": 3, + "max_level": 20, + "base_casting_time": 100, + "casting_time_increment": -1.0, + "final_casting_time": 80, + "base_energy_cost": 150, + "energy_increment": -2.0, + "final_energy_cost": 100, + "min_range": 20, + "max_range": 30, + "range_increment": 1.0 + }, + { + "id": "summon_floating_disk", + "type": "SPELL", + "name": "Summon floating disk", + "description": "Summons a floating disk that is sworn to carry your burdens.", + "valid_targets": [ "ground" ], + "flags": [ "SOMATIC", "VERBAL", "CONCENTRATE" ], + "effect": "summon_vehicle", + "spell_class": "TECHNOMANCER", + "energy_source": "MANA", + "effect_str": "floating_disk", + "difficulty": 5, + "max_level": 20, + "base_casting_time": 120, + "base_energy_cost": 500, + "min_range": 1, + "max_range": 10, + "range_increment": 1, + "min_duration": 400000, + "max_duration": 9600000, + "duration_increment": 200 + }, + { + "id": "overcharge_burn", + "type": "SPELL", + "name": "Overcharge Burn", + "description": "The side effects of casting the overcharge spell.", + "message": "", + "effect": "spawn_item", + "effect_str": "overcharge_burn_scar", + "min_damage": 1, + "max_damage": 1, + "min_duration": 500, + "duration_increment": -10, + "max_duration": 200, + "max_level": 30, + "valid_targets": [ "none" ] + }, + { + "id": "overcharge_eyes", + "type": "SPELL", + "name": "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": 90, + "damage_increment": 5.0, + "max_damage": 200, + "min_range": 8, + "range_increment": 0.35, + "max_range": 20, + "min_aoe": 10, + "aoe_increment": 0.17, + "max_aoe": 15, + "base_energy_cost": 500, + "final_energy_cost": 500, + "spell_class": "TECHNOMANCER", + "energy_source": "BIONIC", + "damage_type": "cut", + "difficulty": 1, + "max_level": 30, + "base_casting_time": 120, + "final_casting_time": 120, + "valid_targets": [ "hostile", "ground" ], + "flags": [ "LOUD", "VERBAL", "NO_HANDS", "NO_LEGS" ] + } +] diff --git a/bionics.json b/bionics.json new file mode 100644 index 0000000..38063ac --- /dev/null +++ b/bionics.json @@ -0,0 +1,15 @@ +[ + { + "id": "bio_fuel_cell_blood", + "type": "bionic", + "name": { "str": "Blood Power Generator CBM" }, + "description": "Embedded into your back and connected to your bionic power supply is a powerfull spell focus able to consume blood from dead creatures to produce bionic power. It can store up to 100 mL of blood.", + "occupied_bodyparts": [ [ "torso", 8 ] ], + "fuel_options": [ "blood", "dragon_blood", "tainted_blood", "mana_infused_blood" ], + "fuel_capacity": 100, + "fuel_efficiency": 0.6, + "exothermic_power_gen": true, + "time": 6, + "flags": [ "BIONIC_TOGGLED", "BIONIC_POWER_SOURCE" ] + } +] diff --git a/construction_group.json b/construction_group.json new file mode 100644 index 0000000..9540877 --- /dev/null +++ b/construction_group.json @@ -0,0 +1,7 @@ +[ + { + "type": "construction_group", + "id": "build_translocator_gate", + "name": "Build Translocator Gate" + } +] diff --git a/cooking_components.json b/cooking_components.json new file mode 100644 index 0000000..4ac666e --- /dev/null +++ b/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/effects/effects.json b/effects/effects.json new file mode 100644 index 0000000..6b5cee4 --- /dev/null +++ b/effects/effects.json @@ -0,0 +1,263 @@ +[ + { + "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": { "speed_mod": [ 20 ], "stamina_min": [ 10 ] } + }, + { + "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": [ 4 ], "speed_mod": [ 300 ] } + }, + { + "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": [ 30 ] } + }, + { + "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", + "removes_effects": [ "eagles_sight", "cats_grace", "foxs_cunning" ], + "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", + "removes_effects": [ "ogres_strength", "cats_grace", "foxs_cunning" ], + "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", + "removes_effects": [ "eagles_sight", "eagles_sight", "foxs_cunning" ], + "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", + "removes_effects": [ "eagles_sight", "cats_grace", "ogres_strength" ], + "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 ] } + } +] diff --git a/furniture.json b/furniture.json new file mode 100644 index 0000000..a81157b --- /dev/null +++ b/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": 300000, "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/harvest.json b/harvest.json new file mode 100644 index 0000000..216067c --- /dev/null +++ b/harvest.json @@ -0,0 +1,348 @@ +[ + { + "id": "owlbear", + "//": "identical to mammal_large_fur except that half the fur has been replaced with feathers", + "type": "harvest", + "entries": [ + { "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_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_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_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": "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": "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": "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": "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": "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": "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", "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": "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_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": "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": "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", "type": "bone", "mass_ratio": 0.15 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.00035 }, + { "drop": "mutant_fat", "type": "flesh", "mass_ratio": 0.07 }, + { "drop": "adrenal_gland_large", "type": "bionic", "max": 2 } + ] + }, + { + "id": "dragon_black", + "type": "harvest", + "entries": [ + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "dragon_blood", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat_dragon", "type": "flesh", "mass_ratio": 0.18 }, + { "drop": "dragon_black_scale", "type": "skin", "mass_ratio": 0.05 }, + { "drop": "black_dragon_hide_raw", "type": "skin", "mass_ratio": 0.1 }, + { "drop": "bone", "type": "bone", "mass_ratio": 0.1 } + ] + }, + { + "id": "zombie", + "//": "your bog standard zombie", + "type": "harvest", + "entries": [ + { "drop": "tainted_blood", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, + { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, + { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 }, + { "drop": "pheromone", "type": "bionic", "max": 1 } + ] + }, + { + "id": "zombie_leather", + "//": "any zombie that might drop leather. mostly animals.", + "type": "harvest", + "entries": [ + { "drop": "tainted_blood", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, + { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, + { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 }, + { "drop": "raw_tainted_leather", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "pheromone", "type": "bionic", "max": 1 } + ] + }, + { + "id": "zombie_fur", + "//": "any zombie that might drop leather. mostly animals.", + "type": "harvest", + "entries": [ + { "drop": "tainted_blood", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.25 }, + { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.08 }, + { "drop": "bone_tainted", "type": "bone", "mass_ratio": 0.1 }, + { "drop": "raw_tainted_fur", "type": "skin", "mass_ratio": 0.02 }, + { "drop": "pheromone", "type": "bionic", "max": 1 } + ] + }, + { + "id": "zombie_meatslug", + "//": "no bones or organs", + "type": "harvest", + "entries": [ + { "drop": "tainted_blood", "type": "flesh", "mass_ratio": 0.2 }, + { "drop": "meat_tainted", "type": "flesh", "mass_ratio": 0.4 }, + { "drop": "fat_tainted", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "fat_tainted", "type": "offal", "mass_ratio": 0.1 } + ] + }, + { + "id": "human", + "//": "a monstrous horror, probably the most destructive entity you will ever see", + "type": "harvest", + "entries": [ + { "drop": "blood", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "human_flesh", "type": "flesh", "mass_ratio": 0.2 }, + { "drop": "hstomach", "scale_num": [ 1, 1 ], "max": 1, "type": "offal" }, + { "drop": "fat", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "bone_human", "type": "bone", "mass_ratio": 0.12 }, + { "drop": "sinew", "type": "bone", "mass_ratio": 0.001 }, + { "drop": "raw_leather", "type": "skin", "mass_ratio": 0.01 } + ] + }, + { + "id": "stirge", + "//": "mainly arachnid drops with leather and proboscis", + "type": "harvest", + "entries": [ + { "drop": "blood", "type": "flesh", "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": "tainted_blood", "type": "flesh", "mass_ratio": 0.1 }, + { "drop": "meat", "type": "flesh", "mass_ratio": 0.4 } + ] + }, + { + "id": "lizardfolk", + "type": "harvest", + "entries": [ + { "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/itemgroups/itemgroups.json b/itemgroups/itemgroups.json new file mode 100644 index 0000000..90bda24 --- /dev/null +++ b/itemgroups/itemgroups.json @@ -0,0 +1,1066 @@ +[ + { + "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": "religious_books", + "items": [ [ "priest_beginner", 1 ], [ "priest_advanced", 1 ], [ "druid_spellbook", 1 ], [ "summon_undead_spellbook", 1 ] ] + }, + { + "type": "item_group", + "id": "novels", + "items": [ [ "wizard_beginner", 3 ], [ "wizard_advanced", 1 ] ] + }, + { + "type": "item_group", + "id": "homebooks", + "items": [ { "group": "spellbook_loot_0", "prob": 4 } ] + }, + { + "type": "item_group", + "id": "manuals", + "items": [ { "group": "spellbook_loot_0", "prob": 3 }, { "group": "dragon_books", "prob": 4 } ] + }, + { + "type": "item_group", + "id": "lab_bookshelves", + "items": [ + { "group": "spellbook_loot_1", "prob": 3 }, + { "group": "magic_recipe_basic", "prob": 3 }, + { "group": "magic_recipe_advanced", "prob": 1 }, + { "group": "dragon_books", "prob": 3 } + ] + }, + { + "type": "item_group", + "id": "mansion_books", + "items": [ + { "group": "spellbook_loot_0", "prob": 6 }, + { "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": "spellbook_loot_1", "prob": 3 }, { "group": "dragon_books", "prob": 2 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare", + "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 }, + { "item": "m47a1", "prob": 25, "charges-min": 0, "charges-max": 6 } + ] + }, + { + "type": "item_group", + "id": "displays", + "items": [ + [ "mana_potion_lesser", 50 ], + [ "magi_staff_minor", 5 ], + [ "wizard_hat", 5 ], + [ "cauldron_demon_chitin", 3 ], + [ "manatouched_serum", 3 ] + ] + }, + { + "id": "coffee_display_2", + "type": "item_group", + "items": [ [ "mana_potion_lesser", 10 ] ] + }, + { + "type": "item_group", + "id": "bar_alcohol", + "items": [ [ "mana_potion_lesser", 20 ], [ "manatouched_serum", 1 ] ] + }, + { + "type": "item_group", + "id": "bar_fridge", + "items": [ [ "mana_potion_lesser", 5 ] ] + }, + { + "type": "item_group", + "id": "pizza_beer", + "items": [ [ "mana_potion_lesser", 5 ] ] + }, + { + "type": "item_group", + "id": "pizza_soda", + "items": [ [ "mana_potion_lesser", 3 ] ] + }, + { + "id": "groce_softdrink", + "type": "item_group", + "items": [ [ "mana_potion_lesser", 15 ] ] + }, + { + "id": "trash", + "type": "item_group", + "items": [ [ "summon_scroll_smudged", 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": 16 } + ] + }, + { + "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_fuel_cell_blood", 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": "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/itemgroups/recipe_books.json b/itemgroups/recipe_books.json new file mode 100644 index 0000000..551bdd1 --- /dev/null +++ b/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 ] ] + } +] diff --git a/itemgroups/spellbooks.json b/itemgroups/spellbooks.json new file mode 100644 index 0000000..c57a414 --- /dev/null +++ b/itemgroups/spellbooks.json @@ -0,0 +1,197 @@ +[ + { + "id": "spell_scroll_tier_0", + "type": "item_group", + "items": [ + [ "summon_scroll_smudged", 10 ], + [ "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 ] + ] + }, + { + "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 ] + ] + }, + { + "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 ] + ] + }, + { + "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 ] ] + }, + { + "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/items/alchemy_items.json b/items/alchemy_items.json new file mode 100644 index 0000000..9347dfc --- /dev/null +++ b/items/alchemy_items.json @@ -0,0 +1,284 @@ +[ + { + "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": "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": 1500, + "price_postapoc": 100, + "material": [ "copper", "wood" ], + "symbol": "[", + "color": "brown", + "covers": [ "head" ], + "coverage": 5, + "encumbrance": 1, + "warmth": 0, + "material_thickness": 1, + "flags": [ "BELTED" ], + "qualities": [ [ "MANA_FOCUS", 1 ] ] + }, + { + "id": "stone_chisel", + "type": "TOOL", + "name": { "str": "stone chisel" }, + "looks_like": "chisel", + "description": "This is a short stone chisel. It can be used to engrave on stone, wood, or soft metals.", + "weight": "660 g", + "volume": "250 ml", + "price": 1600, + "to_hit": 2, + "bashing": 2, + "cutting": 1, + "material": "stone", + "symbol": ";", + "color": "light_gray", + "qualities": [ [ "CHISEL", 1 ] ], + "flags": [ "BELT_CLIP" ] + }, + { + "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": 2000 + }, + { + "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": 1 + }, + { + "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": 125000, + "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" ] + }, + { + "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": 125000, + "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": "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": 12 + }, + { + "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": 1 + }, + { + "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", + "freezing_point": -100 + }, + { + "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": 2000, + "symbol": ",", + "color": "red", + "to_hit": -1, + "material": [ "flesh" ], + "cutting": 7, + "flags": [ "SPEAR", "SHEATH_KNIFE" ] + }, + { + "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, + "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, + "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." + }, + { + "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": [ "SPEAR", "SHEATH_KNIFE" ], + "price": 1500 + }, + { + "type": "AMMO", + "id": "alumentum", + "category": "spare_parts", + "price": 900, + "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. One of the very few magical materials that is still produced in any quantity today due to its usefulness.", + "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/items/ammo_types.json b/items/ammo_types.json new file mode 100644 index 0000000..db7495c --- /dev/null +++ b/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": "tainted_blood" + }, + { + "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/items/archery.json b/items/archery.json new file mode 100644 index 0000000..2c254a3 --- /dev/null +++ b/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": 160000, + "material": [ "orichalcum_metal", "gold", "wood" ], + "flags": [ "FIRE_TWOHAND", "STR_DRAW", "RELOAD_AND_SHOOT", "PRIMITIVE_RANGED_WEAPON", "BELTED", "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": 3500, + "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, + "effects": [ "RECOVER_65" ] + } +] diff --git a/items/armor.json b/items/armor.json new file mode 100644 index 0000000..0d6578b --- /dev/null +++ b/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": 50000, + "price_postapoc": 5000, + "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": 120000, + "price_postapoc": 12000, + "material": [ "demon_chitin", "steel" ], + "weight": "31500 g", + "volume": "150 L", + "material_thickness": 6, + "environmental_protection": 8 + } +] diff --git a/items/bionics.json b/items/bionics.json new file mode 100644 index 0000000..bc4738d --- /dev/null +++ b/items/bionics.json @@ -0,0 +1,40 @@ +[ + { + "id": "bio_fuel_cell_blood", + "copy-from": "bionic_general", + "type": "BIONIC_ITEM", + "name": { "str": "Blood Power Generator CBM" }, + "description": "Using the latest advancement in technomancy this bionic is able to convert the innate energy stored in blood into bionic power. The stronger the blood the better. It can hold up to 100 mL of blood.", + "price": 450000, + "weight": "500 g", + "difficulty": 8 + }, + { + "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 mana ley lines. WARNING: for Technomancer use only. By using this spell you are waiving all liability of Frikken Laser Beams Inc. and its subsidiaries.", + "price": 450000, + "weight": "750 g", + "volume": "177 ml", + "difficulty": 8 + }, + { + "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 mana ley lines. WARNING: for Technomancer 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 ] ], + "canceled_mutations": [ "EARTHSHAPER" ], + "enchantments": [ "ench_bio_sneeze_beam" ], + "flags": [ "BIONIC_SHOCKPROOF" ] + } +] diff --git a/items/black_dragon_items.json b/items/black_dragon_items.json new file mode 100644 index 0000000..d055d4f --- /dev/null +++ b/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": 2500, + "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": 50000, + "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, + "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": 50000, + "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": 75000, + "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": 50000, + "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": 58000, + "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": 58000, + "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": 2000000, + "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": 2000000, + "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": 180000, + "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": 180000, + "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/items/books_lore.json b/items/books_lore.json new file mode 100644 index 0000000..858ce1f --- /dev/null +++ b/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, + "price": 800, + "material": [ "paper" ], + "symbol": "*", + "color": "light_gray" + } +] diff --git a/items/cast_spell_items.json b/items/cast_spell_items.json new file mode 100644 index 0000000..8ebb9e3 --- /dev/null +++ b/items/cast_spell_items.json @@ -0,0 +1,152 @@ +[ + { + "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": 2500, + "freezing_point": 40 + }, + { + "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": 10000 + }, + { + "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": 30000 + }, + { + "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": 3000, + "freezing_point": 40 + }, + { + "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": "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" + }, + { + "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": 2500, + "freezing_point": 10 + }, + { + "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/items/class_runes.json b/items/class_runes.json new file mode 100644 index 0000000..7f5f406 --- /dev/null +++ b/items/class_runes.json @@ -0,0 +1,110 @@ +[ + { + "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" ] + } +] diff --git a/items/comestibles.json b/items/comestibles.json new file mode 100644 index 0000000..2f8dbf3 --- /dev/null +++ b/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": 300000, + "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, + "flags": [ "TRADER_AVOID", "EDIBLE_FROZEN" ], + "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": 1400 + }, + { + "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": 400 + }, + { + "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": 100 + } +] diff --git a/items/constructs.json b/items/constructs.json new file mode 100644 index 0000000..910cb33 --- /dev/null +++ b/items/constructs.json @@ -0,0 +1,69 @@ +[ + { + "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": 10000, + "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": 100, + "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": 10000, + "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": 100000, + "material": [ "iron" ], + "weight": "945 kg", + "volume": "120 L", + "bashing": 30, + "to_hit": -5, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ] + } +] diff --git a/items/enchanted.json b/items/enchanted.json new file mode 100644 index 0000000..3795114 --- /dev/null +++ b/items/enchanted.json @@ -0,0 +1,76 @@ +[ + { + "id": "belt_str", + "copy-from": "leather_belt", + "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 } ] } ] } + }, + { + "id": "belt_haste", + "copy-from": "leather_belt", + "type": "ARMOR", + "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 } ] } ] + } + }, + { + "id": "magi_staff_minor", + "type": "GENERIC", + "symbol": "/", + "color": "brown", + "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": 40000, + "material": "wood", + "flags": [ "SHEATH_SPEAR", "ALWAYS_TWOHAND", "FRAGILE_MELEE", "MAGIC_FOCUS" ], + "relic_data": { + "passive_effects": [ { "has": "WIELD", "condition": "ALWAYS", "values": [ { "value": "MANA_CAP", "multiply": 0.2, "add": 750 } ] } ] + }, + "weight": "1400 g", + "volume": "3 L", + "bashing": 19, + "category": "weapons", + "to_hit": 3 + }, + { + "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": 9500, + "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/items/enchanted_belts.json b/items/enchanted_belts.json new file mode 100644 index 0000000..f9afecc --- /dev/null +++ b/items/enchanted_belts.json @@ -0,0 +1,195 @@ +[ + { + "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": 90000, + "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, + "draw_cost": 60, + "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.0 } ] } ] + } + }, + { + "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", + "draw_cost": 5, + "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": "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", + "draw_cost": 3, + "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 ] + ] + }, + { + "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": 350000, + "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." + } + } +] diff --git a/items/enchanted_boots.json b/items/enchanted_boots.json new file mode 100644 index 0000000..ebe454a --- /dev/null +++ b/items/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/items/enchanted_bracers.json b/items/enchanted_bracers.json new file mode 100644 index 0000000..8599bcb --- /dev/null +++ b/items/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": 20000, + "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/items/enchanted_gunmods.json b/items/enchanted_gunmods.json new file mode 100644 index 0000000..cfa48a8 --- /dev/null +++ b/items/enchanted_gunmods.json @@ -0,0 +1,83 @@ +[ + { + "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": 77000, + "to_hit": 2, + "bashing": 3, + "material": [ "steel" ], + "symbol": ":", + "color": "white", + "location": "muzzle", + "mod_targets": [ "pistol", "smg", "rifle" ], + "//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, + "price": 36000, + "material": [ "plastic", "steel" ], + "symbol": ":", + "color": "dark_gray", + "location": "rail", + "mod_targets": [ "smg", "rifle", "pistol", "shotgun", "crossbow", "launcher" ], + "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, + "price": 36000, + "material": [ "plastic", "steel" ], + "symbol": ":", + "color": "dark_gray", + "location": "underbarrel", + "mod_targets": [ "smg", "rifle", "pistol", "shotgun", "crossbow", "archery", "launcher" ], + "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, + "price": 68000, + "material": [ "plastic", "steel" ], + "symbol": ":", + "color": "dark_gray", + "location": "sights", + "mod_targets": [ "smg", "rifle", "shotgun", "pistol", "crossbow", "launcher" ], + "sight_dispersion": 21, + "aim_speed": 7, + "min_skills": [ [ "weapon", 2 ], [ "gun", 2 ] ], + "flags": [ "DISABLE_SIGHTS" ] + } +] diff --git a/items/enchanted_masks.json b/items/enchanted_masks.json new file mode 100644 index 0000000..ecc3618 --- /dev/null +++ b/items/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": 200000, + "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/items/enchanted_melee.json b/items/enchanted_melee.json new file mode 100644 index 0000000..d8eac34 --- /dev/null +++ b/items/enchanted_melee.json @@ -0,0 +1,921 @@ +[ + { + "type": "GENERIC", + "id": "cudgel_plus_one", + "copy-from": "cudgel", + "looks_like": "cudgel", + "name": "cudgel +1", + "proportional": { "price": 3.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "warhammer_plus_one", + "copy-from": "warhammer", + "looks_like": "warhammer", + "name": "warhammer +1", + "proportional": { "price": 3.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "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.0, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "id": "rune_biomancer_weapon", + "type": "GENERIC", + "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": 3900, + "to_hit": 2, + "bashing": 6, + "cutting": 15, + "material": [ "wood", "bone" ], + "symbol": "/", + "color": "light_gray", + "techniques": [ "WBLOCK_1", "IMPALE" ], + "qualities": [ [ "COOK", 1 ] ], + "flags": [ "SPEAR", "REACH_ATTACK", "DURABLE_MELEE", "SHEATH_SPEAR", "TRADER_AVOID", "MAGIC_FOCUS" ] + }, + { + "id": "rune_technomancer_weapon", + "type": "GENERIC", + "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": 3900, + "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", + "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": 3900, + "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" }, + "//": "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" }, + "//": "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" }, + "//": "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": 3000, + "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": "GENERIC", + "id": "springstaff-retracted", + "category": "weapons", + "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": 34000 + }, + { + "type": "GENERIC", + "id": "springstaff-extended", + "category": "weapons", + "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": 34000 + } +] diff --git a/items/enchanted_misc.json b/items/enchanted_misc.json new file mode 100644 index 0000000..a2a47ee --- /dev/null +++ b/items/enchanted_misc.json @@ -0,0 +1,188 @@ +[ + { + "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, + "price": 500000, + "material": [ "gold" ], + "symbol": "[", + "color": "yellow", + "initial_charges": 5, + "max_charges": 5, + "charges_per_use": 1, + "use_action": { "type": "picklock", "pick_quality": 50 } + }, + { + "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, + "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": "torch_lit", + "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, + "artifact_data": { "charge_type": "ARTC_TIME" }, + "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": 100000, + "to_hit": -2, + "material": [ "glass" ], + "symbol": ";", + "color": "red", + "ammo": "thread", + "initial_charges": 500, + "max_charges": 1000, + "artifact_data": { "charge_type": "ARTC_TIME" } + } +] diff --git a/items/enchanted_ranged.json b/items/enchanted_ranged.json new file mode 100644 index 0000000..a414e41 --- /dev/null +++ b/items/enchanted_ranged.json @@ -0,0 +1,92 @@ +[ + { + "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": 32000, + "material": [ "wood", "bone" ], + "flags": [ + "FIRE_TWOHAND", + "STR_DRAW", + "RELOAD_AND_SHOOT", + "PRIMITIVE_RANGED_WEAPON", + "BELTED", + "TRADER_AVOID", + "MAGIC_FOCUS", + "DURABLE_MELEE", + "WATER_FRIENDLY" + ], + "min_strength": 10, + "armor_data": { "covers": [ "torso" ], "coverage": 5, "material_thickness": 1, "encumbrance": 13 }, + "valid_mod_locations": [ [ "sights", 1 ], [ "accessories", 1 ], [ "dampening", 1 ] ] + }, + { + "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": 74000, + "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", + "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": 8000, + "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": 2, + "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/items/enchanted_rings.json b/items/enchanted_rings.json new file mode 100644 index 0000000..bc1da3d --- /dev/null +++ b/items/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, + "price": 5000, + "material": [ "copper" ], + "symbol": "[", + "color": "light_red", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT" ] + }, + { + "abstract": "mring_silver", + "type": "TOOL_ARMOR", + "name": "magic ring", + "description": "A generic silver magic ring.", + "weight": "5 g", + "volume": 0, + "price": 5000, + "material": [ "silver" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT" ] + }, + { + "abstract": "mring_gold", + "type": "TOOL_ARMOR", + "name": "magic ring", + "description": "A generic gold magic ring.", + "weight": "9 g", + "volume": 0, + "price": 5000, + "material": [ "gold" ], + "symbol": "[", + "color": "yellow", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT" ] + }, + { + "abstract": "mring_platinum", + "type": "TOOL_ARMOR", + "name": "magic ring", + "description": "A generic platinum magic ring.", + "weight": "11 g", + "volume": 0, + "price": 5000, + "material": [ "platinum" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "hand_either" ], + "coverage": 0, + "warmth": 0, + "flags": [ "WATER_FRIENDLY", "ALLOWS_NATURAL_ATTACKS", "FANCY", "ONLY_ONE", "SKINTIGHT" ] + }, + { + "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/items/enchanted_tokens.json b/items/enchanted_tokens.json new file mode 100644 index 0000000..21602b5 --- /dev/null +++ b/items/enchanted_tokens.json @@ -0,0 +1,168 @@ +[ + { + "abstract": "mtoken", + "name": "magic token", + "type": "GENERIC", + "category": "other", + "weight": "8 g", + "volume": "1 ml", + "price": 25000, + "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/items/enchanted_unarmed.json b/items/enchanted_unarmed.json new file mode 100644 index 0000000..f7acb6f --- /dev/null +++ b/items/enchanted_unarmed.json @@ -0,0 +1,113 @@ +[ + { + "type": "GENERIC", + "id": "cestus_plus_one", + "copy-from": "cestus", + "looks_like": "cestus", + "name": "cestus +1", + "proportional": { "price": 3.0, "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.0, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "flaming_fist", + "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.0, "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.0, "bashing": 1.2, "cutting": 1.2, "weight": 0.8 }, + "relative": { "to_hit": 2 } + }, + { + "type": "GENERIC", + "id": "gauntlet_pounding", + "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", + "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": 20000, + "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": 2, + "valid_mod_locations": [ [ "mechanism", 1 ] ], + "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "NEVER_JAMS", "RELOAD_EJECT", "RELOAD_ONE" ], + "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ] + }, + { + "type": "GENERIC", + "id": "rune_earthshaper_weapon", + "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": 13, + "to_hit": 1, + "qualities": [ [ "HAMMER", 1 ] ], + "techniques": [ "WBLOCK_1", "BRUTAL" ], + "flags": [ "UNARMED_WEAPON", "DURABLE_MELEE", "TRADER_AVOID", "MAGIC_FOCUS" ] + } +] diff --git a/items/enchanted_wands.json b/items/enchanted_wands.json new file mode 100644 index 0000000..be348bd --- /dev/null +++ b/items/enchanted_wands.json @@ -0,0 +1,349 @@ +[ + { + "abstract": "spell_wand", + "name": { "str": "Magic Wand" }, + "type": "TOOL", + "weight": "230 g", + "volume": "500 ml", + "price": 10000, + "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": 1 + }, + { + "abstract": "disp_wand", + "name": { "str": "Disposable Wand" }, + "type": "TOOL", + "weight": "230 g", + "volume": "500 ml", + "price": 10000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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": 20000, + "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": 30000, + "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/items/ethereal_items.json b/items/ethereal_items.json new file mode 100644 index 0000000..9494f37 --- /dev/null +++ b/items/ethereal_items.json @@ -0,0 +1,466 @@ +[ + { + "id": "stonefist", + "type": "GENERIC", + "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": "1 g", + "volume": "250 ml", + "price": 1, + "to_hit": 2, + "bashing": 20, + "material": [ "superalloy" ], + "symbol": "[", + "color": "light_gray", + "armor_data": { + "covers": [ "hands", "arms" ], + "coverage": 100, + "encumbrance": 0, + "warmth": 20, + "material_thickness": 4, + "environmental_protection": 10 + }, + "qualities": [ [ "HAMMER", 1 ] ], + "flags": [ "VARSIZE", "STURDY", "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "MAGIC_FOCUS" ], + "techniques": [ "WBLOCK_3" ] + }, + { + "id": "finger_firelighter", + "type": "TOOL", + "name": "finger firelighter", + "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 } ], + "flags": [ "TRADER_AVOID", "FIRESTARTER", "LIGHT_8", "FLAMING", "WATER_EXTINGUISH" ] + }, + { + "id": "armor_stonefist", + "type": "ARMOR", + "category": "armor", + "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": "1 g", + "volume": "250 ml", + "price": 1, + "to_hit": 2, + "bashing": 20, + "material": [ "superalloy" ], + "symbol": "[", + "color": "light_gray", + "covers": [ "hands", "arms" ], + "coverage": 100, + "encumbrance": 0, + "warmth": 20, + "material_thickness": 4, + "environmental_protection": 10, + "qualities": [ [ "HAMMER", 1 ] ], + "flags": [ "VARSIZE", "STURDY", "UNARMED_WEAPON", "DURABLE_MELEE", "NONCONDUCTIVE", "MAGIC_FOCUS" ], + "techniques": [ "WBLOCK_3" ] + }, + { + "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", + "price": 1, + "to_hit": -2, + "bashing": 8, + "symbol": ",", + "color": "light_green", + "covers": [ "head" ], + "flags": [ "LIGHT_15", "LEAK_DAM", "AURA", "SEMITANGIBLE" ] + }, + { + "id": "magic_light", + "type": "ARMOR", + "category": "tools", + "name": "magic light", + "description": "A small magical light that you can read by.", + "weight": 0, + "volume": 0, + "price": 0, + "symbol": ",", + "color": "light_green", + "covers": [ "head" ], + "flags": [ "LIGHT_5", "LEAK_DAM", "AURA", "SEMITANGIBLE" ] + }, + { + "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, + "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" ] + }, + { + "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, + "to_hit": -2, + "bashing": 6, + "material": [ "steel" ], + "symbol": "[", + "color": "brown", + "covers": [ "feet" ], + "coverage": 100, + "encumbrance": 0, + "warmth": 30, + "material_thickness": 3, + "environmental_protection": 2, + "relic_data": { "passive_effects": [ { "has": "WORN", "condition": "ALWAYS", "values": [ { "value": "MOVE_COST", "add": -5 } ] } ] }, + "flags": [ "WATERPROOF", "ROLLER_QUAD", "BELTED" ] + }, + { + "type": "GENERIC", + "id": "stormhammer", + "name": { "str": "The Stormhammer" }, + "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, + "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" ], + "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", + "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" + ] + }, + { + "id": "tentacle_whip", + "type": "GENERIC", + "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, + "volume": 0, + "price": 0, + "material": [ "flesh" ], + "symbol": "[", + "color": "green", + "covers": [ "torso" ], + "coverage": 40, + "encumbrance": 10, + "storage": "25 L", + "material_thickness": 3, + "flags": [ "BELTED", "TRADER_AVOID", "WATERPROOF", "STURDY", "NO_UNWIELD", "ONLY_ONE", "NO_REPAIR", "NO_SALVAGE" ] + }, + { + "id": "bonespear", + "type": "GENERIC", + "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", + "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", + "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", + "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", + "price": 3646, + "symbol": "o", + "color": "white", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], + "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.", + "weight": "1g", + "volume": "1ml", + "price": 3646, + "symbol": "o", + "color": "green", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], + "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.", + "weight": "1g", + "volume": "1ml", + "price": 3646, + "symbol": "o", + "color": "green", + "covers": [ "legs", "torso", "arms", "hands", "head", "feet", "mouth", "eyes" ], + "flags": [ "AURA", "SEMITANGIBLE", "OVERSIZE", "ONLY_ONE", "TRADER_AVOID", "NO_TAKEOFF", "NONCONDUCTIVE" ], + "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" ] + }, + { + "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" ] + }, + { + "id": "burn_scar", + "type": "effect_type", + "desc": [ "This burn really hurts!" ], + "max_duration": "10 second", + "rating": "bad", + "base_mods": { "pain_amount": [ 20 ] } + }, + { + "id": "ench_overcharge_burn_scar", + "type": "enchantment", + "ench_effects": [ { "effect": "burn_scar", "intensity": 1 } ] + }, + { + "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" ] + }, + { + "id": "protect_env", + "type": "ARMOR", + "name": { "str": "aura of protection", "str_pl": "auras of protection" }, + "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" ] + } +] diff --git a/items/fuel.json b/items/fuel.json new file mode 100644 index 0000000..0b50d00 --- /dev/null +++ b/items/fuel.json @@ -0,0 +1,78 @@ +[ + { + "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": 100000, + "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 } + } + }, + { + "type": "AMMO", + "id": "tainted_blood", + "name": { "str_sp": "tainted blood" }, + "weight": "2 g", + "color": "black", + "container": "flask_glass", + "symbol": "~", + "description": "Blood from a blob corrupted creature. The surface of this black sludge undulates slowly as if agitated by a soft breeze.", + "price": 0, + "material": "flesh", + "volume": "1 ml", + "phase": "liquid", + "category": "fuel", + "ammo_type": "tainted_blood", + "fuel": { "energy": 5 } + }, + { + "type": "AMMO", + "id": "blood", + "name": { "str_sp": "blood" }, + "weight": "265 g", + "color": "red", + "container": "flask_glass", + "symbol": "~", + "description": "Blood, possibly that of a human. Disgusting!", + "price": 0, + "material": "hflesh", + "volume": "250 ml", + "phase": "liquid", + "category": "fuel", + "ammo_type": "blood", + "fuel": { "energy": 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, + "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/items/mana_crystals.json b/items/mana_crystals.json new file mode 100644 index 0000000..292c2f6 --- /dev/null +++ b/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": 1000, + "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": 1500, + "symbol": "=", + "color": "yellow", + "ammo_type": "crystallized_mana", + "capacity": 50, + "looks_like": "battery", + "flags": [ "NO_SALVAGE", "NO_UNLOAD" ] + } +] diff --git a/items/melee.json b/items/melee.json new file mode 100644 index 0000000..5289a5d --- /dev/null +++ b/items/melee.json @@ -0,0 +1,88 @@ +[ + { + "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": 200000 + }, + { + "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": 200000 + }, + { + "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": 200000 + }, + { + "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": 160000, + "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" + } +] diff --git a/items/metals.json b/items/metals.json new file mode 100644 index 0000000..90d7cc0 --- /dev/null +++ b/items/metals.json @@ -0,0 +1,70 @@ +[ + { + "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": 2500, + "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": 1000, + "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, + "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" + } +] diff --git a/items/mutagen.json b/items/mutagen.json new file mode 100644 index 0000000..35c7137 --- /dev/null +++ b/items/mutagen.json @@ -0,0 +1,26 @@ +[ + { + "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": 1000, + "volume": "500 ml", + "phase": "liquid", + "charges": 2, + "use_action": { "type": "mutagen_iv", "mutation_category": "MANATOUCHED" }, + "flags": [ "EATEN_COLD", "NUTRIENT_OVERRIDE" ], + "freezing_point": -22, + "fun": -15 + } +] diff --git a/items/obsolete.json b/items/obsolete.json new file mode 100644 index 0000000..f84bc16 --- /dev/null +++ b/items/obsolete.json @@ -0,0 +1,40 @@ +[ + { + "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": 10000, + "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": 1 + }, + { + "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": 10000, + "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": 1 + } +] diff --git a/items/recipe_books.json b/items/recipe_books.json new file mode 100644 index 0000000..3d0f96d --- /dev/null +++ b/items/recipe_books.json @@ -0,0 +1,155 @@ +[ + { + "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": 7900, + "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": 7900, + "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": 7900, + "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 + }, + { + "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": 7900, + "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": 30000, + "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": 7900, + "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": 7900, + "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": 7900, + "bashing": 5, + "material": [ "paper" ], + "symbol": "?", + "color": "white", + "skill": "tailor", + "required_level": 6, + "max_level": 8, + "intelligence": 10, + "time": "25 m", + "fun": -1 + } +] diff --git a/items/spell_scrolls.json b/items/spell_scrolls.json new file mode 100644 index 0000000..dd0d831 --- /dev/null +++ b/items/spell_scrolls.json @@ -0,0 +1,863 @@ +[ + { + "abstract": "spell_scroll", + "name": { "str": "Spell Scroll" }, + "type": "GENERIC", + "category": "spellbooks", + "weight": "475 g", + "volume": "500 ml", + "price": 4000, + "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": 25000, + "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" ] } + } +] diff --git a/items/spellbooks.json b/items/spellbooks.json new file mode 100644 index 0000000..dd60612 --- /dev/null +++ b/items/spellbooks.json @@ -0,0 +1,367 @@ +[ + { + "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": "You would describe this as more like a pamphlet than a spellbook, but it seems to have at least one interesting spell you can use.", + "weight": "585 g", + "volume": "250 ml", + "price": 5000, + "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 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": 35000, + "symbol": "?", + "color": "red", + "use_action": { "type": "learn_spell", "spells": [ "phase_door", "create_lighter", "pain_split", "protection_aura" ] } + }, + { + "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, + "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": 30000, + "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": 5000, + "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" + }, + "//": "2 technomancer, 1 animist spells", + "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": 30000, + "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, + "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", + "//": "6 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": 5000, + "symbol": "?", + "color": "light_gray", + "use_action": { + "type": "learn_spell", + "spells": [ "jolt", "windstrike", "windrun", "storm_hammer", "lightning_bolt", "lightning_blast" ] + } + }, + { + "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 book, 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": 5000, + "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" }, + "//": "5 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" ] + } + }, + { + "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" ] } + } +] diff --git a/items/tools.json b/items/tools.json new file mode 100644 index 0000000..ae156b6 --- /dev/null +++ b/items/tools.json @@ -0,0 +1,135 @@ +[ + { + "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": 200000, + "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": 500000, + "material": "powder_nonflam", + "weight": "2340 g", + "volume": "1 L", + "bashing": 4 + }, + { + "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", + "lycra", + "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", + "lycra", + "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", + "lycra", + "nylon", + "wool", + "fur", + "faux_fur", + "nomex", + "kevlar", + "neoprene", + "gutskin", + "plastic", + "kevlar_rigid" + ], + "skill": "tailor", + "clothing_mods": [ "leather_padded", "steel_padded", "kevlar_padded", "furred", "wooled" ] + } + ] + } +] diff --git a/items/vehicle/frames.json b/items/vehicle/frames.json new file mode 100644 index 0000000..11efd8a --- /dev/null +++ b/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": 10000 + }, + { + "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": 800000 + } +] diff --git a/items/vehicle_parts.json b/items/vehicle_parts.json new file mode 100644 index 0000000..05a71fa --- /dev/null +++ b/items/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/items/weapons.json b/items/weapons.json new file mode 100644 index 0000000..12b5d57 --- /dev/null +++ b/items/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": 5000, + "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", "REACH_ATTACK", "NONCONDUCTIVE", "DURABLE_MELEE", "SHEATH_SPEAR" ], + "price": 15000 + }, + { + "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": [ "SPEAR", "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/lore.md b/lore.md new file mode 100644 index 0000000..afe097a --- /dev/null +++ b/lore.md @@ -0,0 +1,35 @@ +# History +Magic is a rather spiritually draining experience. +It's just not very comfortable using your mana pool. +It doesn't really affect you in a way that would affect doing things in real life. + +The industrial revolution was the downturn of magic. +At the time of WWI, about 80% of the population of the world could cast 1 spell, and about 40% of those could cast more than one +At the time of the cataclysm, 20-30% of the population could cast 1 spell and about 10% of those could cast more than one. +High-powered combat spells are either family or military secrets + +That being said, it's common knowledge that magic is a thing. People who are a powerful mage are often well-known in their communities, and carry high-profile jobs. + +# Classes + +Magic has been around for longer than written human history. On the surface, Magic defies the laws of thermodynamics, which have stumped physicists ever since they were proposed. + + There are two different ways to tap into magic: you can exert your will on the universe (Control), or you can be a conduit for the universe to exert its will (Harmony). These two ways are polar opposites of each other, and when they are used for the first time (during the studying process, as you of course have to try to cast the spell to learn it) change the mage's body irrevocably. This is fundamental to why each mage class has an opposing class. + +The 8 mage classes are: Magus and Animist, Kelvinist and Stormshaper, Technomancer and Earthshaper, Biomancer and Druid. The first class in the pair is Control and the second is Harmony. The interesting thing here is you can choose between Control and Harmony for each pair, instead of having to stick to one for all classes, which is a subject of study on its own. + +In the case of "how is a spell part of a class?" the spell's characteristics determine the class; the class does not determine the spells. The classes were established in ancient Greece, when it was noted that certain spells were incompatible with knowing other spells. So whenever a spell was invented, the universe would "decide" what class it is. + +### 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. It is the class that has the most impact on the fundamental laws of the universe. +- 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, even while magic as a whole declined, 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. + + +With the classes above listed, you might notice that there is some overlap. This overlap actually results in spells that are "classless," due to sharing one more traits with multiple classes that do not tip the scales in one direction or another. These spells are overwhelmingly weak spells, as stronger spells inevitably have characteristics that will tip the scales, whether they are obvious or not. diff --git a/magic_balance.md b/magic_balance.md new file mode 100644 index 0000000..3dee978 --- /dev/null +++ b/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/martialarts.json b/martialarts.json new file mode 100644 index 0000000..f62196d --- /dev/null +++ b/martialarts.json @@ -0,0 +1,305 @@ +[ + { + "id": "style_aikido", + "copy-from": "style_aikido", + "type": "martial_art", + "name": { "str": "Aikido" }, + "extend": { + "weapons": [ + "cestus_plus_one", + "cestus_plus_two", + "flaming_fist", + "flaming_fist_plus_one", + "flaming_fist_plus_one", + "gauntlet_pounding", + "stonefist", + "stormglove", + "rune_earthshaper_weapon", + "shotcestus" + ] + } + }, + { + "id": "style_eskrima", + "copy-from": "style_eskrima", + "type": "martial_art", + "name": "Eskrima", + "extend": { + "weapons": [ + "cudgel_plus_one", + "cudgel_plus_two", + "knife_combat_plus_one", + "knife_combat_plus_two", + "knife_hunting_plus_one", + "knife_hunting_plus_two", + "knife_rambo_plus_one", + "knife_rambo_plus_two", + "knife_trench_plus_one", + "knife_trench_plus_two", + "kukri_plus_one", + "kukri_plus_two", + "tanto_plus_one", + "tanto_plus_two", + "rune_animist_weapon", + "springstaff-retracted", + "mjolnir", + "gram" + ] + } + }, + { + "id": "style_fencing", + "copy-from": "style_fencing", + "type": "martial_art", + "name": "Fencing", + "extend": { + "weapons": [ + "cudgel_plus_one", + "cudgel_plus_two", + "rapier_plus_one", + "rapier_plus_two", + "cavalry_sabre_plus_one", + "cavalry_sabre_plus_two", + "broadsword_plus_one", + "broadsword_plus_two", + "springstaff-retracted" + ] + } + }, + { + "id": "style_medievalpole", + "copy-from": "style_medievalpole", + "type": "martial_art", + "name": "Fior Di Battaglia", + "extend": { + "weapons": [ + "sledge_plus_one", + "sledge_plus_two", + "halberd_plus_one", + "halberd_plus_two", + "glaive_plus_one", + "glaive_plus_two", + "battleaxe_plus_one", + "battleaxe_plus_two", + "fire_ax_plus_one", + "fire_ax_plus_two", + "pickaxe_plus_one", + "pickaxe_plus_two", + "stormhammer", + "rune_stormshaper_weapon", + "rune_technomancer_weapon" + ] + } + }, + { + "id": "style_judo", + "copy-from": "style_judo", + "type": "martial_art", + "name": "Judo", + "extend": { + "weapons": [ + "cestus_plus_one", + "cestus_plus_two", + "flaming_fist", + "flaming_fist_plus_one", + "flaming_fist_plus_one", + "gauntlet_pounding", + "stonefist", + "stormglove", + "rune_earthshaper_weapon", + "shotcestus" + ] + } + }, + { + "id": "style_krav_maga", + "copy-from": "style_krav_maga", + "type": "martial_art", + "name": "Krav Maga", + "extend": { + "weapons": [ + "cudgel_plus_one", + "cudgel_plus_two", + "knife_combat_plus_one", + "knife_combat_plus_two", + "knife_hunting_plus_one", + "knife_hunting_plus_two", + "knife_rambo_plus_one", + "knife_rambo_plus_two", + "knife_trench_plus_one", + "knife_trench_plus_two", + "kukri_plus_one", + "kukri_plus_two", + "tanto_plus_one", + "tanto_plus_two", + "rune_animist_weapon", + "m47a1", + "springstaff-retracted", + "gram" + ] + } + }, + { + "id": "style_swordsmanship", + "copy-from": "style_swordsmanship", + "type": "martial_art", + "name": "Medieval Swordsmanship", + "extend": { + "weapons": [ + "arming_sword_plus_one", + "arming_sword_plus_two", + "broadsword_plus_one", + "broadsword_plus_two", + "estoc_plus_one", + "estoc_plus_two", + "longsword_plus_one", + "longsword_plus_two", + "zweihander_plus_one", + "zweihander_plus_two", + "rune_kelvinist_weapon", + "gunblade", + "gram" + ] + } + }, + { + "id": "style_ninjutsu", + "copy-from": "style_ninjutsu", + "type": "martial_art", + "name": "Ninjutsu", + "extend": { + "weapons": [ + "arming_sword_plus_one", + "arming_sword_plus_two", + "broadsword_plus_one", + "broadsword_plus_two", + "cavalry_sabre_plus_one", + "cavalry_sabre_plus_two", + "cutlass_plus_one", + "cutlass_plus_two", + "dao_plus_one", + "dao_plus_two", + "i_staff_plus_one", + "i_staff_plus_two", + "q_staff_plus_one", + "q_staff_plus_two", + "jian_plus_one", + "jian_plus_two", + "katana_plus_one", + "katana_plus_two", + "khopesh_plus_one", + "khopesh_plus_two", + "kris_plus_one", + "kris_plus_two", + "kukri_plus_one", + "kukri_plus_two", + "knife_combat_plus_one", + "knife_combat_plus_two", + "knife_hunting_plus_one", + "knife_hunting_plus_two", + "knife_rambo_plus_one", + "knife_rambo_plus_two", + "knife_trench_plus_one", + "knife_trench_plus_two", + "longsword_plus_one", + "longsword_plus_two", + "nodachi_plus_one", + "nodachi_plus_two", + "scimitar_plus_one", + "scimitar_plus_two", + "sword_xiphos_plus_one", + "sword_xiphos_plus_two", + "tanto_plus_one", + "tanto_plus_two", + "wakizashi_plus_one", + "wakizashi_plus_two", + "rune_animist_weapon", + "rune_kelvinist_weapon", + "rune_magus_weapon", + "springstaff-extended", + "gunblade" + ] + } + }, + { + "id": "style_niten", + "copy-from": "style_niten", + "type": "martial_art", + "name": "Niten Ichi-Ryu", + "extend": { + "weapons": [ + "katana_plus_one", + "katana_plus_two", + "nodachi_plus_one", + "nodachi_plus_two", + "wakizashi_plus_one", + "wakizashi_plus_two" + ] + } + }, + { + "id": "style_silat", + "copy-from": "style_silat", + "type": "martial_art", + "name": "Silat", + "extend": { + "weapons": [ + "cudgel_plus_one", + "cudgel_plus_two", + "glaive_plus_one", + "glaive_plus_two", + "i_staff_plus_one", + "i_staff_plus_two", + "q_staff_plus_one", + "q_staff_plus_two", + "kris_plus_one", + "kris_plus_two", + "knife_combat_plus_one", + "knife_combat_plus_two", + "knife_hunting_plus_one", + "knife_hunting_plus_two", + "knife_rambo_plus_one", + "knife_rambo_plus_two", + "knife_trench_plus_one", + "knife_trench_plus_two", + "naginata_plus_one", + "naginata_plus_two", + "scimitar_plus_one", + "scimitar_plus_two", + "tanto_plus_one", + "tanto_plus_two", + "rune_animist_weapon", + "rune_biomancer_weapon", + "rune_magus_weapon", + "bonespear", + "springstaff-retracted", + "springstaff-extended", + "gungnir", + "laevateinn" + ] + } + }, + { + "id": "style_sojutsu", + "copy-from": "style_sojutsu", + "type": "martial_art", + "name": "Sojutsu", + "extend": { + "weapons": [ + "glaive_plus_one", + "glaive_plus_two", + "halberd_plus_one", + "halberd_plus_two", + "naginata_plus_one", + "naginata_plus_two", + "pike_plus_one", + "pike_plus_two", + "qiang_plus_one", + "qiang_plus_two", + "rune_biomancer_weapon", + "bonespear", + "gungnir" + ] + } + } +] diff --git a/materials.json b/materials.json new file mode 100644 index 0000000..923ec09 --- /dev/null +++ b/materials.json @@ -0,0 +1,92 @@ +[ + { + "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" ] + } +] diff --git a/mod_tileset.json b/mod_tileset.json new file mode 100644 index 0000000..d27ef63 --- /dev/null +++ b/mod_tileset.json @@ -0,0 +1,1441 @@ +[ + { + "type": "mod_tileset", + "compatibility": [ "UNDEAD_PEOPLE_BASE", "UNDEAD_PEOPLE", "MshockRealXotto", "MSX++DEAD_PEOPLE" ], + "tiles-new": [ + { + "file": "Magiclysm_normal.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": "cestus", "fg": 5, "bg": 3, "rotates": false }, + { + "id": "t_dirtfloor", + "fg": [ + { "weight": 1, "sprite": 7 }, + { "weight": 1, "sprite": 8 }, + { "weight": 1, "sprite": 9 }, + { "weight": 1, "sprite": 10 }, + { "weight": 1, "sprite": 11 } + ], + "rotates": false + }, + { "id": "bio_fuel_cell_blood", "fg": 12, "bg": 3, "rotates": false }, + { "id": "overlay_wielded_bio_fuel_cell_blood", "fg": 12, "rotates": false }, + { "id": "bio_sneeze_beam", "fg": 13, "bg": 3, "rotates": false }, + { "id": "overlay_mutation_bio_sneeze_beam", "fg": 14, "rotates": false }, + { "id": "overlay_wielded_bio_sneeze_beam", "fg": 13, "rotates": false }, + { "id": "fd_clairvoyant", "fg": 591, "rotates": false }, + { "id": "fd_darkness", "fg": 591, "rotates": false }, + { "id": "fd_fright", "fg": 591, "rotates": false }, + { "id": "fd_vault_atmosphere", "fg": 591, "rotates": false }, + { "id": "soul_burn_item", "fg": 591, "rotates": false }, + { "id": "f_altar", "fg": 15, "rotates": false }, + { "id": "f_attunement_altar", "fg": 16, "rotates": false }, + { "id": "f_demon_forge", "fg": 17 }, + { "id": "f_magiclysm_translocator_gate", "fg": 18 }, + { + "id": "f_magic_bench", + "fg": 19, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { "id": "center", "fg": 20 }, + { "id": "corner", "fg": [ 21, 22, 23, 24 ] }, + { "id": "t_connection", "fg": [ 31, 32, 33, 34 ] }, + { "id": "edge", "fg": [ 25, 26 ] }, + { "id": "end_piece", "fg": [ 27, 28, 29, 30 ] }, + { "id": "unconnected", "fg": [ 35, 35, 35, 35 ] } + ] + }, + { "id": "f_magic_circle", "fg": 36, "rotates": false }, + { "id": "adrenal_gland_large", "fg": 37, "rotates": false }, + { "id": "overlay_wielded_adrenal_gland_large", "fg": 37, "rotates": false }, + { "id": "alumentum", "fg": 38, "rotates": false }, + { "id": "overlay_wielded_alumentum", "fg": 38, "rotates": false }, + { "id": "bulette_pearl", "fg": 39, "rotates": false }, + { "id": "overlay_wielded_bulette_pearl", "fg": 39, "rotates": false }, + { "id": "bulette_plate", "fg": 40, "rotates": false }, + { "id": "overlay_wielded_bulette_plate", "fg": 40, "rotates": false }, + { "id": "vp_bulette_plate", "fg": 41, "rotates": false }, + { "id": "copper_circlet", "fg": 42, "rotates": false }, + { "id": "overlay_wielded_copper_circlet", "fg": 42, "rotates": false }, + { "id": "overlay_worn_copper_circlet", "fg": 43, "rotates": false }, + { "id": "copper_infuser", "fg": 44, "rotates": false }, + { "id": "overlay_wielded_copper_infuser", "fg": 44, "rotates": false }, + { "id": "overlay_worn_copper_infuser", "fg": 45, "rotates": false }, + { "id": "demon_chitin_piece", "fg": 46, "rotates": false }, + { "id": "overlay_wielded_demon_chitin_piece", "fg": 46, "rotates": false }, + { "id": "demon_chitin_plate", "fg": 47, "rotates": false }, + { "id": "overlay_wielded_demon_chitin_plate", "fg": 47, "rotates": false }, + { "id": "demon_spider_fang", "fg": 48, "rotates": false }, + { "id": "overlay_wielded_demon_spider_fang", "fg": 48, "rotates": false }, + { "id": "dragon_essence", "fg": 49, "rotates": false }, + { "id": "overlay_wielded_dragon_essence", "fg": 49, "rotates": false }, + { "id": "glow_dust", "fg": 50 }, + { "id": "overlay_wielded_glow_dust", "fg": 50 }, + { "id": "glow_light", "fg": 51, "rotates": false }, + { "id": "overlay_wielded_glow_light", "fg": 51, "rotates": false }, + { "id": "glow_light_off", "fg": 52, "rotates": false }, + { "id": "overlay_wielded_glow_light_off", "fg": 52, "rotates": false }, + { "id": "overlay_wielded_owlbear_stone", "fg": 53 }, + { "id": "owlbear_stone", "fg": 53 }, + { "id": "overlay_wielded_potion_starter", "fg": 54 }, + { "id": "potion_starter", "fg": 54 }, + { "id": "overlay_wielded_silver_infuser", "fg": 55, "rotates": false }, + { "id": "silver_infuser", "fg": 55, "rotates": false }, + { "id": "overlay_worn_silver_infuser", "fg": 56, "rotates": false }, + { "id": "overlay_wielded_stirge_proboscis", "fg": 57, "rotates": false }, + { "id": "stirge_proboscis", "fg": 57, "rotates": false }, + { "id": "overlay_wielded_stone_shell", "fg": 58 }, + { "id": "stone_shell", "fg": 58 }, + { "id": "blood", "fg": 59, "rotates": false }, + { "id": "overlay_wielded_blood", "fg": 59, "rotates": false }, + { "id": "dragon_blood", "fg": 60, "rotates": false }, + { "id": "overlay_wielded_dragon_blood", "fg": 60, "rotates": false }, + { "id": "overlay_wielded_tainted_blood", "fg": 61, "rotates": false }, + { "id": "tainted_blood", "fg": 61, "rotates": false }, + { "id": "arrow_odin", "fg": 62, "rotates": false }, + { "id": "overlay_wielded_arrow_odin", "fg": 62, "rotates": false }, + { "id": "ichaival", "fg": 63, "rotates": false }, + { "id": "overlay_wielded_ichaival", "fg": 64, "rotates": false }, + { "id": "overlay_wielded_quiver", "fg": 65, "rotates": false }, + { "id": "quiver", "fg": 65, "bg": 3, "rotates": false }, + { "id": "overlay_worn_quiver", "fg": 66, "rotates": false }, + { "id": "overlay_wielded_quiver_birchbark", "fg": 67, "rotates": false }, + { "id": "quiver_birchbark", "fg": 67, "bg": 3, "rotates": false }, + { "id": "overlay_worn_quiver_birchbark", "fg": 68, "rotates": false }, + { "id": "overlay_wielded_quiver_large_birchbark", "fg": 69, "rotates": false }, + { "id": "quiver_large_birchbark", "fg": 69, "bg": 3, "rotates": false }, + { "id": "overlay_worn_quiver_large_birchbark", "fg": 70, "rotates": false }, + { "id": "black_dragon_hide_raw", "fg": 71, "rotates": false }, + { "id": "overlay_wielded_black_dragon_hide_raw", "fg": 71, "rotates": false }, + { "id": "black_dragon_tanned_hide", "fg": 72, "rotates": false }, + { "id": "overlay_wielded_black_dragon_tanned_hide", "fg": 72, "rotates": false }, + { "id": "black_dragon_tanning_hide", "fg": 73, "rotates": false }, + { "id": "overlay_wielded_black_dragon_tanning_hide", "fg": 73, "rotates": false }, + { "id": "boots_black_dragon_hide", "fg": 74, "rotates": false }, + { "id": "overlay_wielded_boots_black_dragon_hide", "fg": 74, "rotates": false }, + { "id": "overlay_worn_boots_black_dragon_hide", "fg": 75, "rotates": false }, + { "id": "boots_black_dragon_scale", "fg": 76, "rotates": false }, + { "id": "overlay_wielded_boots_black_dragon_scale", "fg": 76, "rotates": false }, + { "id": "overlay_worn_boots_black_dragon_scale", "fg": 77, "rotates": false }, + { "id": "boots_xlblack_dragon_hide", "fg": 78, "rotates": false }, + { "id": "overlay_wielded_boots_xlblack_dragon_hide", "fg": 78, "rotates": false }, + { "id": "boots_xlblack_dragon_scale", "fg": 79, "rotates": false }, + { "id": "overlay_wielded_boots_xlblack_dragon_scale", "fg": 79, "rotates": false }, + { "id": "dragon_black_scale", "fg": 80, "rotates": false }, + { "id": "overlay_wielded_dragon_black_scale", "fg": 80, "rotates": false }, + { "id": "gauntlets_black_dragon_scale", "fg": 81, "rotates": false }, + { "id": "overlay_wielded_gauntlets_black_dragon_scale", "fg": 81, "rotates": false }, + { "id": "overlay_worn_gauntlets_black_dragon_scale", "fg": 82, "rotates": false }, + { "id": "gauntlets_xlblack_dragon_scale", "fg": 83, "rotates": false }, + { "id": "overlay_wielded_gauntlets_xlblack_dragon_scale", "fg": 83, "rotates": false }, + { "id": "gloves_black_dragon_hide", "fg": 84, "rotates": false }, + { "id": "overlay_wielded_gloves_black_dragon_hide", "fg": 84, "rotates": false }, + { "id": "overlay_worn_gloves_black_dragon_hide", "fg": 85, "rotates": false }, + { "id": "gloves_xlblack_dragon_hide", "fg": 86, "rotates": false }, + { "id": "overlay_wielded_gloves_xlblack_dragon_hide", "fg": 86, "rotates": false }, + { "id": "helmet_black_dragon_hide", "fg": 87, "rotates": false }, + { "id": "overlay_wielded_helmet_black_dragon_hide", "fg": 87, "rotates": false }, + { "id": "overlay_worn_helmet_black_dragon_hide", "fg": 88, "rotates": false }, + { "id": "helmet_black_dragon_scale", "fg": 89, "rotates": false }, + { "id": "overlay_wielded_helmet_black_dragon_scale", "fg": 89, "rotates": false }, + { "id": "overlay_worn_helmet_black_dragon_scale", "fg": 90, "rotates": false }, + { "id": "helmet_xlblack_dragon_hide", "fg": 91, "rotates": false }, + { "id": "overlay_wielded_helmet_xlblack_dragon_hide", "fg": 91, "rotates": false }, + { "id": "helmet_xlblack_dragon_scale", "fg": 92, "rotates": false }, + { "id": "overlay_wielded_helmet_xlblack_dragon_scale", "fg": 92, "rotates": false }, + { "id": "overlay_wielded_suit_black_dragon_hide", "fg": 93, "rotates": false }, + { "id": "suit_black_dragon_hide", "fg": 93, "rotates": false }, + { "id": "overlay_worn_suit_black_dragon_hide", "fg": 94, "rotates": false }, + { "id": "overlay_wielded_suit_black_dragon_scale", "fg": 95, "rotates": false }, + { "id": "suit_black_dragon_scale", "fg": 95, "rotates": false }, + { "id": "overlay_worn_suit_black_dragon_scale", "fg": 96, "rotates": false }, + { "id": "overlay_wielded_suit_xlblack_dragon_hide", "fg": 97, "rotates": false }, + { "id": "suit_xlblack_dragon_hide", "fg": 97, "rotates": false }, + { "id": "overlay_wielded_suit_xlblack_dragon_scale", "fg": 98, "rotates": false }, + { "id": "suit_xlblack_dragon_scale", "fg": 98, "rotates": false }, + { "id": "lair_map", "fg": 99, "rotates": false }, + { "id": "overlay_wielded_lair_map", "fg": 99, "rotates": false }, + { "id": "overlay_wielded_retreat_map", "fg": 100, "rotates": false }, + { "id": "retreat_map", "fg": 100, "rotates": false }, + { "id": "overlay_wielded_wizard_photo", "fg": 101, "rotates": false }, + { "id": "wizard_photo", "fg": 101, "rotates": false }, + { "id": "animist_doll_decayed_pouncer", "fg": 102, "rotates": false }, + { "id": "overlay_wielded_animist_doll_decayed_pouncer", "fg": 103, "rotates": false }, + { "id": "animist_doll_skeleton", "fg": 104, "rotates": false }, + { "id": "overlay_wielded_animist_doll_skeleton", "fg": 105, "rotates": false }, + { "id": "animist_doll_zombie", "fg": 106, "rotates": false }, + { "id": "overlay_wielded_animist_doll_zombie", "fg": 107, "rotates": false }, + { "id": "cats_grace_potion", "fg": 108 }, + { "id": "overlay_wielded_cats_grace_potion", "fg": 108 }, + { "id": "eagles_sight_potion", "fg": 109 }, + { "id": "overlay_wielded_eagles_sight_potion", "fg": 109 }, + { "id": "foxs_cunning_potion", "fg": 110 }, + { "id": "overlay_wielded_foxs_cunning_potion", "fg": 110 }, + { "id": "mana_potion", "fg": 111, "rotates": false }, + { "id": "overlay_wielded_mana_potion", "fg": 111, "rotates": false }, + { "id": "mana_potion_greater", "fg": 112, "rotates": false }, + { "id": "overlay_wielded_mana_potion_greater", "fg": 112, "rotates": false }, + { "id": "mana_potion_lesser", "fg": 113, "rotates": false }, + { "id": "overlay_wielded_mana_potion_lesser", "fg": 113, "rotates": false }, + { "id": "ogres_strength_potion", "fg": 114 }, + { "id": "overlay_wielded_ogres_strength_potion", "fg": 114 }, + { "id": "overlay_wielded_twisted_restore_potion", "fg": 115, "rotates": false }, + { "id": "twisted_restore_potion", "fg": 115, "rotates": false }, + { "id": "overlay_wielded_twisted_restore_potion_improved", "fg": 116, "rotates": false }, + { "id": "twisted_restore_potion_improved", "fg": 116, "rotates": false }, + { "id": "overlay_wielded_rune_alchemist", "fg": 117 }, + { "id": "rune_alchemist", "fg": 117 }, + { "id": "overlay_wielded_rune_animist", "fg": 118 }, + { "id": "rune_animist", "fg": 118 }, + { "id": "overlay_wielded_rune_biomancer", "fg": 119 }, + { "id": "rune_biomancer", "fg": 119 }, + { "id": "overlay_wielded_rune_druid", "fg": 120 }, + { "id": "rune_druid", "fg": 120 }, + { "id": "overlay_wielded_rune_earthshaper", "fg": 121 }, + { "id": "rune_earthshaper", "fg": 121 }, + { "id": "overlay_wielded_rune_kelvinist", "fg": 122 }, + { "id": "rune_kelvinist", "fg": 122 }, + { "id": "overlay_wielded_rune_magus", "fg": 123 }, + { "id": "rune_magus", "fg": 123 }, + { "id": "overlay_wielded_rune_stormshaper", "fg": 124 }, + { "id": "rune_stormshaper", "fg": 124 }, + { "id": "overlay_wielded_rune_technomancer", "fg": 125 }, + { "id": "rune_technomancer", "fg": 125 }, + { "id": "egg_owlbear", "fg": 126 }, + { "id": "overlay_wielded_egg_owlbear", "fg": 126 }, + { "id": "egg_owlbear_rock", "fg": 127 }, + { "id": "overlay_wielded_egg_owlbear_rock", "fg": 127 }, + { "id": "hairball", "fg": 128, "rotates": false }, + { "id": "overlay_wielded_hairball", "fg": 128, "rotates": false }, + { "id": "impure_meat", "fg": 129, "rotates": false }, + { "id": "overlay_wielded_impure_meat", "fg": 129, "rotates": false }, + { "id": "meat_dragon", "fg": 130, "rotates": false }, + { "id": "overlay_wielded_meat_dragon", "fg": 130, "rotates": false }, + { "id": "overlay_wielded_purified_meat", "fg": 131, "rotates": false }, + { "id": "purified_meat", "fg": 131, "rotates": false }, + { "id": "overlay_wielded_scream_mush", "fg": 132, "rotates": false }, + { "id": "scream_mush", "fg": 132, "rotates": false }, + { "id": "broken_claygolem", "fg": 133, "rotates": false }, + { "id": "overlay_wielded_broken_claygolem", "fg": 133, "rotates": false }, + { "id": "broken_irongolem", "fg": 134, "rotates": false }, + { "id": "overlay_wielded_broken_irongolem", "fg": 134, "rotates": false }, + { "id": "broken_plasticgolem", "fg": 135, "rotates": false }, + { "id": "overlay_wielded_broken_plasticgolem", "fg": 135, "rotates": false }, + { "id": "broken_stonegolem", "fg": 136, "rotates": false }, + { "id": "overlay_wielded_broken_stonegolem", "fg": 136, "rotates": false }, + { "id": "bag_holding_1", "fg": 137, "rotates": false }, + { "id": "overlay_wielded_bag_holding_1", "fg": 138, "rotates": false }, + { "id": "overlay_female_worn_bag_holding_1", "fg": 139, "rotates": false }, + { "id": "overlay_male_worn_bag_holding_1", "fg": 140, "rotates": false }, + { "id": "bag_holding_2", "fg": 141, "rotates": false }, + { "id": "overlay_wielded_bag_holding_2", "fg": 142, "rotates": false }, + { "id": "overlay_female_worn_bag_holding_2", "fg": 143, "rotates": false }, + { "id": "overlay_male_worn_bag_holding_2", "fg": 144, "rotates": false }, + { "id": "bag_holding_3", "fg": 145, "rotates": false }, + { "id": "overlay_wielded_bag_holding_3", "fg": 146, "rotates": false }, + { "id": "overlay_female_worn_bag_holding_3", "fg": 147, "rotates": false }, + { "id": "overlay_male_worn_bag_holding_3", "fg": 148, "rotates": false }, + { "id": "belt_haste", "fg": 149, "rotates": false }, + { "id": "overlay_wielded_belt_haste", "fg": 149, "rotates": false }, + { "id": "overlay_worn_belt_haste", "fg": 150, "rotates": false }, + { "id": "belt_str", "fg": 151, "rotates": false }, + { "id": "overlay_wielded_belt_str", "fg": 151, "rotates": false }, + { "id": "overlay_worn_belt_str", "fg": 152, "rotates": false }, + { "id": "debug_fireball_hammer", "fg": 153, "rotates": false }, + { "id": "overlay_wielded_debug_fireball_hammer", "fg": 154, "rotates": false }, + { "id": "magi_staff_minor", "fg": 155, "rotates": false }, + { "id": "overlay_wielded_magi_staff_minor", "fg": 156, "rotates": false }, + { "id": "overlay_wielded_wizard_hat", "fg": 157, "rotates": false }, + { "id": "wizard_hat", "fg": 157, "rotates": false }, + { "id": "mbelt_haste", "fg": 158, "rotates": false }, + { "id": "overlay_wielded_mbelt_haste", "fg": 158, "rotates": false }, + { "id": "overlay_worn_mbelt_haste", "fg": 159, "rotates": false }, + { "id": "mbelt_iron_whip", "fg": 160, "rotates": false }, + { "id": "overlay_wielded_mbelt_iron_whip", "fg": 160, "rotates": false }, + { "id": "overlay_worn_mbelt_iron_whip", "fg": 161, "rotates": false }, + { "id": "mbelt_pockets_greater", "fg": 162, "rotates": false }, + { "id": "overlay_wielded_mbelt_pockets_greater", "fg": 162, "rotates": false }, + { "id": "overlay_worn_mbelt_pockets_greater", "fg": 163, "rotates": false }, + { "id": "mbelt_pockets_lesser", "fg": 164, "rotates": false }, + { "id": "overlay_wielded_mbelt_pockets_lesser", "fg": 164, "rotates": false }, + { "id": "overlay_worn_mbelt_pockets_lesser", "fg": 165, "rotates": false }, + { "id": "mbelt_technomancer_toolbelt", "fg": 166, "rotates": false }, + { "id": "overlay_wielded_mbelt_technomancer_toolbelt", "fg": 166, "rotates": false }, + { "id": "overlay_worn_mbelt_technomancer_toolbelt", "fg": 167, "rotates": false }, + { "id": "mbelt_thor", "fg": 168, "rotates": false }, + { "id": "overlay_wielded_mbelt_thor", "fg": 168, "rotates": false }, + { "id": "overlay_worn_mbelt_thor", "fg": 169, "rotates": false }, + { "id": "mbelt_weaponry", "fg": 170, "rotates": false }, + { "id": "overlay_wielded_mbelt_weaponry", "fg": 170, "rotates": false }, + { "id": "overlay_worn_mbelt_weaponry", "fg": 171, "rotates": false }, + { "id": "mwhip_iron", "fg": 172, "rotates": false }, + { "id": "overlay_wielded_mwhip_iron", "fg": 173, "rotates": false }, + { "id": "mboots_escape", "fg": 174, "rotates": false }, + { "id": "overlay_wielded_mboots_escape", "fg": 174, "rotates": false }, + { "id": "overlay_worn_mboots_escape", "fg": 175, "rotates": false }, + { "id": "mboots_grounding", "fg": 176, "rotates": false }, + { "id": "overlay_wielded_mboots_grounding", "fg": 176, "rotates": false }, + { "id": "overlay_worn_mboots_grounding", "fg": 177, "rotates": false }, + { "id": "mboots_haste", "fg": 178, "rotates": false }, + { "id": "overlay_wielded_mboots_haste", "fg": 178, "rotates": false }, + { "id": "overlay_worn_mboots_haste", "fg": 179, "rotates": false }, + { "id": "mboots_sevenleague", "fg": 180, "rotates": false }, + { "id": "overlay_wielded_mboots_sevenleague", "fg": 180, "rotates": false }, + { "id": "overlay_worn_mboots_sevenleague", "fg": 181, "rotates": false }, + { "id": "mbracer_defense_greater", "fg": 182, "rotates": false }, + { "id": "overlay_wielded_mbracer_defense_greater", "fg": 182, "rotates": false }, + { "id": "overlay_worn_mbracer_defense_greater", "fg": 183, "rotates": false }, + { "id": "mbracer_defense_lesser", "fg": 184, "rotates": false }, + { "id": "overlay_wielded_mbracer_defense_lesser", "fg": 184, "rotates": false }, + { "id": "overlay_worn_mbracer_defense_lesser", "fg": 185, "rotates": false }, + { "id": "mbracer_lightning_greater", "fg": 186, "rotates": false }, + { "id": "overlay_wielded_mbracer_lightning_greater", "fg": 186, "rotates": false }, + { "id": "overlay_worn_mbracer_lightning_greater", "fg": 187, "rotates": false }, + { "id": "mbracer_lightning_lesser", "fg": 188, "rotates": false }, + { "id": "overlay_wielded_mbracer_lightning_lesser", "fg": 188, "rotates": false }, + { "id": "overlay_worn_mbracer_lightning_lesser", "fg": 189, "rotates": false }, + { "id": "mbracer_steel_pair", "fg": 190, "rotates": false }, + { "id": "overlay_wielded_mbracer_steel_pair", "fg": 190, "rotates": false }, + { "id": "overlay_worn_mbracer_steel_pair", "fg": 191, "rotates": false }, + { "id": "mbracer_steel_single", "fg": 192, "rotates": false }, + { "id": "overlay_wielded_mbracer_steel_single", "fg": 192, "rotates": false }, + { "id": "overlay_worn_mbracer_steel_single", "fg": 193, "rotates": false }, + { "id": "magic_suppressor", "fg": 194, "rotates": false }, + { "id": "overlay_wielded_magic_suppressor", "fg": 194, "rotates": false }, + { "id": "mana_dot_sight", "fg": 195, "rotates": false }, + { "id": "overlay_wielded_mana_dot_sight", "fg": 195, "rotates": false }, + { "id": "mana_laser_rail", "fg": 196, "rotates": false }, + { "id": "overlay_wielded_mana_laser_rail", "fg": 196, "rotates": false }, + { "id": "mana_laser_under", "fg": 197, "rotates": false }, + { "id": "overlay_wielded_mana_laser_under", "fg": 197, "rotates": false }, + { "id": "mmask_disappearance", "fg": 198, "rotates": false }, + { "id": "overlay_wielded_mmask_disappearance", "fg": 198, "rotates": false }, + { "id": "overlay_female_worn_mmask_disappearance", "fg": 199, "rotates": false }, + { "id": "overlay_male_worn_mmask_disappearance", "fg": 200, "rotates": false }, + { "id": "mmask_vision", "fg": 201, "rotates": false }, + { "id": "overlay_wielded_mmask_vision", "fg": 201, "rotates": false }, + { "id": "overlay_female_worn_mmask_vision", "fg": 202, "rotates": false }, + { "id": "overlay_male_worn_mmask_vision", "fg": 203, "rotates": false }, + { "id": "rune_animist_weapon", "fg": 204, "rotates": false }, + { "id": "overlay_wielded_rune_animist_weapon", "fg": 205, "rotates": false }, + { "id": "rune_biomancer_weapon", "fg": 206, "rotates": false }, + { "id": "overlay_wielded_rune_biomancer_weapon", "fg": 207, "rotates": false }, + { "id": "rune_kelvinist_weapon", "fg": 208, "rotates": false }, + { "id": "overlay_wielded_rune_kelvinist_weapon", "fg": 209, "rotates": false }, + { "id": "rune_magus_weapon", "fg": 210, "rotates": false }, + { "id": "overlay_wielded_rune_magus_weapon", "fg": 211, "rotates": false }, + { "id": "rune_stormshaper_weapon", "fg": 212, "rotates": false }, + { "id": "overlay_wielded_rune_stormshaper_weapon", "fg": 213, "rotates": false }, + { "id": "rune_technomancer_weapon", "fg": 214, "rotates": false }, + { "id": "overlay_wielded_rune_technomancer_weapon", "fg": 215, "rotates": false }, + { "id": "springstaff-extended", "fg": 216, "rotates": false }, + { "id": "overlay_wielded_springstaff-extended", "fg": 217, "rotates": false }, + { "id": "springstaff-retracted", "fg": 218, "rotates": false }, + { "id": "overlay_wielded_springstaff-retracted", "fg": 219, "rotates": false }, + { "id": "heat_cube", "fg": 220, "rotates": false }, + { "id": "overlay_wielded_heat_cube", "fg": 220, "rotates": false }, + { "id": "heat_cube_torch_on", "fg": 221, "rotates": false }, + { "id": "overlay_wielded_heat_cube_torch_on", "fg": 221, "rotates": false }, + { "id": "mflask_hip_whiskey", "fg": 222, "rotates": false }, + { "id": "overlay_wielded_mflask_hip_whiskey", "fg": 223, "rotates": false }, + { "id": "overlay_worn_mflask_hip_whiskey", "fg": 224, "rotates": false }, + { "id": "mkey_opening", "fg": 225, "rotates": false }, + { "id": "overlay_wielded_mkey_opening", "fg": 225, "rotates": false }, + { "id": "mspider_box", "fg": 226, "rotates": false }, + { "id": "overlay_wielded_mspider_box", "fg": 226, "rotates": false }, + { "id": "mtailors_kit", "fg": 227, "rotates": false }, + { "id": "overlay_wielded_mtailors_kit", "fg": 227, "rotates": false }, + { "id": "mtorch_everburning", "fg": 228, "rotates": false }, + { "id": "overlay_wielded_mtorch_everburning", "fg": 229, "rotates": false }, + { "id": "mtorch_everburning_lit", "fg": 230, "rotates": false }, + { "id": "overlay_wielded_mtorch_everburning_lit", "fg": 231, "rotates": false }, + { "id": "gunblade", "fg": 232, "rotates": false }, + { "id": "overlay_wielded_gunblade", "fg": 233, "rotates": false }, + { "id": "m47a1", "fg": 234, "rotates": false }, + { "id": "overlay_wielded_m47a1", "fg": 235, "rotates": false }, + { "id": "rune_druid_weapon", "fg": 236, "rotates": false }, + { "id": "overlay_wielded_rune_druid_weapon", "fg": 237, "rotates": false }, + { "id": "mring_blades_lesser", "fg": 238, "rotates": false }, + { "id": "overlay_wielded_mring_blades_lesser", "fg": 238, "rotates": false }, + { "id": "mring_copper", "fg": 239, "rotates": false }, + { "id": "overlay_wielded_mring_copper", "fg": 239, "rotates": false }, + { "id": "mring_dexterity_1", "fg": 240, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_1", "fg": 240, "rotates": false }, + { "id": "mring_dexterity_2", "fg": 241, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_2", "fg": 241, "rotates": false }, + { "id": "mring_dexterity_3", "fg": 242, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_3", "fg": 242, "rotates": false }, + { "id": "mring_dexterity_4", "fg": 243, "rotates": false }, + { "id": "overlay_wielded_mring_dexterity_4", "fg": 243, "rotates": false }, + { "id": "mring_dodge_bonus_1", "fg": 244, "rotates": false }, + { "id": "overlay_wielded_mring_dodge_bonus_1", "fg": 244, "rotates": false }, + { "id": "mring_dodge_bonus_2", "fg": 245, "rotates": false }, + { "id": "overlay_wielded_mring_dodge_bonus_2", "fg": 245, "rotates": false }, + { "id": "mring_gold", "fg": 246, "rotates": false }, + { "id": "overlay_wielded_mring_gold", "fg": 246, "rotates": false }, + { "id": "mring_intelligence_1", "fg": 247, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_1", "fg": 247, "rotates": false }, + { "id": "mring_intelligence_2", "fg": 248, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_2", "fg": 248, "rotates": false }, + { "id": "mring_intelligence_3", "fg": 249, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_3", "fg": 249, "rotates": false }, + { "id": "mring_intelligence_4", "fg": 250, "rotates": false }, + { "id": "overlay_wielded_mring_intelligence_4", "fg": 250, "rotates": false }, + { "id": "mring_perception_1", "fg": 251, "rotates": false }, + { "id": "overlay_wielded_mring_perception_1", "fg": 251, "rotates": false }, + { "id": "mring_perception_2", "fg": 252, "rotates": false }, + { "id": "overlay_wielded_mring_perception_2", "fg": 252, "rotates": false }, + { "id": "mring_perception_3", "fg": 253, "rotates": false }, + { "id": "overlay_wielded_mring_perception_3", "fg": 253, "rotates": false }, + { "id": "mring_perception_4", "fg": 254, "rotates": false }, + { "id": "overlay_wielded_mring_perception_4", "fg": 254, "rotates": false }, + { "id": "mring_platinum", "fg": 255, "rotates": false }, + { "id": "overlay_wielded_mring_platinum", "fg": 255, "rotates": false }, + { "id": "mring_protection_2", "fg": 256, "rotates": false }, + { "id": "overlay_wielded_mring_protection_2", "fg": 256, "rotates": false }, + { "id": "mring_protection_4", "fg": 257, "rotates": false }, + { "id": "overlay_wielded_mring_protection_4", "fg": 257, "rotates": false }, + { "id": "mring_protection_6", "fg": 258, "rotates": false }, + { "id": "overlay_wielded_mring_protection_6", "fg": 258, "rotates": false }, + { "id": "mring_protection_8", "fg": 259, "rotates": false }, + { "id": "overlay_wielded_mring_protection_8", "fg": 259, "rotates": false }, + { "id": "mring_silver", "fg": 260, "rotates": false }, + { "id": "overlay_wielded_mring_silver", "fg": 260, "rotates": false }, + { "id": "mring_speed_10", "fg": 261, "rotates": false }, + { "id": "overlay_wielded_mring_speed_10", "fg": 261, "rotates": false }, + { "id": "mring_speed_3", "fg": 262, "rotates": false }, + { "id": "overlay_wielded_mring_speed_3", "fg": 262, "rotates": false }, + { "id": "mring_speed_5", "fg": 263, "rotates": false }, + { "id": "overlay_wielded_mring_speed_5", "fg": 263, "rotates": false }, + { "id": "mring_speed_7", "fg": 264, "rotates": false }, + { "id": "overlay_wielded_mring_speed_7", "fg": 264, "rotates": false }, + { "id": "mring_strength_1", "fg": 265, "rotates": false }, + { "id": "overlay_wielded_mring_strength_1", "fg": 265, "rotates": false }, + { "id": "mring_strength_2", "fg": 266, "rotates": false }, + { "id": "overlay_wielded_mring_strength_2", "fg": 266, "rotates": false }, + { "id": "mring_strength_3", "fg": 267, "rotates": false }, + { "id": "overlay_wielded_mring_strength_3", "fg": 267, "rotates": false }, + { "id": "mring_strength_4", "fg": 268, "rotates": false }, + { "id": "overlay_wielded_mring_strength_4", "fg": 268, "rotates": false }, + { "id": "mtoken_arming_sword", "fg": 269, "rotates": false }, + { "id": "overlay_wielded_mtoken_arming_sword", "fg": 269, "rotates": false }, + { "id": "mtoken_battleaxe", "fg": 270, "rotates": false }, + { "id": "overlay_wielded_mtoken_battleaxe", "fg": 270, "rotates": false }, + { "id": "mtoken_broadsword", "fg": 271, "rotates": false }, + { "id": "overlay_wielded_mtoken_broadsword", "fg": 271, "rotates": false }, + { "id": "mtoken_crowbar", "fg": 272, "rotates": false }, + { "id": "overlay_wielded_mtoken_crowbar", "fg": 272, "rotates": false }, + { "id": "mtoken_hammer", "fg": 273, "rotates": false }, + { "id": "overlay_wielded_mtoken_hammer", "fg": 273, "rotates": false }, + { "id": "mtoken_longsword", "fg": 274, "rotates": false }, + { "id": "overlay_wielded_mtoken_longsword", "fg": 274, "rotates": false }, + { "id": "mtoken_mace", "fg": 275, "rotates": false }, + { "id": "overlay_wielded_mtoken_mace", "fg": 275, "rotates": false }, + { "id": "mtoken_pike", "fg": 276, "rotates": false }, + { "id": "overlay_wielded_mtoken_pike", "fg": 276, "rotates": false }, + { "id": "mtoken_q_staff", "fg": 277, "rotates": false }, + { "id": "overlay_wielded_mtoken_q_staff", "fg": 277, "rotates": false }, + { "id": "mtoken_screwdriver_set", "fg": 278, "rotates": false }, + { "id": "overlay_wielded_mtoken_screwdriver_set", "fg": 278, "rotates": false }, + { "id": "mtoken_toolbox", "fg": 279, "rotates": false }, + { "id": "overlay_wielded_mtoken_toolbox", "fg": 279, "rotates": false }, + { "id": "cestus_plus_one", "fg": 280, "bg": 5 }, + { "id": "overlay_wielded_cestus_plus_one", "fg": 280 }, + { "id": "cestus_plus_two", "fg": 281, "bg": 5 }, + { "id": "overlay_wielded_cestus_plus_two", "fg": 281 }, + { "id": "flaming_fist", "fg": 282, "rotates": false }, + { "id": "overlay_wielded_flaming_fist", "fg": 283, "rotates": false }, + { "id": "flaming_fist_plus_one", "fg": 284, "bg": 282 }, + { "id": "overlay_wielded_flaming_fist_plus_one", "fg": 283, "rotates": false }, + { "id": "flaming_fist_plus_two", "fg": 285, "bg": 282 }, + { "id": "overlay_wielded_flaming_fist_plus_two", "fg": 285 }, + { "id": "gauntlet_pounding", "fg": 286, "rotates": false }, + { "id": "overlay_wielded_gauntlet_pounding", "fg": 287, "rotates": false }, + { "id": "rune_earthshaper_weapon", "fg": 288, "rotates": false }, + { "id": "overlay_wielded_rune_earthshaper_weapon", "fg": 289, "rotates": false }, + { "id": "shotcestus", "fg": 290, "rotates": false }, + { "id": "overlay_wielded_shotcestus", "fg": 291, "rotates": false }, + { "id": "disp_wand", "fg": 292, "rotates": false }, + { "id": "overlay_wielded_disp_wand", "fg": 293, "rotates": false }, + { "id": "spell_wand", "fg": 294, "rotates": false }, + { "id": "overlay_wielded_spell_wand", "fg": 295, "rotates": false }, + { "id": "wand_cone_cold_greater", "fg": 296, "rotates": false }, + { "id": "overlay_wielded_wand_cone_cold_greater", "fg": 297, "rotates": false }, + { "id": "wand_cone_cold_lesser", "fg": 298, "rotates": false }, + { "id": "overlay_wielded_wand_cone_cold_lesser", "fg": 299, "rotates": false }, + { "id": "wand_cone_cold_minor", "fg": 300, "rotates": false }, + { "id": "overlay_wielded_wand_cone_cold_minor", "fg": 301, "rotates": false }, + { "id": "overlay_wielded_wand_disp_cone_cold_greater", "fg": 302, "rotates": false }, + { "id": "wand_disp_cone_cold_greater", "fg": 302, "rotates": false }, + { "id": "overlay_wielded_wand_disp_cone_cold_lesser", "fg": 303, "rotates": false }, + { "id": "wand_disp_cone_cold_lesser", "fg": 303, "rotates": false }, + { "id": "overlay_wielded_wand_disp_cone_cold_minor", "fg": 304, "rotates": false }, + { "id": "wand_disp_cone_cold_minor", "fg": 304, "rotates": false }, + { "id": "overlay_wielded_wand_disp_fireball_greater", "fg": 305, "rotates": false }, + { "id": "wand_disp_fireball_greater", "fg": 305, "rotates": false }, + { "id": "overlay_wielded_wand_disp_fireball_lesser", "fg": 306, "rotates": false }, + { "id": "wand_disp_fireball_lesser", "fg": 306, "rotates": false }, + { "id": "overlay_wielded_wand_disp_fireball_minor", "fg": 307, "rotates": false }, + { "id": "wand_disp_fireball_minor", "fg": 307, "rotates": false }, + { "id": "wand_disp_hoaryblast_greater", "fg": 308, "rotates": false }, + { "id": "overlay_wielded_wand_disp_hoaryblast_greater", "fg": 309, "rotates": false }, + { "id": "wand_disp_hoaryblast_lesser", "fg": 310, "rotates": false }, + { "id": "overlay_wielded_wand_disp_hoaryblast_lesser", "fg": 311, "rotates": false }, + { "id": "wand_disp_hoaryblast_minor", "fg": 312, "rotates": false }, + { "id": "overlay_wielded_wand_disp_hoaryblast_minor", "fg": 313, "rotates": false }, + { "id": "wand_disp_magic_missile_greater", "fg": 314, "rotates": false }, + { "id": "overlay_wielded_wand_disp_magic_missile_greater", "fg": 315, "rotates": false }, + { "id": "wand_disp_magic_missile_lesser", "fg": 316, "rotates": false }, + { "id": "overlay_wielded_wand_disp_magic_missile_lesser", "fg": 317, "rotates": false }, + { "id": "wand_disp_magic_missile_minor", "fg": 318, "rotates": false }, + { "id": "overlay_wielded_wand_disp_magic_missile_minor", "fg": 319, "rotates": false }, + { "id": "wand_disp_mana_beam_greater", "fg": 320, "rotates": false }, + { "id": "overlay_wielded_wand_disp_mana_beam_greater", "fg": 321, "rotates": false }, + { "id": "wand_disp_mana_beam_lesser", "fg": 322, "rotates": false }, + { "id": "overlay_wielded_wand_disp_mana_beam_lesser", "fg": 323, "rotates": false }, + { "id": "wand_disp_mana_beam_minor", "fg": 324, "rotates": false }, + { "id": "overlay_wielded_wand_disp_mana_beam_minor", "fg": 325, "rotates": false }, + { "id": "wand_disp_point_flare_greater", "fg": 326, "rotates": false }, + { "id": "overlay_wielded_wand_disp_point_flare_greater", "fg": 327, "rotates": false }, + { "id": "wand_disp_point_flare_lesser", "fg": 328, "rotates": false }, + { "id": "overlay_wielded_wand_disp_point_flare_lesser", "fg": 329, "rotates": false }, + { "id": "wand_disp_point_flare_minor", "fg": 330, "rotates": false }, + { "id": "overlay_wielded_wand_disp_point_flare_minor", "fg": 331, "rotates": false }, + { "id": "wand_fireball_greater", "fg": 332, "rotates": false }, + { "id": "overlay_wielded_wand_fireball_greater", "fg": 333, "rotates": false }, + { "id": "wand_fireball_lesser", "fg": 334, "rotates": false }, + { "id": "overlay_wielded_wand_fireball_lesser", "fg": 335, "rotates": false }, + { "id": "wand_fireball_minor", "fg": 336, "rotates": false }, + { "id": "overlay_wielded_wand_fireball_minor", "fg": 337, "rotates": false }, + { "id": "wand_hoaryblast_greater", "fg": 338, "rotates": false }, + { "id": "overlay_wielded_wand_hoaryblast_greater", "fg": 339, "rotates": false }, + { "id": "wand_hoaryblast_lesser", "fg": 340, "rotates": false }, + { "id": "overlay_wielded_wand_hoaryblast_lesser", "fg": 341, "rotates": false }, + { "id": "wand_hoaryblast_minor", "fg": 342, "rotates": false }, + { "id": "overlay_wielded_wand_hoaryblast_minor", "fg": 343, "rotates": false }, + { "id": "wand_magic_missile_greater", "fg": 344, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile_greater", "fg": 345, "rotates": false }, + { "id": "wand_magic_missile_lesser", "fg": 346, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile_lesser", "fg": 347, "rotates": false }, + { "id": "wand_magic_missile_minor", "fg": 348, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile_minor", "fg": 349, "rotates": false }, + { "id": "wand_mana_beam_greater", "fg": 350, "rotates": false }, + { "id": "overlay_wielded_wand_mana_beam_greater", "fg": 351, "rotates": false }, + { "id": "wand_mana_beam_lesser", "fg": 352, "rotates": false }, + { "id": "overlay_wielded_wand_mana_beam_lesser", "fg": 353, "rotates": false }, + { "id": "wand_mana_beam_minor", "fg": 354, "rotates": false }, + { "id": "overlay_wielded_wand_mana_beam_minor", "fg": 355, "rotates": false }, + { "id": "wand_point_flare_greater", "fg": 356, "rotates": false }, + { "id": "overlay_wielded_wand_point_flare_greater", "fg": 357, "rotates": false }, + { "id": "wand_point_flare_lesser", "fg": 358, "rotates": false }, + { "id": "overlay_wielded_wand_point_flare_lesser", "fg": 359, "rotates": false }, + { "id": "wand_point_flare_minor", "fg": 360, "rotates": false }, + { "id": "overlay_wielded_wand_point_flare_minor", "fg": 361, "rotates": false }, + { "id": "acid_res_aura", "fg": 591, "rotates": false }, + { "id": "overlay_wielded_acid_res_aura", "fg": 591, "rotates": false }, + { "id": "acid_res_aura_greater", "fg": 591, "rotates": false }, + { "id": "overlay_wielded_acid_res_aura_greater", "fg": 591, "rotates": false }, + { "id": "armor_stonefist", "fg": 362, "rotates": false }, + { "id": "overlay_wielded_armor_stonefist", "fg": 362, "rotates": false }, + { "id": "overlay_worn_armor_stonefist", "fg": 363, "rotates": false }, + { "id": "aura_stoneskin", "fg": 364, "rotates": false }, + { "id": "overlay_wielded_aura_stoneskin", "fg": 364, "rotates": false }, + { "id": "overlay_female_worn_aura_stoneskin", "fg": 365, "rotates": false }, + { "id": "overlay_male_worn_aura_stoneskin", "fg": 366, "rotates": false }, + { "id": "bonespear", "fg": 367, "rotates": true }, + { "id": "overlay_wielded_bonespear", "fg": 368, "rotates": true }, + { "id": "dragon_shell_black", "fg": 369, "rotates": false }, + { "id": "overlay_wielded_dragon_shell_black", "fg": 369, "rotates": false }, + { + "id": "overlay_worn_dragon_shell_black", + "fg": [ + { "weight": 30, "sprite": 370 }, + { "weight": 30, "sprite": 371 }, + { "weight": 30, "sprite": 372 }, + { "weight": 30, "sprite": 373 } + ], + "animated": true, + "rotates": false + }, + { "id": "druid_dust", "fg": 374, "rotates": false }, + { "id": "overlay_wielded_druid_dust", "fg": 374, "rotates": false }, + { "id": "druid_recurve", "fg": 375, "rotates": true }, + { "id": "overlay_wielded_druid_recurve", "fg": 376, "rotates": true }, + { "id": "druid_seed", "fg": 377, "rotates": false }, + { "id": "overlay_wielded_druid_seed", "fg": 377, "rotates": false }, + { "id": "finger_firelighter", "fg": 378 }, + { "id": "overlay_wielded_finger_firelighter", "fg": 379 }, + { "id": "fleshpouch", "fg": 380, "rotates": true }, + { "id": "overlay_wielded_fleshpouch", "fg": 380, "rotates": true }, + { "id": "overlay_worn_fleshpouch", "fg": 381, "rotates": true }, + { "id": "ice_gliders", "fg": 382, "rotates": false }, + { "id": "overlay_wielded_ice_gliders", "fg": 382, "rotates": false }, + { "id": "overlay_worn_ice_gliders", "fg": 383, "rotates": false }, + { "id": "magic_lamp", "fg": 384, "rotates": false }, + { "id": "magic_light", "fg": 385, "rotates": false }, + { "id": "obfuscating_aura", "fg": 386, "rotates": false }, + { "id": "overlay_wielded_obfuscating_aura", "fg": 386, "rotates": false }, + { "id": "overlay_wielded_shield_ice", "fg": 387, "rotates": false }, + { "id": "shield_ice", "fg": 387, "rotates": false }, + { "id": "overlay_worn_shield_ice", "fg": 388, "rotates": false }, + { "id": "stonefist", "fg": 389, "rotates": false }, + { "id": "overlay_wielded_stonefist", "fg": 390, "rotates": false }, + { "id": "stormglove", "fg": 391, "rotates": false }, + { "id": "overlay_wielded_stormglove", "fg": 392, "rotates": false }, + { "id": "stormhammer", "fg": 393, "rotates": false }, + { "id": "overlay_wielded_stormhammer", "fg": 394, "rotates": false }, + { "id": "tentacle_whip", "fg": 395, "rotates": true }, + { "id": "overlay_wielded_tentacle_whip", "fg": 396, "rotates": true }, + { "id": "crystallized_mana", "fg": 397, "rotates": false }, + { "id": "overlay_wielded_crystallized_mana", "fg": 397, "rotates": false }, + { "id": "overlay_wielded_small_mana_crystal", "fg": 398, "rotates": false }, + { "id": "small_mana_crystal", "fg": 398, "rotates": false }, + { "id": "gram", "fg": 399, "rotates": false }, + { "id": "overlay_wielded_gram", "fg": 400, "rotates": false }, + { "id": "gungnir", "fg": 401, "rotates": false }, + { "id": "laevateinn", "fg": 402, "rotates": false }, + { "id": "overlay_wielded_laevateinn", "fg": 403, "rotates": false }, + { "id": "mjolnir", "fg": 404, "bg": 3, "rotates": false }, + { "id": "overlay_wielded_mjolnir", "fg": 405, "rotates": false }, + { "id": "mithril_ingot", "fg": 406, "rotates": false }, + { "id": "overlay_wielded_mithril_ingot", "fg": 406, "rotates": false }, + { "id": "mithril_lump", "fg": 407, "rotates": false }, + { "id": "overlay_wielded_mithril_lump", "fg": 407, "rotates": false }, + { "id": "orichalcum_ingot", "fg": 408, "rotates": false }, + { "id": "overlay_wielded_orichalcum_ingot", "fg": 408, "rotates": false }, + { "id": "orichalcum_lump", "fg": 409, "rotates": false }, + { "id": "overlay_wielded_orichalcum_lump", "fg": 409, "rotates": false }, + { "id": "orichalcum_sliver", "fg": 410, "rotates": false }, + { "id": "overlay_wielded_orichalcum_sliver", "fg": 410, "rotates": false }, + { "id": "iv_black_dragon", "fg": 412, "rotates": false }, + { "id": "overlay_wielded_iv_black_dragon", "fg": 412, "rotates": false }, + { "id": "manatouched_serum", "fg": 411, "rotates": false }, + { "id": "overlay_wielded_manatouched_serum", "fg": 411, "rotates": false }, + { "id": "mutagen_black_dragon", "fg": 412, "rotates": false }, + { "id": "overlay_wielded_mutagen_black_dragon", "fg": 412, "rotates": false }, + { "id": "wand_fireball", "fg": 413, "rotates": false }, + { "id": "overlay_wielded_wand_fireball", "fg": 414, "rotates": false }, + { "id": "wand_magic_missile", "fg": 415, "rotates": false }, + { "id": "overlay_wielded_wand_magic_missile", "fg": 416, "rotates": false }, + { "id": "alchemy_basic", "fg": 417, "rotates": false }, + { "id": "overlay_wielded_alchemy_basic", "fg": 417, "rotates": false }, + { "id": "black_dragons", "fg": 418, "rotates": false }, + { "id": "overlay_wielded_black_dragons", "fg": 418, "rotates": false }, + { "id": "black_dragons_historical", "fg": 419, "rotates": false }, + { "id": "overlay_wielded_black_dragons_historical", "fg": 419, "rotates": false }, + { "id": "book_mythological", "fg": 420, "rotates": false }, + { "id": "overlay_wielded_book_mythological", "fg": 420, "rotates": false }, + { "id": "cooking_poison", "fg": 421, "rotates": false }, + { "id": "overlay_wielded_cooking_poison", "fg": 421, "rotates": false }, + { "id": "enchantment_basic", "fg": 422, "rotates": false }, + { "id": "overlay_wielded_enchantment_basic", "fg": 422, "rotates": false }, + { "id": "magic_armormaking", "fg": 423, "rotates": false }, + { "id": "overlay_wielded_magic_armormaking", "fg": 423, "rotates": false }, + { "id": "metal_legends", "fg": 424, "rotates": false }, + { "id": "overlay_wielded_metal_legends", "fg": 424, "rotates": false }, + { "id": "necro_basic", "fg": 425, "rotates": false }, + { "id": "overlay_wielded_necro_basic", "fg": 425, "rotates": false }, + { "id": "overlay_wielded_techno_basic", "fg": 426, "rotates": false }, + { "id": "techno_basic", "fg": 426, "rotates": false }, + { "id": "biomancer_spellbook", "fg": 427, "rotates": true }, + { "id": "overlay_wielded_biomancer_spellbook", "fg": 427, "rotates": true }, + { "id": "DEBUG_spellbook", "fg": 428, "rotates": false }, + { "id": "overlay_wielded_DEBUG_spellbook", "fg": 428, "rotates": false }, + { "id": "druid_spellbook", "fg": 429, "rotates": true }, + { "id": "overlay_wielded_druid_spellbook", "fg": 429, "rotates": true }, + { "id": "eshaper_spellbook", "fg": 430 }, + { "id": "overlay_wielded_eshaper_spellbook", "fg": 430 }, + { "id": "generic_spellbook", "fg": 431, "rotates": false }, + { "id": "overlay_wielded_generic_spellbook", "fg": 431, "rotates": false }, + { "id": "light_manipulation_spellbook", "fg": 432, "rotates": false }, + { "id": "overlay_wielded_light_manipulation_spellbook", "fg": 432, "rotates": false }, + { "id": "magus_spellbook", "fg": 433 }, + { "id": "overlay_wielded_magus_spellbook", "fg": 433 }, + { "id": "magus_spellbook_move", "fg": 434 }, + { "id": "overlay_wielded_magus_spellbook_move", "fg": 434 }, + { "id": "novice_stormshaper_book", "fg": 435, "rotates": false }, + { "id": "overlay_wielded_novice_stormshaper_book", "fg": 435, "rotates": false }, + { "id": "overlay_wielded_priest_advanced", "fg": 436, "rotates": false }, + { "id": "priest_advanced", "fg": 436, "rotates": false }, + { "id": "overlay_wielded_priest_beginner", "fg": 437, "rotates": false }, + { "id": "priest_beginner", "fg": 437, "rotates": false }, + { "id": "overlay_wielded_pyro", "fg": 438, "rotates": false }, + { "id": "pyro", "fg": 438, "rotates": false }, + { "id": "overlay_wielded_recovery_spellbook", "fg": 439, "rotates": false }, + { "id": "recovery_spellbook", "fg": 439, "rotates": false }, + { "id": "overlay_wielded_stat_up_spellbook", "fg": 440 }, + { "id": "stat_up_spellbook", "fg": 440 }, + { "id": "overlay_wielded_summon_scroll_smudged", "fg": 441 }, + { "id": "summon_scroll_smudged", "fg": 441 }, + { "id": "overlay_wielded_summon_undead_spellbook", "fg": 442 }, + { "id": "summon_undead_spellbook", "fg": 442 }, + { "id": "overlay_wielded_techno_em", "fg": 443 }, + { "id": "techno_em", "fg": 443 }, + { "id": "overlay_wielded_techno_fundamentals", "fg": 444 }, + { "id": "techno_fundamentals", "fg": 444 }, + { "id": "overlay_wielded_techno_idiots", "fg": 445 }, + { "id": "techno_idiots", "fg": 445 }, + { "id": "overlay_wielded_tome_of_storms", "fg": 446, "rotates": false }, + { "id": "tome_of_storms", "fg": 446, "rotates": false }, + { "id": "overlay_wielded_translocate_spellbook", "fg": 447 }, + { "id": "translocate_spellbook", "fg": 447 }, + { "id": "overlay_wielded_winter_grasp", "fg": 448, "rotates": true }, + { "id": "winter_grasp", "fg": 448, "rotates": true }, + { "id": "overlay_wielded_wizard_advanced", "fg": 449, "rotates": true }, + { "id": "wizard_advanced", "fg": 449, "rotates": true }, + { "id": "overlay_wielded_wizard_beginner", "fg": 450, "rotates": true }, + { "id": "wizard_beginner", "fg": 450, "rotates": true }, + { "id": "overlay_wielded_wizard_utility", "fg": 451, "rotates": true }, + { "id": "wizard_utility", "fg": 451, "rotates": true }, + { "id": "lightning_storm_scroll", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_lightning_storm_scroll", "fg": 452, "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": 452, + "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": 452, + "rotates": false + }, + { "id": "overlay_wielded_spell_scroll_acid_resistance", "fg": 452, "rotates": false }, + { "id": "spell_scroll_acid_resistance", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_animated_blade", "fg": 452, "rotates": false }, + { "id": "spell_scroll_animated_blade", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_biomancer_coagulant_weave", "fg": 452, "rotates": false }, + { "id": "spell_scroll_biomancer_coagulant_weave", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_biomancer_paralytic_dart", "fg": 452, "rotates": false }, + { "id": "spell_scroll_biomancer_paralytic_dart", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_biomancer_visceral_projection", "fg": 452, "rotates": false }, + { "id": "spell_scroll_biomancer_visceral_projection", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_acidicspray", "fg": 452, "rotates": false }, + { "id": "spell_scroll_bio_acidicspray", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_bonespear", "fg": 452, "rotates": false }, + { "id": "spell_scroll_bio_bonespear", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_fleshpouch", "fg": 452, "rotates": false }, + { "id": "spell_scroll_bio_fleshpouch", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_grotesque", "fg": 452, "rotates": false }, + { "id": "spell_scroll_bio_grotesque", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bless", "fg": 452, "rotates": false }, + { "id": "spell_scroll_bless", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_blinding_flash", "fg": 452, "rotates": false }, + { "id": "spell_scroll_blinding_flash", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_burning_hands", "fg": 452, "rotates": false }, + { "id": "spell_scroll_burning_hands", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_cats_grace", "fg": 452, "rotates": false }, + { "id": "spell_scroll_cats_grace", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_chilling_touch", "fg": 452, "rotates": false }, + { "id": "spell_scroll_chilling_touch", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_clairvoyance", "fg": 452, "rotates": false }, + { "id": "spell_scroll_clairvoyance", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_cone_cold", "fg": 452, "rotates": false }, + { "id": "spell_scroll_cone_cold", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_create_atomic_lamp", "fg": 452, "rotates": false }, + { "id": "spell_scroll_create_atomic_lamp", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_create_atomic_light", "fg": 452, "rotates": false }, + { "id": "spell_scroll_create_atomic_light", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_create_lighter", "fg": 452, "rotates": false }, + { "id": "spell_scroll_create_lighter", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_crystallize_mana", "fg": 452, "rotates": false }, + { "id": "spell_scroll_crystallize_mana", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_dark_sight", "fg": 452, "rotates": false }, + { "id": "spell_scroll_dark_sight", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druidic_healing", "fg": 452, "rotates": false }, + { "id": "spell_scroll_druidic_healing", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druidic_regrowth", "fg": 452, "rotates": false }, + { "id": "spell_scroll_druidic_regrowth", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_naturebow1", "fg": 452, "rotates": false }, + { "id": "spell_scroll_druid_naturebow1", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_rootstrike", "fg": 452, "rotates": false }, + { "id": "spell_scroll_druid_rootstrike", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_veggrasp", "fg": 452, "rotates": false }, + { "id": "spell_scroll_druid_veggrasp", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_druid_woodshaft", "fg": 452, "rotates": false }, + { "id": "spell_scroll_druid_woodshaft", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eagles_sight", "fg": 452, "rotates": false }, + { "id": "spell_scroll_eagles_sight", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_earthshaper_pillar", "fg": 452, "rotates": false }, + { "id": "spell_scroll_earthshaper_pillar", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_earthshaper_stoneskin", "fg": 452, "rotates": false }, + { "id": "spell_scroll_earthshaper_stoneskin", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_piercing_bolt", "fg": 452, "rotates": false }, + { "id": "spell_scroll_eshaper_piercing_bolt", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_rockbolt", "fg": 452, "rotates": false }, + { "id": "spell_scroll_eshaper_rockbolt", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_shardspray", "fg": 452, "rotates": false }, + { "id": "spell_scroll_eshaper_shardspray", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_eshaper_shardstorm", "fg": 452, "rotates": false }, + { "id": "spell_scroll_eshaper_shardstorm", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ethereal_grasp", "fg": 452, "rotates": false }, + { "id": "spell_scroll_ethereal_grasp", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_fireball", "fg": 452, "rotates": false }, + { "id": "spell_scroll_fireball", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_foxs_cunning", "fg": 452, "rotates": false }, + { "id": "spell_scroll_foxs_cunning", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_freezing_touch", "fg": 452, "rotates": false }, + { "id": "spell_scroll_freezing_touch", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_frost_armor", "fg": 452, "rotates": false }, + { "id": "spell_scroll_frost_armor", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_frost_spray", "fg": 452, "rotates": false }, + { "id": "spell_scroll_frost_spray", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_glide_ice", "fg": 452, "rotates": false }, + { "id": "spell_scroll_glide_ice", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_gravity_well", "fg": 452, "rotates": false }, + { "id": "spell_scroll_gravity_well", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_hoary_blast", "fg": 452, "rotates": false }, + { "id": "spell_scroll_hoary_blast", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_holographic_transposition", "fg": 452, "rotates": false }, + { "id": "spell_scroll_holographic_transposition", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_holy_blade", "fg": 452, "rotates": false }, + { "id": "spell_scroll_holy_blade", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ice_shield", "fg": 452, "rotates": false }, + { "id": "spell_scroll_ice_shield", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ice_spike", "fg": 452, "rotates": false }, + { "id": "spell_scroll_ice_spike", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_invisibility", "fg": 452, "rotates": false }, + { "id": "spell_scroll_invisibility", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_jolt", "fg": 452, "rotates": false }, + { "id": "spell_scroll_jolt", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_lava_bomb", "fg": 452, "rotates": false }, + { "id": "spell_scroll_lava_bomb", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_laze", "fg": 452, "rotates": false }, + { "id": "spell_scroll_laze", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_lightning_blast", "fg": 452, "rotates": false }, + { "id": "spell_scroll_lightning_blast", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_lightning_bolt", "fg": 452, "rotates": false }, + { "id": "spell_scroll_lightning_bolt", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_light_healing", "fg": 452, "rotates": false }, + { "id": "spell_scroll_light_healing", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magic_missile", "fg": 452, "rotates": false }, + { "id": "spell_scroll_magic_missile", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_escape", "fg": 452, "rotates": false }, + { "id": "spell_scroll_magus_escape", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_haste", "fg": 452, "rotates": false }, + { "id": "spell_scroll_magus_haste", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_mana_beam", "fg": 452, "rotates": false }, + { "id": "spell_scroll_magus_mana_beam", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_mana_blast", "fg": 452, "rotates": false }, + { "id": "spell_scroll_magus_mana_blast", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_magus_mana_bolt", "fg": 452, "rotates": false }, + { "id": "spell_scroll_magus_mana_bolt", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_megablast", "fg": 452, "rotates": false }, + { "id": "spell_scroll_megablast", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_mirror_image", "fg": 452, "rotates": false }, + { "id": "spell_scroll_mirror_image", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_necrotic_gaze", "fg": 452, "rotates": false }, + { "id": "spell_scroll_necrotic_gaze", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_nova_flare", "fg": 452, "rotates": false }, + { "id": "spell_scroll_nova_flare", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_obfuscated_body", "fg": 452, "rotates": false }, + { "id": "spell_scroll_obfuscated_body", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_ogres_strength", "fg": 452, "rotates": false }, + { "id": "spell_scroll_ogres_strength", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_pain_split", "fg": 452, "rotates": false }, + { "id": "spell_scroll_pain_split", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_phase_door", "fg": 452, "rotates": false }, + { "id": "spell_scroll_phase_door", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_point_flare", "fg": 452, "rotates": false }, + { "id": "spell_scroll_point_flare", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_protection_aura", "fg": 452, "rotates": false }, + { "id": "spell_scroll_protection_aura", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_purification_seed", "fg": 452, "rotates": false }, + { "id": "spell_scroll_purification_seed", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_quantum_tunnel_lesser", "fg": 452, "rotates": false }, + { "id": "spell_scroll_quantum_tunnel_lesser", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_bionic_power", "fg": 452, "rotates": false }, + { "id": "spell_scroll_recover_bionic_power", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_fatigue", "fg": 452, "rotates": false }, + { "id": "spell_scroll_recover_fatigue", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_mana", "fg": 452, "rotates": false }, + { "id": "spell_scroll_recover_mana", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_pain", "fg": 452, "rotates": false }, + { "id": "spell_scroll_recover_pain", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_recover_stamina", "fg": 452, "rotates": false }, + { "id": "spell_scroll_recover_stamina", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_seismic_stomp", "fg": 452, "rotates": false }, + { "id": "spell_scroll_seismic_stomp", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_animated_blade", "fg": 452, "rotates": false }, + { "id": "spell_scroll_animated_blade", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_magic_motorcycle", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_magic_motorcycle", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_smite", "fg": 452, "rotates": false }, + { "id": "spell_scroll_smite", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_spirit_armor", "fg": 452, "rotates": false }, + { "id": "spell_scroll_spirit_armor", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_stonefist", "fg": 452, "rotates": false }, + { "id": "spell_scroll_stonefist", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_stormshaper_ionization", "fg": 452, "rotates": false }, + { "id": "spell_scroll_stormshaper_ionization", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_stormshaper_wall_of_fog", "fg": 452, "rotates": false }, + { "id": "spell_scroll_stormshaper_wall_of_fog", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_storm_hammer", "fg": 452, "rotates": false }, + { "id": "spell_scroll_storm_hammer", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_cats", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_cats", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_decayed_pouncer", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_decayed_pouncer", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_bio_bonespear", "fg": 452, "rotates": false }, + { "id": "spell_scroll_bio_bonespear", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_skeleton", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_skeleton", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_wisps", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_wisps", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_wolf", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_wolf", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_summon_zombie", "fg": 452, "rotates": false }, + { "id": "spell_scroll_summon_zombie", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_synaptic_stimulation", "fg": 452, "rotates": false }, + { "id": "spell_scroll_synaptic_stimulation", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_taze", "fg": 452, "rotates": false }, + { "id": "spell_scroll_taze", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_vicious_tentacle", "fg": 452, "rotates": false }, + { "id": "spell_scroll_vicious_tentacle", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_windrun", "fg": 452, "rotates": false }, + { "id": "spell_scroll_windrun", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_windstrike", "fg": 452, "rotates": false }, + { "id": "spell_scroll_windstrike", "fg": 452, "rotates": false }, + { "id": "overlay_wielded_spell_scroll_x-ray", "fg": 452, "rotates": false }, + { "id": "spell_scroll_x-ray", "fg": 452, "rotates": false }, + { "id": "cauldron_demon_chitin", "fg": 453, "rotates": false }, + { "id": "overlay_wielded_cauldron_demon_chitin", "fg": 454, "rotates": false }, + { "id": "cauldron_orichalcum", "fg": 455, "rotates": false }, + { "id": "overlay_wielded_cauldron_orichalcum", "fg": 456, "rotates": false }, + { "id": "demon_forge", "fg": 457, "rotates": false }, + { "id": "overlay_wielded_demon_forge", "fg": 458, "rotates": false }, + { "id": "overlay_wielded_sewing_kit", "fg": 459, "rotates": false }, + { "id": "sewing_kit", "fg": 459, "rotates": false }, + { "id": "overlay_wielded_tailors_kit", "fg": 460 }, + { "id": "tailors_kit", "fg": 460 }, + { "id": "fold_orichalcum_frame", "fg": 461, "rotates": false }, + { "id": "overlay_wielded_fold_orichalcum_frame", "fg": 462, "rotates": false }, + { "id": "orichalcum_frame", "fg": 463, "rotates": false }, + { "id": "overlay_wielded_orichalcum_frame", "fg": 464, "rotates": false }, + { "id": "lizardfolk_club", "fg": 465, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_club", "fg": 466, "rotates": false }, + { "id": "lizardfolk_javelin", "fg": 467, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_javelin", "fg": 468, "rotates": false }, + { "id": "lizardfolk_javelin_gun", "fg": 469, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_javelin_gun", "fg": 469, "rotates": false }, + { "id": "lizardfolk_trident", "fg": 470, "rotates": false }, + { "id": "overlay_wielded_lizardfolk_trident", "fg": 471, "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": 472, + "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": 473, + "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", + "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": 474, + "rotates": false + }, + { "id": [ "demon_spider_lair" ], "fg": 475, "rotates": false }, + { "id": [ "forest_tomb", "forest_tomb_roof" ], "fg": 476, "rotates": false }, + { "id": [ "forest_tomb_bottom" ], "fg": 477, "rotates": false }, + { + "id": [ + "forge_1A", + "forge_2A", + "forge_3A", + "forge_4A", + "forge_5A", + "forge_1B", + "forge_2B", + "forge_3B", + "forge_4B", + "forge_5B" + ], + "fg": 478, + "rotates": false + }, + { + "id": [ + "goblin_1A", + "goblin_2A", + "goblin_3A", + "goblin_4A", + "goblin_5A", + "goblin_1B", + "goblin_2B", + "goblin_3B", + "goblin_4B", + "goblin_5B", + "goblin_1C", + "goblin_2C", + "goblin_3C", + "goblin_4C", + "goblin_5C" + ], + "fg": 479, + "rotates": false + }, + { "id": [ "magic_cabin" ], "fg": 480, "rotates": false }, + { "id": [ "magic_shop", "magic_shop_2ndfloor", "magic_shop_roof" ], "fg": 481, "rotates": false }, + { "id": [ "orc_village" ], "fg": 482, "rotates": false }, + { "id": "mana", "fg": 483, "rotates": false }, + { "id": "overlay_wielded_mana", "fg": 483, "rotates": false }, + { "id": "mon_demon_spider", "fg": 484, "bg": 4, "rotates": false }, + { "id": "corpse_mon_demon_spider", "fg": 485, "rotates": false }, + { "id": "mon_demon_spiderling", "fg": 486, "bg": 4, "rotates": false }, + { "id": "corpse_mon_demon_spiderling", "fg": 487, "rotates": false }, + { "id": "mon_dragon_black_wyrmling", "fg": 488, "bg": 4, "rotates": false }, + { "id": "corpse_mon_dragon_black_wyrmling", "fg": 489, "rotates": false }, + { "id": "mon_forgedemons", "fg": 490, "bg": 4, "rotates": false }, + { "id": "corpse_mon_forgedemons", "fg": 491, "rotates": false }, + { + "id": "mon_forgedwarves", + "fg": [ + { "weight": 3, "sprite": 492 }, + { "weight": 3, "sprite": 493 }, + { "weight": 3, "sprite": 494 }, + { "weight": 3, "sprite": 495 }, + { "weight": 3, "sprite": 496 }, + { "weight": 3, "sprite": 497 }, + { "weight": 3, "sprite": 498 }, + { "weight": 3, "sprite": 499 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_forgedwarves", "fg": 500, "rotates": false }, + { "id": "mon_forgemaster1", "fg": 501, "bg": 2, "rotates": false }, + { "id": "corpse_mon_forgemaster1", "fg": 502, "rotates": false }, + { + "id": "mon_goblin_chieftain", + "fg": [ + { "weight": 3, "sprite": 503 }, + { "weight": 3, "sprite": 504 }, + { "weight": 3, "sprite": 505 }, + { "weight": 3, "sprite": 506 }, + { "weight": 3, "sprite": 507 }, + { "weight": 3, "sprite": 508 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_goblin_chieftain", "fg": 509, "rotates": false }, + { + "id": "mon_goblin_slinger", + "fg": [ + { "weight": 3, "sprite": 510 }, + { "weight": 3, "sprite": 511 }, + { "weight": 3, "sprite": 512 }, + { "weight": 3, "sprite": 513 }, + { "weight": 3, "sprite": 514 }, + { "weight": 3, "sprite": 515 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_goblin_slinger", "fg": 516, "rotates": false }, + { + "id": "mon_goblin_warrior", + "fg": [ + { "weight": 3, "sprite": 517 }, + { "weight": 3, "sprite": 518 }, + { "weight": 3, "sprite": 519 }, + { "weight": 3, "sprite": 520 }, + { "weight": 3, "sprite": 521 }, + { "weight": 3, "sprite": 522 } + ], + "bg": 2, + "rotates": false + }, + { "id": "corpse_mon_goblin_warrior", "fg": 523, "rotates": false }, + { "id": "mon_leprechaun", "fg": 524, "bg": 4, "rotates": false }, + { "id": "corpse_mon_leprechaun", "fg": 525, "rotates": false }, + { "id": "mon_workshop_elf", "fg": 526, "bg": 4, "rotates": false }, + { "id": "corpse_mon_workshop_elf", "fg": 527, "rotates": false }, + { "id": "mon_yulecat_cub", "fg": 528, "bg": 4, "rotates": false }, + { "id": "corpse_mon_yulecat_cub", "fg": 529, "rotates": false }, + { "id": "mon_crocodile", "fg": 530, "rotates": false }, + { "id": "corpse_mon_crocodile", "fg": 531, "rotates": false }, + { "id": "mon_baleful_polymorph_frog", "fg": 532, "bg": 1, "rotates": false }, + { "id": "corpse_mon_baleful_polymorph_frog", "fg": 533, "rotates": false }, + { "id": "mon_black_pudding", "fg": 534, "rotates": false }, + { "id": "mon_krabgek", "fg": 535, "bg": 4, "rotates": false }, + { "id": "corpse_mon_krabgek", "fg": 536, "rotates": false }, + { "id": "mon_lemure", "fg": 537, "bg": 4, "rotates": false }, + { "id": "corpse_mon_lemure", "fg": 538, "rotates": false }, + { "id": "mon_loup_garou", "fg": 539, "bg": 4 }, + { "id": "mon_owlbear", "fg": 540 }, + { "id": "corpse_mon_owlbear", "fg": 541 }, + { "id": "mon_owlbear_cub", "fg": 542 }, + { "id": "corpse_mon_owlbear_cub", "fg": 543 }, + { "id": "mon_shrieker", "fg": 544, "bg": 4, "rotates": false }, + { "id": "corpse_mon_shrieker", "fg": 545, "rotates": false }, + { "id": "mon_stirge", "fg": 546, "rotates": false }, + { "id": "corpse_mon_stirge", "fg": 547, "rotates": false }, + { "id": "mon_winter_wolf", "fg": 548, "bg": 4, "rotates": false }, + { "id": "corpse_mon_winter_wolf", "fg": 549, "rotates": false }, + { + "id": "mon_wisp", + "fg": [ + { "weight": 3, "sprite": 550 }, + { "weight": 3, "sprite": 551 }, + { "weight": 3, "sprite": 552 }, + { "weight": 3, "sprite": 553 } + ] + }, + { "id": "mon_animated_blade", "fg": 554 }, + { "id": "mon_mirror_image", "fg": 555 }, + { + "id": "mon_orc_archer", + "fg": [ + { "weight": 3, "sprite": 556 }, + { "weight": 3, "sprite": 557 }, + { "weight": 3, "sprite": 558 }, + { "weight": 3, "sprite": 559 }, + { "weight": 3, "sprite": 560 }, + { "weight": 3, "sprite": 561 } + ], + "bg": 4, + "rotates": false + }, + { "id": "corpse_mon_orc_archer", "fg": 562, "rotates": false }, + { + "id": "mon_orc_blood_warrior", + "fg": [ + { "weight": 3, "sprite": 563 }, + { "weight": 3, "sprite": 564 }, + { "weight": 3, "sprite": 565 }, + { "weight": 3, "sprite": 566 }, + { "weight": 3, "sprite": 567 }, + { "weight": 3, "sprite": 568 } + ], + "bg": 4, + "rotates": false + }, + { "id": "corpse_mon_orc_blood_warrior", "fg": 569, "rotates": false }, + { + "id": "mon_orc_warrior", + "fg": [ + { "weight": 3, "sprite": 570 }, + { "weight": 3, "sprite": 571 }, + { "weight": 3, "sprite": 572 }, + { "weight": 3, "sprite": 573 }, + { "weight": 3, "sprite": 574 }, + { "weight": 3, "sprite": 575 } + ], + "bg": 4, + "rotates": false + }, + { "id": "corpse_mon_orc_warrior", "fg": 576, "rotates": false }, + { "id": "mon_were_zolf", "fg": 577, "bg": 4 }, + { "id": "mon_zorc", "fg": 578, "bg": 4 }, + { "id": "corpse_mon_zorc", "fg": 579, "rotates": false }, + { "id": "overlay_wielded_skewer", "fg": 580, "rotates": false }, + { "id": "skewer", "fg": 580, "bg": 3, "rotates": false }, + { "id": "overlay_mutation_DRAGON_FEET", "fg": 581 }, + { "id": "overlay_mutation_DRAGON_MAW_BLACK", "fg": 582 }, + { "id": "overlay_female_mutation_DRAGON_SCALES_BLACK", "fg": 583 }, + { "id": "overlay_male_mutation_DRAGON_SCALES_BLACK", "fg": 584 }, + { "id": "overlay_mutation_DRAGON_TAIL", "fg": 585 }, + { "id": "overlay_mutation_DRAGON_TAIL_SCALED", "fg": 586 }, + { "id": "overlay_mutation_DRAGON_TALONS_BLACK", "fg": 587, "rotates": false }, + { "id": "overlay_mutation_DRAGON_WINGS_BLACK", "fg": 588 }, + { "id": "overlay_mutation_MUZZLE_DRAGON", "fg": 589 }, + { "id": "overlay_mutation_SCALED_HANDS", "fg": 590, "rotates": false }, + { "id": "f_null", "fg": 591, "rotates": false }, + { "id": "mon_null", "fg": 591, "rotates": false }, + { "id": "null", "fg": 591, "rotates": false }, + { "id": "t_null", "fg": 591, "rotates": false }, + { "id": "vp_null", "fg": 591, "rotates": false }, + { "id": "fungicide", "fg": 592, "bg": 3, "rotates": false }, + { "id": "overlay_wielded_fungicide", "fg": 592, "rotates": false }, + { + "id": "t_demon_web_wall", + "fg": 593, + "bg": 6, + "rotates": true, + "multitile": true, + "additional_tiles": [ + { "id": "center", "fg": 594, "bg": 6 }, + { "id": "corner", "fg": [ 595, 596, 597, 598 ], "bg": 6 }, + { "id": "t_connection", "fg": [ 605, 606, 607, 608 ], "bg": 6 }, + { "id": "edge", "fg": [ 599, 600 ], "bg": 6 }, + { "id": "end_piece", "fg": [ 601, 602, 603, 604 ], "bg": 6 }, + { "id": "unconnected", "fg": 609, "bg": 6 } + ] + }, + { + "id": "t_dirt_barren", + "fg": [ + { "weight": 40, "sprite": 610 }, + { "weight": 40, "sprite": 611 }, + { "weight": 40, "sprite": 612 }, + { "weight": 40, "sprite": 613 }, + { "weight": 1, "sprite": 614 } + ], + "rotates": false + }, + { "id": "t_magiconc_floor", "fg": 615, "rotates": false }, + { "id": "t_webbed_corpse", "fg": 616, "rotates": false }, + { "id": "tr_bear", "fg": 617, "rotates": false }, + { "id": "tr_forge_vault", "fg": 618, "rotates": false }, + { "id": "tr_magic_door", "fg": 619, "rotates": false }, + { + "id": "vp_folding_orichalcum_frame", + "fg": 620, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 621 } ] + }, + { + "id": "vp_frame_orichalcum_cover", + "fg": 622, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 623 } ] + }, + { + "id": "vp_frame_orichalcum_cross", + "fg": 624, + "rotates": true, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 625 } ] + }, + { + "id": "vp_frame_orichalcum_horizontal", + "fg": 626, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 627 } ] + }, + { + "id": "vp_frame_orichalcum_horizontal_2", + "fg": 628, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 629 } ] + }, + { + "id": "vp_frame_orichalcum_ne", + "fg": 630, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 631 } ] + }, + { + "id": "vp_frame_orichalcum_nw", + "fg": 632, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 633 } ] + }, + { + "id": "vp_frame_orichalcum_se", + "fg": 634, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 635 } ] + }, + { + "id": "vp_frame_orichalcum_sw", + "fg": 636, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 637 } ] + }, + { + "id": "vp_frame_orichalcum_vertical", + "fg": 638, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 639 } ] + }, + { + "id": "vp_frame_orichalcum_vertical_2", + "fg": 640, + "rotates": false, + "multitile": true, + "additional_tiles": [ { "id": "broken", "fg": 641 } ] + } + ], + "//": "range 1 to 656", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": 0 + }, + { + "file": "Magiclysm_normal_offset.png", + "tiles": [ { "id": "overlay_worn_wizard_hat", "fg": 657, "rotates": false } ], + "//": "range 657 to 672", + "sprite_width": 32, + "sprite_height": 32, + "sprite_offset_x": 0, + "sprite_offset_y": -16 + }, + { + "file": "Magiclysm_large.png", + "tiles": [ + { "id": "bg_big_dirt", "fg": 673, "rotates": false }, + { "id": "bg_big_golem_shadow", "fg": 674, "rotates": false }, + { "id": "bg_big_large_shadow", "fg": 676, "rotates": false }, + { "id": "bg_big_normal_shadow", "fg": 676, "rotates": false }, + { "id": "bg_big_snow", "fg": 677, "rotates": false }, + { "id": "bg_big_tall_shadow", "fg": 678, "rotates": false }, + { "id": "f_alembic", "fg": 679, "rotates": false }, + { + "id": "f_everburning_candelabra", + "fg": [ { "weight": 11, "sprite": 680 }, { "weight": 11, "sprite": 681 }, { "weight": 11, "sprite": 682 } ], + "rotates": false, + "animated": true + }, + { "id": "f_glow_boulder", "fg": 683, "rotates": false }, + { "id": "f_glow_boulder_season_autumn", "fg": 684, "rotates": false }, + { "id": "f_glow_boulder_season_spring", "fg": 685, "rotates": false }, + { "id": "f_glow_boulder_season_summer", "fg": 686, "rotates": false }, + { "id": "f_glow_boulder_season_winter", "fg": 687, "rotates": false }, + { "id": "f_huge_mana_crystal", "fg": 688, "rotates": false }, + { "id": "overlay_worn_magic_lamp", "fg": 689, "rotates": false }, + { "id": "overlay_worn_magic_light", "fg": 690, "rotates": false }, + { "id": "overlay_wielded_gungnir", "fg": 691, "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": 692, + "rotates": false + }, + { "id": "mon_demon_spider_queen", "fg": 693, "rotates": false }, + { "id": "corpse_mon_demon_spider_queen", "fg": 694, "rotates": false }, + { "id": "mon_dragon_black_young", "fg": 695, "rotates": false }, + { "id": "corpse_mon_dragon_black_young", "fg": 696, "rotates": false }, + { "id": "mon_forgeborn", "fg": 697, "bg": 678, "rotates": false }, + { "id": "corpse_mon_forgeborn", "fg": 698, "rotates": false }, + { "id": "mon_claygolem", "fg": 699, "bg": 674, "rotates": false }, + { "id": "mon_irongolem", "fg": 700, "bg": 674, "rotates": false }, + { "id": "mon_plasticgolem", "fg": 701, "bg": 674, "rotates": false }, + { "id": "mon_stonegolem", "fg": 702, "bg": 674, "rotates": false }, + { "id": "mon_yulecat", "fg": 703, "bg": 675, "rotates": false }, + { "id": "corpse_mon_yulecat", "fg": 704, "rotates": false }, + { "id": "mon_lizardfolk_chieftan", "fg": 705, "rotates": false }, + { "id": "corpse_mon_lizardfolk_chieftan", "fg": 706, "rotates": false }, + { "id": "mon_lizardfolk_hunter", "fg": 707, "rotates": false }, + { "id": "corpse_mon_lizardfolk_hunter", "fg": 708, "rotates": false }, + { "id": "mon_lizardfolk_shaman", "fg": 709, "rotates": false }, + { "id": "corpse_mon_lizardfolk_shaman", "fg": 710, "rotates": false }, + { "id": "mon_lizardfolk_warrior", "fg": 711, "rotates": false }, + { "id": "corpse_mon_lizardfolk_warrior", "fg": 712, "rotates": false }, + { "id": "mon_bulette", "fg": 713, "rotates": false }, + { "id": "corpse_mon_bulette", "fg": 714, "rotates": false }, + { "id": "mon_ogre", "fg": 715, "rotates": false }, + { "id": "corpse_mon_ogre", "fg": 716, "rotates": false }, + { "id": "mon_troll", "fg": 717, "rotates": false }, + { "id": "corpse_mon_troll", "fg": 718, "rotates": false }, + { + "id": "t_thconc_floor_echandelier", + "fg": [ { "weight": 11, "sprite": 719 }, { "weight": 11, "sprite": 720 }, { "weight": 11, "sprite": 721 } ], + "bg": 722, + "rotates": false, + "animated": true + }, + { "id": "t_tree_burnt", "fg": 723, "bg": 673, "rotates": false }, + { "id": "t_tree_burnt_season_autumn", "fg": 724, "bg": 673, "rotates": false }, + { "id": "t_tree_burnt_season_spring", "fg": 725, "bg": 673, "rotates": false }, + { "id": "t_tree_burnt_season_summer", "fg": 726, "bg": 673, "rotates": false }, + { "id": "t_tree_burnt_season_winter", "fg": 727, "bg": 677, "rotates": false } + ], + "//": "range 673 to 736", + "sprite_width": 64, + "sprite_height": 80, + "sprite_offset_x": -16, + "sprite_offset_y": -48 + }, + { + "file": "Magiclysm_huge.png", + "tiles": [ + { "id": "f_orrery", "fg": 737, "rotates": false }, + { "id": "mon_dragon_black_adult", "fg": 738, "rotates": false }, + { "id": "corpse_mon_dragon_black_adult", "fg": 739, "rotates": false } + ], + "//": "range 737 to 752", + "sprite_width": 160, + "sprite_height": 128, + "sprite_offset_x": -48, + "sprite_offset_y": -48 + } + ] + } +] diff --git a/modinfo.json b/modinfo.json new file mode 100644 index 0000000..25b088a --- /dev/null +++ b/modinfo.json @@ -0,0 +1,19 @@ +[ + { + "type": "MOD_INFO", + "id": "magiclysm", + "name": "Magiclysm", + "authors": [ "KorGgenT", "Aptronym", "LaVeyanFiend" ], + "maintainers": [ "KorGgenT" ], + "description": "Cataclysm but with magic spells!", + "category": "content", + "dependencies": [ "bn" ] + }, + { + "type": "skill", + "id": "spellcraft", + "name": "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/monster_attacks.json b/monster_attacks.json new file mode 100644 index 0000000..f2b297a --- /dev/null +++ b/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/monster_factions.json b/monster_factions.json new file mode 100644 index 0000000..b9adba0 --- /dev/null +++ b/monster_factions.json @@ -0,0 +1,21 @@ +[ + { + "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" ] + } +] diff --git a/monstergroups.json b/monstergroups.json new file mode 100644 index 0000000..286de2c --- /dev/null +++ b/monstergroups.json @@ -0,0 +1,118 @@ +[ + { + "type": "monstergroup", + "name": "GROUP_NULL", + "is_safe": true, + "default": "mon_null" + }, + { + "type": "monstergroup", + "name": "GROUP_FOREST", + "default": "mon_null", + "is_animal": true, + "monsters": [ + { "monster": "mon_owlbear", "freq": 10, "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, + "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 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_CAVE", + "default": "mon_null", + "is_animal": 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, + "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_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/monstergroups_egg.json b/monstergroups_egg.json new file mode 100644 index 0000000..c83689d --- /dev/null +++ b/monstergroups_egg.json @@ -0,0 +1,7 @@ +[ + { + "name": "GROUP_EGG_OWLBEAR", + "type": "monstergroup", + "default": "mon_owlbear_cub" + } +] diff --git a/monsters.json b/monsters.json new file mode 100644 index 0000000..07bf47d --- /dev/null +++ b/monsters.json @@ -0,0 +1,57 @@ +[ + { + "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, + "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" ] + } +] diff --git a/monsters/demon_spider.json b/monsters/demon_spider.json new file mode 100644 index 0000000..d0e74e1 --- /dev/null +++ b/monsters/demon_spider.json @@ -0,0 +1,117 @@ +[ + { + "type": "SPECIES", + "id": "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": "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": 45, + "speed": 150, + "symbol": "s", + "color": "red", + "aggression": -10, + "morale": 100, + "melee_skill": 6, + "melee_dice": 1, + "melee_dice_sides": 8, + "melee_cut": 4, + "dodge": 7, + "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": 435, + "speed": 95, + "symbol": "S", + "color": "red", + "aggression": 50, + "morale": 100, + "melee_skill": 9, + "melee_dice": 20, + "melee_dice_sides": 8, + "melee_cut": 12, + "dodge": 4, + "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": "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": 5600, + "speed": 28, + "aggression": 100, + "melee_skill": 10, + "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": 14 } ] + } +] diff --git a/monsters/dragon.json b/monsters/dragon.json new file mode 100644 index 0000000..f68f3b5 --- /dev/null +++ b/monsters/dragon.json @@ -0,0 +1,168 @@ +[ + { + "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": 2, + "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", + "ATTACKMON", + "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": 8, + "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": 3500, + "melee_dice": 4, + "melee_dice_sides": 12, + "melee_cut": 28, + "armor_bash": 14, + "armor_cut": 30, + "armor_bullet": 24, + "dodge": 3, + "//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/monsters/golems.json b/monsters/golems.json new file mode 100644 index 0000000..b71069b --- /dev/null +++ b/monsters/golems.json @@ -0,0 +1,132 @@ +[ + { + "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": 10, + "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": "factionless", + "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" ], + "regenerates": 10, + "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": 10, + "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": 10, + "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" ] + } +] diff --git a/monsters/lizardfolk.json b/monsters/lizardfolk.json new file mode 100644 index 0000000..8622404 --- /dev/null +++ b/monsters/lizardfolk.json @@ -0,0 +1,139 @@ +[ + { + "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": 70, + "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": 5, + "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", + "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": 80, + "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": 3, + "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/monsters/monsters.json b/monsters/monsters.json new file mode 100644 index 0000000..a604ed8 --- /dev/null +++ b/monsters/monsters.json @@ -0,0 +1,342 @@ +[ + { + "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 clime, as well as subterranean labyrinths. They are ravenous eaters, aggressive hunters, and evil tempered at all times. They attack prey on sight and will fight to the death.", + "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": 100, + "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, + "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": 100, + "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": "bio_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" ], + "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": "necrotic_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": 100, + "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/npc/TALK_HEALER_GREY.json b/npc/TALK_HEALER_GREY.json new file mode 100644 index 0000000..d10254b --- /dev/null +++ b/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/npc/TALK_OLD_MAGUS.json b/npc/TALK_OLD_MAGUS.json new file mode 100644 index 0000000..b8467b4 --- /dev/null +++ b/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/npc/TALK_TECHNO_KID.json b/npc/TALK_TECHNO_KID.json new file mode 100644 index 0000000..cdf6a54 --- /dev/null +++ b/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/npc/classes.json b/npc/classes.json new file mode 100644 index 0000000..ce3354b --- /dev/null +++ b/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/npc/factions.json b/npc/factions.json new file mode 100644 index 0000000..397dbe5 --- /dev/null +++ b/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/npc/items_worn.json b/npc/items_worn.json new file mode 100644 index 0000000..2304f92 --- /dev/null +++ b/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/npc/missiondef.json b/npc/missiondef.json new file mode 100644 index 0000000..3bb3f7f --- /dev/null +++ b/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/npc/npc.json b/npc/npc.json new file mode 100644 index 0000000..a1acec9 --- /dev/null +++ b/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/obsolete.json b/obsolete.json new file mode 100644 index 0000000..0fd668b --- /dev/null +++ b/obsolete.json @@ -0,0 +1,7 @@ +[ + { + "type": "recipe", + "result": "flu_shot", + "obsolete": true + } +] diff --git a/professions.json b/professions.json new file mode 100644 index 0000000..b54c849 --- /dev/null +++ b/professions.json @@ -0,0 +1,255 @@ +[ + { + "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": 4, + "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" ], + "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" ], + "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" ], + "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" ], + "male": [ "boxer_briefs" ], + "female": [ "bra", "panties" ] + }, + "traits": [ "TECHNOMANCER" ] + } +] diff --git a/qualities.json b/qualities.json new file mode 100644 index 0000000..8d78088 --- /dev/null +++ b/qualities.json @@ -0,0 +1,33 @@ +[ + { + "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" + ] + }, + { + "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/recipes.json b/recipes.json new file mode 100644 index 0000000..73edd61 --- /dev/null +++ b/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/recipes/alchemy.json b/recipes/alchemy.json new file mode 100644 index 0000000..445f5c3 --- /dev/null +++ b/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": [ + [ [ "tainted_blood", 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/recipes/armor.json b/recipes/armor.json new file mode 100644 index 0000000..962dbe5 --- /dev/null +++ b/recipes/armor.json @@ -0,0 +1,117 @@ +[ + { + "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", + "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", + "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", + "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", + "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", + "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/recipes/blacksmithing.json b/recipes/blacksmithing.json new file mode 100644 index 0000000..ad092d0 --- /dev/null +++ b/recipes/blacksmithing.json @@ -0,0 +1,54 @@ +[ + { + "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 ] ] ] + }, + { + "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/recipes/construction.json b/recipes/construction.json new file mode 100644 index 0000000..68f7e78 --- /dev/null +++ b/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/recipes/cooking.json b/recipes/cooking.json new file mode 100644 index 0000000..5b16d46 --- /dev/null +++ b/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/recipes/deconstruction.json b/recipes/deconstruction.json new file mode 100644 index 0000000..5fe9ad1 --- /dev/null +++ b/recipes/deconstruction.json @@ -0,0 +1,29 @@ +[ + { + "result": "broken_claygolem", + "type": "uncraft", + "skill_used": "spellcraft", + "difficulty": 2, + "time": "4 h", + "qualities": [ { "id": "HAMMER", "level": 1 } ], + "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 ] ] ] + } +] diff --git a/recipes/dragon_black.json b/recipes/dragon_black.json new file mode 100644 index 0000000..01ef4a4 --- /dev/null +++ b/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/recipes/magic_tools.json b/recipes/magic_tools.json new file mode 100644 index 0000000..ac63cd0 --- /dev/null +++ b/recipes/magic_tools.json @@ -0,0 +1,105 @@ +[ + { + "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": "stone_chisel", + "category": "CC_OTHER", + "subcategory": "CSC_OTHER_TOOLS", + "skill_used": "fabrication", + "difficulty": 0, + "time": "20 m", + "autolearn": true, + "qualities": [ { "id": "HAMMER", "level": 1 }, { "id": "CUT", "level": 1 } ], + "components": [ [ [ "rock", 1 ], [ "sharp_rock", 1 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ] ] + }, + { + "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 ] ] + ] + } +] diff --git a/recipes/mods.json b/recipes/mods.json new file mode 100644 index 0000000..18074f9 --- /dev/null +++ b/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/recipes/recipe_potions.json b/recipes/recipe_potions.json new file mode 100644 index 0000000..2ef23d1 --- /dev/null +++ b/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/recipes/weapons.json b/recipes/weapons.json new file mode 100644 index 0000000..4de1544 --- /dev/null +++ b/recipes/weapons.json @@ -0,0 +1,355 @@ +[ + { + "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" ] ] + ] + } +] diff --git a/requirements/alchemy.json b/requirements/alchemy.json new file mode 100644 index 0000000..7956b1b --- /dev/null +++ b/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/requirements/cooking_components.json b/requirements/cooking_components.json new file mode 100644 index 0000000..24a2851 --- /dev/null +++ b/requirements/cooking_components.json @@ -0,0 +1,17 @@ +[ + { + "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 ] + ] + ] + } +] diff --git a/scenarios.json b/scenarios.json new file mode 100644 index 0000000..f3110e5 --- /dev/null +++ b/scenarios.json @@ -0,0 +1,35 @@ +[ + { + "type": "scenario", + "id": "lost_faith", + "name": "Lost Faith", + "flags": [ "SUR_START", "LONE_START" ], + "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" ] + }, + { + "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" ] + } +] diff --git a/species.json b/species.json new file mode 100644 index 0000000..c546b8e --- /dev/null +++ b/species.json @@ -0,0 +1,17 @@ +[ + { + "type": "SPECIES", + "id": "MAGICAL_BEAST" + }, + { + "type": "SPECIES", + "id": "DRAGON", + "anger_triggers": [ "HURT", "PLAYER_CLOSE", "PLAYER_WEAK", "STALK" ] + }, + { + "type": "SPECIES", + "id": "LIZARDFOLK", + "anger_triggers": [ "FRIEND_ATTACKED" ], + "fear_triggers": [ "FIRE" ] + } +] diff --git a/start_locations.json b/start_locations.json new file mode 100644 index 0000000..ee7e474 --- /dev/null +++ b/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/ter_fur_transform/ter_fur_transform.json b/ter_fur_transform/ter_fur_transform.json new file mode 100644 index 0000000..a16ce09 --- /dev/null +++ b/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/terrain.json b/terrain.json new file mode 100644 index 0000000..5d90160 --- /dev/null +++ b/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/tool_qualities.json b/tool_qualities.json new file mode 100644 index 0000000..1c48775 --- /dev/null +++ b/tool_qualities.json @@ -0,0 +1,7 @@ +[ + { + "type": "tool_quality", + "id": "MAGIC_MUTAGEN", + "name": "magic mutagen mixer" + } +] diff --git a/traits/classes.json b/traits/classes.json new file mode 100644 index 0000000..0842132 --- /dev/null +++ b/traits/classes.json @@ -0,0 +1,98 @@ +[ + { + "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, + "cancels": [ "ANIMIST" ], + "spells_learned": [ [ "create_rune_magus", 1 ] ] + }, + { + "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, + "cancels": [ "MAGUS" ], + "spells_learned": [ [ "create_rune_animist", 1 ] ] + }, + { + "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, + "cancels": [ "STORMSHAPER" ], + "spells_learned": [ [ "create_rune_kelvinist", 1 ] ] + }, + { + "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, + "cancels": [ "KELVINIST" ], + "spells_learned": [ [ "create_rune_stormshaper", 1 ] ] + }, + { + "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, + "cancels": [ "EARTHSHAPER" ], + "spells_learned": [ [ "create_rune_technomancer", 1 ] ] + }, + { + "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, + "cancels": [ "TECHNOMANCER" ], + "spells_learned": [ [ "create_rune_earthshaper", 1 ] ] + }, + { + "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, + "cancels": [ "DRUID" ], + "spells_learned": [ [ "create_rune_biomancer", 1 ] ] + }, + { + "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, + "cancels": [ "BIOMANCER" ], + "spells_learned": [ [ "create_rune_druid", 1 ] ] + } +] diff --git a/traits/manatouched.json b/traits/manatouched.json new file mode 100644 index 0000000..aaa1548 --- /dev/null +++ b/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.0, + "max_damage": 180, + "max_level": 35, + "effect": "recover_energy", + "effect_str": "MANA", + "flags": [ "SILENT", "NO_LEGS", "NO_HANDS" ] + }, + { + "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/traits/mutation.json b/traits/mutation.json new file mode 100644 index 0000000..a1c2918 --- /dev/null +++ b/traits/mutation.json @@ -0,0 +1,269 @@ +[ + { + "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" ], + "starting_trait": true, + "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" ], + "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" ], + "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/traps.json b/traps.json new file mode 100644 index 0000000..2781527 --- /dev/null +++ b/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/vehicle_groups.json b/vehicle_groups.json new file mode 100644 index 0000000..f745155 --- /dev/null +++ b/vehicle_groups.json @@ -0,0 +1,42 @@ +[ + { + "type": "vehicle_group", + "id": "city_vehicles", + "vehicles": [ [ "bicycle_orichalcum", 300 ] ] + }, + { + "type": "vehicle_group", + "id": "suburban_home", + "vehicles": [ [ "bicycle_orichalcum", 100 ] ] + }, + { + "type": "vehicle_group", + "id": "dirtlot", + "vehicles": [ [ "bicycle_orichalcum", 50 ] ] + }, + { + "type": "vehicle_group", + "id": "parkinglot", + "vehicles": [ [ "bicycle_orichalcum", 350 ] ] + }, + { + "type": "vehicle_group", + "id": "campground_vehicles", + "vehicles": [ [ "bicycle_orichalcum", 75 ] ] + }, + { + "type": "vehicle_group", + "id": "bikeshop", + "vehicles": [ [ "bicycle_orichalcum", 600 ] ] + }, + { + "type": "vehicle_group", + "id": "back_alley", + "vehicles": [ [ "bicycle_orichalcum", 450 ] ] + }, + { + "type": "vehicle_group", + "id": "showroom_small_vehicles", + "vehicles": [ [ "bicycle_orichalcum", 100 ] ] + } +] diff --git a/vehicleparts/frames.json b/vehicleparts/frames.json new file mode 100644 index 0000000..5cc54ca --- /dev/null +++ b/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/vehicleparts/vehicle_parts.json b/vehicleparts/vehicle_parts.json new file mode 100644 index 0000000..fba2697 --- /dev/null +++ b/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/vehicles/bikes.json b/vehicles/bikes.json new file mode 100644 index 0000000..4da67b1 --- /dev/null +++ b/vehicles/bikes.json @@ -0,0 +1,13 @@ +[ + { + "id": "bicycle_orichalcum", + "type": "vehicle", + "name": "Bicycle", + "blueprint": [ "o#o" ], + "parts": [ + { "x": 0, "y": 0, "parts": [ "folding_orichalcum_frame", "saddle", "horn_bicycle", "foot_pedals" ] }, + { "x": 1, "y": 0, "parts": [ "folding_orichalcum_frame", "wheel_mount_light_steerable", "wheel_bicycle" ] }, + { "x": -1, "y": 0, "parts": [ "folding_orichalcum_frame", "wheel_mount_light", "wheel_bicycle", "basketsm" ] } + ] + } +] diff --git a/vehicles/summoned_vehicles.json b/vehicles/summoned_vehicles.json new file mode 100644 index 0000000..60e9d2f --- /dev/null +++ b/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, + "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": 150, + "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/vehicles/vans_busses.json b/vehicles/vans_busses.json new file mode 100644 index 0000000..05725b3 --- /dev/null +++ b/vehicles/vans_busses.json @@ -0,0 +1,178 @@ +[ + { + "id": "security_van", + "type": "vehicle", + "name": "Security Van", + "blueprint": [ + [ " o " ], + [ "O----+-O" ], + [ "|===|#'|" ], + [ "+===|o'>" ], + [ "|===|#'|" ], + [ "O--+-+-O" ], + [ " o " ] + ], + "parts": [ + { "x": 0, "y": 1, "part": "frame_orichalcum_vertical" }, + { "x": 0, "y": 1, "part": "box" }, + { "x": 0, "y": 1, "part": "hdroof" }, + { "x": 0, "y": 0, "part": "frame_orichalcum_vertical_2" }, + { "x": 0, "y": 0, "part": "seat" }, + { "x": 0, "y": 0, "part": "seatbelt" }, + { "x": 0, "y": 0, "part": "controls" }, + { "x": 0, "y": 0, "part": "dashboard" }, + { "x": 0, "y": 0, "part": "vehicle_alarm" }, + { "x": 0, "y": 0, "part": "horn_car" }, + { "x": 0, "y": 0, "part": "hdroof" }, + { "x": 0, "y": 2, "part": "frame_orichalcum_vertical_2" }, + { "x": 0, "y": 2, "part": "seat" }, + { "x": 0, "y": 2, "part": "seatbelt" }, + { "x": 0, "y": 2, "part": "hdroof" }, + { "x": 0, "y": -1, "part": "frame_orichalcum_vertical" }, + { "x": 0, "y": -1, "part": "hddoor" }, + { "x": 0, "y": -1, "part": "plating_steel" }, + { "x": 0, "y": 3, "part": "frame_orichalcum_vertical" }, + { "x": 0, "y": 3, "part": "hddoor" }, + { "x": 0, "y": 3, "part": "plating_steel" }, + { "x": 1, "y": 1, "part": "frame_orichalcum_horizontal" }, + { "x": 1, "y": 1, "part": "reinforced_windshield" }, + { "x": 1, "y": 1, "part": "plating_steel" }, + { "x": 1, "y": 1, "part": "diesel_engine_v6" }, + { "x": 1, "y": 1, "part": "alternator_truck" }, + { "x": 1, "y": 1, "part": "battery_car" }, + { "x": 1, "y": 0, "part": "frame_orichalcum_horizontal" }, + { "x": 1, "y": 0, "part": "reinforced_windshield" }, + { "x": 1, "y": 0, "part": "plating_steel" }, + { "x": 1, "y": 2, "part": "frame_orichalcum_horizontal" }, + { "x": 1, "y": 2, "part": "reinforced_windshield" }, + { "x": 1, "y": 2, "part": "plating_steel" }, + { "x": 1, "y": -1, "part": "frame_orichalcum_vertical" }, + { "x": 1, "y": -1, "part": "reinforced_windshield" }, + { "x": 1, "y": -1, "part": "plating_steel" }, + { "x": 1, "y": -2, "part": "wing_mirror" }, + { "x": 1, "y": 3, "part": "frame_orichalcum_vertical" }, + { "x": 1, "y": 3, "part": "reinforced_windshield" }, + { "x": 1, "y": 3, "part": "plating_steel" }, + { "x": 1, "y": 4, "part": "wing_mirror" }, + { "x": 2, "y": 0, "part": "frame_orichalcum_horizontal" }, + { "x": 2, "y": 0, "part": "hdhalfboard_horizontal_2" }, + { "x": 2, "y": 0, "part": "plating_steel" }, + { "x": 2, "y": 1, "part": "hdframe_cover" }, + { "x": 2, "y": 1, "part": "hdhalfboard_horizontal_2" }, + { "x": 2, "y": 1, "part": "plating_steel" }, + { "x": 2, "y": 2, "part": "frame_orichalcum_horizontal" }, + { "x": 2, "y": 2, "part": "hdhalfboard_horizontal_2" }, + { "x": 2, "y": 2, "part": "plating_steel" }, + { "x": 2, "y": -1, "part": "frame_orichalcum_nw" }, + { "x": 2, "y": -1, "part": "hdhalfboard_nw" }, + { "x": 2, "y": -1, "part": "headlight_reinforced" }, + { "x": 2, "y": -1, "parts": [ "wheel_mount_medium_steerable", "wheel_wide" ] }, + { "x": 2, "y": -1, "part": "plating_steel" }, + { "x": 2, "y": 3, "part": "frame_orichalcum_ne" }, + { "x": 2, "y": 3, "part": "hdhalfboard_ne" }, + { "x": 2, "y": 3, "part": "headlight_reinforced" }, + { "x": 2, "y": 3, "parts": [ "wheel_mount_medium_steerable", "wheel_wide" ] }, + { "x": 2, "y": 3, "part": "plating_steel" }, + { "x": -1, "y": 0, "part": "frame_orichalcum_horizontal" }, + { "x": -1, "y": 0, "part": "hdboard_horizontal" }, + { "x": -1, "y": 0, "part": "plating_steel" }, + { "x": -1, "y": 1, "part": "frame_orichalcum_horizontal" }, + { "x": -1, "y": 1, "part": "hdboard_horizontal" }, + { "x": -1, "y": 1, "part": "plating_steel" }, + { "x": -1, "y": 2, "part": "frame_orichalcum_horizontal" }, + { "x": -1, "y": 2, "part": "hdboard_horizontal" }, + { "x": -1, "y": 2, "part": "plating_steel" }, + { "x": -1, "y": -1, "part": "frame_orichalcum_sw" }, + { "x": -1, "y": -1, "part": "hdboard_sw" }, + { "x": -1, "y": -1, "part": "plating_steel" }, + { "x": -1, "y": -1, "part": "tank", "fuel": "diesel" }, + { "x": -1, "y": 3, "part": "frame_orichalcum_se" }, + { "x": -1, "y": 3, "part": "hdboard_se" }, + { "x": -1, "y": 3, "part": "tank", "fuel": "diesel" }, + { "x": -1, "y": 3, "part": "plating_steel" }, + { "x": -2, "y": 0, "part": "frame_orichalcum_vertical" }, + { "x": -2, "y": 0, "part": "trunk" }, + { "x": -2, "y": 0, "part": "hdroof" }, + { "x": -2, "y": 1, "part": "frame_orichalcum_vertical" }, + { "x": -2, "y": 1, "part": "aisle_horizontal" }, + { "x": -2, "y": 1, "part": "hdroof" }, + { "x": -2, "y": 2, "part": "frame_orichalcum_vertical" }, + { "x": -2, "y": 2, "part": "aisle_horizontal" }, + { "x": -2, "y": 2, "part": "hdroof" }, + { "x": -2, "y": -1, "part": "frame_orichalcum_vertical" }, + { "x": -2, "y": -1, "part": "hdboard_vertical" }, + { "x": -2, "y": -1, "part": "hdroof" }, + { "x": -2, "y": -1, "part": "plating_steel" }, + { "x": -2, "y": 3, "part": "frame_orichalcum_vertical" }, + { "x": -2, "y": 3, "part": "hddoor_opaque" }, + { "x": -2, "y": 3, "part": "hdroof" }, + { "x": -2, "y": 3, "part": "plating_steel" }, + { "x": -3, "y": 0, "part": "frame_orichalcum_horizontal" }, + { "x": -3, "y": 0, "part": "trunk" }, + { "x": -3, "y": 0, "part": "hdroof" }, + { "x": -3, "y": 1, "part": "frame_orichalcum_horizontal" }, + { "x": -3, "y": 1, "part": "aisle_horizontal" }, + { "x": -3, "y": 1, "part": "hdroof" }, + { "x": -3, "y": 2, "part": "frame_orichalcum_horizontal" }, + { "x": -3, "y": 2, "part": "seat" }, + { "x": -3, "y": 2, "part": "seatbelt" }, + { "x": -3, "y": 2, "part": "hdroof" }, + { "x": -3, "y": -1, "part": "frame_orichalcum_vertical" }, + { "x": -3, "y": -1, "part": "hdboard_vertical" }, + { "x": -3, "y": -1, "part": "hdroof" }, + { "x": -3, "y": -1, "part": "plating_steel" }, + { "x": -3, "y": 3, "part": "frame_orichalcum_vertical" }, + { "x": -3, "y": 3, "part": "hdboard_vertical" }, + { "x": -3, "y": 3, "part": "hdroof" }, + { "x": -3, "y": 3, "part": "plating_steel" }, + { "x": -4, "y": 0, "part": "frame_orichalcum_horizontal" }, + { "x": -4, "y": 0, "part": "trunk" }, + { "x": -4, "y": 0, "part": "hdroof" }, + { "x": -4, "y": 1, "part": "frame_orichalcum_horizontal" }, + { "x": -4, "y": 1, "part": "aisle_horizontal" }, + { "x": -4, "y": 1, "part": "hdroof" }, + { "x": -4, "y": 2, "part": "frame_orichalcum_horizontal" }, + { "x": -4, "y": 2, "part": "trunk" }, + { "x": -4, "y": 2, "part": "hdroof" }, + { "x": -4, "y": -1, "part": "frame_orichalcum_vertical" }, + { "x": -4, "y": -1, "part": "hdboard_vertical" }, + { "x": -4, "y": -1, "part": "hdroof" }, + { "x": -4, "y": -1, "part": "plating_steel" }, + { "x": -4, "y": 3, "part": "frame_orichalcum_vertical" }, + { "x": -4, "y": 3, "part": "hdboard_vertical" }, + { "x": -4, "y": 3, "part": "hdroof" }, + { "x": -4, "y": 3, "part": "plating_steel" }, + { "x": -5, "y": 0, "part": "frame_orichalcum_horizontal" }, + { "x": -5, "y": 0, "part": "hdboard_horizontal" }, + { "x": -5, "y": 0, "part": "hdroof" }, + { "x": -5, "y": 0, "part": "plating_steel" }, + { "x": -5, "y": 1, "part": "frame_orichalcum_horizontal" }, + { "x": -5, "y": 1, "part": "hddoor_opaque" }, + { "x": -5, "y": 1, "part": "hdroof" }, + { "x": -5, "y": 1, "part": "plating_steel" }, + { "x": -5, "y": 2, "part": "frame_orichalcum_horizontal" }, + { "x": -5, "y": 2, "part": "hdboard_horizontal" }, + { "x": -5, "y": 2, "part": "beeper" }, + { "x": -5, "y": 2, "part": "hdroof" }, + { "x": -5, "y": 2, "part": "plating_steel" }, + { "x": -5, "y": -1, "part": "frame_orichalcum_sw" }, + { "x": -5, "y": -1, "part": "hdboard_sw" }, + { "x": -5, "y": -1, "parts": [ "wheel_mount_medium", "wheel_wide" ] }, + { "x": -5, "y": -1, "part": "hdroof" }, + { "x": -5, "y": -1, "part": "plating_steel" }, + { "x": -5, "y": 3, "part": "frame_orichalcum_se" }, + { "x": -5, "y": 3, "part": "hdboard_se" }, + { "x": -5, "y": 3, "parts": [ "wheel_mount_medium", "wheel_wide" ] }, + { "x": -5, "y": 3, "part": "hdroof" }, + { "x": -5, "y": 3, "part": "plating_steel" } + ], + "items": [ + { "x": 0, "y": 1, "chance": 70, "magazine": 100, "ammo": 50, "item_groups": [ "guns_cop" ] }, + { "x": -2, "y": 0, "chance": 50, "item_groups": [ "supplies_metal_precious", "supplies_metal_precious" ] }, + { "x": -2, "y": 0, "chance": 50, "item_groups": [ "supplies_metal_precious", "supplies_metal_precious" ] }, + { "x": -3, "y": 0, "chance": 20, "item_groups": [ "supplies_metal_precious", "supplies_metal_precious" ] }, + { "x": -4, "y": 0, "chance": 20, "item_groups": [ "supplies_metal_precious", "supplies_metal_precious" ] }, + { "x": -4, "y": 0, "chance": 20, "items": [ "diamond", "diamond", "diamond", "diamond", "diamond" ] } + ] + } +] diff --git a/worldgen/black_dragon_lair.json b/worldgen/black_dragon_lair.json new file mode 100644 index 0000000..1eb1874 --- /dev/null +++ b/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/worldgen/demon_spider_lair.json b/worldgen/demon_spider_lair.json new file mode 100644 index 0000000..61813e9 --- /dev/null +++ b/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": 50, "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/worldgen/forest_tomb.json b/worldgen/forest_tomb.json new file mode 100644 index 0000000..9e2e259 --- /dev/null +++ b/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/worldgen/lake_retreat.json b/worldgen/lake_retreat.json new file mode 100644 index 0000000..f00ce6f --- /dev/null +++ b/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/worldgen/magic_academy.json b/worldgen/magic_academy.json new file mode 100644 index 0000000..3731211 --- /dev/null +++ b/worldgen/magic_academy.json @@ -0,0 +1,524 @@ +[ + { + "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": 30 }, { "item": "druid_items", "chance": 70 } ], + "%": [ { "item": "classless_items", "chance": 30 }, { "item": "biomancer_items", "chance": 70 } ], + "$": [ { "item": "classless_items", "chance": 30 }, { "item": "earthshaper_items", "chance": 70 } ], + "0": [ { "item": "classless_items", "chance": 30 }, { "item": "technomancer_items", "chance": 70 } ], + "x": { "item": "enchanted_small_items", "chance": 20 }, + "r": [ + { "item": "academy_lore", "chance": 100 }, + { "item": "enchanted_small_items", "chance": 10 }, + { "item": "enchanted_combat_items", "chance": 10 } + ], + "d": [ + { "item": "magic_shop_clothes", "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 10 }, + { "item": "enchanted_small_items", "chance": 20 } + ], + "D": [ + { "item": "magic_shop_clothes", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 10 }, + { "item": "enchanted_combat_items", "chance": 5 } + ], + "R": [ { "item": "magic_shop_books", "chance": 40, "repeat": [ 0, 2 ] }, { "item": "spellbook_loot_2", "chance": 10 } ], + "j": [ + { "item": "enchanted_small_items", "chance": 5, "repeat": [ 1, 2 ] }, + { "item": "enchanted_combat_items", "chance": 1 }, + { "item": "enchanted_misc", "chance": 1 } + ] + } + } + }, + { + "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": 15 }, + "v": { "item": "boss_treasure_items", "chance": 20, "repeat": [ 1, 3 ] }, + "d": [ + { "item": "magic_shop_clothes", "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 5 }, + { "item": "enchanted_small_items", "chance": 10 }, + { "item": "enchanted_combat_items", "chance": 10 } + ], + "R": [ { "item": "magic_shop_books", "chance": 30 }, { "item": "enchanted_misc", "chance": 1 } ], + "i": [ { "item": "enchanted_small_items", "chance": 10 }, { "item": "enchanted_combat_items", "chance": 15 } ] + }, + "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": 30 }, { "item": "kelvinist_items", "chance": 70 } ], + "%": [ { "item": "classless_items", "chance": 30 }, { "item": "animist_items", "chance": 70 } ], + "$": [ { "item": "classless_items", "chance": 30 }, { "item": "magus_items", "chance": 70 } ], + "0": [ { "item": "classless_items", "chance": 30 }, { "item": "stormshaper_items", "chance": 70 } ], + "H": [ + { "item": "magic_shop_clothes", "chance": 5 }, + { "item": "enchanted_small_items", "chance": 10 }, + { "item": "magic_shop_books", "chance": 10 } + ], + "`": [ + { "item": "alchemy_items", "chance": 35, "repeat": [ 1, 2 ] }, + { "item": "magic_tools_and_loot", "chance": 35 }, + { "item": "magic_shop_potions", "chance": 20 } + ], + "v": { "item": "boss_treasure_items", "chance": 20, "repeat": [ 0, 2 ] }, + "d": [ + { "item": "magic_shop_clothes", "chance": 25, "repeat": [ 1, 2 ] }, + { "item": "enchanted_worn_items", "chance": 10 }, + { "item": "enchanted_small_items", "chance": 10 } + ], + "R": [ { "item": "classless_items", "chance": 20 }, { "item": "enchanted_misc", "chance": 1 } ] + }, + "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": 35, "repeat": [ 1, 2 ] }, { "item": "magic_shop_potions", "chance": 30 } ], + "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_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": 35 }, { "item": "magic_shop_potions", "chance": 30 } ], + "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_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": 5 }, + "H": [ + { "item": "magic_shop_clothes", "chance": 30 }, + { "item": "enchanted_worn_items", "chance": 10 }, + { "item": "enchanted_combat_items", "chance": 3 }, + { "item": "enchanted_small_items", "chance": 5 } + ], + "s": [ { "item": "enchanted_small_items", "chance": 10 }, { "item": "enchanted_combat_items", "chance": 1 } ] + }, + "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": 10 }, + { "item": "enchanted_small_items", "chance": 5 }, + { "item": "enchanted_combat_items", "chance": 2 } + ], + "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": 5 } + ], + "?": [ { "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/worldgen/magic_basement.json b/worldgen/magic_basement.json new file mode 100644 index 0000000..51f9432 --- /dev/null +++ b/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/worldgen/magic_cabin.json b/worldgen/magic_cabin.json new file mode 100644 index 0000000..fccda21 --- /dev/null +++ b/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/worldgen/magic_shop.json b/worldgen/magic_shop.json new file mode 100644 index 0000000..657d5db --- /dev/null +++ b/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/worldgen/multitile_city_buildings.json b/worldgen/multitile_city_buildings.json new file mode 100644 index 0000000..8b3ed83 --- /dev/null +++ b/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/worldgen/nested_mapgen.json b/worldgen/nested_mapgen.json new file mode 100644 index 0000000..cc50d12 --- /dev/null +++ b/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/worldgen/overmap_specials.json b/worldgen/overmap_specials.json new file mode 100644 index 0000000..36b2adb --- /dev/null +++ b/worldgen/overmap_specials.json @@ -0,0 +1,132 @@ +[ + { + "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": "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 ] + } +] diff --git a/worldgen/overmap_terrain.json b/worldgen/overmap_terrain.json new file mode 100644 index 0000000..be7c1f4 --- /dev/null +++ b/worldgen/overmap_terrain.json @@ -0,0 +1,463 @@ +[ + { + "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": "Forest", + "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": "Swamp", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_NE", + "name": "Swamp", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_SE", + "name": "Swamp", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-0_SW", + "name": "Swamp", + "sym": "F", + "color": "cyan", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_NW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_NE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_SE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-1_SW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_NW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_NE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_SE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-2_SW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_NW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_NE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_SE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-3_SW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_NW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_NE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_SE", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "black_dragon_lair_z-4_SW", + "name": "solid rock", + "sym": "%", + "color": "light_gray", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_ground", + "name": "forest", + "sym": "F", + "color": "green", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z1", + "name": "forest", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z2", + "name": "forest", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z3", + "name": "forest", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_z4", + "name": "forest", + "sym": ".", + "color": "blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_boathouse", + "name": "lake shore", + "sym": "#", + "color": "light_blue", + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": "lake_retreat_boathouse_roof", + "name": "forest", + "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", + "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 + } +] diff --git a/worldgen/regional_overlay.json b/worldgen/regional_overlay.json new file mode 100644 index 0000000..a5dde47 --- /dev/null +++ b/worldgen/regional_overlay.json @@ -0,0 +1,11 @@ +[ + { + "type": "region_overlay", + "regions": [ "all" ], + "city": { + "houses": { "wizard_tower_1": 10, "wizard_tower_2": 20 }, + "shops": { "magic_shop": 100, "used_bookstore": 225, "magic_academy": 150 } + }, + "field_coverage": { "other": { "f_boulder_large": 0.98, "f_glow_boulder": 0.02 } } + } +] diff --git a/worldgen/used_bookstore.json b/worldgen/used_bookstore.json new file mode 100644 index 0000000..bbcb746 --- /dev/null +++ b/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 $Mz $#d********", + ",W NNN$MOz $#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/worldgen/wizard-towers.json b/worldgen/wizard-towers.json new file mode 100644 index 0000000..c48c015 --- /dev/null +++ b/worldgen/wizard-towers.json @@ -0,0 +1,188 @@ +[ + { + "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#;;........!!!!!!!!!!!!!!.....................................................", + ",# #A |H bw,,,.;;;;;;###EBBE###;;;;..........!!!!!!!!!!.......................................................", + ",#MMMMMM#R |H r#,,,.;;;;;;;;#wwww#;;;;;;............!!!!!!.........................................................", + ",*______## Y|H A##,,,........;;;;;;;;;;;;;...........................................................................", + ",*______*#=##ww#ww##,,,,.........;;;;;;;;;;;............................................................................" + ], + "palettes": [ "wizardtower1_palette" ] + } + }, + { + "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_urban", 50 ], [ "t_region_groundcover_forest", 5 ], "t_region_shrub", "t_region_tree" ] + } + } + }, + { + "type": "palette", + "id": "wizardtower1_palette", + "terrain": { + ",": "t_region_groundcover_urban", + ".": "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" + }, + "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": 5 } + ], + "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": 5, "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": 25 }, + "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": 5 } + ], + "Y": [ { "item": "coat_rack", "chance": 70 }, { "item": "magic_shop_clothes", "chance": 30 } ], + "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": 5 } ], + "9": [ + { "item": "homebooks", "chance": 45, "repeat": [ 1, 5 ] }, + { "item": "spellbook_loot_1", "chance": 15 }, + { "item": "spellbook_loot_2", "chance": 1 } + ] + }, + "monsters": { "0": { "monster": "GROUP_TOWER_GOLEM" } } + } +]