diff --git a/data/json/mapgen/exodii/exodii_base.json b/data/json/mapgen/exodii/exodii_base.json index 46646ad004167..db45f9556d867 100644 --- a/data/json/mapgen/exodii/exodii_base.json +++ b/data/json/mapgen/exodii/exodii_base.json @@ -238,7 +238,7 @@ "..........#######|CCcCC_____||~~~iiiiii;;i|]mmm|mm||||||mm|||||||||||||ϟ_||_ɱ| ;; !....", "..........#######|cCcc__W__||~~~iiiiiii;;i|L_______________ɱRRRRRRRRRɱ_/____ɱ| ;; !!....", "..........#######|||||]]|mm|~~~~iiiiiii;;i|_______W____________________/__UU|| ;; !.....", - "..........######lj ;;j~~~iikiiiii;;n|___________________________//_|||| ;; !!.....", + "..........######lj ;;j~~~iikiiiii;;n|G__________________________//_|||| ;; !!.....", "...........###jjjw ~~;;~~~iiiiiiiii;;i|________________ɱRRRRRRRRRɱ/__|c ;; !......", "............#!lj ~~~~[[~~iikiiikiii;;i|___________________/////___/__|C S ;; !......", ".............!!!!!!|[~~~~[[~iiiiiiiiiii;;i|____________W__/////___/////__|C ;; !......", @@ -317,7 +317,7 @@ { "id": "exodii", "x": [ 72, 95 ], "y": [ 48, 71 ] }, { "id": "exodii", "x": [ 72, 95 ], "y": [ 72, 95 ] } ], - "nested": { "Z": { "chunks": [ "rubik_store_base" ] } }, + "nested": { "Z": { "chunks": [ "rubik_store_base" ] }, "G": { "chunks": [ "weaponmaster_workshop_base" ] } }, "terrain": { " ": "t_rock_floor_no_roof", ";": "t_metal_floor_no_roof", diff --git a/data/json/mapgen/exodii/exodii_nested.json b/data/json/mapgen/exodii/exodii_nested.json index 390e5cc616506..f127a582513c4 100644 --- a/data/json/mapgen/exodii/exodii_nested.json +++ b/data/json/mapgen/exodii/exodii_nested.json @@ -53,5 +53,55 @@ "L": { "terrain": "t_metal_floor", "furniture": "f_exodii_lamp" } } } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "weaponmaster_workshop_base", + "//": "todo: add more, heavier guns on racks", + "object": { + "mapgensize": [ 5, 5 ], + "rows": [ + "b_L__", + "S_C_c", + "S_C@c", + "S_Cbc", + "|_Lcc" + ], + "place_item": [ + { "item": "brogyeki", "x": 0, "y": 1, "chance": 100 }, + { "item": "sapra", "x": 0, "y": 2, "chance": 100 }, + { "item": "spear_dory", "x": 0, "y": 3, "chance": 100 } + ], + "mapping": { + "|": { "terrain": "t_scrap_wall" }, + "_": { "terrain": "t_scrap_floor" }, + "S": { "terrain": "t_scrap_floor", "furniture": "f_rack" }, + "C": { "terrain": "t_scrap_floor", "furniture": "f_workbench" }, + "c": { "terrain": "t_scrap_floor", "furniture": "f_metal_table" }, + "L": { "terrain": "t_scrap_floor", "furniture": "f_exodii_lamp" }, + "b": { "terrain": "t_scrap_floor", "furniture": "f_metal_crate_o" }, + "@": { "terrain": "t_scrap_floor", "furniture": "f_metal_bench", "npcs": { "class": "exodii_weaponmaster" } } + }, + "items": { "b": { "item": "EXODII_Workshop_Damaged", "chance": 100, "repeat": [ 3, 12 ] } } + } + }, + { + "type": "item_group", + "id": "EXODII_Workshop_Damaged", + "subtype": "distribution", + "items": [ + { "item": "brogyeki", "prob": 20, "damage": [ 1, 4 ] }, + { "item": "brogyaga", "prob": 5, "damage": [ 1, 4 ] }, + { "item": "pamd68", "prob": 60, "damage": [ 1, 4 ] }, + { "item": "pamd71z", "prob": 10, "damage": [ 1, 4 ] }, + { "item": "sapra", "prob": 10, "damage": [ 1, 4 ] }, + { "item": "armor_lorica", "prob": 20, "damage": [ 1, 4 ] }, + { "item": "helmet_corinthian", "prob": 60, "damage": [ 1, 4 ] }, + { "item": "armor_thessalonian", "prob": 80, "damage": [ 1, 4 ] }, + { "item": "leggings_thessalonian", "prob": 80, "damage": [ 1, 4 ] }, + { "item": "sword_xiphos", "prob": 50, "damage": [ 1, 4 ] }, + { "item": "spear_dory", "prob": 30, "damage": [ 1, 4 ] } + ] } ] diff --git a/data/json/npcs/exodii/exodii_merchant_definitions.json b/data/json/npcs/exodii/exodii_merchant_definitions.json index 4052f8249d416..5705901088105 100644 --- a/data/json/npcs/exodii/exodii_merchant_definitions.json +++ b/data/json/npcs/exodii/exodii_merchant_definitions.json @@ -28,10 +28,12 @@ "bonus_int": { "rng": [ 0, 2 ] }, "bonus_per": { "rng": [ 0, 4 ] }, "shopkeeper_item_group": [ - { "group": "EXODII_basic_trade", "rigid": true }, - { "group": "EXODII_trade_Tier1", "rigid": true, "trust": 1 }, - { "group": "EXODII_trade_Tier2", "rigid": true, "trust": 10 }, - { "group": "EXODII_trade_Tier3", "rigid": true, "trust": 20, "strict": true }, + { "group": "EXODII_Shop_Tier0", "rigid": true }, + { "group": "EXODII_Shop_NomadGear_Tier0", "rigid": true }, + { "group": "EXODII_CBM_Store_Tier1", "rigid": true }, + { "group": "EXODII_CBM_Store_tier1_extra", "rigid": true, "trust": 1 }, + { "group": "EXODII_CBM_Store_Tier2", "rigid": true, "trust": 10 }, + { "group": "EXODII_CBM_Store_Tier3", "rigid": true, "trust": 20, "strict": true }, { "group": "EXODII_Store_Salvage_Tech", "rigid": true, "trust": 20 }, { "group": "EXODII_CBM_Store_Tier4", "rigid": true, "trust": 40, "strict": true } ], diff --git a/data/json/npcs/exodii/exodii_weaponmaster.json b/data/json/npcs/exodii/exodii_weaponmaster.json new file mode 100644 index 0000000000000..1cc6198df42ff --- /dev/null +++ b/data/json/npcs/exodii/exodii_weaponmaster.json @@ -0,0 +1,92 @@ +[ + { + "type": "npc", + "id": "exodii_weaponmaster", + "name_suffix": "Weaponmaster", + "class": "NC_EXODII_TYPE_9_Weaponmaster", + "name_unique": "Nine", + "attitude": 0, + "mission": 3, + "chat": "TALK_WEAPONMASTER_INTRO_1", + "faction": "exodii", + "personality": { "aggression": -2, "bravery": 2, "collector": 2, "altruism": -2 } + }, + { + "type": "npc_class", + "id": "NC_EXODII_TYPE_9_Weaponmaster", + "name": { "str": "Cyborg, type 9" }, + "job_description": "I'm a cyborg.", + "traits": [ + { "trait": "EXODII_BODY_9" }, + { "trait": "IGNORE_SOUND" }, + { "trait": "NO_BASH" }, + { "trait": "RETURN_TO_START_POS" } + ], + "common": false, + "bonus_str": { "rng": [ 0, 2 ] }, + "bonus_dex": { "rng": [ 0, 1 ] }, + "bonus_int": { "rng": [ 0, 6 ] }, + "bonus_per": { "rng": [ 0, 1 ] }, + "shopkeeper_item_group": [ + { "group": "EXODII_Shop_Guns_Tier0", "rigid": true }, + { "group": "EXODII_Shop_OldArmour", "rigid": true }, + { "group": "EXODII_Shop_Guns_Tier1", "rigid": true, "trust": 1 }, + { "group": "EXODII_Shop_Guns_Tier2", "rigid": true, "trust": 10 }, + { "group": "EXODII_Shop_Guns_Tier3", "rigid": true, "trust": 20, "strict": true } + ], + "shopkeeper_consumption_rates": "basic_shop_rates", + "weapon_override": "brogyeki_weapon_override", + "worn_override": "EMPTY_GROUP", + "skills": [ + { + "skill": "ALL", + "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "constant": 0 }, { "one_in": 4 } ] } ] } + }, + { "skill": "mechanics", "bonus": { "rng": [ 5, 7 ] } }, + { "skill": "electronics", "bonus": { "rng": [ 3, 6 ] } }, + { "skill": "firstaid", "bonus": { "rng": [ 2, 4 ] } }, + { "skill": "gun", "bonus": { "rng": [ 6, 9 ] } }, + { "skill": "rifle", "bonus": { "rng": [ 6, 9 ] } }, + { "skill": "unarmed", "bonus": { "rng": [ 4, 7 ] } }, + { "skill": "speech", "bonus": { "rng": [ 5, 8 ] } } + ] + }, + { + "type": "item_group", + "subtype": "collection", + "id": "brogyeki_weapon_override", + "entries": [ { "item": "brogyeki", "charges": 2 } ] + }, + { + "type": "mutation", + "id": "EXODII_BODY_9", + "flags": [ "Exodii_Body" ], + "name": { "str": "Exodii cyborg framework - style 9" }, + "points": 0, + "visibility": 9, + "ugliness": 7, + "mixed_effect": true, + "description": "Your entire body is covered by a rectangular frame, that has numerous supporting arms and manipulators, with decent stability. The price of this is that the weight of the entire frame is enormous, which causes the user to either use dedicated tracked treads to move around, or stay immobile for a large amount of time.", + "//": "while it can be handled via limbs and stuff, player have no way to obtain this frame (yet? ever? time will tell) so just enchantments", + "valid": false, + "purifiable": false, + "types": [ "Cyberframe", "Cybernetic" ], + "enchantments": [ + { + "values": [ { "value": "MAX_HP", "add": 250 }, { "value": "STRENGTH", "add": 12 }, { "value": "DEXTERITY", "add": 12 } ] + } + ], + "restricts_gear": [ "torso", "leg_l", "leg_r", "arm_l", "arm_r", "hand_l", "hand_r", "head", "foot_l", "foot_r" ], + "armor": [ + { + "parts": [ "torso", "head", "arm_l", "arm_r", "hand_l", "hand_r", "leg_l", "leg_r", "foot_l", "foot_r", "mouth" ], + "cut": 30, + "bash": 30, + "stab": 30, + "bullet": 25, + "acid": 25, + "electric": 5 + } + ] + } +] diff --git a/data/json/npcs/exodii/exodii_weaponmaster_talk.json b/data/json/npcs/exodii/exodii_weaponmaster_talk.json new file mode 100644 index 0000000000000..7f01b35d87cd4 --- /dev/null +++ b/data/json/npcs/exodii/exodii_weaponmaster_talk.json @@ -0,0 +1,76 @@ +[ + { + "id": "TALK_WEAPONMASTER_INTRO_1", + "type": "talk_topic", + "//": "mute by choice, and deaf most of the time (don't like to turn on the hearing cbm unless for job)", + "dynamic_line": "&What you see looks like the back of a mechanical spider, with at least a dozen crude but polished metal arms coming from the enormously wide spine and shoulders. The spine of the creature, meanwhile, sits in an awkward-looking chair, manipulating tools and geegaws on a wide, brightly lit workbench. The creature seems to be busy with something.", + "responses": [ + { "text": "[Wait a bit.]", "topic": "TALK_WEAPONMASTER_INTRO_2A" }, + { "text": "Hello?", "topic": "TALK_WEAPONMASTER_INTRO_2B" } + ] + }, + { + "id": "TALK_WEAPONMASTER_INTRO_2A", + "type": "talk_topic", + "dynamic_line": "&It doesn't react to your presence at all.", + "responses": [ + { "text": "[Wait for longer.]", "topic": "TALK_WEAPONMASTER_INTRO_3" }, + { "text": "Hello?", "topic": "TALK_WEAPONMASTER_INTRO_3" } + ] + }, + { + "id": "TALK_WEAPONMASTER_INTRO_2B", + "type": "talk_topic", + "dynamic_line": "&It seems to not hear you at all.", + "responses": [ + { "text": "[Wait in silence.]", "topic": "TALK_WEAPONMASTER_INTRO_3" }, + { "text": "Hello!?", "topic": "TALK_WEAPONMASTER_INTRO_3" } + ] + }, + { + "id": "TALK_WEAPONMASTER_INTRO_3", + "type": "talk_topic", + "dynamic_line": "&A few seconds later, they seem to finish whatever they were busy with and turn their chair towards you. Their front looks no less exotic than their back; the abundance of metal arms are even more extraordinary next to the clear lack of any legs. What you initially thought to be a chair is simply a rotating platform, sturdy enough to support the weight of the entire body of the creature. A number of cameras, which seem to be a replacement for eyes, look at you motionlessly, while the forehead of the creature has the surprisingly familiar sign \"IX\" painted on.", + "responses": [ { "text": "Who-… Wha-… What are you?", "topic": "TALK_WEAPONMASTER_INTRO_4" } ] + }, + { + "id": "TALK_WEAPONMASTER_INTRO_4", + "type": "talk_topic", + "dynamic_line": "&Still completely mute, it shows you something you had initially missed. The entire wall behind the workbench is full of various weapons; some as big as modern rifles, a few as large as the machine guns installed on aircraft, and one that looks like a dismantled tank turret. Melee weapons were not forgotten, from moderately-sized swords and clubs to war hammers twice the height of a human, and what you can describe only as \"boots for mecha\". Then it points to a sign near you that shows three things: the carved pictograms of coins, some sign you are not familiar with, and a pictogram of a bullet - all things considered, this creature is either a weaponmaster, or a weapon merchant.", + "responses": [ { "text": "Woah. Can I buy one?", "topic": "TALK_WEAPONMASTER_INTRO_5" } ] + }, + { + "id": "TALK_WEAPONMASTER_INTRO_5", + "type": "talk_topic", + "dynamic_line": "&They do not move and do not say anything.", + "responses": [ { "text": "Hey? Do you understand me?", "topic": "TALK_WEAPONMASTER_INTRO_6" } ] + }, + { + "id": "TALK_WEAPONMASTER_INTRO_6", + "type": "talk_topic", + "dynamic_line": "&They clearly do not understand you. It seems they do not hear you either.", + "responses": [ + { + "text": "[You pull off your backpack, and start to pull out items you deem worthy of trading. The weaponmaster finally looks interested.]", + "topic": "TALK_DONE", + "effect": [ { "npc_first_topic": "TALK_EXODII_WEAPONMASTER" }, "start_trade" ] + } + ] + }, + { + "id": "TALK_EXODII_WEAPONMASTER", + "type": "talk_topic", + "dynamic_line": [ + "&The Weaponmaster seems to be tinkering on something, but turns their chair to you as you approach.", + "&The Weaponmaster seems to be cleaning some sort of weapon, but as you approach them, they signal to a bystanding worker to take the weapon, and turn to you.", + "&The Weaponmaster seems to be polishing some armor, but they turn towards you the second you enter the room." + ], + "responses": [ + { + "text": "[With a familiar movement, you place a variety of valuables onto the counter, proposing a trade.]", + "topic": "TALK_NONE", + "effect": [ "start_trade" ] + } + ] + } +]