diff --git a/data/json/flags.json b/data/json/flags.json index f33bafd21d108..ce24b96643eb9 100644 --- a/data/json/flags.json +++ b/data/json/flags.json @@ -175,6 +175,11 @@ "type": "json_flag", "info": "You could probably use this to get into a secure industrial facility." }, + { + "id": "COOP_CARD", + "type": "json_flag", + "info": "Gives you access to the artisans workshop." + }, { "id": "SKINNED", "type": "json_flag" diff --git a/data/json/furniture_and_terrain/furniture-tools.json b/data/json/furniture_and_terrain/furniture-tools.json index 94daaa25a4af8..1a9d10bb72242 100644 --- a/data/json/furniture_and_terrain/furniture-tools.json +++ b/data/json/furniture_and_terrain/furniture-tools.json @@ -119,6 +119,52 @@ "items": [ { "item": "char_forge", "count": 1 } ] } }, + { + "type": "furniture", + "id": "f_forge_artisan_0", + "name": "Cody's forge", + "looks_like": "f_fireplace", + "description": "Metalworking station typically used in combination with an anvil. You can see pipes running into the walls.", + "symbol": "^", + "color": "light_red", + "move_cost_mod": -1, + "coverage": 40, + "required_str": -1, + "crafting_pseudo_item": "fake_forge", + "flags": [ "TRANSPARENT", "SEALED", "CONTAINER", "NOITEM", "EASY_DECONSTRUCT" ], + "deconstruct": { "items": [ { "item": "char_forge", "count": 1 } ] }, + "examine_action": "reload_furniture", + "bash": { + "str_min": 4, + "str_max": 8, + "sound": "crunch!", + "sound_fail": "whump.", + "items": [ { "item": "char_forge", "count": 1 } ] + } + }, + { + "type": "furniture", + "id": "f_forge_artisan_1", + "name": "Cody's forge", + "looks_like": "f_fireplace", + "description": "Metalworking station typically used in combination with an anvil. You can see pipes running into the walls.", + "symbol": "^", + "color": "light_red", + "move_cost_mod": -1, + "coverage": 40, + "required_str": -1, + "crafting_pseudo_item": "fake_forge", + "flags": [ "TRANSPARENT", "SEALED", "CONTAINER", "NOITEM", "EASY_DECONSTRUCT" ], + "deconstruct": { "items": [ { "item": "char_forge", "count": 1 } ] }, + "examine_action": "reload_furniture", + "bash": { + "str_min": 4, + "str_max": 8, + "sound": "crunch!", + "sound_fail": "whump.", + "items": [ { "item": "char_forge", "count": 1 } ] + } + }, { "type": "furniture", "id": "f_anvil", diff --git a/data/json/furniture_and_terrain/terrain-mechanisms.json b/data/json/furniture_and_terrain/terrain-mechanisms.json index 81485f4a61422..939735d1c0317 100644 --- a/data/json/furniture_and_terrain/terrain-mechanisms.json +++ b/data/json/furniture_and_terrain/terrain-mechanisms.json @@ -366,6 +366,33 @@ "redundant_msg": "The door is already open." } }, + { + "type": "terrain", + "id": "t_card_artisans", + "name": "card reader", + "description": "This is a smartcard reader. Text written on a post note above reads 'CO-OP MEMBERS ONLY'.", + "//": "for the isolated artisans faction", + "symbol": "6", + "color": "pink", + "move_cost": 0, + "flags": [ "NOITEM", "CONNECT_TO_WALL" ], + "examine_action": { + "type": "cardreader", + "flags": [ "COOP_CARD" ], + "terrain_changes": { "t_door_metal_locked": "t_door_metal_c" }, + "query_msg": "Swipe your ID card?", + "success_msg": "You insert your ID card.\nThe nearby doors unlock.", + "redundant_msg": "The nearby doors are already opened." + }, + "bash": { + "str_min": 18, + "str_max": 180, + "sound": "crunch!", + "sound_fail": "whack!", + "ter_set": "t_card_reader_broken", + "items": [ { "item": "plastic_chunk", "count": [ 0, 2 ] }, { "item": "scrap", "prob": 50 } ] + } + }, { "type": "terrain", "id": "t_card_science_maintenance_green", diff --git a/data/json/itemgroups/military.json b/data/json/itemgroups/military.json index e805dfe59e0d7..8e47747be84bf 100644 --- a/data/json/itemgroups/military.json +++ b/data/json/itemgroups/military.json @@ -45,6 +45,14 @@ "subtype": "collection", "entries": [ { "item": "esapi_plate", "prob": 50 }, { "item": "esapi_plate", "prob": 50 } ] }, + { + "id": "military_ballistic_vest_light_pristine", + "type": "item_group", + "//": "light ballistic vest plus plates", + "container-item": "ballistic_vest_light", + "subtype": "collection", + "entries": [ { "item": "esapi_plate" }, { "item": "esapi_plate" } ] + }, { "id": "military_ballistic_vest_heavy", "type": "item_group", diff --git a/data/json/items/generic.json b/data/json/items/generic.json index 8796633614ace..108d068faed8b 100644 --- a/data/json/items/generic.json +++ b/data/json/items/generic.json @@ -557,6 +557,20 @@ "to_hit": -3, "flags": [ "MC_USED" ] }, + { + "type": "TOOL", + "id": "usb_drive_nano", + "symbol": ",", + "color": "white", + "name": { "str": "secured USB drive" }, + "description": "A USB thumb drive. Useful for holding software. This one seems like it could get ran over by a truck and be fine.", + "price": 10000, + "price_postapoc": 10, + "material": [ "steel", "plastic" ], + "weight": "55 g", + "volume": "5 ml", + "to_hit": -3 + }, { "type": "GENERIC", "id": "data_card", @@ -3098,6 +3112,15 @@ "weight": "100 kg", "copy-from": "broken_turret" }, + { + "type": "GENERIC", + "id": "broken_turret_artisans", + "symbol": ",", + "color": "green", + "name": { "str": "broken custom plated turret" }, + "weight": "75 kg", + "copy-from": "broken_turret" + }, { "type": "GENERIC", "id": "broken_secubot", diff --git a/data/json/items/gun/545x39.json b/data/json/items/gun/545x39.json index 0f2dda4e49646..3f05208ab135c 100644 --- a/data/json/items/gun/545x39.json +++ b/data/json/items/gun/545x39.json @@ -38,6 +38,47 @@ ], "flags": [ "NEVER_JAMS" ], "weapon_category": [ "AUTOMATIC_RIFLES" ], - "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "ak74mag", "rpk74mag" ] } ] + "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "ak74mag", "rpk74mag", "casket74mag" ] } ] + }, + { + "id": "kord", + "copy-from": "rifle_auto", + "looks_like": "ar15", + "type": "GUN", + "name": { "str": "Kord 6P67" }, + "//": "An exceptionally new AK style gun found illicitly as part of a quest.", + "description": "Special forces Russian rifle chambered in 5.45. This version uses standard Picatinny rails, has modern lightweight furniture and a unique complex recoil balance system for high fire rate with minimal recoil. It combines the reliability of the AK series with the high-velocity, lightweight 5.45x39mm cartridge and accepts standard AK-74M magazines.", + "weight": "3250 g", + "volume": "2418 ml", + "longest_side": "96 cm", + "price": 390000, + "price_postapoc": 4000, + "to_hit": -1, + "bashing": 11, + "material": [ "steel", "plastic" ], + "color": "brown", + "ammo": [ "545x39" ], + "dispersion": 120, + "durability": 8, + "min_cycle_recoil": 1260, + "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "burst", 2 ], [ "AUTO", "auto", 4 ] ], + "barrel_volume": "250 ml", + "valid_mod_locations": [ + [ "accessories", 4 ], + [ "barrel", 1 ], + [ "bore", 1 ], + [ "brass catcher", 1 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "muzzle", 1 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "sling", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ] + ], + "flags": [ "NEVER_JAMS" ], + "weapon_category": [ "AUTOMATIC_RIFLES" ], + "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "ak74mag", "rpk74mag", "casket74mag" ] } ] } ] diff --git a/data/json/items/gun/monster_gun.json b/data/json/items/gun/monster_gun.json index 689c95d3a8881..1885107a174f7 100644 --- a/data/json/items/gun/monster_gun.json +++ b/data/json/items/gun/monster_gun.json @@ -55,6 +55,29 @@ "dispersion": 150, "durability": 8 }, + { + "id": "firework_cannon", + "type": "GUN", + "symbol": "%", + "color": "red", + "name": { "str": "fireworks cannon" }, + "description": "An autoloading fireworks launcher.", + "material": [ "steel" ], + "flags": [ "PRIMITIVE_RANGED_WEAPON", "NEVER_JAMS", "NONCONDUCTIVE", "NO_REPAIR", "WATERPROOF_GUN", "NO_SALVAGE", "NO_UNLOAD" ], + "skill": "launcher", + "ammo_effects": [ "SMOKE", "FLASHBANG" ], + "ranged_damage": { "damage_type": "bash", "amount": 1 }, + "weight": "540 g", + "volume": "750 ml", + "longest_side": "25 cm", + "bashing": 2, + "to_hit": 1, + "reload_noise_volume": 2, + "loudness": 50, + "range": 12, + "dispersion": 400, + "durability": 8 + }, { "id": "feral_human_thrown_rock", "type": "GUN", diff --git a/data/json/items/gunmod/mechanism.json b/data/json/items/gunmod/mechanism.json index f439021999165..d3c500224c64c 100644 --- a/data/json/items/gunmod/mechanism.json +++ b/data/json/items/gunmod/mechanism.json @@ -67,6 +67,26 @@ "min_skills": [ [ "mechanics", 2 ], [ "rifle", 3 ] ], "flags": [ "INSTALL_DIFFICULT", "CONSUMABLE" ] }, + { + "id": "bars", + "type": "GUNMOD", + "name": { "str": "balanced recoil system" }, + "description": "This is a complex set of parts designed to minimize recoil using a reciprocating counterweight.", + "weight": "60 g", + "volume": "250 ml", + "integral_volume": "0 ml", + "price": 24000, + "price_postapoc": 500, + "material": [ "steel" ], + "symbol": ":", + "color": "red", + "location": "mechanism", + "mod_targets": [ "kord" ], + "install_time": "15 m", + "handling_modifier": 15, + "min_skills": [ [ "mechanics", 2 ], [ "rifle", 3 ] ], + "flags": [ "INSTALL_DIFFICULT", "CONSUMABLE" ] + }, { "id": "waterproof_gunmod", "type": "GUNMOD", diff --git a/data/json/items/id_cards.json b/data/json/items/id_cards.json index 823af70492314..f00ec4f4402c3 100644 --- a/data/json/items/id_cards.json +++ b/data/json/items/id_cards.json @@ -48,6 +48,23 @@ "category": "keys", "to_hit": -3 }, + { + "type": "GENERIC", + "id": "id_artisan_member", + "looks_like": "id_science", + "symbol": ",", + "color": "green", + "name": { "str": "co-op badge" }, + "description": "A manually encoded badge giving you access to the artisans workshop. It even has your name written on the back.", + "price": 120000, + "flags": [ "COOP_CARD" ], + "price_postapoc": 100, + "material": [ "plastic" ], + "weight": "6 g", + "volume": "5 ml", + "category": "keys", + "to_hit": -3 + }, { "type": "GENERIC", "id": "id_science_visitor_1", diff --git a/data/json/items/magazine/545x39.json b/data/json/items/magazine/545x39.json index 2549adf379957..325382c9047aa 100644 --- a/data/json/items/magazine/545x39.json +++ b/data/json/items/magazine/545x39.json @@ -33,5 +33,23 @@ "reload_time": 130, "flags": [ "MAG_BULKY" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "545x39": 45 } } ] + }, + { + "id": "casket74mag", + "looks_like": "stanag30", + "type": "MAGAZINE", + "name": { "str": "AK-74M 60-round magazine" }, + "description": "A 60-round magazine compatible with the AK-74M rifle.", + "weight": "400 g", + "volume": "750 ml", + "price": 8500, + "price_postapoc": 250, + "material": [ "plastic" ], + "symbol": "#", + "color": "light_gray", + "ammo_type": [ "545x39" ], + "reload_time": 130, + "flags": [ "MAG_COMPACT" ], + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "545x39": 60 } } ] } ] diff --git a/data/json/mapgen/isolated_road/isolated_road_home_chunks.json b/data/json/mapgen/isolated_road/isolated_road_home_chunks.json new file mode 100644 index 0000000000000..c0218434c99dd --- /dev/null +++ b/data/json/mapgen/isolated_road/isolated_road_home_chunks.json @@ -0,0 +1,278 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "isolated_house_farm_gunsmith" ], + "object": { + "fill_ter": "t_floor", + "rows": [ + "GGGGGGGGGGGGGGGGGGGGGGGG", + "%%%%%%%%%%%%%%%%%%%%%%%G", + "%..................b..%G", + "%...........|vvv|.....%G", + "%%||vv|||||||kkk|||...%G", + ".||g + + h 1|...%G", + ".vk |* |@@ Q nv...%G", + ".vkhQ |!!|@@ 888|...%G", + ".vk |||||||+||||...%G", + ".|||+|||y nv...%G", + "%%|d ddd ||+||||||...%G", + "H,+ Q d|D S|rrr|...%G", + "%,|d d|B |r r|...%G", + "%,| h |B t|r r|...%G", + "%,|nn*nnnn||+|||+||...%G", + "%,vh XD c u|...%G", + "%,vn X c uv...%G", + "%,vh Q X Qc Sv...%G", + "%,| X o|...%G", + "%,|yYa 888X hncfuu|...%G", + "%,||v|+||||vvv|||||...%G", + "%,,,,,,...............%G", + "%H%%%%%%%%%%%%%%%%%%%%%G", + "......................%G" + ], + "palettes": [ "artisans" ], + "place_monster": [ + { "monster": "mon_turret_artisans", "x": 8, "y": 13, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 4, "y": 13, "chance": 100 } + ], + "place_loot": [ + { "group": "ammo_rifle_common", "x": 2, "y": 7, "chance": 100 }, + { "group": "guns_rifle_milspec", "x": 2, "y": 7, "chance": 100 }, + { "group": "gunsmith_basic_ammo", "x": 3, "y": 10, "chance": 100, "repeat": [ 1, 4 ] }, + { "group": "gunsmith_basic_ammo", "x": 5, "y": 10, "chance": 100, "repeat": [ 1, 4 ] }, + { "group": "gunsmith_basic_ammo", "x": 6, "y": 10, "chance": 100, "repeat": [ 1, 4 ] }, + { "group": "gunsmith_basic_ammo", "x": 7, "y": 10, "chance": 100, "repeat": [ 1, 4 ] }, + { "group": "gunsmith_repack_ammo", "x": 3, "y": 12, "chance": 100, "repeat": [ 3, 6 ] }, + { "group": "gunsmith_repack_ammo", "x": 9, "y": 12, "chance": 100, "repeat": [ 3, 6 ] }, + { "group": "gunsmith_repack_ammo", "x": 9, "y": 11, "chance": 100, "repeat": [ 3, 6 ] } + ], + "place_npcs": [ { "class": "jay_ruckers", "x": 6, "y": 13 } ], + "faction_owner": [ { "id": "isolated_artisans", "x": [ 0, 23 ], "y": [ 0, 23 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "isolated_house_farm_blacksmith" ], + "object": { + "fill_ter": "t_floor", + "rows": [ + "G%%%%%%%%%%%%%%%%%%%%%..", + "G%..............b....%..", + "G%...................H..", + "G%...||||||vv|| |####|..", + "G%...|rrr|fouu| q #..", + "G%...vr + Q S| #..", + "G%...|rrr|cc u|+||| #..", + "G%._________ 1n|7 #..", + "G%._:mmVCNM_d v7 #..", + "G%.-jjjjjjj_d v7 #..", + "G%.-jIjOjjm_d Q | #..", + "G%.-jjj(jjm_d v |,,", + "G%.-jjjj_-Z_1 v ,,", + "G%.-K*9J_ | ,,", + "G%.______+||D y ||+||.", + "G%...|@@ 8||+|| 7v.", + "G%...v@@ 8|t D|8 7v.", + "G%...|z Q 8| |8 7v.", + "G%...|D 1 |BBS|8YYYa||.", + "G%...|||kkk|||||||v|||..", + "G%.....|vvv|.........%..", + "G%...................%..", + "G%%%%%%%%%%%%%%%%%%%%%%%", + "GGGGGGGGGGGGGGGGGGGGGGGG" + ], + "palettes": [ "artisans" ], + "place_monster": [ { "monster": "mon_turret_artisans", "x": 17, "y": 10, "chance": 100 } ], + "place_loot": [ + { "group": "CODY_MILLER_trade", "chance": 100, "x": 12, "y": 8 }, + { "group": "CODY_MILLER_trade", "chance": 100, "x": 12, "y": 9 }, + { "group": "CODY_MILLER_trade", "chance": 100, "x": 12, "y": 10 }, + { "group": "CODY_MILLER_trade", "chance": 100, "x": 12, "y": 11 } + ], + "place_npcs": [ { "class": "cody_miller", "x": 16, "y": 7 } ], + "faction_owner": [ { "id": "isolated_artisans", "x": [ 0, 23 ], "y": [ 0, 23 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "isolated_road_field_0" ], + "object": { + "fill_ter": "t_grass", + "rows": [ + "GGGGGGGGGjjjjjjjGGGGGGGG", + "G........ddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "Gddddddddddddddd........", + "Gddddddddddddddd........", + "Gddddddddddddddd........", + "Gddddddddddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "G........ddddddd........", + "Gddddddddddddddd........", + "Gdddddddddddddd.........", + "Gddddddddddddd..........", + "Gdddddddddddd...........", + "G.......................", + "G.......................", + "G.......................", + "G.......................", + "G......................." + ], + "terrain": { "G": "t_pit_spiked", "j": "t_pit_covered", "d": "t_dirt" }, + "place_vehicles": [ { "vehicle": "pickup", "chance": 100, "fuel": 50, "rotation": 180, "status": 0, "x": 4, "y": 10 } ], + "place_monster": [ + { "monster": "mon_turret_artisans", "x": 8, "y": 1, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 16, "y": 1, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 23, "y": 23, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 2, "y": 23, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 23, "y": 2, "chance": 100 } + ], + "faction_owner": [ { "id": "isolated_artisans", "x": [ 0, 23 ], "y": [ 0, 23 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "isolated_road_field_1" ], + "object": { + "fill_ter": "t_dirt", + "rows": [ + "______________________%G", + "______________________%G", + "__....................%G", + "__..-----O............%G", + "__..-ttt-O.......###..%G", + "__..-ddd-........###..%G", + "__...............##...%G", + "__....................%G", + "__..D.D.D.D..D.D.D.D..%G", + "__..D.D.D.D..D.D.D.D..%G", + "__..D.D.D.D..D.D.D.D..%G", + "__....................%G", + "__....................%G", + "__..D.D.D.D..D.D.D.D..%G", + "__..D.D.D.D..D.D.D.D..%G", + "__..D.D.D.D..D.D.D.D..%G", + "__....................%G", + "__..D.D.D.D..D.D.D.D..%G", + "__..D.D.D.D..D.D.D.D..%G", + "__..D.D.D.D..D.D.D.D..%G", + "__....................%G", + "__....................%G", + "%%%%%%%%%%%%%%%%%%%%%%%G", + "GGGGGGGGGGGGGGGGGGGGGGGG" + ], + "terrain": { + "#": "t_dirtmound", + "+": "t_fencegate_c", + "%": "t_splitrail_fence", + "-": "t_wall_wood", + "D": "t_dirtmound", + ".": [ "t_grass", "t_dirt", "t_dirt", "t_dirt", "t_dirt", "t_dirt" ], + "P": "t_fence", + "_": "t_region_groundcover_urban", + "d": "t_dirtfloor", + "t": "t_dirtfloor", + "|": "t_fence", + "G": "t_pit_spiked" + }, + "furniture": { "O": "f_standing_tank", "H": "f_standing_tank", "P": "f_sign", "t": "f_table" }, + "liquids": { "O": { "liquid": "water", "amount": [ 0, 100 ] }, "H": { "liquid": "fertilizer_liquid", "amount": [ 0, 100 ] } }, + "sealed_item": { "D": { "items": { "item": "farming_seeds", "chance": 100 }, "furniture": "f_plant_seedling", "chance": 70 } }, + "place_items": [ + { "chance": 35, "repeat": 2, "item": "supplies_farming", "x": 6, "y": 4 }, + { "chance": 35, "repeat": 2, "item": "garden_shed", "x": 7, "y": 4 }, + { "chance": 40, "repeat": 2, "item": "garden_shed", "x": 5, "y": 4 } + ], + "place_monster": [ + { "monster": "mon_turret_artisans", "x": 1, "y": 21, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 21, "y": 1, "chance": 100 }, + { "monster": "mon_turret_artisans", "x": 21, "y": 21, "chance": 100 } + ], + "faction_owner": [ { "id": "isolated_artisans", "x": [ 0, 23 ], "y": [ 0, 23 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "isolated_house_farm_roof_blacksmith", + "object": { + "fill_ter": "t_floor", + "rows": [ + " ", + " ", + " ", + " |2222222222222223 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________3 ", + " |_______________33 ", + " |________________3 ", + " |________________3 ", + " |________________3 ", + " |_______________33 ", + " |--___----------- ", + " ----- ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { "_": "t_shingle_flat_roof" }, + "faction_owner": [ { "id": "isolated_artisans", "x": [ 0, 23 ], "y": [ 0, 23 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "isolated_house_farm_roof_gunsmith", + "object": { + "fill_ter": "t_floor", + "rows": [ + " ", + " ", + " ", + " ----- ", + " -----------___--| ", + " 33_______________| ", + " 3________________| ", + " 3________________| ", + " 3________________| ", + " 33_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3_______________| ", + " 3222222222222222| ", + " ", + " ", + " " + ], + "palettes": [ "roof_palette" ], + "terrain": { "_": "t_shingle_flat_roof" }, + "faction_owner": [ { "id": "isolated_artisans", "x": [ 0, 23 ], "y": [ 0, 23 ] } ] + } + } +] diff --git a/data/json/mapgen/isolated_road/isolated_road_mission_1.json b/data/json/mapgen/isolated_road/isolated_road_mission_1.json new file mode 100644 index 0000000000000..c8dcc6846b1fe --- /dev/null +++ b/data/json/mapgen/isolated_road/isolated_road_mission_1.json @@ -0,0 +1,152 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "gunshow_0", "gunshow_1" ] ], + "object": { + "fill_ter": "t_dirt", + "rows": [ + "||||||||||||||||||||||||||||||||||||||||||||||||", + "|c c c c c c |", + "| |", + "| |", + "| |", + "| |", + "| |", + " c c c c c ", + " ", + " ", + " ", + " ", + " c c c c c ", + " ", + " ", + "| |", + "| |", + "| |", + "|c c c c c c |", + "| |", + "| |", + "| |", + "| |", + "||||||||||||||||||||||||||||||||||||||||||||||||" + ], + "place_monster": [ + { "monster": "mon_secubot_america", "x": 8, "y": [ 3, 22 ], "chance": 100 }, + { "monster": "mon_secubot_america", "x": 35, "y": [ 3, 22 ], "chance": 100 }, + { "monster": "mon_secubot", "x": 14, "y": [ 3, 22 ], "chance": 100 }, + { "monster": "mon_secubot", "x": 22, "y": [ 3, 22 ], "chance": 100 } + ], + "place_loot": [ + { "group": "kitted_kord", "chance": 100, "x": 15, "y": 23 }, + { "group": "corpse_male", "chance": 100, "x": [ 2, 23 ], "y": [ 2, 22 ], "repeat": [ 1, 3 ] }, + { "group": "corpse_male", "chance": 100, "x": [ 24, 46 ], "y": [ 2, 22 ], "repeat": [ 1, 3 ] } + ], + "terrain": { " ": "t_dirt" }, + "furniture": { "|": "f_large_canvas_wall" }, + "nested": { + "c": { + "chunks": [ + [ "gunshow_table_0", 20 ], + [ "gunshow_table_1", 20 ], + [ "gunshow_table_2", 20 ], + [ "gunshow_table_3", 20 ], + [ "gunshow_table_4", 20 ], + [ "gunshow_table_5", 20 ], + [ "null", 4 ] + ] + } + } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "gunshow_table_0", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "TTTT", + "d hT", + "d hT", + "TTTT" + ], + "palettes": [ "gunshow" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "gunshow_table_1", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "m TT", + "m T", + "m T", + "m TT" + ], + "palettes": [ "gunshow" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "gunshow_table_2", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "TTTT", + "d hT", + "d hT", + "TTTT" + ], + "palettes": [ "gunshow" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "gunshow_table_3", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "TT m", + "T m", + "T m", + "TT m" + ], + "palettes": [ "gunshow" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "gunshow_table_4", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "| d", + "|mhT", + "|mhT", + "| d" + ], + "palettes": [ "gunshow" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "gunshow_table_5", + "object": { + "mapgensize": [ 4, 4 ], + "rows": [ + "d |", + "Thm|", + "Thm|", + "d |" + ], + "palettes": [ "gunshow" ] + } + } +] diff --git a/data/json/mapgen_palettes/isolated_artisans.json b/data/json/mapgen_palettes/isolated_artisans.json new file mode 100644 index 0000000000000..9b0712911b26a --- /dev/null +++ b/data/json/mapgen_palettes/isolated_artisans.json @@ -0,0 +1,123 @@ +[ + { + "type": "palette", + "id": "artisans", + "terrain": { + " ": "t_floor", + "#": "t_railing", + "%": "t_splitrail_fence", + "H": "t_splitrail_fencegate_c", + "+": "t_door_c", + ".": "t_region_groundcover", + ",": [ [ "t_railroad_rubble", 20 ], [ "t_region_groundcover", 2 ], [ "t_region_groundcover_barren", 3 ] ], + "/": "t_null", + "W": [ [ "t_wall_wood", 500 ], [ "t_wall_wood_chipped", 4 ], [ "t_wall_wood_broken", 1 ] ], + "b": "t_region_groundcover_barren", + "3": "t_region_groundcover_barren", + "T": "t_region_groundcover_barren", + "q": "t_region_groundcover_barren", + "v": [ "t_window_domestic", "t_curtains" ], + "|": [ [ "t_wall_log", 500 ], [ "t_wall_log_chipped", 4 ], [ "t_wall_log_broken", 1 ] ], + "4": "t_gutter_downspout", + "<": "t_stairs_up", + ">": "t_stairs_down", + "G": "t_pit_spiked", + "Q": "t_floor_olight", + "O": "t_thconc_floor_olight", + "Z": "t_card_artisans", + "-": "t_door_metal_locked", + ":": "t_gates_mech_control_lab", + "j": "t_thconc_floor", + "V": "t_thconc_floor", + "I": "t_thconc_floor", + "N": "t_thconc_floor", + "M": "t_thconc_floor", + "9": "t_thconc_floor", + "J": "t_thconc_floor", + "K": "t_thconc_floor", + "(": "t_thconc_floor", + "m": "t_thconc_floor", + "C": "t_thconc_floor", + "_": "t_strconc_wall" + }, + "furniture": { + "@": "f_bed", + "B": "f_bathtub", + "D": "f_trashcan", + "L": "f_locker", + "o": "f_oven", + "S": "f_sink", + "Y": "f_sofa", + "c": "f_counter", + "u": "f_cupboard", + "z": "f_dresser", + "f": "f_fridge", + "h": "f_chair", + "k": "f_desk", + "n": "f_table", + "T": "f_table", + "r": "f_rack", + "t": "f_toilet", + "1": "f_armchair", + "8": "f_bookcase", + "7": "f_bench", + "3": "f_bench", + "a": "f_rack_coat", + "g": "f_floor_lamp", + "y": [ "f_indoor_plant_y", "f_indoor_plant" ], + "b": "f_rotary_clothesline", + "q": "f_birdbath", + "!": "f_generator_broken", + "*": "f_console", + "X": "f_curtain", + "V": "f_forge_artisan_0", + "C": "f_forge_artisan_1", + "I": "f_anvil", + "N": "f_kiln_empty", + "M": "f_arcfurnace_empty", + "9": "f_beverly_shear", + "J": "f_drill_press", + "K": "f_tablesaw", + "(": "f_heavy_lathe", + "d": "f_utility_shelf", + "m": "f_metal_crate_o" + }, + "items": { + "k": { "item": "office", "chance": 25 }, + "f": { "item": "fridge", "chance": 45, "repeat": [ 1, 4 ] }, + "o": { "item": "oven", "chance": 40 }, + "8": { "item": "homebooks", "chance": 45, "repeat": [ 1, 3 ] }, + "r": { "item": "restaur_kitchen", "chance": 45, "repeat": [ 1, 3 ] }, + "c": { "item": "kitchen_counters", "chance": 30 }, + "u": [ { "item": "kitchen_counters", "chance": 30 }, { "item": "restaur_kitchen", "chance": 50, "repeat": [ 2, 4 ] } ], + "D": { "item": "trash", "chance": 20, "repeat": [ 2, 4 ] }, + "m": [ + { "item": "supplies_metal", "chance": 40, "repeat": [ 2, 15 ] }, + { "item": "supplies_woodcrafts", "chance": 40, "repeat": [ 2, 10 ] }, + { "item": "mechanics", "chance": 30, "repeat": [ 2, 6 ] }, + { "item": "supplies_metal_precious", "chance": 20, "repeat": [ 2, 6 ] } + ] + } + }, + { + "type": "palette", + "id": "gunshow", + "terrain": { " ": "t_dirt" }, + "furniture": { "h": "f_chair", "T": "f_table", "d": "f_utility_shelf", "m": "f_metal_crate_o", "|": "f_curtain" }, + "items": { + "m": [ + { "item": "SUS_gunstore_crate", "chance": 20, "repeat": [ 0, 4 ] }, + { "item": "SUS_gunstore_displaycase", "chance": 20, "repeat": [ 0, 4 ] } + ], + "d": [ + { "item": "SUS_gunstore_safe", "chance": 5, "repeat": [ 0, 5 ] }, + { "item": "SUS_gunstore_safe_obscure", "chance": 5, "repeat": [ 0, 5 ] } + ], + "T": [ + { "item": "guns_common_display", "chance": 20, "repeat": [ 0, 1 ] }, + { "item": "gunmod_common", "chance": 10, "repeat": [ 0, 4 ] }, + { "item": "SUS_gunstore_gear", "chance": 10, "repeat": [ 0, 4 ] } + ] + } + } +] diff --git a/data/json/monster_factions.json b/data/json/monster_factions.json index ffd4a8dc7d508..7486a34188b16 100644 --- a/data/json/monster_factions.json +++ b/data/json/monster_factions.json @@ -15,7 +15,7 @@ "type": "MONSTER_FACTION", "name": "human", "neutral": [ "mech_bot" ], - "by_mood": "exodii" + "by_mood": [ "exodii", "isolated_artisans" ] }, { "type": "MONSTER_FACTION", @@ -60,14 +60,14 @@ "type": "MONSTER_FACTION", "name": "small_animal", "base_faction": "animal", - "neutral": [ "zombie", "fish", "exodii", "nether", "animal" ], + "neutral": [ "zombie", "fish", "exodii", "isolated_artisans", "nether", "animal" ], "by_mood": [ "cat", "bear", "fox", "big_cat", "dog", "wolf" ] }, { "type": "MONSTER_FACTION", "name": "herbivore", "base_faction": "animal", - "neutral": [ "small_animal", "fish", "exodii" ] + "neutral": [ "small_animal", "fish", "exodii", "isolated_artisans" ] }, { "type": "MONSTER_FACTION", @@ -129,7 +129,20 @@ "base_faction": "animal", "hate": [ "aquatic_predator", "zombie_aquatic", "mutant_piscivores", "crayfish", "strider" ], "by_mood": [ "bear", "big_cat" ], - "neutral": [ "zombie", "bot", "animal", "small_animal", "exodii", "plant", "nether", "jabberwock", "insect", "mutant", "fungus" ] + "neutral": [ + "zombie", + "bot", + "animal", + "small_animal", + "exodii", + "isolated_artisans", + "plant", + "nether", + "jabberwock", + "insect", + "mutant", + "fungus" + ] }, { "type": "MONSTER_FACTION", @@ -476,13 +489,21 @@ "by_mood": [ "animal", "nether", "human" ], "hate": [ "zombie", "fungus", "triffid", "mi-go" ] }, + { + "type": "MONSTER_FACTION", + "name": "isolated_artisans", + "base_faction": "human", + "neutral": [ "fish", "small_animal", "herbivore" ], + "by_mood": [ "animal", "nether", "human" ], + "hate": [ "zombie", "fungus", "triffid", "mi-go" ] + }, { "type": "MONSTER_FACTION", "name": "mi-go", "base_faction": "nether", "neutral": [ "fish", "small_animal", "slime" ], "by_mood": [ "nether" ], - "hate": [ "zombie", "triffid", "fungus", "exodii" ] + "hate": [ "zombie", "triffid", "fungus", "exodii", "isolated_artisans" ] }, { "type": "MONSTER_FACTION", diff --git a/data/json/monsters/defense_bot.json b/data/json/monsters/defense_bot.json index 8f185b60a1c1e..e96425f8c8011 100644 --- a/data/json/monsters/defense_bot.json +++ b/data/json/monsters/defense_bot.json @@ -197,6 +197,50 @@ "STUN_IMMUNE" ] }, + { + "id": "mon_secubot_america", + "type": "MONSTER", + "name": { "str": "autonomous TALON UGV Liberty Edition" }, + "description": "A TALON unmanned ground vehicle equipped with an M16A4. It is a small tracked UGV with an array of motors and sensors covering its weapon mount. This one has been plastered with an american flag decal.", + "default_faction": "defense_bot", + "species": [ "ROBOT" ], + "diff": 20, + "volume": "150 L", + "weight": "40750 g", + "hp": 80, + "speed": 40, + "material": [ "steel" ], + "symbol": "R", + "color": "dark_gray", + "aggression": 100, + "morale": 100, + "armor_bash": 14, + "armor_cut": 14, + "armor_bullet": 11, + "vision_day": 50, + "revert_to_itype": "bot_secubot", + "special_attacks": [ + { + "type": "gun", + "cooldown": 8, + "move_cost": 80, + "gun_type": "firework_cannon", + "fake_skills": [ [ "gun", 3 ], [ "rifle", 3 ] ], + "ranges": [ [ 0, 30, "DEFAULT" ] ], + "targeting_sound": "\"Proud to be an American.\"", + "targeting_volume": 50, + "description": "Fireworks explode out of the turret!", + "no_ammo_sound": "an igniter clicks rapidly!" + } + ], + "death_drops": { }, + "death_function": { + "effect": { "id": "death_smokeburst", "hit_self": true }, + "message": "Loud rock music blares as the %s explodes!", + "corpse_type": "NO_CORPSE" + }, + "flags": [ "SEES", "HEARS", "ELECTRONIC", "COLDPROOF", "NO_BREATHE", "PATH_AVOID_DANGER_1", "LOUDMOVES", "STUN_IMMUNE" ] + }, { "id": "mon_skitterbot", "type": "MONSTER", diff --git a/data/json/monsters/turrets.json b/data/json/monsters/turrets.json index a03e37f17e6d3..cc5603a5e8944 100644 --- a/data/json/monsters/turrets.json +++ b/data/json/monsters/turrets.json @@ -405,5 +405,19 @@ "INTERIOR_AMMO", "STUN_IMMUNE" ] + }, + { + "id": "mon_turret_artisans", + "type": "MONSTER", + "name": { "str": "custom plated turret" }, + "looks_like": "mon_turret", + "description": "A remote weapon system derived from the M153 CROWS II and enhanced with autonomous operation software. This one is fitted with a M249 and reinforced with heavy plating.", + "default_faction": "isolated_artisans", + "copy-from": "mon_turret_rifle", + "aggression": -10, + "armor_bash": 25, + "armor_cut": 25, + "armor_bullet": 25, + "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ] } ] diff --git a/data/json/npcs/factions.json b/data/json/npcs/factions.json index c442176772489..71a1f0a72af10 100644 --- a/data/json/npcs/factions.json +++ b/data/json/npcs/factions.json @@ -306,6 +306,35 @@ ], "description": "An outpost started by the Free Merchants to provide a source of food and raw materials." }, + { + "type": "faction", + "id": "isolated_artisans", + "name": "Isolated Artisans", + "likes_u": 10, + "respects_u": 0, + "known_by_u": false, + "size": 2, + "power": 5, + "food_supply": 4000, + "wealth": 100000, + "currency": "FMCNote", + "relations": { + "free_merchants": { + "kill on sight": false, + "watch your back": true, + "share my stuff": false, + "guard your stuff": true, + "lets you in": true, + "defends your space": true, + "knows your voice": true + } + }, + "epilogues": [ + { "power_min": 0, "id": "epilogue_faction_isolated_road_0" }, + { "power_max": 150, "id": "epilogue_faction_isolated_road_150" } + ], + "description": "A couple of talented artisans in the country." + }, { "type": "faction", "id": "marloss", diff --git a/data/json/npcs/isolated_road/isolated_road_cody_dialogue.json b/data/json/npcs/isolated_road/isolated_road_cody_dialogue.json new file mode 100644 index 0000000000000..b9d3e910f8d18 --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_cody_dialogue.json @@ -0,0 +1,248 @@ +[ + { + "id": "TALK_BLACKSMITH_SERVICES", + "type": "talk_topic", + "dynamic_line": [ + "Hiya darlin' welcome to the shop", + "Hey killer hows it going?", + "You look like you haven't eaten in days", + "Still the apocalypse out there huh?", + "See anything you like?" + ], + "speaker_effect": { "effect": { "npc_add_effect": "npc_said", "duration": 600 } }, + "responses": [ + { "text": "About that contract…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { "text": "Who are you?", "topic": "TALK_BLACKSMITH_ABOUT" }, + { "text": "Whats with all the weapons and armor?", "topic": "TALK_BLACKSMITH_SHOP_ABOUT" }, + { + "text": "What is this place?", + "condition": { "not": { "u_has_var": "blacksmith_mentioned_jay", "type": "dialogue", "context": "artisans", "value": "yes" } }, + "topic": "TALK_BLACKSMITH_LOCATION_ABOUT" + }, + { "text": "I have to go.", "topic": "TALK_DONE" }, + { + "text": "Are you and Jay close?", + "condition": { + "and": [ + { "u_has_var": "blacksmith_mentioned_jay", "type": "dialogue", "context": "artisans", "value": "yes" }, + { + "not": { "u_has_var": "blacksmith_accepted_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + } + ] + }, + "topic": "TALK_BLACKSMITH_JAY" + }, + { + "text": "[100 merch] I'd like to become a member of the co-op.", + "condition": { + "and": [ + { "u_has_items": { "item": "FMCNote", "count": 100 } }, + { "u_has_var": "blacksmith_can_buy_coop", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "effect": [ + { "u_sell_item": "FMCNote", "count": 100 }, + { "u_spawn_item": "id_artisan_member" }, + { "u_add_var": "blacksmith_can_buy_coop", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_BLACKSMITH_BOUGHT_COOP" + }, + { + "text": "About those contracts…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { + "text": "Why do you hate merch?", + "condition": { "u_has_var": "blacksmith_hates_currency", "type": "dialogue", "context": "artisans", "value": "yes" }, + "topic": "TALK_BLACKSMITH_MONEY_RAMBLE" + }, + { + "text": "Any jobs you need done?", + "condition": { + "and": [ + { "u_has_var": "artisans_made_up", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "and": [ { "not": "has_assigned_mission" }, { "not": "has_many_assigned_missions" } ] } + ] + }, + "topic": "TALK_MISSION_LIST" + }, + { + "text": "Lets trade.", + "condition": { "u_has_var": "blacksmith_heard_the_deal", "type": "dialogue", "context": "artisans", "value": "yes" }, + "topic": "TALK_BLACKSMITH_SERVICES", + "effect": "start_trade" + } + ] + }, + { + "id": "TALK_BLACKSMITH_ABOUT", + "type": "talk_topic", + "dynamic_line": [ + "I'm Cody, was an engineer before everything went to hell. I guess I still am but I don't have to consult anymore so I consider that a plus at least." + ], + "responses": [ + { "text": "Whats with all the weapons and armor?", "topic": "TALK_BLACKSMITH_SHOP_ABOUT" }, + { "text": "What is this place?", "topic": "TALK_BLACKSMITH_LOCATION_ABOUT" }, + { "text": "Alright.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_LOCATION_ABOUT", + "type": "talk_topic", + "dynamic_line": [ + "I don't know if you've met Jay yet but he and I split a garden out here. We both work, well, worked in technology, and were convinced the world was ending so we both got property outside town. We met when he moved in next door. So this is our little homestead with a few upgrades. We aren't really sweating property lines at this point." + ], + "speaker_effect": { "effect": [ { "u_add_var": "blacksmith_mentioned_jay", "type": "dialogue", "context": "artisans", "value": "yes" } ] }, + "responses": [ + { "text": "Whats with all the weapons and armor?", "topic": "TALK_BLACKSMITH_SHOP_ABOUT" }, + { "text": "Who are you?", "topic": "TALK_BLACKSMITH_ABOUT" }, + { "text": "Are you and Jay close?", "topic": "TALK_BLACKSMITH_JAY" }, + { "text": "Alright.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_SHOP_ABOUT", + "type": "talk_topic", + "dynamic_line": [ + "I make them myself! I've always loved traditional armaments and am a proud member of the SCA! Figured now that everything has gone to hell I can make it a full-time thing. Lots of survivors in need of a big ol' hammer or some armored guards to keep the biters off." + ], + "speaker_effect": { + "effect": [ { "u_add_var": "blacksmith_heard_the_deal", "type": "dialogue", "context": "artisans", "value": "yes" } ] + }, + "responses": [ + { "text": "It must take some serious equipment to make all this.", "topic": "TALK_BLACKSMITH_SHOP_ABOUT_MORE" }, + { "text": "What is this place?", "topic": "TALK_BLACKSMITH_LOCATION_ABOUT" }, + { "text": "Alright.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_SHOP_ABOUT_MORE", + "type": "talk_topic", + "dynamic_line": [ + "Well what can I say, I had lots of disposable income. Kept me busy and all that. So yes I've got a pretty impressive shop in the back." + ], + "speaker_effect": { + "effect": [ { "u_add_var": "blacksmith_heard_the_deal", "type": "dialogue", "context": "artisans", "value": "yes" } ] + }, + "responses": [ + { + "text": "[int 8] Still this is a lot of equipment. Wouldn't it have been easier to buy this stuff from a manufacturer?", + "topic": "TALK_BLACKSMITH_SHOP_ABOUT_STUPID_QUESTION" + }, + { "text": "Can anyone use the workshop?", "topic": "TALK_BLACKSMITH_COOP_ABOUT" }, + { "text": "Alright.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_SHOP_ABOUT_STUPID_QUESTION", + "type": "talk_topic", + "dynamic_line": [ "Honey I have a hard time finding a bra that fits. Good luck finding a breastplate." ], + "responses": [ + { "text": "…", "topic": "TALK_BLACKSMITH_SERVICES" }, + { + "text": "Tell me about it, finding anything that fits in this apocalypse has been a nightmare.", + "topic": "TALK_BLACKSMITH_SERVICES" + }, + { "text": "Oh uh right uh.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_COOP_ABOUT", + "type": "talk_topic", + "dynamic_line": [ + "Well not anyone, but I've always been a believer in community. The shop is run as a co-op so if you want access you'll have to buy a share. As a partial owner, you will have full access to the shop. Shares are currently 100 merch, I hate the currency but it's the closest thing we've got to a representation of labor." + ], + "speaker_effect": { + "effect": [ + { "u_add_var": "blacksmith_can_buy_coop", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "u_add_var": "blacksmith_hates_currency", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "responses": [ + { "text": "Why do you hate merch?", "topic": "TALK_BLACKSMITH_MONEY_RAMBLE" }, + { + "text": "[100 merch] Yeah I can do that.", + "condition": { "u_has_items": { "item": "FMCNote", "count": 100 } }, + "effect": [ + { "u_sell_item": "FMCNote", "count": 100 }, + { "u_spawn_item": "id_artisan_member" }, + { "u_add_var": "blacksmith_can_buy_coop", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_BLACKSMITH_BOUGHT_COOP" + }, + { "text": "Alright.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_BOUGHT_COOP", + "type": "talk_topic", + "dynamic_line": [ + "There yah go, one co-op membership with your name on it. Shops in the back, keep it tidy and share if anyone else is around workin'." + ], + "responses": [ + { "text": "Thanks.", "topic": "TALK_BLACKSMITH_SERVICES" }, + { "text": "Alright.", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_MONEY_RAMBLE", + "type": "talk_topic", + "dynamic_line": [ "Money is part of what got us into this mess in the first place." ], + "responses": [ + { "text": "[per 8] Is that why you don't carry any cash?", "topic": "TALK_BLACKSMITH_MONEY_NO_CASH" }, + { "text": "…", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_MONEY_NO_CASH", + "type": "talk_topic", + "dynamic_line": [ "B-I-N-G-O. If you bring it, I'll take it but that's about it." ], + "responses": [ { "text": "…", "topic": "TALK_BLACKSMITH_SERVICES" } ] + }, + { + "id": "TALK_BLACKSMITH_JAY", + "type": "talk_topic", + "dynamic_line": [ + "Yeah, we've always got along great. He comes over for supper every Friday have a few drinks maybe take some guns out, or, well… He used to. A little while ago, we had a huge fight. It was right after this stuff got real bad… I'm fuzzy on the details or what I said, all I remember was being so angry that I could kill him. We haven't talked much since." + ], + "speaker_effect": { + "effect": [ { "u_add_var": "blacksmith_mentioned_fight", "type": "dialogue", "context": "artisans", "value": "yes" } ] + }, + "responses": [ + { "text": "Have you apologized?", "topic": "TALK_BLACKSMITH_JAY_NOT_ENOUGH" }, + { "text": "I'm sorry.", "topic": "TALK_BLACKSMITH_SERVICES" }, + { "text": "Is there anything I can do?", "topic": "TALK_BLACKSMITH_JAY_QUEST" }, + { "text": "…", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_JAY_NOT_ENOUGH", + "type": "talk_topic", + "dynamic_line": [ "It just seemed like it wouldn't be enough. I know it's silly but I have to do more than that." ], + "responses": [ + { "text": "I'm sorry.", "topic": "TALK_BLACKSMITH_SERVICES" }, + { "text": "Is there anything I can do?", "topic": "TALK_BLACKSMITH_JAY_QUEST" }, + { "text": "…", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + }, + { + "id": "TALK_BLACKSMITH_JAY_QUEST", + "type": "talk_topic", + "dynamic_line": [ + "If you are offering. Before everything went to hell Jay was talking about going to some gun show. There was a guy there who had managed to sneak some Russian gun into the US. It was a massive deal for Jay, it was all he could talk about. I know it's a long shot but maybe that guy was already at the gun show? If you find the gun you can keep it, but it would mean a lot to Jay if he could take a look. All he wanted was to pull it apart and put it back together." + ], + "responses": [ + { + "text": "I'll bring you back a souvenir.", + "effect": [ + { "add_mission": "MISSION_BLACKSMITH_1" }, + { "u_add_var": "blacksmith_accepted_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + ], + "topic": "TALK_BLACKSMITH_SERVICES" + }, + { "text": "Not really interested.", "topic": "TALK_DONE" }, + { "text": "I'll think about it", "topic": "TALK_BLACKSMITH_SERVICES" } + ] + } +] diff --git a/data/json/npcs/isolated_road/isolated_road_item_groups.json b/data/json/npcs/isolated_road/isolated_road_item_groups.json new file mode 100644 index 0000000000000..e30a4ac95f3c6 --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_item_groups.json @@ -0,0 +1,203 @@ +[ + { + "type": "item_group", + "id": "CODY_MILLER_trade", + "subtype": "collection", + "entries": [ + { "group": "sca_smith_manuals", "count": [ 0, 1 ], "prob": 100 }, + { "group": "sca_smith_armor", "count": [ 1, 2 ], "prob": 100 }, + { "group": "sca_smith_ranged", "count": [ 0, 1 ], "prob": 100 }, + { "group": "sca_smith_weapons", "count": [ 0, 1 ], "prob": 100 }, + { "group": "sca_smith_accessories", "count": [ 0, 1 ], "prob": 100 }, + { "group": "sca_smith_ammo", "count": [ 0, 2 ], "prob": 100 } + ] + }, + { + "type": "item_group", + "id": "JAY_RUCKERS_trade", + "subtype": "collection", + "entries": [ + { "group": "gunsmith_basic_ammo", "count": [ 1, 4 ], "prob": 100 }, + { "group": "gunsmith_repack_ammo", "count": [ 1, 4 ], "prob": 100 } + ] + }, + { + "type": "item_group", + "id": "sca_smith_armor", + "subtype": "distribution", + "entries": [ + { "item": "gambeson", "prob": 2 }, + { "item": "armor_lamellar", "prob": 2 }, + { "item": "armor_lightplate", "prob": 2 }, + { "item": "cuirass_lightplate", "prob": 2 }, + { "item": "armguard_lightplate", "prob": 2 }, + { "item": "legguard_lightplate", "prob": 2 }, + { "item": "armor_samurai", "prob": 2 }, + { "item": "helmet_kabuto", "prob": 2 }, + { "item": "gloves_plate", "prob": 2 }, + { "item": "boots_plate", "prob": 2 }, + { "item": "helmet_barbute", "prob": 2 }, + { "item": "helmet_conical", "prob": 2 }, + { "item": "helmet_galea", "prob": 2 }, + { "item": "helmet_nasal", "prob": 2 }, + { "item": "helmet_kettle", "prob": 2 }, + { "item": "helmet_sallet", "prob": 2 }, + { "item": "helmet_armet", "prob": 2 }, + { "item": "chainmail_suit", "prob": 2 }, + { "item": "chainmail_hood", "prob": 2 }, + { "item": "chainmail_vest", "prob": 2 }, + { "item": "chainmail_arms", "prob": 2 }, + { "item": "chainmail_legs", "prob": 2 }, + { "item": "chainmail_feet", "prob": 2 }, + { "item": "chainmail_hands", "prob": 2 }, + { "item": "legguard_metal", "prob": 2 }, + { "item": "helmet_plate", "prob": 2 }, + { "item": "armor_plate", "prob": 2 }, + { "item": "helmet_larmor", "prob": 2 }, + { "item": "boots_larmor", "prob": 2 }, + { "item": "armor_larmor", "prob": 2 }, + { "item": "armguard_larmor", "prob": 2 }, + { "item": "vambrace_larmor", "prob": 2 }, + { "item": "helmet_corinthian", "prob": 2 }, + { "item": "armor_cuirass", "prob": 2 }, + { "item": "legguard_bronze", "prob": 2 } + ] + }, + { + "type": "item_group", + "id": "sca_smith_manuals", + "subtype": "distribution", + "entries": [ + { "item": "textbook_weapwest", "prob": 5 }, + { "item": "textbook_weapeast", "prob": 5 }, + { "item": "textbook_armwest", "prob": 5 }, + { "item": "textbook_armeast", "prob": 5 }, + { "item": "textbook_armschina", "prob": 5 } + ] + }, + { + "type": "item_group", + "id": "sca_smith_weapons", + "subtype": "distribution", + "entries": [ + { "item": "katana", "prob": 1 }, + { "item": "cestus", "prob": 1 }, + { "item": "mace", "prob": 3 }, + { "item": "morningstar", "prob": 3 }, + { "item": "glaive", "prob": 2 }, + { "item": "rapier", "prob": 2 }, + { "item": "cavalry_sabre", "prob": 2 }, + { "item": "estoc", "prob": 2 }, + { "item": "cutlass", "prob": 2 }, + { "item": "scimitar", "prob": 2 }, + { "item": "arming_sword", "prob": 4 }, + { "item": "broadsword", "prob": 4 }, + { "item": "longsword", "prob": 3 }, + { "item": "zweihander", "prob": 2 }, + { "item": "battleaxe", "prob": 2 }, + { "item": "warhammer", "prob": 2 }, + { "item": "halberd", "prob": 4 }, + { "item": "lucern_hammer", "prob": 2 }, + { "item": "pike", "prob": 2 }, + { "item": "spear_steel", "prob": 2 }, + { "item": "shillelagh_weighted", "prob": 1 }, + { "item": "nodachi", "prob": 1 }, + { "item": "knife_baselard", "prob": 2 }, + { "item": "q_staff", "prob": 1 }, + { "item": "i_staff", "prob": 2 }, + { "item": "bagh_nakha", "prob": 1 }, + { "item": "kris", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "sca_smith_ranged", + "subtype": "distribution", + "entries": [ + { "item": "huge_crossbow", "prob": 2 }, + { "item": "rep_crossbow", "prob": 1 }, + { "item": "compcrossbow", "prob": 2 }, + { "item": "compositecrossbow", "prob": 2 }, + { "item": "shortbow", "prob": 1 }, + { "item": "compbow", "prob": 2 }, + { "item": "compositebow", "prob": 2 }, + { "item": "reflexbow", "prob": 2 }, + { "item": "recurbow", "prob": 2 }, + { "item": "longbow", "prob": 2 } + ] + }, + { + "type": "item_group", + "id": "sca_smith_ammo", + "subtype": "distribution", + "entries": [ + { "item": "bolt_steel", "prob": 2 }, + { "item": "bolt_wood_bodkin", "prob": 2 }, + { "item": "arrow_field_point_fletched", "prob": 2 }, + { "item": "arrow_metal_bodkin", "prob": 2 } + ] + }, + { + "type": "item_group", + "id": "sca_smith_accessories", + "subtype": "distribution", + "entries": [ + { "item": "tunic", "prob": 1 }, + { "item": "quiver", "prob": 2 }, + { "item": "quiver_large", "prob": 1 }, + { "item": "baldric", "prob": 2 }, + { "item": "scabbard", "prob": 2 }, + { "item": "bscabbard", "prob": 2 } + ] + }, + { + "type": "item_group", + "id": "gunsmith_basic_ammo", + "//": "basic ammo that the gunsmith will trade to start", + "subtype": "distribution", + "entries": [ + { "item": "9mm", "prob": 1 }, + { "item": "44magnum", "prob": 1 }, + { "item": "45_acp", "prob": 1 }, + { "item": "57mm", "prob": 1 }, + { "item": "shot_00", "prob": 2 }, + { "item": "shot_slug", "prob": 1 }, + { "item": "3006", "prob": 1 }, + { "item": "762_m87", "prob": 3 }, + { "item": "556", "prob": 3 }, + { "item": "545", "prob": 3 }, + { "item": "762_51", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "gunsmith_repack_ammo", + "//": "repacked ammo that the gunsmith will trade to start", + "subtype": "distribution", + "entries": [ + { "item": "reloaded_9mm", "prob": 1 }, + { "item": "reloaded_44magnum", "prob": 1 }, + { "item": "reloaded_45_acp", "prob": 1 }, + { "item": "reloaded_57mm", "prob": 1 }, + { "item": "reloaded_shot_00", "prob": 2 }, + { "item": "reloaded_3006", "prob": 1 }, + { "item": "reloaded_762_m87", "prob": 3 }, + { "item": "reloaded_556", "prob": 3 }, + { "item": "reloaded_545", "prob": 3 }, + { "item": "reloaded_762_51", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "kitted_kord", + "subtype": "collection", + "items": [ + { + "item": "kord", + "ammo-item": "545", + "charges": 30, + "contents-item": [ "shoulder_strap", "holo_sight", "muzzle_brake", "bars", "rail_laser_sight" ] + } + ] + } +] diff --git a/data/json/npcs/isolated_road/isolated_road_jay_convert.json b/data/json/npcs/isolated_road/isolated_road_jay_convert.json new file mode 100644 index 0000000000000..5a3ec16e7d2c4 --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_jay_convert.json @@ -0,0 +1,1315 @@ +[ + { + "id": "TALK_BULLET_EXCHANGE", + "//": "this is all the dialogue related to converting bullets with Jay", + "type": "talk_topic", + "dynamic_line": [ + "Yup what would you like to convert? Behind me is what I can do over the counter but larger conversions will take a few days." + ], + "responses": [ + { "text": "Forget it.", "topic": "TALK_GUNSMITH_SERVICES" }, + { + "text": "[1 day] 200 Rounds", + "effect": [ { "u_add_var": "gunsmith_ammo_ammount", "type": "number", "context": "artisans", "value": "200" } ], + "topic": "TALK_GUNSMITH_CONVERT_FROM_TYPE" + }, + { + "text": "[5 days] 800 Rounds", + "effect": [ { "u_add_var": "gunsmith_ammo_ammount", "type": "number", "context": "artisans", "value": "800" } ], + "topic": "TALK_GUNSMITH_CONVERT_FROM_TYPE" + } + ] + }, + { + "id": "TALK_GUNSMITH_CONVERT_FROM_TYPE", + "type": "talk_topic", + "dynamic_line": { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200, + "yes": "Alright 200 rounds, what are you looking to give me?", + "no": "Alright 800 rounds, what are you looking to give me?" + }, + "responses": [ + { + "text": "5.56x45", + "condition": { + "and": [ + { "u_has_items": { "item": "556", "count": 200 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "556" }, + { "u_sell_item": "556", "count": 200 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "5.56x45", + "condition": { + "and": [ + { "u_has_items": { "item": "556", "count": 800 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "556" }, + { "u_sell_item": "556", "count": 800 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "7.62x51", + "condition": { + "and": [ + { "u_has_items": { "item": "762_51", "count": 200 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "76251" }, + { "u_sell_item": "762_51", "count": 200 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "7.62x51", + "condition": { + "and": [ + { "u_has_items": { "item": "762_51", "count": 800 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "76251" }, + { "u_sell_item": "762_51", "count": 800 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "7.62x39", + "condition": { + "and": [ + { "u_has_items": { "item": "762_m87", "count": 200 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "76239" }, + { "u_sell_item": "762_m87", "count": 200 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "7.62x39", + "condition": { + "and": [ + { "u_has_items": { "item": "762_m87", "count": 800 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "76239" }, + { "u_sell_item": "762_m87", "count": 800 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "5.54x39", + "condition": { + "and": [ + { "u_has_items": { "item": "545", "count": 200 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "545" }, + { "u_sell_item": "545", "count": 200 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": "5.54x39", + "condition": { + "and": [ + { "u_has_items": { "item": "545", "count": 800 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "545" }, + { "u_sell_item": "545", "count": 800 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": ".300 AAC", + "condition": { + "and": [ + { "u_has_items": { "item": "300blk", "count": 200 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "300" }, + { "u_sell_item": "300blk", "count": 200 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { + "text": ".300 AAC", + "condition": { + "and": [ + { "u_has_items": { "item": "300blk", "count": 800 } }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "value": "300" }, + { "u_sell_item": "300blk", "count": 800 } + ], + "topic": "TALK_GUNSMITH_CONVERT_TO_TYPE" + }, + { "text": "Forget it.", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_CONVERT_TO_TYPE", + "type": "talk_topic", + "dynamic_line": { + "u_compare_var": "gunsmith_ammo_from", + "type": "number", + "context": "artisans", + "op": "==", + "value": 556, + "yes": "Sure, 5.56 to what?", + "no": { + "u_compare_var": "gunsmith_ammo_from", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251, + "yes": "Sure, 7.62x51 to what?", + "no": { + "u_compare_var": "gunsmith_ammo_from", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239, + "yes": "Sure, 7.62x39 to what?", + "no": { + "u_compare_var": "gunsmith_ammo_from", + "type": "number", + "context": "artisans", + "op": "==", + "value": 545, + "yes": "Sure, 5.45x39 to what?", + "no": { + "u_compare_var": "gunsmith_ammo_from", + "type": "number", + "context": "artisans", + "op": "==", + "value": 300, + "yes": "Sure, 300 BLK to what?", + "no": "If you are seeing this I am bugged and confused. You should report this fact on the github." + } + } + } + } + }, + "responses": [ + { + "text": "5.56x45", + "condition": { "not": { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 } }, + "effect": [ + { "u_add_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "value": "556" }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "u_add_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "time": true } + ], + "topic": "TALK_GUNSMITH_CONVERT_CONFIRM" + }, + { + "text": "7.62x51", + "condition": { + "not": { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 } + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "value": "76251" }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "u_add_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "time": true } + ], + "topic": "TALK_GUNSMITH_CONVERT_CONFIRM" + }, + { + "text": "7.62x39", + "condition": { + "not": { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 } + }, + "effect": [ + { "u_add_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "value": "76239" }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "u_add_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "time": true } + ], + "topic": "TALK_GUNSMITH_CONVERT_CONFIRM" + }, + { + "text": "5.54x39", + "condition": { "not": { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 } }, + "effect": [ + { "u_add_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "value": "545" }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "u_add_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "time": true } + ], + "topic": "TALK_GUNSMITH_CONVERT_CONFIRM" + }, + { + "text": ".300 AAC", + "condition": { "not": { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 } }, + "effect": [ + { "u_add_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "value": "300" }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "u_add_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "time": true } + ], + "topic": "TALK_GUNSMITH_CONVERT_CONFIRM" + } + ] + }, + { + "id": "TALK_GUNSMITH_CONVERT_CONFIRM", + "type": "talk_topic", + "dynamic_line": { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200, + "yes": "Alright, that's 200 rounds minus the 10% service fee, they'll be converted in a day.", + "no": "Alright, that's 800 rounds minus the 10% service fee, they'll be converted in 5 days." + }, + "responses": [ + { "text": "See you then.", "topic": "TALK_DONE" }, + { "text": "Something else I'd like to talk about.", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_BULLET_PICKUP_NOT_YET", + "type": "talk_topic", + "dynamic_line": "Sorry it isn't ready yet.", + "responses": [ + { "text": "See you then.", "topic": "TALK_DONE" }, + { "text": "Something else I'd like to talk about.", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_BULLET_PICKUP", + "type": "talk_topic", + "dynamic_line": "The transaction is complete, here are your items.", + "responses": [ + { "//": "ALL 556 Converts" }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 200 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 800 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 240 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 960 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 120 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 480 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 280 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 1120 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { "//": "ALL 762x39 Converts" }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 160 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 640 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 220 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 880 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 100 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 400 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 260 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76239 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 1040 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { "//": "ALL 545 Converts" }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 140 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 560 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 160 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 640 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 80 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 320 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 220 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 880 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { "//": "ALL 762 NATO Converts" }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 280 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 1120 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 320 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 1280 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 360 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 1440 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 440 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 76251 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "300blk", "count": 1760 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { "//": "ALL Blackout Converts" }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 100 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 556 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "556", "count": 400 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 120 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76239 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_m87", "count": 480 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 140 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { "u_compare_var": "gunsmith_ammo_to", "type": "number", "context": "artisans", "op": "==", "value": 545 }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "545", "count": 560 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 60 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { + "text": "[Pickup ammo] Thanks.", + "condition": { + "and": [ + { "u_compare_var": "gunsmith_ammo_from", "type": "number", "context": "artisans", "op": "==", "value": 300 }, + { + "u_compare_var": "gunsmith_ammo_to", + "type": "number", + "context": "artisans", + "op": "==", + "value": 76251 + }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + } + ] + }, + "effect": [ + { "u_spawn_item": "762_51", "count": 240 }, + { "u_add_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "no" } + ], + "topic": "TALK_DONE" + }, + { "text": "Something else I'd like to talk about.", "topic": "TALK_GUNSMITH_SERVICES" } + ] + } +] diff --git a/data/json/npcs/isolated_road/isolated_road_jay_dialogue.json b/data/json/npcs/isolated_road/isolated_road_jay_dialogue.json new file mode 100644 index 0000000000000..56861f991d925 --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_jay_dialogue.json @@ -0,0 +1,243 @@ +[ + { + "id": "TALK_GUNSMITH_SERVICES", + "type": "talk_topic", + "dynamic_line": [ "Welcome to the first American bank of munitions. We convert your goods and services to the new gold standard." ], + "responses": [ + { "text": "About that contract…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" }, + { "text": "What's your deal?", "topic": "TALK_GUNSMITH_ABOUT" }, + { + "text": "Munitions?", + "condition": { "not": { "u_has_var": "gunsmith_knows_about_conversion", "type": "dialogue", "context": "artisans", "value": "yes" } }, + "topic": "TALK_GUNSMITH_SHOP_ABOUT" + }, + { + "text": "Hey, Cody says they are sorry. They thought you would want to see this.", + "condition": { + "and": [ + { "u_has_items": { "item": "kord", "count": 1 } }, + { + "not": { "u_has_var": "gunsmith_mentioned_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + } + ] + }, + "topic": "TALK_GUNSMITH_KORD" + }, + { + "text": "I'm interested in helping with that thing for Cody.", + "condition": { + "and": [ + { "u_has_var": "gunsmith_mentioned_quest", "type": "dialogue", "context": "artisans", "value": "yes" }, + { + "not": { "u_has_var": "gunsmith_accepted_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + } + ] + }, + "effect": [ + { "add_mission": "MISSION_GUNSMITH_1" }, + { "u_add_var": "gunsmith_accepted_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + ], + "topic": "TALK_GUNSMITH_Q1_DETAILS" + }, + { + "text": "How are my rounds coming?", + "condition": { + "and": [ + { "u_compare_time_since_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "op": "<", "time": "1 d" }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + }, + { "u_has_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "topic": "TALK_GUNSMITH_BULLET_PICKUP_NOT_YET" + }, + { + "text": "How are my rounds coming?", + "condition": { + "and": [ + { "u_compare_time_since_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "op": "<", "time": "5 d" }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + }, + { "u_has_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "topic": "TALK_GUNSMITH_BULLET_PICKUP_NOT_YET" + }, + { + "text": "How are my rounds coming?", + "condition": { + "and": [ + { "u_compare_time_since_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "op": ">=", "time": "1 d" }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 200 + }, + { "u_has_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "topic": "TALK_GUNSMITH_BULLET_PICKUP" + }, + { + "text": "How are my rounds coming?", + "condition": { + "and": [ + { "u_compare_time_since_var": "u_waiting_on_rounds", "type": "timer", "context": "artisans", "op": ">=", "time": "5 d" }, + { + "u_compare_var": "gunsmith_ammo_ammount", + "type": "number", + "context": "artisans", + "op": "==", + "value": 800 + }, + { "u_has_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "topic": "TALK_GUNSMITH_BULLET_PICKUP" + }, + { + "text": "I'd like to exchange some rounds.", + "condition": { + "and": [ + { "u_has_var": "gunsmith_knows_about_conversion", "type": "dialogue", "context": "artisans", "value": "yes" }, + { + "not": { "u_has_var": "gunsmith_has_rounds_ordered", "type": "dialogue", "context": "artisans", "value": "yes" } + } + ] + }, + "topic": "TALK_BULLET_EXCHANGE" + }, + { + "text": "Are you and Cody close?", + "condition": { + "and": [ + { "u_has_var": "gunsmith_mentioned_cody", "type": "dialogue", "context": "artisans", "value": "yes" }, + { + "not": { "u_has_var": "gunsmith_accepted_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + } + ] + }, + "topic": "TALK_GUNSMITH_CODY" + }, + { "text": "What is this place?", "topic": "TALK_GUNSMITH_LOCATION_ABOUT" }, + { "text": "I have to go.", "topic": "TALK_DONE" }, + { + "text": "About those contracts…", + "topic": "TALK_MISSION_LIST_ASSIGNED", + "condition": "has_many_assigned_missions" + }, + { + "text": "Any jobs you need done?", + "condition": { + "and": [ + { "u_has_var": "artisans_made_up", "type": "dialogue", "context": "artisans", "value": "yes" }, + { "and": [ { "not": "has_assigned_mission" }, { "not": "has_many_assigned_missions" } ] } + ] + }, + "topic": "TALK_MISSION_LIST" + }, + { "text": "I'd like to make a withdrawl.", "topic": "TALK_GUNSMITH_SERVICES", "effect": "start_trade" } + ] + }, + { + "id": "TALK_GUNSMITH_SHOP_ABOUT", + "type": "talk_topic", + "dynamic_line": [ "Fuck yeah. New currency is death and I'm dealing it." ], + "responses": [ + { "text": "I understand, but how does this work exactly?", "topic": "TALK_GUNSMITH_SHOP_ABOUT_MORE" }, + { "text": "…", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_SHOP_ABOUT_MORE", + "type": "talk_topic", + "dynamic_line": [ + "Pretty simple stuff bud'. I barter in pre-shitshow ammo and to stimulate the growing economy print and issue more. I take your goods, Cody would call it 'labor' and exchange it for the new universal currency. If you want to convert currency I'm happy to facilitate but it'll take a few days and there is a service charge." + ], + "speaker_effect": { + "effect": { "u_add_var": "gunsmith_knows_about_conversion", "type": "dialogue", "context": "artisans", "value": "yes" } + }, + "responses": [ + { "text": "So you're really going all in on this bank thing?", "topic": "TALK_GUNSMITH_SERVICES" }, + { "text": "So you'll exchange bullets for other bullets directly?", "topic": "TALK_BULLET_EXCHANGE" }, + { "text": "…", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_ABOUT", + "type": "talk_topic", + "dynamic_line": [ "I did a boring IT job and prepped for this shit. Look at me now." ], + "responses": [ + { "text": "Look at you now.", "topic": "TALK_GUNSMITH_SERVICES" }, + { "text": "…", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_LOCATION_ABOUT", + "type": "talk_topic", + "dynamic_line": [ + "It's my house and Cody's if you've met her. We dug a pit and set up some milspec turrets. I programmed them and Cody armored them. Now we're just trying to get by. This ain't the wizard of oz you can look behind the curtain over there." + ], + "speaker_effect": { "effect": [ { "u_add_var": "gunsmith_mentioned_cody", "type": "dialogue", "context": "artisans", "value": "yes" } ] }, + "responses": [ + { "text": "Where'd you get half a dozen mil spec turrets?", "topic": "TALK_GUNSMITH_TURRETS" }, + { "text": "…", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_TURRETS", + "type": "talk_topic", + "dynamic_line": [ "[staring off into the distance] The owners didn't need them anymore. Not anymore…" ], + "responses": [ { "text": "…", "topic": "TALK_GUNSMITH_SERVICES" } ] + }, + { + "id": "TALK_GUNSMITH_CODY", + "type": "talk_topic", + "dynamic_line": [ "Stuff is fucked all over bud, how about we stick to talking business." ], + "responses": [ { "text": "Alright.", "topic": "TALK_GUNSMITH_SERVICES" } ] + }, + { + "id": "TALK_GUNSMITH_KORD", + "type": "talk_topic", + "dynamic_line": [ + "Where did you… I, I don't know what to say. Cody put you up to this, didn't they? The weapon is beautiful, modern rails, ergonomic furniture, recoil balancing system. I know Cody thinks they did something wrong but all I remember is being so angry… just blindingly furious and then running. When I woke up everything was fine. Thank you for letting me see this and getting Cody and I talking. If you could help me out with something for Cody I'll hook you up with a casket mag for that thing and a box of the good ammo, stuff from my reserves." + ], + "speaker_effect": { "effect": [ { "u_add_var": "gunsmith_mentioned_quest", "type": "dialogue", "context": "artisans", "value": "yes" } ] }, + "responses": [ + { + "text": "I'm listening.", + "effect": [ + { "add_mission": "MISSION_GUNSMITH_1" }, + { "u_add_var": "gunsmith_accepted_quest", "type": "dialogue", "context": "artisans", "value": "yes" } + ], + "topic": "TALK_GUNSMITH_Q1_DETAILS" + }, + { "text": "Not really interested.", "topic": "TALK_DONE" }, + { "text": "I'll think about it", "topic": "TALK_GUNSMITH_SERVICES" } + ] + }, + { + "id": "TALK_GUNSMITH_Q1_DETAILS", + "type": "talk_topic", + "dynamic_line": [ + "Alright, so Cody has talked about some cutting-edge tech she's seen displayed. This thing is called a nano-fabricator. It's like a complicated, robotic 3d printer. Cody used to run with some hackers that steal IP, schematics that sort of thing. I guess a problem they were running into was the newest tech stuff is all encrypted as templates for these printers. Well, I know of a colleague who went home with debug software for the system. You get that for her and we are in business." + ], + "speaker_effect": { "effect": [ { "u_add_var": "gunsmith_mentioned_quest", "type": "dialogue", "context": "artisans", "value": "yes" } ] }, + "responses": [ + { "text": "I'll see if I can find it.", "topic": "TALK_DONE" }, + { "text": "Alright.", "topic": "TALK_GUNSMITH_SERVICES" } + ] + } +] diff --git a/data/json/npcs/isolated_road/isolated_road_missions.json b/data/json/npcs/isolated_road/isolated_road_missions.json new file mode 100644 index 0000000000000..f9fe79d99d111 --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_missions.json @@ -0,0 +1,92 @@ +[ + { + "id": "MISSION_BLACKSMITH_1", + "type": "mission_definition", + "name": { "str": "Find the gun" }, + "description": "Cody wants you to go to a gun show and find a rare gun that Jay wanted to see. It was an AK of some kind with a weird name… something like CARD or CORE.", + "goal": "MGOAL_CONDITION", + "goal_condition": { "u_has_items": { "item": "kord", "count": 1 } }, + "difficulty": 5, + "item": "kord", + "value": 1000, + "start": { "assign_mission_target": { "om_terrain": "gunshow_0", "reveal_radius": 2, "random": true, "search_range": 400 } }, + "origins": [ "ORIGIN_SECONDARY" ], + "has_generic_rewards": false, + "dialogue": { + "describe": "…", + "offer": "Before everything went to hell Jay was talking about going to some gun show. There was a guy there who had managed to sneak some Russian gun into the US. It was a massive deal for Jay, it was all he could talk about. I know it's a long shot but maybe that guy was already at the gun show? If you find the gun you can keep it, but it would mean a lot to Jay if he could take a look all he wanted was to pull it apart and put it back together.", + "accepted": "Thanks, I'll start working on an apology.", + "rejected": "Let me know if you change your mind.", + "advice": "I'd be careful there Jay was saying they were bringing some new autonomous hardware to the show. Your looking for a Russian rifle that should be modded to the moon. CARD, CORE rifle, something like that.", + "inquire": "Any luck finding that gun show? I think it was a Russian gun maybe a CARD or CORE rifle? Something like that.", + "success": "Thanks darlin' if you could show it to Jay that would mean a lot to me.", + "success_lie": "That's great! Make sure to show it to Jay.", + "failure": "Well you tried at least…" + } + }, + { + "id": "MISSION_GUNSMITH_1", + "type": "mission_definition", + "name": { "str": "Find the debug software" }, + "description": "Jay wants you to go to someones house and get some software they had taken home.", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 5, + "item": "usb_drive_nano", + "value": 1000, + "start": { + "assign_mission_target": { "om_terrain": "house_garage", "reveal_radius": 2, "random": true, "search_range": 200 }, + "update_mapgen": { + "rows": [ + " ", + " ", + " ", + " M @ ", + " C ", + " W ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "terrain": { "M": "t_thconc_floor" }, + "furniture": { "C": "f_console_broken", "W": "f_machinery_light", "@": "f_table" }, + "monster": { "M": { "monster": "mon_zombie_nullfield" } }, + "item": { "@": [ { "item": "usb_drive_nano", "amount": 1 } ] } + } + }, + "end": { + "effect": [ + { "u_spawn_item": "casket74mag", "count": 1 }, + { "u_spawn_item": "545_ap", "count": 200 }, + { "u_add_var": "artisans_made_up", "type": "dialogue", "context": "artisans", "value": "yes" } + ] + }, + "origins": [ "ORIGIN_SECONDARY" ], + "has_generic_rewards": false, + "dialogue": { + "describe": "…", + "offer": "Alright, so Cody has talked about some cutting-edge tech she's seen displayed. This thing is called a nano-fabricator. It's like a complicated, robotic 3d printer. Cody used to run with some hackers that steal IP, schematics that sort of thing. I guess a problem they were running into was the newest tech stuff is all encrypted as templates for these printers. Well, I know of a colleague who went home with debug software for the system. You get that for her and we are in business.", + "accepted": "Thanks, I'll start working on an apology.", + "rejected": "Let me know if you change your mind.", + "advice": "I'd be careful, guy was a bit of a nut I don't know what he was planning to do with that software.", + "inquire": "Any luck finding that usb?", + "success": "Thanks bud I'll take it from here on the apology you enjoy the new munitions.", + "success_lie": "Shame. Shame, Shame.", + "failure": "Well fuck me then." + } + } +] diff --git a/data/json/npcs/isolated_road/isolated_road_npcs.json b/data/json/npcs/isolated_road/isolated_road_npcs.json new file mode 100644 index 0000000000000..eec1f535faa94 --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_npcs.json @@ -0,0 +1,82 @@ +[ + { + "type": "npc", + "id": "cody_miller", + "//": "A blacksmith for the faction.", + "name_suffix": "Blacksmith", + "name_unique": "Cody Miller", + "gender": "female", + "class": "CODY_MILLER", + "attitude": 0, + "mission": 3, + "chat": "TALK_BLACKSMITH_SERVICES", + "faction": "isolated_artisans" + }, + { + "type": "npc_class", + "id": "CODY_MILLER", + "name": { "str": "Cody Miller" }, + "job_description": "A blacksmith who wants everyone to get along.", + "common": false, + "traits": [ { "trait": "TOUGH" }, { "trait": "FASTLEARNER" }, { "group": "Appearance_African" } ], + "bonus_str": { "rng": [ 0, 3 ] }, + "bonus_dex": { "rng": [ -1, 1 ] }, + "bonus_int": { "rng": [ 1, 3 ] }, + "bonus_per": { "rng": [ -1, 1 ] }, + "shopkeeper_item_group": "CODY_MILLER_trade", + "worn_override": "CODY_MILLER_worn", + "carry_override": "CODY_MILLER_carry", + "weapon_override": "CODY_MILLER_weild", + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -4 ] } ] } ] } }, + { "skill": "speech", "bonus": { "rng": [ 2, 3 ] } }, + { "skill": "gun", "bonus": { "rng": [ 2, 5 ] } }, + { "skill": "melee", "bonus": { "rng": [ 2, 5 ] } }, + { "skill": "cutting", "bonus": { "rng": [ 2, 5 ] } }, + { "skill": "archery", "bonus": { "rng": [ 3, 6 ] } }, + { "skill": "fabrication", "bonus": { "rng": [ 7, 10 ] } }, + { "skill": "tailor", "bonus": { "rng": [ 6, 9 ] } } + ] + }, + { + "type": "npc", + "id": "jay_ruckers", + "//": "A gunsmith for the faction.", + "name_suffix": "Banker", + "name_unique": "Jay Ruckers", + "gender": "male", + "mission_offered": "MISSION_ROBOFAC_MERC_1_RADIO", + "class": "JAY_RUCKERS", + "attitude": 0, + "mission": 3, + "chat": "TALK_GUNSMITH_SERVICES", + "faction": "isolated_artisans" + }, + { + "type": "npc_class", + "id": "JAY_RUCKERS", + "name": { "str": "Jay Ruckers" }, + "job_description": "A gunsmith looking to become the new central bank.", + "common": false, + "traits": [ { "trait": "FASTLEARNER" }, { "group": "Appearance_Caucasian" } ], + "bonus_str": { "rng": [ -1, 1 ] }, + "bonus_dex": { "rng": [ -1, 2 ] }, + "bonus_int": { "rng": [ 1, 3 ] }, + "bonus_per": { "rng": [ 0, 3 ] }, + "shopkeeper_item_group": "JAY_RUCKERS_trade", + "worn_override": "JAY_RUCKERS_worn", + "carry_override": "JAY_RUCKERS_carry", + "weapon_override": "JAY_RUCKERS_weild", + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -4 ] } ] } ] } }, + { "skill": "speech", "bonus": { "rng": [ 2, 3 ] } }, + { "skill": "gun", "bonus": { "rng": [ 2, 5 ] } }, + { "skill": "melee", "bonus": { "rng": [ 0, 2 ] } }, + { "skill": "cutting", "bonus": { "rng": [ 0, 2 ] } }, + { "skill": "fabrication", "bonus": { "rng": [ 6, 8 ] } }, + { "skill": "mechanics", "bonus": { "rng": [ 6, 10 ] } }, + { "skill": "rifle", "bonus": { "rng": [ 3, 6 ] } }, + { "skill": "pistol", "bonus": { "rng": [ 2, 5 ] } } + ] + } +] diff --git a/data/json/npcs/isolated_road/isolated_road_worn.json b/data/json/npcs/isolated_road/isolated_road_worn.json new file mode 100644 index 0000000000000..ca04c24a328fb --- /dev/null +++ b/data/json/npcs/isolated_road/isolated_road_worn.json @@ -0,0 +1,66 @@ +[ + { + "type": "item_group", + "id": "CODY_MILLER_worn", + "subtype": "collection", + "entries": [ + { "item": "tank_top" }, + { "item": "under_armor_shorts" }, + { "item": "apron_leather" }, + { "item": "jeans" }, + { "item": "gloves_work" }, + { "item": "knife_combat", "container-item": "bootsheath" }, + { "item": "welding_mask_raised" }, + { "item": "fanny" }, + { "item": "socks" }, + { "item": "boots_steel" } + ] + }, + { + "type": "item_group", + "id": "CODY_MILLER_weild", + "subtype": "collection", + "items": [ { "item": "hammer" } ] + }, + { + "type": "item_group", + "id": "CODY_MILLER_carry", + "subtype": "collection", + "items": [ + { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] }, + { "item": "swage" }, + { "item": "metal_file" }, + { "item": "metalworking_tongs" }, + { "item": "hotcut" } + ] + }, + { + "type": "item_group", + "id": "JAY_RUCKERS_worn", + "subtype": "collection", + "entries": [ + { "item": "linuxtshirt" }, + { "group": "military_ballistic_vest_light" }, + { "item": "boxer_briefs" }, + { "item": "jeans" }, + { "item": "fn57", "ammo-item": "57mm", "charges": 20, "container-item": "tactical_holster" }, + { "item": "powered_earmuffs" }, + { "item": "glasses_bal" }, + { "item": "mbag" }, + { "item": "socks" }, + { "item": "boots_combat" } + ] + }, + { + "type": "item_group", + "id": "JAY_RUCKERS_weild", + "subtype": "collection", + "items": [ { "item": "screwdriver" } ] + }, + { + "type": "item_group", + "id": "JAY_RUCKERS_carry", + "subtype": "collection", + "items": [ { "item": "screwdriver_set" }, { "item": "metal_file" }, { "item": "press" } ] + } +] diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_teamster.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_teamster.json index d30581d76913d..e930202f5292b 100644 --- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_teamster.json +++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_teamster.json @@ -27,7 +27,7 @@ }, "effect": [ { - "arithmetic": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, "=", { "rand": 3 } ] + "arithmetic": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, "=", { "rand": 4 } ] }, { "npc_add_var": "directions_recycler", "type": "timer", "context": "teamster", "time": true } ], @@ -50,7 +50,7 @@ "topic": "TALK_FREE_MERCHANT_TEAMSTER_DIRECTIONS", "effect": [ { - "arithmetic": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, "=", { "rand": 3 } ] + "arithmetic": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, "=", { "rand": 4 } ] }, { "npc_add_var": "directions_recycler", "type": "timer", "context": "teamster", "time": true } ], @@ -114,7 +114,12 @@ "compare_int": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, { "const": 3 } ], "op": "=", "yes": "Well, a few of my caravans have come back now talkin' about this giant metal castle on top of a rock, in the middle of nowhere. They ain't been crazy enough to check it out, but you could if you want.", - "no": "ERROR: out of bounds on randomize_directions." + "no": { + "compare_int": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, { "const": 4 } ], + "op": "=", + "yes": "A few of my people have come back now talkin' about some yuppie trying to start a bank that uses bullets for money. Silly idea but the lad lives on a homestead with a women who wouldn't let my guys leave without a full belly.", + "no": "ERROR: out of bounds on randomize_directions." + } } } } @@ -165,6 +170,21 @@ "effect": { "assign_mission": "directions_exodii" }, "switch": true }, + { + "text": "Where was that?", + "topic": "TALK_FREE_MERCHANT_TEAMSTER_DIRECTIONS_2", + "condition": { + "and": [ + { + "compare_int": [ { "npc_val": "var", "var_name": "direction", "type": "randomize", "context": "dialogue" }, { "const": 4 } ], + "op": "=" + }, + { "not": { "u_has_var": "directions", "type": "teamster", "context": "mission", "value": "artisans" } } + ] + }, + "effect": { "assign_mission": "directions_artisans" }, + "switch": true + }, { "text": "Ah, that's nothing new to me. Thanks anyway though.", "topic": "TALK_NONE", @@ -276,5 +296,30 @@ "success_lie": "Huh, go figure.", "failure": "Seems reasonable." } + }, + { + "id": "directions_artisans", + "type": "mission_definition", + "name": { "str": "Check out bullet bank" }, + "description": "A few of my people have come back now talkin' about some yuppie trying to start a bank that uses bullets for money. Silly idea, but the lad lives on a homestead with a woman who wouldn't let my guys leave without a full belly.", + "goal": "MGOAL_GO_TO", + "difficulty": 2, + "value": 0, + "start": { + "assign_mission_target": { "om_terrain": "isolated_house_farm_gunsmith", "reveal_radius": 2, "search_range": 400 }, + "effect": { "u_add_var": "directions", "type": "teamster", "context": "mission", "value": "artisans" } + }, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "A few of my people have come back now talkin' about some yuppie trying to start a bank that uses bullets for money. Silly idea, but the lad lives on a homestead with a woman who wouldn't let my guys leave without a full belly.", + "offer": "A few of my people have come back now talkin' about some yuppie trying to start a bank that uses bullets for money. Silly idea, but the lad lives on a homestead with a woman who wouldn't let my guys leave without a full belly.", + "accepted": "Hopefully they are still around.", + "rejected": "Seems reasonable.", + "advice": "Don't worry about the turrets they seem friendly to people.", + "inquire": "How is the search going?", + "success": "Huh, go figure.", + "success_lie": "Huh, go figure.", + "failure": "Seems reasonable." + } } ] diff --git a/data/json/overmap/overmap_special/specials.json b/data/json/overmap/overmap_special/specials.json index f73abaf883960..0985c5910ae72 100644 --- a/data/json/overmap/overmap_special/specials.json +++ b/data/json/overmap/overmap_special/specials.json @@ -4547,6 +4547,36 @@ "rotate": false, "flags": [ "UNIQUE", "SAFE_AT_WORLDGEN" ] }, + { + "type": "overmap_special", + "id": "isolated_road", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "isolated_road_field_0" }, + { "point": [ 1, 0, 0 ], "overmap": "isolated_house_farm_gunsmith" }, + { "point": [ 0, 1, 0 ], "overmap": "isolated_house_farm_blacksmith" }, + { "point": [ 1, 0, 1 ], "overmap": "isolated_house_farm_roof_gunsmith" }, + { "point": [ 0, 1, 1 ], "overmap": "isolated_house_farm_roof_blacksmith" }, + { "point": [ 1, 1, 0 ], "overmap": "isolated_road_field_1" } + ], + "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road", "connection": "local_road", "from": [ 0, 0, 0 ] } ], + "locations": [ "field" ], + "city_distance": [ 3, -1 ], + "city_sizes": [ 1, 16 ], + "occurrences": [ 33, 100 ], + "rotate": false, + "flags": [ "UNIQUE", "SAFE_AT_WORLDGEN" ] + }, + { + "type": "overmap_special", + "id": "gun_show", + "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "gunshow_0" }, { "point": [ 1, 0, 0 ], "overmap": "gunshow_1" } ], + "locations": [ "land" ], + "city_distance": [ 3, -1 ], + "city_sizes": [ 1, 16 ], + "occurrences": [ 33, 100 ], + "rotate": false, + "flags": [ "UNIQUE", "SAFE_AT_WORLDGEN" ] + }, { "type": "overmap_special", "id": "4x4_microlab", diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_isolated_road.json b/data/json/overmap/overmap_terrain/overmap_terrain_isolated_road.json new file mode 100644 index 0000000000000..92a68314ab2b3 --- /dev/null +++ b/data/json/overmap/overmap_terrain/overmap_terrain_isolated_road.json @@ -0,0 +1,37 @@ +[ + { + "type": "overmap_terrain", + "id": [ "isolated_road_field_0", "isolated_road_field_1" ], + "name": "yard", + "sym": ".", + "color": "green", + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": [ "isolated_house_farm_gunsmith", "isolated_house_farm_roof_gunsmith" ], + "name": "gunsmiths home", + "sym": "v", + "color": "red", + "flags": [ "NO_ROTATE" ], + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": [ "isolated_house_farm_blacksmith", "isolated_house_farm_roof_blacksmith" ], + "name": "blacksmiths home", + "sym": "v", + "color": "cyan", + "flags": [ "NO_ROTATE" ], + "see_cost": 5 + }, + { + "type": "overmap_terrain", + "id": [ "gunshow_0", "gunshow_1" ], + "name": "gun show", + "sym": "v", + "color": "red", + "flags": [ "NO_ROTATE" ], + "see_cost": 5 + } +] diff --git a/data/json/recipes/recipe_deconstruction.json b/data/json/recipes/recipe_deconstruction.json index cad5be5e31f61..7a0afee3861bb 100644 --- a/data/json/recipes/recipe_deconstruction.json +++ b/data/json/recipes/recipe_deconstruction.json @@ -1321,6 +1321,29 @@ [ [ "turret_chassis", 1 ] ] ] }, + { + "result": "broken_turret_artisans", + "type": "uncraft", + "activity_level": "LIGHT_EXERCISE", + "skill_used": "electronics", + "difficulty": 4, + "time": "1 h", + "using": [ [ "soldering_standard", 10 ] ], + "qualities": [ { "id": "SCREW", "level": 1 } ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "gun_module", 1 ] ], + [ [ "targeting_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "m249", 1 ] ], + [ [ "small_storage_battery", 1 ] ], + [ [ "power_supply", 1 ] ], + [ [ "robot_controls", 1 ] ], + [ [ "turret_chassis", 1 ] ], + [ [ "steel_armor", 3 ] ] + ] + }, { "result": "broken_turret_bmg", "type": "uncraft", diff --git a/data/json/snippets/epilogue_factions.json b/data/json/snippets/epilogue_factions.json index e3470ec8f9add..c2db07bbb20e1 100644 --- a/data/json/snippets/epilogue_factions.json +++ b/data/json/snippets/epilogue_factions.json @@ -32,6 +32,14 @@ "id": "epilogue_faction_tacoma_commune_150", "text": " The commune continued to grow rapidly through the years despite constant external threat. While maintaining a reputation as a haven for all law-abiding citizens, the commune's leadership remained loyal to the interests of the Free Merchants. Hard labor for little reward remained the price to be paid for those who sought the safety of the community." }, + { + "id": "epilogue_faction_isolated_road_0", + "text": " The artisans continued to work for a time. However a lack of trade and connection left them doomed from the begining. At some point the properties became abandoned with no signs of the former inhabitants." + }, + { + "id": "epilogue_faction_isolated_road_150", + "text": " The artisans became a corner stone of the survivor community and economy. Cody's infectious desire for sharing helped bridge gaps with other groups and Jay's 'banking' service became crucial to maintaining security." + }, { "id": "epilogue_faction_wasteland_scavengers_0", "text": " The lone bands of survivors who wandered the now alien world dwindled in number through the years. Unable to compete with the growing number of monstrosities that had adapted to live in their world, those who did survive lived in dejected poverty and hopelessness…" diff --git a/data/mods/Generic_Guns/firearms/gg_firearms_migration.json b/data/mods/Generic_Guns/firearms/gg_firearms_migration.json index 4c9a377a23a14..416be1c84ee1d 100644 --- a/data/mods/Generic_Guns/firearms/gg_firearms_migration.json +++ b/data/mods/Generic_Guns/firearms/gg_firearms_migration.json @@ -268,6 +268,7 @@ "ar10", "1895sbl", "ak74", + "kord", "ak47", "arx160", "l_bak_223", diff --git a/data/mods/Generic_Guns/magazines/gg_magazines_migration.json b/data/mods/Generic_Guns/magazines/gg_magazines_migration.json index 602ce890dac04..36e7b507efb96 100644 --- a/data/mods/Generic_Guns/magazines/gg_magazines_migration.json +++ b/data/mods/Generic_Guns/magazines/gg_magazines_migration.json @@ -262,6 +262,7 @@ "ar10mag_20rd", "ak74mag", "rpk74mag", + "casket74mag", "akmag10", "akmag20", "akmag30", diff --git a/data/mods/Generic_Guns/recipes/recipes_deconstruction.json b/data/mods/Generic_Guns/recipes/recipes_deconstruction.json index b03e3c8a39238..c93fe6ef3de94 100644 --- a/data/mods/Generic_Guns/recipes/recipes_deconstruction.json +++ b/data/mods/Generic_Guns/recipes/recipes_deconstruction.json @@ -113,6 +113,28 @@ [ [ "turret_chassis", 1 ] ] ] }, + { + "result": "broken_turret_artisans", + "type": "uncraft", + "activity_level": "fake", + "skill_used": "electronics", + "difficulty": 3, + "time": "1 h", + "using": [ [ "soldering_standard", 10 ] ], + "qualities": [ { "id": "SCREW", "level": 1 } ], + "components": [ + [ [ "ai_module", 1 ] ], + [ [ "gun_module", 1 ] ], + [ [ "targeting_module", 1 ] ], + [ [ "identification_module", 1 ] ], + [ [ "sensor_module", 1 ] ], + [ [ "rifle_assault", 1 ] ], + [ [ "small_storage_battery", 1 ] ], + [ [ "power_supply", 1 ] ], + [ [ "robot_controls", 1 ] ], + [ [ "turret_chassis", 1 ] ] + ] + }, { "result": "broken_crows_m240", "type": "uncraft", diff --git a/data/mods/Generic_Guns/robots/broken_bots.json b/data/mods/Generic_Guns/robots/broken_bots.json index 78a16fde1252f..b405842268354 100644 --- a/data/mods/Generic_Guns/robots/broken_bots.json +++ b/data/mods/Generic_Guns/robots/broken_bots.json @@ -5,6 +5,12 @@ "name": { "str_sp": "broken CROWS II" }, "copy-from": "broken_turret_rifle" }, + { + "type": "GENERIC", + "id": "broken_turret_artisans", + "name": { "str_sp": "broken CROWS II" }, + "copy-from": "broken_turret_artisans" + }, { "type": "GENERIC", "id": "broken_crows_m240",