diff --git a/data/json/mapgen/militia/GM_LODGE.json b/data/json/mapgen/militia/GM_LODGE.json new file mode 100644 index 0000000000000..de8c2f750a8d3 --- /dev/null +++ b/data/json/mapgen/militia/GM_LODGE.json @@ -0,0 +1,291 @@ +[ + { + "type": "mapgen", + "method": "json", + "weight": 1000, + "om_terrain": [ [ "GMLODGE1_1", "GMLODGE1_2", "GMLODGE1_3", "GMLODGE1_4" ] ], + "object": { + "fill_ter": "t_floor", + "rows": [ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" + ], + "palettes": [ "GMLODGEPALETTE" ], + "terrain": { ",": "t_region_groundcover" } + } + }, + { + "type": "mapgen", + "method": "json", + "weight": 1000, + "om_terrain": [ + [ "GMLODGE2_1", "GMLODGE2_2", "GMLODGE2_3", "GMLODGE2_4" ], + [ "GMLODGE3_1", "GMLODGE3_2", "GMLODGE3_3", "GMLODGE3_4" ] + ], + "object": { + "fill_ter": "t_floor", + "faction_owner": [ + { "id": "GM_militia_faction", "x": [ 0, 23 ], "y": [ 0, 23 ] }, + { "id": "GM_militia_faction", "x": [ 24, 47 ], "y": [ 0, 23 ] }, + { "id": "GM_militia_faction", "x": [ 48, 71 ], "y": [ 0, 23 ] }, + { "id": "GM_militia_faction", "x": [ 72, 95 ], "y": [ 0, 23 ] }, + { "id": "GM_militia_faction", "x": [ 0, 23 ], "y": [ 24, 47 ] }, + { "id": "GM_militia_faction", "x": [ 24, 47 ], "y": [ 24, 47 ] }, + { "id": "GM_militia_faction", "x": [ 48, 71 ], "y": [ 24, 47 ] }, + { "id": "GM_militia_faction", "x": [ 72, 95 ], "y": [ 24, 47 ] } + ], + "rows": [ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WWwWWWWW+WwvWWWWWWWWWWWWWWWWvwW+WWWWWwWW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WB tŦ#WΔ ‡ 5EEEWLLLLLLW###*SOf #W#Ŧt BW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WB + W W + BW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WWWWWWWΔ W hkW WWWWWWW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WL tŦ#W YYY YYYW kW W#Ŧt BW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WL + W2 DW + BW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WWWWWWW` WW+WW+WW `WWWWWWW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,Wz + + ^W,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,Wz W oooo Wr &W,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,wZ W hhh hhh oooo hhh hhh Wr #w,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,W W nnn nnn oooo nnn nnn Wr LW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WZZ## W hhh hhh oooo hhh hhh Wr ##LW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,WWWWWWW oooo WWWWWWW,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,W@d@ + + @d@W,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,W@ @ W W @ @W,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,w W oooo W+WW W w,,CCCCCCCCCCCCCCCCCCCCCCCCCC", + "CCCCCCCCCCCCCCCCCCCCCCCCCC,,W@@ ΔDW `oooo` W W..W..W.Δ...W ", + " WWWWWWW..WWvWWWWvWWWWWWvWWWWvWW..WWWWWWW ", + " v@@d..+..W W..+..d@@v ", + " W@@...W..W W..W...@@W ", + " W.....W..W W..W.....W ", + " W...Δ.W..W W..W.Δ...W ", + " WWWWWWW..v v..WWWWWWW ", + " W@@d..+..W W..+..d@@W ", + " v@@...W..W W..W...@@v ", + " W.....W..W W..W.....W ", + " W...Δ.W.`W W`.W.Δ...W ", + " WWvWWWWvWW WWvWWWWvWW ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "GMLODGEPALETTE" ], + "place_npcs": [ + { "class": "MILITIA_MERCHANT", "x": 24, "y": 6 }, + { "class": "MILITIA_GUARD1", "x": 20, "y": 6 }, + { "class": "MILITIA_GUARD1", "x": 28, "y": 6 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "GMLODGE2_roof_2", "GMLODGE2_roof_3" ], [ "GMLODGE3_roof_2", "GMLODGE3_roof_3" ] ], + "weight": 100, + "object": { + "fill_ter": "t_open_air", + "rows": [ + " ", + " ", + " ", + " ", + " ........................................ ", + " ........................................ ", + " ..........,........,,........,.......... ", + " ...................,,................... ", + " ........................................ ", + " ..........,..................,.......... ", + " ........................................ ", + " ........................................ ", + " ..........,..................,.......... ", + " ........................................ ", + " ........................................ ", + " ..........,..................,.......... ", + " ........................................ ", + " ........................................ ", + " ........................................ ", + " ........................................ ", + " ........................................ ", + " ........................................ ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " .......... .......... ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "terrain": { ".": "t_flat_roof", ",": "t_glass_roof" } + } + } +] diff --git a/data/json/mapgen/militia/GM_LODGE_PALETTE.json b/data/json/mapgen/militia/GM_LODGE_PALETTE.json new file mode 100644 index 0000000000000..5eb7dd841756c --- /dev/null +++ b/data/json/mapgen/militia/GM_LODGE_PALETTE.json @@ -0,0 +1,154 @@ +[ + { + "type": "palette", + "id": "GMLODGEPALETTE", + "terrain": { + "_": "t_region_groundcover_barren", + "%": "t_fence_barbed", + ".": "t_floor", + "+": "t_door_c", + "-": "t_wall_w", + ";": "t_dirtfloor", + "B": "t_floor", + "C": [ + "t_region_groundcover", + [ "t_grass_long", 1 ], + [ "t_grass_tall", 1 ], + [ "t_region_groundcover", 30 ], + [ "t_region_tree", 1 ] + ], + ",": [ "t_region_groundcover", [ "t_grass_long", 1 ], [ "t_grass_tall", 1 ], [ "t_region_groundcover", 30 ] ], + "D": "t_floor", + "E": "t_floor", + "G": "t_palisade_gate", + "H": "t_splitrail_fence_h", + "L": "t_floor", + "O": "t_floor", + "S": "t_floor", + "T": "t_tree", + "V": "t_splitrail_fence_v", + "W": "t_wall_wood", + "X": "t_region_groundcover", + "Y": "t_floor", + "Z": "t_floor", + "b": "t_region_groundcover_barren", + "c": "t_floor", + "d": "t_floor", + "f": "t_floor", + "h": "t_floor", + "k": "t_floor", + "n": "t_floor", + "o": "t_carpet_red", + "r": "t_floor", + "s": "t_sidewalk", + "t": "t_floor", + "v": "t_window_domestic", + "w": "t_window_boarded", + "x": "t_region_groundcover", + "y": "t_palisade", + "z": "t_floor", + "|": "t_wall_w", + "~": "t_water_sh", + "Δ": "t_floor", + "@": "t_floor", + "#": "t_floor", + "Ŧ": "t_floor", + "*": "t_floor", + "`": "t_floor", + "1": "t_floor", + "2": "t_floor", + "3": "t_floor", + "4": "t_floor", + "5": "t_floor", + "6": "t_floor", + "7": "t_floor", + "<": "t_wood_stairs_up", + ">": "t_wood_stairs_down", + "F": "t_region_groundcover", + "M": "t_region_groundcover", + "?": "t_region_groundcover_barren", + "!": "t_floor", + "(": "t_region_groundcover", + ")": "t_region_groundcover" + }, + "furniture": { + "B": "f_bathtub", + "D": "f_trashcan", + "E": "f_bookcase", + "L": "f_locker", + "O": "f_oven", + "S": "f_sink", + "Y": "f_sofa", + "Z": "f_crate_o", + "c": "f_counter", + "d": "f_dresser", + "f": "f_fridge", + "h": "f_chair", + "k": "f_desk", + "n": "f_table", + "r": "f_rack", + "t": "f_toilet", + "z": "f_crate_c", + "1": "f_bigmirror", + "2": "f_floor_lamp", + "3": "f_arcade_machine", + "4": "f_piano", + "5": "f_entertainment_center", + "6": "f_displaycase", + "7": "f_stool", + "8": "f_canvas_wall", + "9": "f_center_groundsheet", + "F": "f_firering", + "M": "f_butcher_rack", + "?": "f_camp_chair", + "`": "f_indoor_plant", + "@": "f_bed", + "‡": "f_woodstove", + "Ŧ": "f_sink", + "#": "f_cupboard", + "Δ": "f_armchair", + "Ʌ": "f_wardrobe", + "^": "f_dryer", + "&": "f_washer", + "*": "f_dishwasher", + "(": "f_rotary_clothesline", + ")": "f_sandbag_half", + "!": "f_pool_table" + }, + "items": { + "d": [ + { "item": "SUS_dresser_mens", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "SUS_dresser_womens", "chance": 50, "repeat": [ 1, 2 ] } + ], + "!": { "item": "pool_table", "chance": 30, "repeat": [ 1, 2 ] }, + "#": [ + { "item": "dishes_dining", "chance": 30 }, + { "item": "tea_dishes", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "baked_goods", "chance": 5 }, + { "item": "groce_condiment", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "dining", "chance": 10 } + ], + "5": [ + { "item": "consumer_electronics", "chance": 10, "repeat": [ 1, 3 ] }, + { "item": "livingroom", "chance": 10, "repeat": [ 1, 3 ] } + ], + "f": { "item": "SUS_fridge", "chance": 100 }, + "r": [ + { "item": "tools_home", "chance": 40 }, + { "item": "cleaning", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mechanics", "chance": 1, "repeat": [ 1, 2 ] }, + { "item": "camping", "chance": 10 }, + { "item": "tools_survival", "chance": 5, "repeat": [ 1, 2 ] } + ], + "6": { "item": "home_display_case", "chance": 100 }, + "L": [ + { "item": "tools_common", "chance": 20, "repeat": [ 1, 2 ] }, + { "item": "hardware", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "cleaning", "chance": 10, "repeat": [ 1, 2 ] } + ], + "E": [ { "item": "homebooks", "chance": 40, "repeat": [ 1, 4 ] }, { "item": "games", "chance": 20, "repeat": [ 1, 2 ] } ], + "@": { "item": "bed", "chance": 50 }, + "Z": [ { "item": "SUS_pantry", "chance": 55 }, { "item": "cannedfood", "chance": 80, "repeat": [ 3, 5 ] } ] + } + } +] diff --git a/data/json/npcs/factions.json b/data/json/npcs/factions.json index ea8dd99498fa3..20eacecdf3e4d 100644 --- a/data/json/npcs/factions.json +++ b/data/json/npcs/factions.json @@ -989,5 +989,24 @@ { "power_min": 150, "id": "epilogue_faction_the_great_library_150" } ], "description": "A group of academics and other survivors that stand together to preserve and spread knowledge of the world." + }, + { + "type": "faction", + "id": "GM_militia_faction", + "name": "Grey Moose Militia Community", + "likes_u": 0, + "respects_u": 0, + "known_by_u": false, + "size": 3, + "power": 3, + "fac_food_supply": { "calories": 115200, "vitamins": { } }, + "wealth": 20000, + "relations": { + "free_merchants": { "knows your voice": true }, + "old_guard": { "knows your voice": true }, + "your_followers": { "knows your voice": true }, + "no_faction": { "knows your voice": true } + }, + "description": "A small community of survivors who retreated to a remote lodge." } ] diff --git a/data/json/npcs/militia/GM_Militia_Guard.json b/data/json/npcs/militia/GM_Militia_Guard.json new file mode 100644 index 0000000000000..ec915a3e234a3 --- /dev/null +++ b/data/json/npcs/militia/GM_Militia_Guard.json @@ -0,0 +1,60 @@ +[ + { + "type": "npc", + "id": "MILITIA_GUARD1", + "//": "A member of the Gray Moose Lodge, trying to safe in their isolated location", + "class": "MILITIA_GUARD1", + "attitude": 7, + "name_suffix": "Militia Guard", + "mission": 8, + "chat": "TALK_MILITIA_Guard1", + "faction": "GM_militia_faction" + }, + { + "type": "npc_class", + "id": "MILITIA_GUARD1", + "name": { "str": "Guard" }, + "job_description": "I'm a local guard.", + "traits": [ { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" } ], + "common": false, + "bonus_int": { "one_in": 4 }, + "bonus_per": { "one_in": 4 }, + "skills": [ + { + "skill": "ALL", + "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "constant": -2 }, { "one_in": 4 } ] } ] } + }, + { "skill": "mechanics", "bonus": { "one_in": 2 } }, + { "skill": "electronics", "bonus": { "rng": [ 0, 2 ] } }, + { "skill": "speech", "bonus": { "rng": [ 3, 5 ] } } + ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_Guard1", + "dynamic_line": { + "u_has_var": "talked_to_LODGEMAIN", + "type": "dialogue", + "context": "first_meeting", + "value": "yes", + "yes": "Hello again.", + "no": "I'm busy on watch duty. Talk to the Boss inside." + }, + "responses": [ + { "text": "What are you doing?", "topic": "TALK_MILITIA_GUARD1_Introduction" }, + { "text": "Well I've got to go.", "topic": "TALK_MILITIA_GUARD1_BYE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_GUARD1_Introduction", + "dynamic_line": "I'm on watch duty. Talk to the Boss. He's inside.", + "responses": [ { "text": "…", "topic": "TALK_NONE" } ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_GUARD1_BYE", + "dynamic_line": "Stay safe out there. Hate to have to kill you after you've already died.", + "responses": [ { "text": "…", "topic": "TALK_DONE" } ] + } +] diff --git a/data/json/npcs/militia/GM_Militia_Merchant.json b/data/json/npcs/militia/GM_Militia_Merchant.json new file mode 100644 index 0000000000000..387858085ca69 --- /dev/null +++ b/data/json/npcs/militia/GM_Militia_Merchant.json @@ -0,0 +1,228 @@ +[ + { + "type": "npc", + "id": "MILITIA_MERCHANT", + "//": "A member of the Gray Moose Militia, trying to safe in their isolated location", + "name_unique": "Darby Sutton", + "class": "MILITIA_MERCHANT", + "attitude": 0, + "name_suffix": "Survivor", + "mission": 3, + "chat": "TALK_MILITIA_MAIN", + "faction": "GM_militia_faction" + }, + { + "type": "npc_class", + "id": "MILITIA_MERCHANT", + "name": { "str": "Merchant" }, + "job_description": "I'm a local shopkeeper.", + "traits": [ { "group": "NPC_starting_traits" }, { "group": "Appearance_demographics" } ], + "common": false, + "bonus_int": { "one_in": 4 }, + "bonus_per": { "one_in": 4 }, + "shopkeeper_item_group": "MILITIA_MERCHANT_misc", + "carry_override": "MILITIA_MERCHANT_misc", + "skills": [ + { + "skill": "ALL", + "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "constant": -2 }, { "one_in": 4 } ] } ] } + }, + { "skill": "mechanics", "bonus": { "one_in": 2 } }, + { "skill": "electronics", "bonus": { "rng": [ 0, 2 ] } }, + { "skill": "speech", "bonus": { "rng": [ 3, 5 ] } } + ] + }, + { + "type": "item_group", + "id": "MILITIA_MERCHANT_misc", + "subtype": "collection", + "items": [ + { "item": "jerky", "count-min": 3, "count-max": 8, "prob": 30 }, + { "group": "tools_general", "prob": 80, "count": [ 1, 3 ] }, + { "group": "tools_home", "prob": 80, "count": [ 1, 3 ] }, + { "group": "tools_carpentry", "prob": 30, "count": [ 1, 3 ] }, + { "group": "tools_earthworking", "prob": 30, "count": [ 1, 3 ] }, + { "group": "tools_electronics", "prob": 20, "count": [ 1, 3 ] }, + { "group": "tools_mechanic", "prob": 20, "count": [ 1, 3 ] }, + { "group": "tools_plumbing", "prob": 20, "count": [ 1, 3 ] }, + { "group": "supplies_electronics", "prob": 20, "count": [ 1, 3 ] }, + { "group": "supplies_plumbing", "prob": 20, "count": [ 1, 3 ] }, + { "group": "supplies_hardware", "prob": 20, "count": [ 1, 3 ] }, + { "group": "supplies_fuel", "prob": 20, "count": [ 1, 3 ] }, + { "group": "supplies_metal", "prob": 20, "count": [ 1, 3 ] }, + { "group": "ammo_any_batteries_full", "prob": 20, "count": [ 1, 3 ] }, + { "group": "magazines", "prob": 30, "count": [ 1, 3 ] }, + { "group": "book_gunref", "prob": 15 }, + { "group": "hardware_books", "prob": 30, "count": [ 1, 3 ] }, + { "group": "religious_books", "prob": 30, "count": [ 1, 3 ] }, + { "group": "homebooks", "prob": 40, "count": [ 1, 3 ] }, + { "group": "manuals", "prob": 30 }, + { "group": "book_survival", "prob": 15 }, + { "group": "novels", "prob": 50, "count": [ 1, 3 ] }, + { "group": "textbooks", "prob": 30 }, + { "group": "cigar_box_unopened", "prob": 10 }, + { "item": "case_cigar", "prob": 5 }, + [ "trenchcoat", 25 ], + [ "trenchcoat_leather", 20 ], + [ "trenchcoat_fur", 10 ], + [ "vest_leather", 15 ], + [ "football_armor", 30 ], + [ "jacket_leather", 25 ], + [ "jacket_jean", 15 ], + [ "jacket_flannel", 15 ], + [ "pants_cargo", 40 ], + [ "shorts_cargo", 25 ], + [ "pants_army", 30 ], + [ "pants_leather", 15 ], + [ "gloves_fingerless", 30 ], + [ "gloves_tactical", 15 ], + [ "gauntlets_larmor", 25 ], + [ "gloves_fur", 5 ], + [ "gloves_leather", 35 ], + [ "gloves_work", 20 ], + [ "boots", 20 ], + [ "boots_steel", 20 ], + [ "sneakers_steel", 15 ], + [ "boots_hiking", 30 ], + [ "knee_high_boots", 5 ], + [ "boots_combat", 15 ], + [ "boots_larmor", 10 ], + [ "boots_fur", 10 ], + [ "helmet_larmor", 15 ], + [ "hood_rain", 15 ], + [ "dive_bag", 10 ], + [ "runner_bag", 20 ], + [ "backpack", 40 ], + [ "backpack_leather", 35 ], + [ "mbag", 25 ], + [ "slingpack", 15 ], + [ "rucksack", 10 ], + [ "duffelbag", 10 ], + [ "mask_hockey", 15 ], + [ "sunglasses", 15 ], + [ "glasses_safety", 15 ], + [ "goggles_ski", 5 ], + [ "tool_belt", 15 ], + [ "fanny", 5 ], + [ "dump_pouch", 5 ], + [ "ragpouch", 15 ], + [ "leather_pouch", 15 ], + [ "quiver", 15 ], + [ "quiver_large", 5 ], + [ "wristwatch", 30 ], + [ "diving_watch", 5 ], + [ "pocketwatch", 10 ], + [ "holster", 25 ], + [ "bandana", 20 ], + [ "scarf", 15 ], + [ "hat_boonie", 20 ], + [ "balclava", 10 ], + [ "pickaxe", 20 ], + [ "makeshift_machete", 15 ], + [ "fungicide", 20 ], + [ "insecticide", 20 ], + [ "antifungal", 20 ], + [ "antiparasitic", 20 ], + [ "diazepam", 15 ], + [ "grapnel", 5 ], + [ "misc_repairkit", 15 ], + { "group": "tools_toolbox", "prob": 20 }, + [ "crowbar", 25 ], + [ "machete", 25 ], + [ "ax", 25 ], + [ "spear_knife", 30 ], + [ "22_lr", 25 ], + [ "22_fmj", 1 ], + [ "223", 15 ], + [ "308", 10 ], + [ "3006", 10 ], + [ "45_acp", 10 ], + [ "45_jhp", 1 ], + [ "rifle_9mm", 20 ], + [ "rifle_22", 20 ], + [ "crossbow", 15 ], + [ "sig_mosquito", 15 ], + [ "sw_22", 15 ], + [ "glock_19", 15 ], + [ "usp_9mm", 10 ], + [ "m9", 35 ], + [ "remington_700", 5 ], + [ "ruger_1022", 10 ], + [ "marlin_9a", 10 ], + [ "remington_870", 10 ], + [ "mossberg_500", 5 ], + [ "shotgun_d", 5 ], + [ "molotov", 10 ], + [ "recurbow", 15 ], + [ "arrow_metal", 25 ], + [ "bolt_steel", 10 ], + [ "ashot", 5 ] + ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_MAIN", + "dynamic_line": { + "u_has_var": "talked_to_MILITIAMAIN", + "type": "dialogue", + "context": "first_meeting", + "value": "yes", + "yes": "Hello again.", + "no": "Welcome to our camp. Behave yourself while you are here. What can I do for you?" + }, + "speaker_effect": { "effect": { "u_add_var": "talked_to_MILITIAMAIN", "type": "dialogue", "context": "first_meeting", "value": "yes" } }, + "responses": [ + { + "text": "What do you do here?", + "topic": "TALK_MILITIA_INTRODUCTION", + "condition": { "not": { "u_has_var": "talked_to_MILITIAEMAIN", "type": "dialogue", "context": "first_meeting", "value": "yes" } } + }, + { + "text": "What's the story behind this place?", + "topic": "TALK_MILITIA_BACKGROUND", + "condition": { "u_has_var": "talked_to_MILITIAMAIN", "type": "dialogue", "context": "first_meeting", "value": "yes" } + }, + { + "text": "Is there something I can do for you?", + "topic": "TALK_MILITIA_HELP", + "condition": { "u_has_var": "talked_to_MILITIAMAIN", "type": "dialogue", "context": "first_meeting", "value": "yes" } + }, + { "text": "Do you have anything to trade?", "topic": "TALK_MILITIA_TRADE" }, + { + "text": "Time for me to leave", + "topic": "TALK_MILITIA_BYE", + "condition": { "u_has_var": "talked_to_MILITIAMAIN", "type": "dialogue", "context": "first_meeting", "value": "yes" } + } + ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_INTRODUCTION", + "dynamic_line": "I'm the most senior member at this point so I'm what passes for the leader here now. I'm just trying to make plans to keep us alive since everything fell apart.", + "responses": [ { "text": "I see.", "topic": "TALK_NONE" } ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_BACKGROUND", + "dynamic_line": "Well, that's a long story. We are whats left of the Grey Moose militia. We had plans for when things went south cause of crazy politicians or war, but we didn't expect people to go crazy then turn zombie. Only a handful of our members actually made it through all that madness. What's worse is that we lost so much of our supplies and gear due to military checkpoints and trigger happy soldiers. It didn't matter that half of us were former military the checkpoint guards just saw weapons, panicked and then confiscated everything but the clothes on our back. So here we are at our planned escape location with not even a fraction of our manpower or supplies.", + "responses": [ { "text": "I see.", "topic": "TALK_NONE" } ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_HELP", + "dynamic_line": "I can't say I can think of anything at the moment. Our remoteness is our defense. We want to keep a low profile and try to keep out of any trouble in this isolated location. We are willing to buy weapons and ammo though. Keeping the nearby area clear and hunting is always eating away at our supplies.", + "responses": [ { "text": "Keeping a low profile is good.", "topic": "TALK_NONE" } ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_TRADE", + "dynamic_line": "Let's trade then.", + "responses": [ { "text": "…", "effect": "start_trade", "topic": "TALK_NONE" } ] + }, + { + "type": "talk_topic", + "id": "TALK_MILITIA_BYE", + "dynamic_line": "Stay safe out there. Not enough of us are around anymore.", + "responses": [ { "text": "…", "topic": "TALK_DONE" } ] + } +] diff --git a/data/json/overmap/overmap_special/specials.json b/data/json/overmap/overmap_special/specials.json index 4e44033a87b64..c1860eaa068c0 100644 --- a/data/json/overmap/overmap_special/specials.json +++ b/data/json/overmap/overmap_special/specials.json @@ -7502,5 +7502,41 @@ "city_sizes": [ 4, -1 ], "occurrences": [ 75, 100 ], "flags": [ "GLOBALLY_UNIQUE", "MAN_MADE" ] + }, + { + "type": "overmap_special", + "id": "Militia Lodge", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "GMLODGE1_1" }, + { "point": [ 1, 0, 0 ], "overmap": "GMLODGE1_2" }, + { "point": [ 2, 0, 0 ], "overmap": "GMLODGE1_3" }, + { "point": [ 3, 0, 0 ], "overmap": "GMLODGE1_4" }, + { "point": [ 0, 1, 0 ], "overmap": "GMLODGE2_1" }, + { "point": [ 1, 1, 0 ], "overmap": "GMLODGE2_2" }, + { "point": [ 2, 1, 0 ], "overmap": "GMLODGE2_3" }, + { "point": [ 3, 1, 0 ], "overmap": "GMLODGE2_4" }, + { "point": [ 0, 2, 0 ], "overmap": "GMLODGE3_1" }, + { "point": [ 1, 2, 0 ], "overmap": "GMLODGE3_2" }, + { "point": [ 2, 2, 0 ], "overmap": "GMLODGE3_3" }, + { "point": [ 3, 2, 0 ], "overmap": "GMLODGE3_4" }, + { "point": [ 0, 3, 0 ], "overmap": "GMLODGE4_1" }, + { "point": [ 1, 3, 0 ], "overmap": "GMLODGE4_2" }, + { "point": [ 2, 3, 0 ], "overmap": "GMLODGE4_3" }, + { "point": [ 3, 3, 0 ], "overmap": "GMLODGE4_4" }, + { "point": [ 1, 1, 1 ], "overmap": "GMLODGE2_2_2" }, + { "point": [ 2, 1, 1 ], "overmap": "GMLODGE2_3_2" }, + { "point": [ 1, 2, 1 ], "overmap": "GMLODGE3_2_2" }, + { "point": [ 2, 2, 1 ], "overmap": "GMLODGE3_3_2" }, + { "point": [ 1, 1, 2 ], "overmap": "GMLODGE2_roof_2" }, + { "point": [ 2, 1, 2 ], "overmap": "GMLODGE2_roof_3" }, + { "point": [ 1, 2, 2 ], "overmap": "GMLODGE3_roof_2" }, + { "point": [ 2, 2, 2 ], "overmap": "GMLODGE3_roof_3" } + ], + "locations": [ "forest" ], + "city_distance": [ 7, 15 ], + "occurrences": [ 50, 100 ], + "connections": [ { "point": [ 2, 4, 0 ], "terrain": "forest_trail", "connection": "forest_trail", "from": [ 2, 0, 0 ] } ], + "rotate": false, + "flags": [ "WILDERNESS", "GLOBALLY_UNIQUE", "MAN_MADE" ] } ] diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_militia.json b/data/json/overmap/overmap_terrain/overmap_terrain_militia.json new file mode 100644 index 0000000000000..8ae8dc1b42326 --- /dev/null +++ b/data/json/overmap/overmap_terrain/overmap_terrain_militia.json @@ -0,0 +1,36 @@ +[ + { + "type": "overmap_terrain", + "id": [ + "GMLODGE1_1", + "GMLODGE1_2", + "GMLODGE1_3", + "GMLODGE1_4", + "GMLODGE2_1", + "GMLODGE2_2", + "GMLODGE2_3", + "GMLODGE2_4", + "GMLODGE3_1", + "GMLODGE3_2", + "GMLODGE3_3", + "GMLODGE3_4", + "GMLODGE4_1", + "GMLODGE4_2", + "GMLODGE4_3", + "GMLODGE4_4", + "GMLODGE2_2_2", + "GMLODGE2_3_2", + "GMLODGE3_2_2", + "GMLODGE3_3_2", + "GMLODGE2_roof_2", + "GMLODGE2_roof_3", + "GMLODGE3_roof_2", + "GMLODGE3_roof_3" + ], + "name": "Militia Lodge", + "sym": "L", + "color": "blue", + "see_cost": 5, + "flags": [ "NO_ROTATE" ] + } +]