From e351dbfeed4b4b1b75f55127a435f0eae5e225fc Mon Sep 17 00:00:00 2001 From: jkraybill Date: Tue, 10 Mar 2020 20:15:45 +1100 Subject: [PATCH 01/17] Make carried vehicle cargo available for inventory --- src/vehicle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 9d3bfe52e3d6d..2fab58e9607ad 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -183,7 +183,7 @@ void vehicle_stack::insert( const item &newitem ) units::volume vehicle_stack::max_volume() const { - if( myorigin->part_flag( part_num, "CARGO" ) && myorigin->parts[part_num].is_available() ) { + if( myorigin->part_flag( part_num, "CARGO" ) && !myorigin->parts[part_num].is_broken() ) { // Set max volume for vehicle cargo to prevent integer overflow return std::min( myorigin->parts[part_num].info().size, 10000_liter ); } From ff95f8057cdb87561e33778669631d91e2cd7d6d Mon Sep 17 00:00:00 2001 From: tenmillimaster <> Date: Tue, 10 Mar 2020 15:19:04 -0500 Subject: [PATCH 02/17] Update migration.json de-duplicate lines 1002-1057 --- data/json/items/migration.json | 55 ---------------------------------- 1 file changed, 55 deletions(-) diff --git a/data/json/items/migration.json b/data/json/items/migration.json index a466a5d2b3106..c11dcb1016d23 100644 --- a/data/json/items/migration.json +++ b/data/json/items/migration.json @@ -1054,61 +1054,6 @@ "type": "MIGRATION", "replace": "m320_mod" }, - { - "id": "lead_stabilizer", - "type": "MIGRATION", - "replace": "stabilizer" - }, - { - "id": "lead_barrel_small", - "type": "MIGRATION", - "replace": "barrel_small" - }, - { - "id": "lead_red_dot_sight", - "type": "MIGRATION", - "replace": "red_dot_sight" - }, - { - "id": "lead_rifle_scope", - "type": "MIGRATION", - "replace": "rifle_scope" - }, - { - "id": "lead_acog_scope", - "type": "MIGRATION", - "replace": "acog_scope" - }, - { - "id": "lead_holo_sight", - "type": "MIGRATION", - "replace": "holo_sight" - }, - { - "id": "lead_laser_sight", - "type": "MIGRATION", - "replace": "rail_laser_sight" - }, - { - "id": "lead_grip", - "type": "MIGRATION", - "replace": "offset_sight_rail" - }, - { - "id": "lead_bipod", - "type": "MIGRATION", - "replace": "bipod" - }, - { - "id": "lead_u_shotgun", - "type": "MIGRATION", - "replace": "masterkey" - }, - { - "id": "lead_glm", - "type": "MIGRATION", - "replace": "m320" - }, { "id": "l_sp_9mm", "type": "MIGRATION", From 8ffbc4d786e848f3822546d953ea09f155e45302 Mon Sep 17 00:00:00 2001 From: snipercup <50166150+snipercup@users.noreply.github.com> Date: Tue, 10 Mar 2020 21:51:10 +0100 Subject: [PATCH 03/17] Generic name to object (#38686) * Generic name to object * Name to object --- data/json/items/book/maps.json | 2 +- data/json/items/chemicals_and_resources.json | 2 +- data/json/items/comestibles/bread.json | 2 +- data/json/items/generic.json | 16 ++++++++-------- data/json/items/melee/spears_and_polearms.json | 4 ++-- data/json/items/melee/swords_and_blades.json | 2 +- data/json/items/resources/metal.json | 2 +- data/json/items/resources/wood.json | 2 +- data/json/items/software.json | 2 +- data/json/items/tool/explosives.json | 2 +- data/json/items/tool/stationary.json | 2 +- data/json/items/tool/tailoring.json | 2 +- data/json/items/vehicle/engineering.json | 2 +- data/json/items/vehicle/frames.json | 2 +- data/json/items/vehicle/motors.json | 2 +- data/json/items/vehicle/noise.json | 2 +- data/json/items/vehicle/plating.json | 8 ++++---- data/json/items/vehicle/solar.json | 4 ++-- 18 files changed, 30 insertions(+), 30 deletions(-) diff --git a/data/json/items/book/maps.json b/data/json/items/book/maps.json index 63063cf280f42..e5e231926dc79 100644 --- a/data/json/items/book/maps.json +++ b/data/json/items/book/maps.json @@ -43,7 +43,7 @@ "id": "survivormap", "copy-from": "abstractmap", "type": "GENERIC", - "name": "survivor's map", + "name": { "str": "survivor's map" }, "description": "This is a hand-drawn map of the local area. Whoever created it has marked down the locations of nearby supply sources including gun stores and gas stations. Using it will add points of interest to your map.", "color": "white", "use_action": { diff --git a/data/json/items/chemicals_and_resources.json b/data/json/items/chemicals_and_resources.json index 283b836d80319..2177bfa909c05 100644 --- a/data/json/items/chemicals_and_resources.json +++ b/data/json/items/chemicals_and_resources.json @@ -1299,7 +1299,7 @@ "id": "steel_grille", "type": "GENERIC", "category": "other", - "name": "steel grille", + "name": { "str": "steel grille" }, "description": "This is a metal grille. It can be used as a framework for making a chemical catalyst.", "weight": "600 g", "volume": "250 ml", diff --git a/data/json/items/comestibles/bread.json b/data/json/items/comestibles/bread.json index ba0fa8e24b2c3..09586c24243cb 100644 --- a/data/json/items/comestibles/bread.json +++ b/data/json/items/comestibles/bread.json @@ -69,7 +69,7 @@ "id": "sourdough_starter", "type": "GENERIC", "category": "food", - "name": "sourdough starter", + "name": { "str": "sourdough starter" }, "description": "This jar contains a precious mix of flour, water, molds and bacteria from the air. When you add flour and water to it, after a few hours it froths and rises.", "weight": "52 g", "looks_like": "jar_glass", diff --git a/data/json/items/generic.json b/data/json/items/generic.json index 0bc87c340ccae..3b87270cfb7ea 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -243,7 +243,7 @@ "category": "spare_parts", "symbol": ",", "color": "white", - "name": "superglue", + "name": { "str": "superglue", "str_pl": "superglue" }, "description": "A tube of strong glue. Used in many crafting recipes.", "price": 1800, "material": "plastic", @@ -280,7 +280,7 @@ "type": "GENERIC", "id": "chain", "category": "spare_parts", - "name": "steel chain", + "name": { "str": "steel chain" }, "description": "A heavy steel chain. Useful as a weapon, or for crafting. It has a chance to wrap around your target, allowing for a bonus unarmed attack.", "weight": "3628 g", "color": "dark_gray", @@ -436,7 +436,7 @@ "id": "spiral_stone", "symbol": "*", "color": "light_gray", - "name": "spiral stone", + "name": { "str": "spiral stone" }, "category": "artifacts", "description": "A rock the size of your fist. It is covered with intricate spirals; it is impossible to tell whether they are carved, naturally formed, or some kind of fossil.", "price": 20000, @@ -696,7 +696,7 @@ "id": "spring", "symbol": ",", "color": "light_gray", - "name": "spring", + "name": { "str": "spring" }, "category": "spare_parts", "description": "A large, heavy-duty spring. Expands with significant force when compressed.", "price": 1000, @@ -1724,7 +1724,7 @@ { "type": "GENERIC", "id": "sunflower", - "name": "sunflower", + "name": { "str": "sunflower" }, "description": "The top of a sunflower, with yellow pedals and some seeds that have yet to be eaten by animals.", "weight": "450 g", "to_hit": -2, @@ -2633,7 +2633,7 @@ "category": "spare_parts", "symbol": ",", "color": "light_cyan", - "name": "steel plate", + "name": { "str": "steel plate" }, "description": "A steel armor plate, specifically engineered for use in a bullet resistant vest.", "price": 9000, "material": "steel", @@ -2674,7 +2674,7 @@ "category": "spare_parts", "symbol": "t", "color": "dark_gray", - "name": "spare tire carrier", + "name": { "str": "spare tire carrier" }, "description": "A bumper mounted rig for attaching and storing a spare tire on the back of a vehicle. Combine it with a wheel to get a mountable piece.", "price": 3500, "material": "steel", @@ -2825,7 +2825,7 @@ "id": "survival_kit", "type": "GENERIC", "category": "tools", - "name": "survival kit", + "name": { "str": "survival kit" }, "description": "A small box filled with tools and items to help you survive in case of an emergency. Disassemble to get its content.", "weight": "1612 g", "volume": "1 L", diff --git a/data/json/items/melee/spears_and_polearms.json b/data/json/items/melee/spears_and_polearms.json index b3b838036c687..5a4e7196484aa 100644 --- a/data/json/items/melee/spears_and_polearms.json +++ b/data/json/items/melee/spears_and_polearms.json @@ -186,7 +186,7 @@ { "type": "GENERIC", "id": "spear_steel", - "name": "steel spear", + "name": { "str": "steel spear" }, "description": "A stout wooden pole with a hand-forged steel spearhead.", "weight": "1498 g", "to_hit": 2, @@ -536,7 +536,7 @@ { "id": "spear_stone", "type": "GENERIC", - "name": "stone spear", + "name": { "str": "stone spear" }, "description": "A stout wooden pole with a sharp stone spearhead.", "weight": "1098 g", "volume": "1250 ml", diff --git a/data/json/items/melee/swords_and_blades.json b/data/json/items/melee/swords_and_blades.json index 1e8ef429d4c09..c582d6c26653d 100644 --- a/data/json/items/melee/swords_and_blades.json +++ b/data/json/items/melee/swords_and_blades.json @@ -1086,7 +1086,7 @@ "type": "GENERIC", "symbol": "/", "color": "light_gray", - "name": "sword cane", + "name": { "str": "sword cane" }, "description": "A sword with a thin blade designed to be hidden inside a hollow cane.", "price": 2000, "price_postapoc": 1000, diff --git a/data/json/items/resources/metal.json b/data/json/items/resources/metal.json index 44690d13ad2d9..81324a9cb476f 100644 --- a/data/json/items/resources/metal.json +++ b/data/json/items/resources/metal.json @@ -37,7 +37,7 @@ { "type": "GENERIC", "id": "spike", - "name": "spike", + "name": { "str": "spike" }, "description": "A large and slightly misshapen spike, could do some damage mounted on a vehicle.", "category": "spare_parts", "weight": "550 g", diff --git a/data/json/items/resources/wood.json b/data/json/items/resources/wood.json index 1aa7e674f5c64..ab03a1410851b 100644 --- a/data/json/items/resources/wood.json +++ b/data/json/items/resources/wood.json @@ -21,7 +21,7 @@ "id": "splinter", "symbol": "/", "color": "brown", - "name": "splintered wood", + "name": { "str": "splintered wood", "str_pl": "splintered wood" }, "description": "A splintered piece of wood, could be used as a skewer or for kindling.", "category": "other", "material": "wood", diff --git a/data/json/items/software.json b/data/json/items/software.json index fbbdc9630bad6..b7fe429b23e9b 100644 --- a/data/json/items/software.json +++ b/data/json/items/software.json @@ -2,7 +2,7 @@ { "id": "software", "type": "GENERIC", - "name": "software", + "name": { "str": "software", "str_pl": "software" }, "symbol": "#", "container": "usb_drive", "description": "IF YOU ARE SEEING THIS IT IS A BUG.", diff --git a/data/json/items/tool/explosives.json b/data/json/items/tool/explosives.json index 56a4f02653627..c0672664ee991 100644 --- a/data/json/items/tool/explosives.json +++ b/data/json/items/tool/explosives.json @@ -1124,7 +1124,7 @@ "id": "smokebomb", "copy-from": "grenade_canister", "type": "GENERIC", - "name": "smoke bomb", + "name": { "str": "smoke bomb" }, "description": "This is a canister grenade filled with a variety of pyrotechnic chemicals. Use this item to pull the pin and light the fuse, turning it into an active smoke bomb. Five turns after you do that, it will begin to expel a thick black smoke. This smoke will slow those who enter it, as well as obscuring vision and scent.", "price": 1800, "weight": "569 g", diff --git a/data/json/items/tool/stationary.json b/data/json/items/tool/stationary.json index 36c6aef1ea493..9f325195aced6 100644 --- a/data/json/items/tool/stationary.json +++ b/data/json/items/tool/stationary.json @@ -3,7 +3,7 @@ "id": "stapler", "type": "GENERIC", "category": "tools", - "name": "stapler", + "name": { "str": "stapler" }, "description": "A stapler for fastening sheets of paper together.", "weight": "300 g", "volume": "250 ml", diff --git a/data/json/items/tool/tailoring.json b/data/json/items/tool/tailoring.json index 5838ac32bdeb5..03ba9d26192f9 100644 --- a/data/json/items/tool/tailoring.json +++ b/data/json/items/tool/tailoring.json @@ -21,7 +21,7 @@ "id": "awl_steel", "copy-from": "awl_bone", "type": "GENERIC", - "name": "steel sewing awl", + "name": { "str": "steel sewing awl" }, "description": "This is a steel awl with a wooden grip, usually used for leatherworking. It can also serve as an improvised stabbing weapon, but will break quickly.", "weight": "170 g", "price": 450, diff --git a/data/json/items/vehicle/engineering.json b/data/json/items/vehicle/engineering.json index 9fa1d8d431433..4ccc947bbd0f2 100644 --- a/data/json/items/vehicle/engineering.json +++ b/data/json/items/vehicle/engineering.json @@ -3,7 +3,7 @@ "id": "cantilever_medium", "type": "GENERIC", "category": "veh_parts", - "name": "steel boom", + "name": { "str": "steel boom" }, "description": "A large rigid steel boom. If attached to a frame it could be used to lift up to 20 metric tonnes.", "price": 23400, "weight": "31600 g", diff --git a/data/json/items/vehicle/frames.json b/data/json/items/vehicle/frames.json index 83b35ddcaecfc..ccab3fedd3ef7 100644 --- a/data/json/items/vehicle/frames.json +++ b/data/json/items/vehicle/frames.json @@ -26,7 +26,7 @@ { "type": "GENERIC", "id": "frame", - "name": "steel frame", + "name": { "str": "steel frame" }, "description": "A large frame made of steel. Useful for crafting.", "weight": "20000 g", "to_hit": -5, diff --git a/data/json/items/vehicle/motors.json b/data/json/items/vehicle/motors.json index 6e3047182b11a..04523e5634cc5 100644 --- a/data/json/items/vehicle/motors.json +++ b/data/json/items/vehicle/motors.json @@ -27,7 +27,7 @@ { "type": "GENERIC", "id": "motor_super", - "name": "super electric motor", + "name": { "str": "super electric motor" }, "description": "The most powerfull electric motor on the market. Useful for crafting.", "weight": "125 kg", "volume": "25 L", diff --git a/data/json/items/vehicle/noise.json b/data/json/items/vehicle/noise.json index 52969231c0448..3d52b150b2cfb 100644 --- a/data/json/items/vehicle/noise.json +++ b/data/json/items/vehicle/noise.json @@ -34,7 +34,7 @@ { "type": "GENERIC", "id": "stereo", - "name": "stereo system", + "name": { "str": "stereo system" }, "description": "A stereo system with speakers. It is capable of being hooked up to a vehicle.", "weight": "800 g", "to_hit": -2, diff --git a/data/json/items/vehicle/plating.json b/data/json/items/vehicle/plating.json index 9d5c21b612541..4bc0e7e0a90f6 100644 --- a/data/json/items/vehicle/plating.json +++ b/data/json/items/vehicle/plating.json @@ -49,7 +49,7 @@ { "type": "GENERIC", "id": "steel_plate", - "name": "steel plating", + "name": { "str": "steel plating", "str_pl": "steel plating" }, "description": "A piece of armor plating made of steel.", "weight": "12880 g", "to_hit": -1, @@ -65,7 +65,7 @@ { "type": "GENERIC", "id": "alloy_plate", - "name": "superalloy plating", + "name": { "str": "superalloy plating", "str_pl": "superalloy plating" }, "description": "A piece of armor plating made of sturdy superalloy.", "weight": "10800 g", "to_hit": -1, @@ -81,7 +81,7 @@ { "type": "GENERIC", "id": "alloy_sheet", - "name": "superalloy sheet", + "name": { "str": "superalloy sheet" }, "description": "A sheet of sturdy superalloy, incredibly hard, yet incredibly malleable.", "weight": "900 g", "to_hit": -2, @@ -96,7 +96,7 @@ { "type": "GENERIC", "id": "spiked_plate", - "name": "spiked plating", + "name": { "str": "spiked plating", "str_pl": "spiked plating" }, "description": "A piece of armor plating made of steel. It is covered with menacing spikes.", "weight": "12240 g", "to_hit": -1, diff --git a/data/json/items/vehicle/solar.json b/data/json/items/vehicle/solar.json index 47045fdc03e61..675361a2160c7 100644 --- a/data/json/items/vehicle/solar.json +++ b/data/json/items/vehicle/solar.json @@ -2,7 +2,7 @@ { "type": "GENERIC", "id": "solar_panel", - "name": "solar panel", + "name": { "str": "solar panel" }, "description": "Electronic device that can convert solar radiation into electric power. Useful for a vehicle.", "weight": "14000 g", "to_hit": -4, @@ -62,7 +62,7 @@ { "type": "GENERIC", "id": "solar_cell", - "name": "solar cell", + "name": { "str": "solar cell" }, "description": "A small electronic device that can convert solar radiation into electric power. Useful for crafting.", "weight": "500 g", "symbol": ";", From 33c5fcdb6ec0e199dde04808ad048171c70b6e76 Mon Sep 17 00:00:00 2001 From: snipercup <50166150+snipercup@users.noreply.github.com> Date: Tue, 10 Mar 2020 21:51:36 +0100 Subject: [PATCH 04/17] Armor name to object (#38685) * Armor fix looks_like * Name to object, volume to string --- data/json/items/armor/ammo_pouch.json | 2 +- data/json/items/armor/bandolier.json | 4 +-- data/json/items/armor/belts.json | 2 +- data/json/items/armor/coats.json | 2 +- data/json/items/armor/hats.json | 2 +- data/json/items/armor/helmets.json | 2 +- data/json/items/armor/jewelry.json | 34 ++++++++++----------- data/json/items/armor/misc.json | 2 +- data/json/items/armor/power_armor.json | 4 +-- data/json/items/armor/storage.json | 6 ++-- data/json/items/armor/suits_protection.json | 4 +-- data/json/items/armor/torso_armor.json | 2 +- data/json/items/armor/torso_clothes.json | 2 +- data/json/items/tool_armor.json | 2 +- 14 files changed, 35 insertions(+), 35 deletions(-) diff --git a/data/json/items/armor/ammo_pouch.json b/data/json/items/armor/ammo_pouch.json index bde08a2c3649a..36a5bbafb18a2 100644 --- a/data/json/items/armor/ammo_pouch.json +++ b/data/json/items/armor/ammo_pouch.json @@ -443,7 +443,7 @@ { "id": "quiver", "type": "ARMOR", - "name": "quiver", + "name": { "str": "quiver" }, "description": "A leather quiver worn at the waist that can hold 20 arrows. Activate to store arrows.", "weight": "260 g", "volume": "500 ml", diff --git a/data/json/items/armor/bandolier.json b/data/json/items/armor/bandolier.json index 01d2c75a96c09..9ad8df1b7a6ec 100644 --- a/data/json/items/armor/bandolier.json +++ b/data/json/items/armor/bandolier.json @@ -2,7 +2,7 @@ { "id": "bandolier_pistol", "type": "ARMOR", - "name": "pistol bandolier", + "name": { "str": "pistol bandolier" }, "description": "An embroidered leather bandolier for keeping pistol cartridges close to hand. If this doesn't make you feel like a cowboy, nothing will.", "weight": "140 g", "volume": "250 ml", @@ -10,7 +10,7 @@ "price_postapoc": 2900, "material": "leather", "symbol": "[", - "looks_like": "belt", + "looks_like": "leather_belt", "color": "dark_gray", "covers": [ "TORSO" ], "coverage": 10, diff --git a/data/json/items/armor/belts.json b/data/json/items/armor/belts.json index adb7786c2aedf..2a812fe2cda65 100644 --- a/data/json/items/armor/belts.json +++ b/data/json/items/armor/belts.json @@ -141,7 +141,7 @@ { "id": "police_belt", "type": "ARMOR", - "name": "police duty belt", + "name": { "str": "police duty belt" }, "description": "Black leather belt used by police officers. It has several pouches and a holder for a baton.", "weight": "250 g", "volume": "2 L", diff --git a/data/json/items/armor/coats.json b/data/json/items/armor/coats.json index 6d81303127d2e..a2191f85b8d74 100644 --- a/data/json/items/armor/coats.json +++ b/data/json/items/armor/coats.json @@ -748,7 +748,7 @@ { "id": "peacoat", "type": "ARMOR", - "name": "peacoat", + "name": { "str": "peacoat" }, "description": "A heavy wool coat. Cumbersome, but warm and with deep pockets.", "weight": "1800 g", "volume": "3 L", diff --git a/data/json/items/armor/hats.json b/data/json/items/armor/hats.json index 1f64864dbd144..44c7f4290899b 100644 --- a/data/json/items/armor/hats.json +++ b/data/json/items/armor/hats.json @@ -450,7 +450,7 @@ "id": "porkpie", "repairs_like": "balclava", "type": "ARMOR", - "name": "porkpie hat", + "name": { "str": "porkpie hat" }, "description": "A flat-topped hat with circular indent and a narrow brim. Most popular in the 40s and 50s, still common among those in the mod scene, hipsters, and people named Heisenberg.", "weight": "213 g", "volume": "1250 ml", diff --git a/data/json/items/armor/helmets.json b/data/json/items/armor/helmets.json index 81c14b3b720aa..2ed768b7c59a6 100644 --- a/data/json/items/armor/helmets.json +++ b/data/json/items/armor/helmets.json @@ -3,7 +3,7 @@ "id": "pot_helmet", "type": "ARMOR", "category": "armor", - "name": "pot helmet", + "name": { "str": "pot helmet" }, "description": "A helmet made from a soup pot. It's not very good protection, but it's better than nothing.", "weight": "760 g", "volume": "2 L", diff --git a/data/json/items/armor/jewelry.json b/data/json/items/armor/jewelry.json index 656167d53317c..55574cf978249 100644 --- a/data/json/items/armor/jewelry.json +++ b/data/json/items/armor/jewelry.json @@ -724,10 +724,10 @@ { "id": "ear_spool", "type": "ARMOR", - "name": "plug", + "name": { "str": "plug" }, "description": "Those round things people plug into their earlobes as earrings, also called \"ear plug\" or \"ear spool.\" You can wear it if you like, but it won't provide any effects.", "weight": "10 g", - "volume": 0, + "volume": "5 ml", "price": 1200, "price_postapoc": 10, "material": [ "plastic" ], @@ -1003,7 +1003,7 @@ { "id": "pearl_collar", "type": "ARMOR", - "name": "pearl collar", + "name": { "str": "pearl collar" }, "description": "A collar made from round and lustrous pearls, its former owner must be a wealthy individual.", "weight": "30 g", "volume": "300 ml", @@ -1035,10 +1035,10 @@ { "id": "platinum_bracelet", "type": "ARMOR", - "name": "platinum bracelet", + "name": { "str": "platinum bracelet" }, "description": "A flawless platinum bracelet. You can wear it if you like, but it won't provide any effects.", "weight": "50 g", - "volume": 0, + "volume": "25 ml", "price": 38000, "price_postapoc": 9900, "material": [ "platinum" ], @@ -1049,10 +1049,10 @@ { "id": "platinum_dental_grill", "type": "ARMOR", - "name": "platinum dental grill", + "name": { "str": "platinum dental grill" }, "description": "Fake platinum-and-silver teeth. They may be cheaper than fake gold teeth, but they're much more rare. Fits horribly, but looks very shiny.", "weight": "15 g", - "volume": 0, + "volume": "25 ml", "price": 15000, "price_postapoc": 1900, "bashing": 2, @@ -1080,10 +1080,10 @@ { "id": "platinum_hairpin", "type": "ARMOR", - "name": "platinum hairpin", + "name": { "str": "platinum hairpin" }, "description": "The ultimate in esoteric, metal hair accessories, this hairpin is made from pure platinum. You can wear it if you like, but it won't provide any effects.", "weight": "7 g", - "volume": 0, + "volume": "5 ml", "price": 3500, "price_postapoc": 1200, "material": [ "platinum" ], @@ -1094,10 +1094,10 @@ { "id": "platinum_locket", "type": "ARMOR", - "name": "platinum locket", + "name": { "str": "platinum locket" }, "description": "A small, platinum locket for storing photographs or other small objects. You can wear it if you like, but it won't provide any effects.", "weight": "65 g", - "volume": 0, + "volume": "40 ml", "price": 16000, "price_postapoc": 3900, "material": [ "platinum" ], @@ -1108,10 +1108,10 @@ { "id": "platinum_necklace", "type": "ARMOR", - "name": "platinum necklace", + "name": { "str": "platinum necklace" }, "description": "A platinum necklace, with a small, empty heart frame hanging from a chain. You can wear it if you like, but it won't provide any effects.", "weight": "47 g", - "volume": 0, + "volume": "50 ml", "price": 50000, "price_postapoc": 2900, "material": [ "platinum" ], @@ -1122,10 +1122,10 @@ { "id": "platinum_ring", "type": "ARMOR", - "name": "platinum ring", + "name": { "str": "platinum ring" }, "description": "A platinum ring, engraved with all manner of swirls and spirals. You can wear it if you like, but it won't provide any effects.", "weight": "13 g", - "volume": 0, + "volume": "5 ml", "price": 24000, "price_postapoc": 6500, "material": [ "platinum" ], @@ -1150,10 +1150,10 @@ { "id": "ring_purity", "type": "ARMOR", - "name": "purity ring", + "name": { "str": "purity ring" }, "description": "Also known as a promise ring, this ring is worn as a sign of chastity. This one bears the inscription, \"Love is patient.\"", "weight": "6 g", - "volume": 0, + "volume": "5 ml", "price": 1700, "price_postapoc": 900, "material": [ "silver" ], diff --git a/data/json/items/armor/misc.json b/data/json/items/armor/misc.json index a3465f7f25576..1e572d310373f 100644 --- a/data/json/items/armor/misc.json +++ b/data/json/items/armor/misc.json @@ -74,7 +74,7 @@ "repairs_like": "goggles_swim", "type": "ARMOR", "category": "armor", - "name": "protective mouthpiece", + "name": { "str": "protective mouthpiece" }, "description": "A protective piece of equipment commonly used by athletes, which is worn inside the mouth to protect your teeth.", "weight": "20 g", "volume": "430 ml", diff --git a/data/json/items/armor/power_armor.json b/data/json/items/armor/power_armor.json index 8fd6aff6f1e5a..cb0cb376df46d 100644 --- a/data/json/items/armor/power_armor.json +++ b/data/json/items/armor/power_armor.json @@ -81,7 +81,7 @@ "id": "power_armor_frame", "type": "ARMOR", "category": "armor", - "name": "power armor hauling frame", + "name": { "str": "power armor hauling frame" }, "description": "A heavy-duty hauling frame designed to interface with power armor.", "weight": "1640 g", "volume": "12 L", @@ -91,7 +91,7 @@ "bashing": 1, "material": [ "steel" ], "symbol": "[", - "looks_like": "bigpack", + "looks_like": "backpack_tactical_large", "color": "light_gray", "coverage": 100, "encumbrance": 40, diff --git a/data/json/items/armor/storage.json b/data/json/items/armor/storage.json index 1127553084611..e1e81137d202d 100644 --- a/data/json/items/armor/storage.json +++ b/data/json/items/armor/storage.json @@ -615,7 +615,7 @@ { "id": "petpack", "type": "ARMOR", - "name": "petpack", + "name": { "str": "petpack" }, "description": "Before the Cataclysm this would allow your four-legged friend to see the world, now it's used to shield them from the world.", "weight": "1316 g", "volume": "10 L", @@ -638,7 +638,7 @@ { "id": "plastic_shopping_bag", "type": "ARMOR", - "name": "plastic shopping bag", + "name": { "str": "plastic shopping bag" }, "description": "A bag used to carry groceries home.", "weight": "2 g", "volume": "250 ml", @@ -658,7 +658,7 @@ "id": "purse", "repairs_like": "backpack", "type": "ARMOR", - "name": "purse", + "name": { "str": "purse" }, "description": "A bit cumbersome to wear, but provides some storage.", "weight": "297 g", "volume": "1 L", diff --git a/data/json/items/armor/suits_protection.json b/data/json/items/armor/suits_protection.json index 800f5ea7a56e2..8da47f1622643 100644 --- a/data/json/items/armor/suits_protection.json +++ b/data/json/items/armor/suits_protection.json @@ -151,7 +151,7 @@ "id": "armor_lightplate", "type": "ARMOR", "category": "armor", - "name": "plate armor", + "name": { "str": "plate armor" }, "description": "A suit of Gothic plate armor.", "weight": "11000 g", "volume": "17500 ml", @@ -219,7 +219,7 @@ "id": "armor_plarmor", "type": "ARMOR", "category": "armor", - "name": "plated leather armor", + "name": { "str": "plated leather armor" }, "description": "Thick leather body armor that has been reinforced with strategically-placed metal plates. Strong and comfortable.", "weight": "4280 g", "volume": "9 L", diff --git a/data/json/items/armor/torso_armor.json b/data/json/items/armor/torso_armor.json index bdb9c3dd44e39..94cd59f83d54d 100644 --- a/data/json/items/armor/torso_armor.json +++ b/data/json/items/armor/torso_armor.json @@ -361,7 +361,7 @@ { "id": "plastron_plastic", "type": "ARMOR", - "name": "plastic chest protector", + "name": { "str": "plastic chest protector" }, "description": "A rigid plastic plastron with molded cups to be worn by female fencers for protection while fencing.", "weight": "194 g", "volume": "850 ml", diff --git a/data/json/items/armor/torso_clothes.json b/data/json/items/armor/torso_clothes.json index 337dabc0c83a1..90908c89dadf0 100644 --- a/data/json/items/armor/torso_clothes.json +++ b/data/json/items/armor/torso_clothes.json @@ -398,7 +398,7 @@ { "id": "polo_shirt", "type": "ARMOR", - "name": "polo shirt", + "name": { "str": "polo shirt" }, "description": "A short-sleeved cotton shirt, slightly thicker than a t-shirt.", "weight": "136 g", "volume": "750 ml", diff --git a/data/json/items/tool_armor.json b/data/json/items/tool_armor.json index 97005303f16e5..532100dbb8366 100644 --- a/data/json/items/tool_armor.json +++ b/data/json/items/tool_armor.json @@ -92,7 +92,7 @@ "id": "personal_gobag", "repairs_like": "backpack_hiking", "type": "ARMOR", - "name": "personal go bag", + "name": { "str": "personal go bag" }, "description": "A huge duffel bag with backpack attached, both packed to the gills. You have packed this to be ready for deployment. Activate to unpack and enjoy.", "looks_like": "gobag", "use_action": "GOBAG_PERSONAL", From 2f83dbec457ec41ee15b55c05a9d922cf0349178 Mon Sep 17 00:00:00 2001 From: chrimchim <58823248+chrimchim@users.noreply.github.com> Date: Tue, 10 Mar 2020 15:54:09 -0500 Subject: [PATCH 05/17] Lowered beaver aggression and morale to be more accurate and believable. (#38688) --- data/json/monsters/mammal.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/json/monsters/mammal.json b/data/json/monsters/mammal.json index 6771542b85aa5..3cefe70560b08 100644 --- a/data/json/monsters/mammal.json +++ b/data/json/monsters/mammal.json @@ -105,8 +105,8 @@ "material": [ "flesh" ], "symbol": "r", "color": "brown", - "aggression": -10, - "morale": 40, + "aggression": -35, + "morale": 15, "melee_dice": 1, "melee_dice_sides": 6, "melee_cut": 6, From 0840d865a899f4bb09cd82554c54c650fd8995f3 Mon Sep 17 00:00:00 2001 From: jkraybill Date: Sun, 8 Mar 2020 15:01:02 +1100 Subject: [PATCH 06/17] made vacuum sealing more consistent --- data/json/items/comestibles/carnivore.json | 6 +- data/json/recipes/recipe_food.json | 58 ++++++------------- .../json/requirements/cooking_components.json | 16 +++++ 3 files changed, 36 insertions(+), 44 deletions(-) diff --git a/data/json/items/comestibles/carnivore.json b/data/json/items/comestibles/carnivore.json index d29ce9767141a..ff72106f5ea2b 100644 --- a/data/json/items/comestibles/carnivore.json +++ b/data/json/items/comestibles/carnivore.json @@ -24,7 +24,7 @@ "spoils_in": "12 hours", "flags": [ "SMOKABLE", "RAW" ], "smoking_result": "fish_smoked", - "vitamins": [ [ "vitA", 2 ], [ "vitC", 2 ], [ "calcium", 2 ], [ "iron", 3 ], [ "vitB", 9 ] ], + "vitamins": [ [ "vitA", 2 ], [ "vitC", 2 ], [ "calcium", 6 ], [ "iron", 14 ], [ "vitB", 154 ] ], "calories": 260 }, { @@ -354,12 +354,10 @@ "container": "bag_plastic", "color": "light_gray", "spoils_in": "24 days", - "stack_size": 4, "parasites": 0, "quench": -5, "fun": 4, - "vitamins": [ [ "vitA", 7 ], [ "vitC", 7 ], [ "calcium", 25 ], [ "iron", 21 ], [ "vitB", 617 ] ], - "proportional": { "price": 2.0, "volume": 0.28, "weight": 0.28 }, + "proportional": { "price": 2.0, "volume": 0.345, "weight": 0.345 }, "delete": { "flags": [ "RAW" ] } }, { diff --git a/data/json/recipes/recipe_food.json b/data/json/recipes/recipe_food.json index f59650ea46305..c12cd72a86e6a 100644 --- a/data/json/recipes/recipe_food.json +++ b/data/json/recipes/recipe_food.json @@ -1810,18 +1810,7 @@ "batch_time_factors": [ 83, 5 ], "autolearn": true, "tools": [ [ [ "surface_heat", 10, "LIST" ] ] ], - "components": [ - [ - [ "salt_water", 1 ], - [ "saline", 1 ], - [ "salt", 1 ], - [ "soysauce", 1 ], - [ "seasoning_salt", 1 ], - [ "pepper", 2 ], - [ "chem_saltpetre", 1 ] - ], - [ [ "fish", 1 ] ] - ] + "components": [ [ [ "salt_preservation", 1, "LIST" ] ], [ [ "fish", 1 ] ] ] }, { "type": "recipe", @@ -3773,17 +3762,13 @@ "subcategory": "CSC_FOOD_MEAT", "skill_used": "cooking", "difficulty": 4, - "time": "20 m", - "batch_time_factors": [ 83, 5 ], + "charges": 2, + "time": "5 m", + "batch_time_factors": [ 10, 3 ], "autolearn": true, "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], - "components": [ - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "bag_plastic", 1 ] ], - [ [ "meat_red_raw", 1, "LIST" ] ], - [ [ "salt_water", 1 ], [ "saline", 1 ], [ "salt", 2 ], [ "chem_saltpetre", 1 ] ] - ] + "components": [ [ [ "bag_plastic", 1 ] ], [ [ "meat_red_raw", 2, "LIST" ] ], [ [ "salt_preservation", 2, "LIST" ] ] ] }, { "type": "recipe", @@ -3794,17 +3779,13 @@ "subcategory": "CSC_FOOD_MEAT", "skill_used": "cooking", "difficulty": 4, - "time": "20 m", - "batch_time_factors": [ 83, 5 ], + "charges": 5, + "time": "5 m", + "batch_time_factors": [ 10, 3 ], "autolearn": true, "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], - "components": [ - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "bag_plastic", 1 ] ], - [ [ "fish", 1 ] ], - [ [ "salt_water", 1 ], [ "saline", 1 ], [ "salt", 1 ], [ "chem_saltpetre", 1 ] ] - ] + "components": [ [ [ "bag_plastic", 1 ] ], [ [ "fish", 5 ] ], [ [ "salt_preservation", 5, "LIST" ] ] ] }, { "type": "recipe", @@ -3815,17 +3796,13 @@ "subcategory": "CSC_FOOD_VEGGI", "skill_used": "cooking", "difficulty": 4, - "time": "20 m", - "batch_time_factors": [ 83, 5 ], + "charges": 2, + "time": "5 m", + "batch_time_factors": [ 10, 3 ], "autolearn": true, "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], "tools": [ [ [ "vac_sealer", 10 ], [ "makeshift_sealer", 20 ] ] ], - "components": [ - [ [ "water", 1 ], [ "water_clean", 1 ] ], - [ [ "bag_plastic", 1 ] ], - [ [ "veggy_any_uncooked", 1, "LIST" ] ], - [ [ "salt_water", 1 ], [ "saline", 1 ], [ "salt", 2 ], [ "chem_saltpetre", 1 ] ] - ] + "components": [ [ [ "bag_plastic", 1 ] ], [ [ "veggy_any_uncooked", 2, "LIST" ] ], [ [ "salt_preservation", 2, "LIST" ] ] ] }, { "type": "recipe", @@ -3836,16 +3813,17 @@ "subcategory": "CSC_FOOD_VEGGI", "skill_used": "cooking", "difficulty": 4, - "time": "20 m", - "batch_time_factors": [ 83, 5 ], + "charges": 8, + "time": "5 m", + "batch_time_factors": [ 10, 3 ], "autolearn": true, "qualities": [ { "id": "CUT", "level": 1 }, { "id": "COOK", "level": 3 } ], "tools": [ [ [ "vac_sealer", 5 ], [ "makeshift_sealer", 10 ] ] ], "components": [ [ [ "water", 1 ], [ "water_clean", 1 ] ], [ [ "bag_plastic", 1 ] ], - [ [ "sweet_fruit", 2, "LIST" ] ], - [ [ "sugar", 8 ] ] + [ [ "sweet_fruit", 4, "LIST" ] ], + [ [ "sugar_standard", 1, "LIST" ] ] ] }, { diff --git a/data/json/requirements/cooking_components.json b/data/json/requirements/cooking_components.json index 0ff5f2b81dc25..dadd5307cb6f6 100644 --- a/data/json/requirements/cooking_components.json +++ b/data/json/requirements/cooking_components.json @@ -422,6 +422,22 @@ ] ] }, + { + "id": "salt_preservation", + "type": "requirement", + "//": "Salt-like ingredients that can be used to preserve foods", + "components": [ + [ + [ "salt_water", 1 ], + [ "saline", 1 ], + [ "salt", 1 ], + [ "soysauce", 1 ], + [ "seasoning_salt", 1 ], + [ "pepper", 2 ], + [ "chem_saltpetre", 1 ] + ] + ] + }, { "id": "sweet_fruit_fresh", "type": "requirement", From f667fe9223f496bfe6bcfa6b2329ae3e8d717b9a Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Sun, 5 Jan 2020 16:04:04 -0500 Subject: [PATCH 07/17] Add demon chitin armor --- data/mods/Magiclysm/items/armor.json | 45 ++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/data/mods/Magiclysm/items/armor.json b/data/mods/Magiclysm/items/armor.json index 1d637cfb5b7b1..8ffed9c1d27ad 100644 --- a/data/mods/Magiclysm/items/armor.json +++ b/data/mods/Magiclysm/items/armor.json @@ -26,5 +26,50 @@ "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 } + }, + { + "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 } + }, + { + "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 } + }, + { + "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 } + }, + { + "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 } } ] From f7cea6418f0f589f812ef428f1d8417574967bff Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 14:00:04 -0500 Subject: [PATCH 08/17] Add d-chitin armor recipes Add armormaking book, remove autolearn from recipes Fix recipe category Add armorsmithing book to mapgen --- .../mods/Magiclysm/itemgroups/itemgroups.json | 5 +- .../Magiclysm/itemgroups/recipe_books.json | 6 +++ data/mods/Magiclysm/items/recipe_books.json | 19 +++++++ data/mods/Magiclysm/recipes/armor.json | 54 +++++++++++++++++++ 4 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 data/mods/Magiclysm/recipes/armor.json diff --git a/data/mods/Magiclysm/itemgroups/itemgroups.json b/data/mods/Magiclysm/itemgroups/itemgroups.json index 2a4f1a8202ee1..f58111da1649a 100644 --- a/data/mods/Magiclysm/itemgroups/itemgroups.json +++ b/data/mods/Magiclysm/itemgroups/itemgroups.json @@ -31,6 +31,7 @@ "items": [ { "group": "spellbook_loot_1", "prob": 3 }, { "group": "magic_recipe_basic", "prob": 3 }, + { "group": "magic_recipe_advanced", "prob": 1 }, { "group": "dragon_books", "prob": 3 } ] }, @@ -40,6 +41,7 @@ "items": [ { "group": "spellbook_loot_0", "prob": 6 }, { "group": "magic_recipe_basic", "prob": 6 }, + { "group": "magic_recipe_advanced", "prob": 2 }, { "group": "dragon_books", "prob": 5 } ] }, @@ -105,7 +107,8 @@ { "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_basic", "prob": 50 }, + { "group": "magic_recipe_advanced", "prob": 16 } ] }, { diff --git a/data/mods/Magiclysm/itemgroups/recipe_books.json b/data/mods/Magiclysm/itemgroups/recipe_books.json index c6cac26152c99..3cc8c133f67ec 100644 --- a/data/mods/Magiclysm/itemgroups/recipe_books.json +++ b/data/mods/Magiclysm/itemgroups/recipe_books.json @@ -10,5 +10,11 @@ [ "book_mythological", 10 ], [ "cooking_poison", 15 ] ] + }, + { + "id": "magic_recipe_advanced", + "type": "item_group", + "//": "Higher tier recipes, many of which can be done with the alchemist rune. Most school-related recipes require their rune or rune weapon.", + "items": [ [ "magic_armormaking", 30 ] ] } ] diff --git a/data/mods/Magiclysm/items/recipe_books.json b/data/mods/Magiclysm/items/recipe_books.json index 504dd26599ddc..406fd64f2a77d 100644 --- a/data/mods/Magiclysm/items/recipe_books.json +++ b/data/mods/Magiclysm/items/recipe_books.json @@ -113,5 +113,24 @@ "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": "tailoring", + "required_level": 6, + "max_level": 8, + "intelligence": 10, + "time": "25 m", + "fun": -1 } ] diff --git a/data/mods/Magiclysm/recipes/armor.json b/data/mods/Magiclysm/recipes/armor.json new file mode 100644 index 0000000000000..1ec6e7e0be031 --- /dev/null +++ b/data/mods/Magiclysm/recipes/armor.json @@ -0,0 +1,54 @@ +[ + { + "result": "helmet_demonchitin", + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "SEW", "level": 3 }, { "id": "LEATHER_AWL", "level": 1 } ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 7, + "time": "5 h", + "book_learn": [ [ "magic_armormaking", 6 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 12 ] ] ] + }, + { + "result": "armguard_demonchitin", + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "SEW", "level": 3 }, { "id": "LEATHER_AWL", "level": 1 } ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 6, + "time": "5 h", + "book_learn": [ [ "magic_armormaking", 5 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 12 ] ] ] + }, + { + "result": "armor_demonchitin", + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "SEW", "level": 3 }, { "id": "LEATHER_AWL", "level": 1 } ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 8, + "time": "5 h", + "book_learn": [ [ "magic_armormaking", 7 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 72 ] ] ] + }, + { + "result": "boots_demonchitin", + "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "SEW", "level": 3 }, { "id": "LEATHER_AWL", "level": 1 } ], + "type": "recipe", + "category": "CC_ENCHANTED", + "subcategory": "CSC_ENCHANTED_ARMOR", + "skill_used": "tailor", + "skills_required": [ [ "spellcraft", 6 ] ], + "difficulty": 5, + "time": "5 h", + "book_learn": [ [ "magic_armormaking", 4 ] ], + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 12 ] ] ] + } +] From 02582f94e1207e953a83409eec82e0348a65ff8d Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 14:16:48 -0500 Subject: [PATCH 09/17] Fix playtest errors --- data/mods/Magiclysm/items/recipe_books.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/Magiclysm/items/recipe_books.json b/data/mods/Magiclysm/items/recipe_books.json index 406fd64f2a77d..00466322ba100 100644 --- a/data/mods/Magiclysm/items/recipe_books.json +++ b/data/mods/Magiclysm/items/recipe_books.json @@ -126,7 +126,7 @@ "material": [ "paper" ], "symbol": "?", "color": "white", - "skill": "tailoring", + "skill": "tailor", "required_level": 6, "max_level": 8, "intelligence": 10, From 9545b1a0ea55ae53e4f37554964e9249caf4f072 Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 16:00:29 -0500 Subject: [PATCH 10/17] Add repairing ability to sewing kits --- .../Magiclysm/enchanted/enchanted_misc.json | 4 +- data/mods/Magiclysm/items/tools.json | 52 +++++++++++++++++++ data/mods/Magiclysm/materials.json | 2 + 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/data/mods/Magiclysm/enchanted/enchanted_misc.json b/data/mods/Magiclysm/enchanted/enchanted_misc.json index b717750e0ccfc..7fe879dba1653 100644 --- a/data/mods/Magiclysm/enchanted/enchanted_misc.json +++ b/data/mods/Magiclysm/enchanted/enchanted_misc.json @@ -146,7 +146,7 @@ { "type": "repair_item", "item_action_type": "repair_fabric", - "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin" ], + "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, @@ -156,7 +156,7 @@ "type": "sew_advanced", "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin", "plastic", "kevlar_rigid" ], "skill": "tailor", - "clothing_mods": [ "leather_padded", "kevlar_padded", "furred", "wooled" ] + "clothing_mods": [ "leather_padded", "steel_padded", "kevlar_padded", "furred", "wooled" ] } ], "flags": [ "ALLOWS_REMOTE_USE" ] diff --git a/data/mods/Magiclysm/items/tools.json b/data/mods/Magiclysm/items/tools.json index c22bb65385f96..204e9341a11d0 100644 --- a/data/mods/Magiclysm/items/tools.json +++ b/data/mods/Magiclysm/items/tools.json @@ -19,5 +19,57 @@ "watertight": true, "qualities": [ [ "COOK", 3 ], [ "BOIL", 2 ], [ "CONTAIN", 1 ], [ "MAGIC_MUTAGEN", 2 ] ], "use_action": "HEAT_FOOD" + }, + { + "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/data/mods/Magiclysm/materials.json b/data/mods/Magiclysm/materials.json index 6fd108288441b..293c0b2e32e47 100644 --- a/data/mods/Magiclysm/materials.json +++ b/data/mods/Magiclysm/materials.json @@ -53,6 +53,8 @@ "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", From 340f98fb764986af5938e243acfead455c79e747 Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 16:09:15 -0500 Subject: [PATCH 11/17] Capitals --- data/mods/Magiclysm/materials.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/Magiclysm/materials.json b/data/mods/Magiclysm/materials.json index 293c0b2e32e47..5236c46aa84e7 100644 --- a/data/mods/Magiclysm/materials.json +++ b/data/mods/Magiclysm/materials.json @@ -22,7 +22,7 @@ { "type": "material", "ident": "black_dragon_hide", - "name": "black dragon hide", + "name": "Black Dragon Hide", "density": 20, "specific_heat_liquid": 4.186, "specific_heat_solid": 2.108, From 1ec6607c590d363e9bace2851582b010e90f0e62 Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 16:52:42 -0500 Subject: [PATCH 12/17] Itemgroup description fix --- data/mods/Magiclysm/itemgroups/recipe_books.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/Magiclysm/itemgroups/recipe_books.json b/data/mods/Magiclysm/itemgroups/recipe_books.json index 3cc8c133f67ec..aaf2e28b742b7 100644 --- a/data/mods/Magiclysm/itemgroups/recipe_books.json +++ b/data/mods/Magiclysm/itemgroups/recipe_books.json @@ -14,7 +14,7 @@ { "id": "magic_recipe_advanced", "type": "item_group", - "//": "Higher tier recipes, many of which can be done with the alchemist rune. Most school-related recipes require their rune or rune weapon.", + "//": "Higher tier recipes, where most school-related recipes require their rune or rune weapon.", "items": [ [ "magic_armormaking", 30 ] ] } ] From 288b8301bfe689860f78b804f2ca6194908aff8a Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 17:53:06 -0500 Subject: [PATCH 13/17] Linting --- .../Magiclysm/enchanted/enchanted_misc.json | 14 ++++++++- data/mods/Magiclysm/items/tools.json | 31 +++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/data/mods/Magiclysm/enchanted/enchanted_misc.json b/data/mods/Magiclysm/enchanted/enchanted_misc.json index 7fe879dba1653..b43a6e4fed629 100644 --- a/data/mods/Magiclysm/enchanted/enchanted_misc.json +++ b/data/mods/Magiclysm/enchanted/enchanted_misc.json @@ -146,7 +146,19 @@ { "type": "repair_item", "item_action_type": "repair_fabric", - "materials": [ "cotton", "leather", "wool", "fur", "faux_fur", "nomex", "kevlar", "neoprene", "gutskin", "black_dragon_hide", "demon_chitin" ], + "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, diff --git a/data/mods/Magiclysm/items/tools.json b/data/mods/Magiclysm/items/tools.json index 204e9341a11d0..1ee4ba7663ec8 100644 --- a/data/mods/Magiclysm/items/tools.json +++ b/data/mods/Magiclysm/items/tools.json @@ -28,7 +28,20 @@ "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" ], + "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, @@ -44,7 +57,21 @@ { "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" ], + "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, From 80c5d702ed215e2b32f8f7e3125001360c921d94 Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Mon, 20 Jan 2020 23:01:00 -0500 Subject: [PATCH 14/17] Forgot gauntlet recipe + adjust crafting times --- data/mods/Magiclysm/recipes/armor.json | 64 +++++++++++++++++++++----- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/data/mods/Magiclysm/recipes/armor.json b/data/mods/Magiclysm/recipes/armor.json index 1ec6e7e0be031..bba2d3cbc7613 100644 --- a/data/mods/Magiclysm/recipes/armor.json +++ b/data/mods/Magiclysm/recipes/armor.json @@ -1,54 +1,94 @@ [ { "result": "helmet_demonchitin", - "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "SEW", "level": 3 }, { "id": "LEATHER_AWL", "level": 1 } ], + "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": "5 h", + "time": "4 h", "book_learn": [ [ "magic_armormaking", 6 ] ], - "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 12 ] ] ] + "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_plate", 1 ] ], [ [ "demon_chitin_piece", 1 ] ] ] }, { "result": "armguard_demonchitin", - "qualities": [ { "id": "CHISEL", "level": 1 }, { "id": "SEW", "level": 3 }, { "id": "LEATHER_AWL", "level": 1 } ], + "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": "5 h", + "time": "2 h", "book_learn": [ [ "magic_armormaking", 5 ] ], - "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 12 ] ] ] + "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 } ], + "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": "5 h", + "time": "4 h", "book_learn": [ [ "magic_armormaking", 7 ] ], - "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 72 ] ] ] + "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 } ], + "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": "5 h", + "time": "2 h 40 m", "book_learn": [ [ "magic_armormaking", 4 ] ], - "components": [ [ [ "cordage_superior", 1, "LIST" ] ], [ [ "demon_chitin_piece", 12 ] ] ] + "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 ] ] ] } ] From d2bc4ae2070730d1041f3069f516c79785d3bfc5 Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Wed, 11 Mar 2020 00:16:18 -0400 Subject: [PATCH 15/17] Fix fire protection being too low --- data/mods/Magiclysm/items/armor.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/data/mods/Magiclysm/items/armor.json b/data/mods/Magiclysm/items/armor.json index 8ffed9c1d27ad..494717fda67d0 100644 --- a/data/mods/Magiclysm/items/armor.json +++ b/data/mods/Magiclysm/items/armor.json @@ -34,7 +34,8 @@ "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 } + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 }, { "id": "armor_demonchitin", @@ -43,7 +44,8 @@ "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 } + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 }, { "id": "helmet_demonchitin", @@ -52,7 +54,8 @@ "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 } + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 }, { "id": "gauntlets_demonchitin", @@ -61,7 +64,8 @@ "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 } + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 }, { "id": "boots_demonchitin", @@ -70,6 +74,7 @@ "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 } + "proportional": { "weight": 0.9, "encumbrance": 0.9, "price": 10, "warmth": 2 }, + "environmental_protection": 8 } ] From 3351d94bc8755f23ef05d8216fbeab0a0d562e44 Mon Sep 17 00:00:00 2001 From: LaVeyanFiend Date: Wed, 11 Mar 2020 00:23:00 -0400 Subject: [PATCH 16/17] Add dog & horse d-chitin armors --- data/mods/Magiclysm/items/armor.json | 28 ++++++++++++++++++++++++++ data/mods/Magiclysm/recipes/armor.json | 23 +++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/data/mods/Magiclysm/items/armor.json b/data/mods/Magiclysm/items/armor.json index 494717fda67d0..13dcb8127e121 100644 --- a/data/mods/Magiclysm/items/armor.json +++ b/data/mods/Magiclysm/items/armor.json @@ -76,5 +76,33 @@ "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_harness", + "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": "horse_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/data/mods/Magiclysm/recipes/armor.json b/data/mods/Magiclysm/recipes/armor.json index bba2d3cbc7613..962dbe57f405f 100644 --- a/data/mods/Magiclysm/recipes/armor.json +++ b/data/mods/Magiclysm/recipes/armor.json @@ -90,5 +90,28 @@ "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 ] ] ] } ] From 46dbac7826b5ba11ed88ef1542522d8f7cb4c35a Mon Sep 17 00:00:00 2001 From: Curtis Merrill Date: Sat, 14 Mar 2020 15:08:29 -0400 Subject: [PATCH 17/17] Update data/mods/Magiclysm/items/recipe_books.json --- data/mods/Magiclysm/items/recipe_books.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/mods/Magiclysm/items/recipe_books.json b/data/mods/Magiclysm/items/recipe_books.json index 00466322ba100..ac79f101d3cba 100644 --- a/data/mods/Magiclysm/items/recipe_books.json +++ b/data/mods/Magiclysm/items/recipe_books.json @@ -118,7 +118,7 @@ "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.", + "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,