Skip to content

Commit

Permalink
Hub 01 Surface Mercenary NPC (CleverRaven#33903)
Browse files Browse the repository at this point in the history
* Robofac Mercenary

* Rename file

* Apply suggestions from code review

Thanks  as always Night-Pryanik

Co-Authored-By: Anton Burmistrov <Night_Pryanik@mail.ru>

* Update NPC_ROBOFAC_MERC_1.json
  • Loading branch information
John-Candlebury authored and misterprimus committed Sep 21, 2019
1 parent 7ba7434 commit 722246a
Show file tree
Hide file tree
Showing 4 changed files with 321 additions and 49 deletions.
113 changes: 65 additions & 48 deletions data/json/mapgen/robofaq_locs/robofac_hq_chunks.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,66 @@
{
"type": "mapgen",
"method": "json",
"nested_mapgen_id": "robofac_hq_surface_freemerchant_camp",
"object": {
"faction_owner": [ { "id": "free_merchants", "x": [ 0, 14 ], "y": [ 0, 14 ] } ],
"mapgensize": [ 15, 15 ],
"rows": [
" ...... ",
" ###### ...... ",
" #x.rrrr.......",
" #t.rrrr.......",
" #x.rrrr...F...",
" #+++##..h.....",
" #c.t#v........",
" #####v........",
" #+# #+# ",
" #c# #c# ",
" ### ### ",
" ",
" ",
" ",
" "
],
"terrain": {
".": "t_dirt",
"r": "t_carpet_yellow",
"M": "t_pavement",
"#": "t_dirt",
"x": "t_dirt",
"c": "t_dirt",
"F": "t_pit_shallow"
},
"furniture": { "#": "f_skin_wall", "+": "f_skin_door", "x": "f_crate_c", "t": "f_table", "h": "f_chair", "F": "f_firering" },
"traps": { "c": "tr_fur_rollmat", "v": "tr_funnel" },
"place_npcs": [
{ "class": "roabofac_free_merchant", "x": 5, "y": 3 },
{ "class": "guard", "x": 7, "y": 7 },
{ "class": "guard", "x": 10, "y": 4 }
],
"items": { "c": { "item": "bed", "chance": 100 } },
"item": {
"r": { "item": "pillow", "chance": 33 },
"F": { "item": "pot", "chance": 100 },
"v": { "item": "jug_plastic", "chance": 100 }
},
"place_loot": [ { "group": "NC_ROBOFAC_INTERCOM_trade", "chance": 100, "x": 2, "y": [ 2, 4 ], "repeat": [ 9, 15 ] } ]
[
{
"type": "mapgen",
"method": "json",
"nested_mapgen_id": "robofac_hq_surface_freemerchant_camp",
"object": {
"faction_owner": [ { "id": "free_merchants", "x": [ 0, 14 ], "y": [ 0, 14 ] } ],
"mapgensize": [ 15, 15 ],
"rows": [
" ...... ",
" ###### ...... ",
" #x.rrrr.......",
" #t.rrrr.......",
" #x.rrrr...F...",
" #+++##..h.....",
" #c.t#v........",
" #####v........",
" #+# #+# ",
" #c# #c# ",
" ### ### ",
" ",
" ",
" ",
" "
],
"terrain": {
".": "t_dirt",
"r": "t_carpet_yellow",
"M": "t_pavement",
"#": "t_dirt",
"x": "t_dirt",
"c": "t_dirt",
"F": "t_pit_shallow"
},
"furniture": { "#": "f_skin_wall", "+": "f_skin_door", "x": "f_crate_c", "t": "f_table", "h": "f_chair", "F": "f_firering" },
"traps": { "c": "tr_fur_rollmat", "v": "tr_funnel" },
"place_npcs": [
{ "class": "roabofac_free_merchant", "x": 5, "y": 3 },
{ "class": "guard", "x": 7, "y": 7 },
{ "class": "guard", "x": 10, "y": 4 }
],
"items": { "c": { "item": "bed", "chance": 100 } },
"item": {
"r": { "item": "pillow", "chance": 33 },
"F": { "item": "pot", "chance": 100 },
"v": { "item": "jug_plastic", "chance": 100 }
},
"place_loot": [ { "group": "NC_ROBOFAC_INTERCOM_trade", "chance": 100, "x": 2, "y": [ 2, 4 ], "repeat": [ 9, 15 ] } ]
}
},
{
"type": "mapgen",
"method": "json",
"nested_mapgen_id": "robofac_hq_surface_merc_1",
"object": {
"faction_owner": [ { "id": "robofac_auxiliaries", "x": [ 0, 4 ], "y": [ 0, 4 ] } ],
"mapgensize": [ 2, 2 ],
"rows": [
" ",
" ."
],
"terrain": { ".": "t_thconc_floor" },
"place_npcs": [ { "class": "robofac_merc_1", "x": 1, "y": 1 } ]
}
}
}
]
26 changes: 26 additions & 0 deletions data/json/npcs/factions.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,32 @@
},
"description": "The surviving staff of Hub 01, a pre-cataclysm research lab. They rarely leave their lab, if at all, and rely on their robots and advanced technology to survive."
},
{
"type": "faction",
"id": "robofac_auxiliaries",
"name": "Hub 01 Ancillia",
"likes_u": 15,
"respects_u": 15,
"known_by_u": false,
"size": 70,
"power": 100,
"food_supply": 115200,
"wealth": 75000,
"currency": "RobofacCoin",
"relations": {
"robofac": {
"kill on sight": false,
"watch your back": true,
"share my stuff": true,
"guard your stuff": true,
"lets you in": true,
"defends your space": true,
"knows your voice": true
},
"marloss": { "kill on sight": true }
},
"description": "A loose association of skilled wastelanders, traders, mercenaries and scouts. All working on behalf of Hub 01, for their own reasons."
},
{
"type": "faction",
"id": "old_guard",
Expand Down
7 changes: 6 additions & 1 deletion data/json/npcs/robofac/NPC_ROBOFAC_INTERCOM.json
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@
"om_terrain": "robofachq_surface_b0",
"om_special": "hub_01",
"place_nested": [ { "chunks": [ "robofac_hq_surface_freemerchant_camp" ], "x": 4, "y": 0 } ]
},
{
"om_terrain": "robofachq_surface_entrance",
"om_special": "hub_01",
"place_nested": [ { "chunks": [ "robofac_hq_surface_merc_1" ], "x": 3, "y": 10 } ]
}
],
"effect": [ { "u_buy_item": "RobofacCoin", "count": 2 } ]
Expand Down Expand Up @@ -305,7 +310,7 @@
"dynamic_line": "Given the current context, we are willing to sell you a set of our protective gear: gas mask, suit and gear, at a considerable discount. We will sell it for two of our coins.\n\nthe intercom: Hmm wait, we might not have your size...",
"responses": [
{
"text": "[ 2 Hub 01 Gold Coins ] Deal!",
"text": "[ 2 HGC ] Deal!",
"condition": { "u_has_item": "RobofacCoin" },
"effect": [
{ "u_sell_item": "RobofacCoin", "count": 2 },
Expand Down
224 changes: 224 additions & 0 deletions data/json/npcs/robofac/NPC_ROBOFAC_MERC_1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
[
{
"type": "npc",
"id": "robofac_merc_1",
"//": "Appears in the the surface of Hub 01, an external mercenary.",
"name_suffix": "Hub Mercenary",
"class": "NC_ROBOFAC_MERC_1",
"attitude": 0,
"mission": 7,
"chat": "TALK_ROBOFAC_MERC_1",
"faction": "robofac_auxiliaries"
},
{
"type": "npc_class",
"id": "NC_ROBOFAC_MERC_1",
"name": "Hub Mercenary",
"job_description": "Fighting for the all-mighty dollar.",
"common": false,
"traits": [ { "trait": "TOUGH" }, { "trait": "QUICK" }, { "group": "Appearance_demographics" } ],
"bonus_str": { "rng": [ 1, 3 ] },
"bonus_dex": { "rng": [ -1, 2 ] },
"bonus_int": { "rng": [ -1, 1 ] },
"bonus_per": { "rng": [ 0, 1 ] },
"worn_override": "NC_ROBOFAC_MERC_1_worn",
"carry_override": "NC_ROBOFAC_MERC_1_carry",
"weapon_override": "NC_ROBOFAC_MERC_1_wield",
"skills": [
{ "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "rng": [ 0, -4 ] } ] } ] } },
{ "skill": "gun", "bonus": { "rng": [ 2, 5 ] } },
{ "skill": "melee", "bonus": { "rng": [ 2, 5 ] } },
{ "skill": "cutting", "bonus": { "rng": [ 2, 5 ] } },
{ "skill": "rifle", "bonus": { "rng": [ 3, 6 ] } }
]
},
{
"type": "item_group",
"id": "NC_ROBOFAC_MERC_1_worn",
"subtype": "collection",
"items": [
{ "item": "modularvestkevlar", "contents-group": "army_mags_m4" },
{ "item": "chestrig", "contents-group": "army_mags_m4" },
{ "item": "under_armor" },
{ "item": "under_armor_shorts" },
{ "item": "robofac_enviro_suit" },
{ "item": "slingpack" },
{ "item": "armguard_hard" },
{ "item": "legguard_hard" },
{ "item": "knife_combat", "container-item": "bootsheath" }
]
},
{
"type": "item_group",
"id": "NC_ROBOFAC_MERC_1_carry",
"subtype": "collection",
"items": [
{ "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
{ "item": "stanag30", "ammo-item": "556", "charges": 30 },
{ "item": "EMPbomb" },
{ "item": "bot_grenade_hack", "count": 2 }
]
},
{
"type": "item_group",
"id": "NC_ROBOFAC_MERC_1_wield",
"subtype": "collection",
"items": [
{ "item": "acr", "ammo-item": "556", "charges": 30, "contents-item": [ "shoulder_strap", "holo_sight", "suppressor" ] }
]
},
{
"id": "TALK_ROBOFAC_MERC_1",
"type": "talk_topic",
"dynamic_line": [ "Something to say?", "I charge hourly, so be quick...", "Hey.", "...", "Yes?", "What's up?", "Good to see you." ],
"responses": [
{
"text": "Who are you?",
"condition": { "not": { "u_has_var": "robofac_merc_1_stay", "type": "dialogue", "context": "robofac_merc_1", "value": "yes" } },
"topic": "TALK_ROBOFAC_MERC_1_WHO"
},
{
"text": "Good to see you around.",
"condition": { "u_has_var": "robofac_merc_1_stay", "type": "dialogue", "context": "robofac_merc_1", "value": "yes" },
"topic": "TALK_ROBOFAC_MERC_1_MAIN"
},
{
"text": "Want help with something else?",
"condition": { "u_has_var": "gold_mission_complete", "type": "general", "context": "robofac_merc_1", "value": "yes" },
"topic": "TALK_MISSION_LIST"
},
{ "text": "Never mind, I was about to leave.", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_ROBOFAC_MERC_1_WHO",
"type": "talk_topic",
"dynamic_line": "Same as you. Some nobody doing dirty work for scraps, I mean, no offense.",
"responses": [
{ "text": "I guess that makes two of us.", "topic": "TALK_ROBOFAC_MERC_1_TWO_OF_US" },
{ "text": "Well, never mind.", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_ROBOFAC_MERC_1_TWO_OF_US",
"type": "talk_topic",
"dynamic_line": "Good. I could do with some company between jobs. Feel free to stay around, if you want.",
"speaker_effect": {
"effect": { "u_add_var": "robofac_merc_1_stay", "type": "dialogue", "context": "robofac_merc_1", "value": "yes" },
"sentinel": "robofac_merc_1_stay"
},
"responses": [
{ "text": "Alright.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" },
{ "text": "Guess I could stay for a while", "topic": "TALK_ROBOFAC_MERC_1_MAIN" },
{ "text": "Actually, I have some places to be right now.", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_ROBOFAC_MERC_1_MAIN",
"type": "talk_topic",
"dynamic_line": [
"Rough out there isn't it?",
"Well?",
"Good to have some company, I guess.",
"Have something to say?",
"...",
"Didn't you want something?",
"..."
],
"responses": [
{ "text": "Anything interesting going on?", "topic": "TALK_ROBOFAC_MERC_1_GOING_ON" },
{
"text": "Anything on your mind?",
"condition": {
"and": [
{ "not": { "u_has_var": "gold_mission_complete", "type": "general", "context": "robofac_merc_1", "value": "yes" } },
{ "not": { "u_has_mission": "MISSION_ROBOFAC_MERC_1_GOLD" } }
]
},
"topic": "TALK_ROBOFAC_MERC_1_COINS"
},
{
"text": "Anything on your mind?",
"condition": { "u_has_var": "gold_mission_complete", "type": "general", "context": "robofac_merc_1", "value": "yes" },
"topic": "TALK_ROBOFAC_MERC_1_RANDOM_THOUGHTS"
},
{ "text": "What do you know about our employers?", "topic": "TALK_ROBOFAC_MERC_1_ASK_HUB" },
{ "text": "Well, I should get going.", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_ROBOFAC_MERC_1_ASK_HUB",
"type": "talk_topic",
"dynamic_line": "Not much really. They made me track and destroy some government documents a while back, of course I gave them a read first but there wasn't much.\n\n As far as I know, this place held some experimental computer network before everything went to shit. What's going on now is anybody's guess.",
"responses": [ { "text": "Well, I was hoping for more.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
},
{
"id": "TALK_ROBOFAC_MERC_1_GOING_ON",
"type": "talk_topic",
"dynamic_line": [ "Just came back from a job. Trying to rest for a short while." ],
"responses": [ { "text": "...", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
},
{
"id": "TALK_ROBOFAC_MERC_1_COINS",
"type": "talk_topic",
"dynamic_line": "Have you noticed they pay us in tiny little gold coins, it's bizarre I say. One would think they have a gold mine in there, but no, they don't, so they make me cross the damned world grabbing gold bars. ",
"responses": [
{ "text": "I guess I could help with that...", "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION" },
{ "text": "Now that you mention it, it does seem rather strange.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
]
},
{
"id": "TALK_ROBOFAC_MERC_1_RANDOM_THOUGHTS",
"type": "talk_topic",
"dynamic_line": [
"Thinking I should go hunt something soon...",
"Wondering if things will get better someday...",
"Hmm? Nothing, I guess I just like resting in this place.",
"Have you ever noticed how... wait no, never mind.",
"I heard some strange dimensional resonance caused all this, do you think it has happened to other places?",
"You noticed this place has working WI-FI? Well not the rest of the net works anyways."
],
"responses": [ { "text": "...", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
},
{
"id": "TALK_ROBOFAC_MERC_1_GOLD_MISSION",
"type": "talk_topic",
"dynamic_line": "I can offer you the whole of my payment for every bar or equivalent you bring. But keep silent about this, it's supposed to be my job.",
"responses": [
{ "text": "We have a deal then.", "effect": { "add_mission": "MISSION_ROBOFAC_MERC_1_GOLD" }, "topic": "TALK_DONE" },
{ "text": "Actually, I don't think I have time for that, sorry.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
]
},
{
"id": "MISSION_ROBOFAC_MERC_1_GOLD",
"type": "mission_definition",
"name": "Retrieve chunks of gold",
"description": "Find 200 units of gold.",
"goal": "MGOAL_FIND_ITEM",
"difficulty": 5,
"followup": "MISSION_ROBOFAC_MERC_1_GOLD",
"value": 50000,
"item": "gold_small",
"count": 200,
"origins": [ "ORIGIN_SECONDARY" ],
"has_generic_rewards": false,
"dialogue": {
"describe": "I could do with some help...",
"offer": "I'm still supposed to scavenge for gold, I can offer you the same deal as last time.",
"accepted": "Wonderful.",
"rejected": "Well I'll look for the gold myself.",
"advice": "Try searching banks and security vans.",
"inquire": "You got that gold yet?",
"success": "I appreciate it, here's your pay.",
"success_lie": "Yeah, sure.",
"failure": "Well I'll have to scavenge the gold myself, thanks for nothing."
},
"end": {
"opinion": { "trust": 1, "value": 1 },
"effect": [
{ "u_buy_item": "RobofacCoin", "count": 8 },
{ "u_add_var": "gold_mission_complete", "type": "general", "context": "robofac_merc_1", "value": "yes" }
]
}
}
]

0 comments on commit 722246a

Please sign in to comment.