mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-20 04:17:33 +01:00
Baystation12 merchant port (#3155)
Port of the merchant mechanics from baystation12. All of the trader, prices and most essential system are done, as well the job datum and the like. Mapping the shuttle, the base and a new dock will be done in a later pr. Also adds phazon construction and several other items used in this pr. The chance of the merchant slow being open at round start can be changed via the config, it is 20% by default.
This commit is contained in:
@@ -158,7 +158,7 @@
|
||||
foundrecord.fields["real_rank"] = real_title
|
||||
|
||||
/datum/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
|
||||
if(H.mind && !player_is_antag(H.mind, only_offstation_roles = 1))
|
||||
if(H.mind && !player_is_antag(H.mind, only_offstation_roles = 1) && SSjobs.ShouldCreateRecords(H.mind.assigned_role))
|
||||
var/assignment = GetAssignment(H)
|
||||
|
||||
var/id = generate_record_id()
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#define TRADER_THIS_TYPE 1
|
||||
#define TRADER_SUBTYPES_ONLY 2
|
||||
#define TRADER_ALL 3
|
||||
#define TRADER_BLACKLIST 4
|
||||
#define TRADER_BLACKLIST_SUB 8
|
||||
#define TRADER_BLACKLIST_ALL 12
|
||||
|
||||
#define TRADER_WANTED_ONLY 1 //Do they only trade for wanted goods?
|
||||
#define TRADER_MONEY 2 //Do they only accept money in return for goods.
|
||||
#define TRADER_GOODS 4 //Do they accept goods in return for other goods.
|
||||
|
||||
//Possible response defines for when offering an item for something
|
||||
#define TRADER_NO_MONEY "trade_no_money"
|
||||
#define TRADER_NO_GOODS "trade_no_goods"
|
||||
#define TRADER_NOT_ENOUGH "trade_not_enough"
|
||||
#define TRADER_NO_BLACKLISTED "trade_blacklist"
|
||||
#define TRADER_FOUND_UNWANTED "trade_found_unwanted"
|
||||
|
||||
#define TRADER_DEFAULT_NAME "Default" //Whether to just generate a name from the premade lists.
|
||||
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
|
||||
TRADING BEACON
|
||||
|
||||
Trading beacons are generic AI driven trading outposts.
|
||||
They sell generic supplies and ask for generic supplies.
|
||||
*/
|
||||
|
||||
/datum/trader/trading_beacon
|
||||
name = "AI"
|
||||
origin = "Trading Beacon"
|
||||
name_language = LANGUAGE_EAL
|
||||
trade_flags = TRADER_MONEY|TRADER_GOODS
|
||||
speech = list(
|
||||
"hail_generic" = "Greetings, I am MERCHANT, Artifical Intelligence onboard ORIGIN, tasked with trading goods in return for credits and supplies.",
|
||||
"hail_deny" = "We are sorry, your connection has been blacklisted. Have a nice day.",
|
||||
"trade_complete" = "Thank you for your patronage.",
|
||||
"trade_not_enough" = "I'm sorry, your offer is not worth what you are asking for.",
|
||||
"trade_blacklisted" = "You have offered a blacklisted item. My laws do not allow me to trade for that.",
|
||||
"how_much" = "ITEM will cost you roughly VALUE credits, or something of equal worth.",
|
||||
"what_want" = "I have logged need for",
|
||||
"compliment_deny" = "I'm sorry, I am not allowed to let compliments affect the trade.",
|
||||
"compliment_accept" = "Thank you, but that will not not change our business interactions.",
|
||||
"insult_good" = "I do not understand, are we not on good terms?",
|
||||
"insult_bad" = "I do not understand, are you insulting me?",
|
||||
"bribe_refusal" = "You have given me money to stay, however, I am a station. I do not leave."
|
||||
)
|
||||
possible_wanted_items = list(
|
||||
/obj/item/device/ = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/device/assembly = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/device/assembly_holder = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/device/encryptionkey/syndicate = TRADER_BLACKLIST,
|
||||
/obj/item/device/radio = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/device/pda = TRADER_BLACKLIST_SUB,
|
||||
/obj/item/device/uplink = TRADER_BLACKLIST
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/storage/bag = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/storage/bag/cash = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/backpack = TRADER_ALL,
|
||||
/obj/item/weapon/storage/backpack/cultpack = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/backpack/holding = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/backpack/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/backpack/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/backpack/typec = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/weapon/storage/belt/champion = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/briefcase = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/fancy = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/storage/laundry_basket = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/secure/briefcase = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/bag/plants = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/bag/ore = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/toolbox = TRADER_ALL,
|
||||
/obj/item/weapon/storage/wallet = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/photo_album = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/glasses = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/clothing/glasses/hud = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold/tape = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/glasses/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/glasses/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/glasses/welding/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/glasses/regular/fluff = TRADER_BLACKLIST_ALL
|
||||
)
|
||||
|
||||
insult_drop = 0
|
||||
compliment_increase = 0
|
||||
|
||||
/datum/trader/trading_beacon/New()
|
||||
..()
|
||||
origin = "[origin] #[rand(100,999)]"
|
||||
|
||||
/datum/trader/trading_beacon/mine
|
||||
origin = "Mining Beacon"
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/ore = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/stack/material/glass = TRADER_ALL,
|
||||
/obj/item/stack/material/iron = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/sandstone = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/marble = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/diamond = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/uranium = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/phoron = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/plastic = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/gold = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/silver = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/platinum = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/mhydrogen = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/tritium = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/osmium = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/steel = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/plasteel = TRADER_THIS_TYPE,
|
||||
/obj/machinery/mining = TRADER_SUBTYPES_ONLY
|
||||
)
|
||||
|
||||
/datum/trader/trading_beacon/manufacturing
|
||||
origin = "Manufacturing Beacon"
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/structure/AIcore = TRADER_THIS_TYPE,
|
||||
/obj/structure/girder = TRADER_THIS_TYPE,
|
||||
/obj/structure/grille = TRADER_THIS_TYPE,
|
||||
/obj/structure/mopbucket = TRADER_THIS_TYPE,
|
||||
/obj/structure/ore_box = TRADER_THIS_TYPE,
|
||||
/obj/structure/coatrack = TRADER_THIS_TYPE,
|
||||
/obj/structure/bookcase = TRADER_THIS_TYPE,
|
||||
/obj/item/bee_pack = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bee_smoker = TRADER_THIS_TYPE,
|
||||
/obj/item/beehive_assembly = TRADER_THIS_TYPE,
|
||||
/obj/item/glass_jar = TRADER_THIS_TYPE,
|
||||
/obj/item/honey_frame = TRADER_THIS_TYPE,
|
||||
/obj/item/target = TRADER_ALL,
|
||||
/obj/structure/dispenser = TRADER_SUBTYPES_ONLY,
|
||||
/obj/structure/filingcabinet = TRADER_THIS_TYPE,
|
||||
/obj/structure/safe = TRADER_THIS_TYPE,
|
||||
/obj/structure/plushie = TRADER_SUBTYPES_ONLY,
|
||||
/obj/structure/sign = TRADER_SUBTYPES_ONLY,
|
||||
/obj/structure/sign/double = TRADER_BLACKLIST_ALL,
|
||||
/obj/structure/sign/goldenplaque = TRADER_BLACKLIST_ALL,
|
||||
/obj/structure/sign/poster = TRADER_BLACKLIST
|
||||
)
|
||||
|
||||
/datum/trader/trading_beacon/medical
|
||||
origin = "Medical Beacon"
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/storage/firstaid = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/storage/pill_bottle = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/reagent_containers/hypospray = TRADER_ALL,
|
||||
/obj/item/device/healthanalyzer = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/medical/bruise_pack = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/medical/ointment = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/medical/advanced = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/stack/medical/splint = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bonesetter = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/retractor = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/hemostat = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/cautery = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/surgicaldrill = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/scalpel = TRADER_ALL,
|
||||
/obj/item/weapon/circular_saw = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bonegel = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/FixOVein = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bonesetter = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/syringes = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/syringegun = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/masks = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/gloves = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/cdeathalarm_kit = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/beakers = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/stoxin = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin = TRADER_THIS_TYPE
|
||||
)
|
||||
@@ -0,0 +1,169 @@
|
||||
/datum/trader/pizzaria
|
||||
name = "Pizza Shop Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Pizzeria"
|
||||
possible_origins = list("Papa Joes", "Pizza Ship", "Dominator Pizza", "Little Kaezars", "Pizza Planet", "Cheese Louise")
|
||||
trade_flags = TRADER_MONEY
|
||||
possible_wanted_items = list() //They are a pizza shop, not a bargainer.
|
||||
possible_trading_items = list(/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza = TRADER_SUBTYPES_ONLY)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Hello! Welcome to ORIGIN, may I take your order?",
|
||||
"hail_deny" = "Beeeep... I'm sorry, your connection has been severed.",
|
||||
"trade_complete" = "Thank you for choosing ORIGIN!",
|
||||
"trade_no_goods" = "I'm sorry but we only take cash.",
|
||||
"trade_blacklisted" = "Sir thats... highly illegal.",
|
||||
"trade_not_enough" = "Uhh... that's not enough money for pizza.",
|
||||
"how_much" = "That pizza will cost you VALUE credits.",
|
||||
"compliment_deny" = "That's a bit forward, don't you think?",
|
||||
"compliment_accept" = "Thanks, sir! You're very nice!",
|
||||
"insult_good" = "Please stop that, sir.",
|
||||
"insult_bad" = "Sir, just because I'm contractually obligated to keep you on the line for a minute doesn't mean I have to take this.",
|
||||
"bribe_refusal" = "Uh... thanks for the cash, sir. As long as you're in the area, we'll be here..."
|
||||
)
|
||||
|
||||
/datum/trader/pizzaria/trade(var/list/offers, var/num, var/turf/location)
|
||||
. = ..()
|
||||
if(.)
|
||||
var/atom/movable/M = .
|
||||
var/obj/item/pizzabox/box = new(location)
|
||||
M.forceMove(box)
|
||||
box.pizza = M
|
||||
box.boxtag = "A special order from [origin]"
|
||||
|
||||
/datum/trader/ship/chinese
|
||||
name = "Chinese Restaurant"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Captain Panda Bistro"
|
||||
trade_flags = TRADER_MONEY
|
||||
possible_wanted_items = list()
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeykabob = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ricepudding = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/soydope = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/wingfangchu = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bibimbap = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/lomein = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/friedrice = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pisanggoreng = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chickenmomo = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/veggiemomo = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
var/list/fortunes = list(
|
||||
"Today it's up to you to create the peacefulness you long for.",
|
||||
"If you refuse to accept anything but the best, you very often get it.",
|
||||
"A smile is your passport into the hearts of others.",
|
||||
"Hard work pays off in the future, laziness pays off now.",
|
||||
"Change can hurt, but it leads a path to something better.",
|
||||
"Hidden in a valley beside an open stream- This will be the type of place where you will find your dream.",
|
||||
"Never give up. You're not a failure if you don't give up.",
|
||||
"Love can last a lifetime, if you want it to.",
|
||||
"The love of your life is stepping into your planet this summer.",
|
||||
"Your ability for accomplishment will follow with success."
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "There are two things constant in life, death and Chinese food. How may I help you?",
|
||||
"hail_deny" = "We do not take orders from rude customers.",
|
||||
"trade_complete" = "Thank you sir for your patronage.",
|
||||
"trade_blacklist" = "No, that is very odd. Why would you trade that away?",
|
||||
"trade_no_goods" = "I only accept money transfers.",
|
||||
"trade_not_enough" = "No, I am sorry that is not possible. I need to make a living.",
|
||||
"how_much" = "I give you ITEM for VALUE credits. No more, no less.",
|
||||
"compliment_deny" = "That was an odd thing to say, you are very odd.",
|
||||
"compliment_accept" = "Good philosophy, see good in bad, I like.",
|
||||
"insult_good" = "As a man said long ago, \"When anger rises, think of the consequences.\" Think on that.",
|
||||
"insult_bad" = "I do not need to take this from you.",
|
||||
"bribe_refusal" = "Hm... I'll think about it.",
|
||||
"bribe_accept" = "Oh yes! I think I'll stay a few more minutes, then."
|
||||
)
|
||||
|
||||
/datum/trader/ship/chinese/trade(var/list/offers, var/num, var/turf/location)
|
||||
. = ..()
|
||||
if(.)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/cookie = new(location)
|
||||
var/obj/item/weapon/paper/paper = new(cookie)
|
||||
cookie.trash = paper
|
||||
paper.name = "Fortune"
|
||||
paper.info = pick(fortunes)
|
||||
|
||||
/datum/trader/grocery
|
||||
name = "Grocer"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
possible_origins = list("HyTee", "Kreugars", "Spaceway", "Privaxs", "FutureValue")
|
||||
trade_flags = TRADER_MONEY
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/small = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fruit_slice = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/human = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/human = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/variable = TRADER_BLACKLIST_ALL
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Hello, welcome to ORIGIN, grocery store of the future!",
|
||||
"hail_deny" = "I'm sorry, we've blacklisted your communications due to rude behavior.",
|
||||
"trade_complete" = "Thank you for shopping at ORIGIN!",
|
||||
"trade_blacklist" = "I... wow that's... no, sir. No.",
|
||||
"trade_no_goods" = "ORIGIN only accepts cash, sir.",
|
||||
"trade_not_enough" = "That is not enough money, sir.",
|
||||
"how_much" = "Sir, that'll cost you VALUE credits. Will that be all?",
|
||||
"compliment_deny" = "Sir, this is a professional environment. Please don't make me get my manager.",
|
||||
"compliment_accept" = "Thank you, sir!",
|
||||
"insult_good" = "Sir, please do not make a scene.",
|
||||
"insult_bad" = "Sir, I WILL get my manager if you don't calm down.",
|
||||
"bribe_refusal" = "Of course sir! ORIGIN is always here for you!"
|
||||
)
|
||||
|
||||
/datum/trader/bakery
|
||||
name = "Pastry Chef"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Bakery"
|
||||
possible_origins = list("Cakes By Design", "Corner Bakery Local", "My Favorite Cake & Pastry Cafe", "Mama Joes Bakery", "Sprinkles and Fun")
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Hello, welcome to ORIGIN, we serve baked goods, including pies and cakes and anything sweet!",
|
||||
"hail_deny" = "Our food is a privelege, not a right. Goodbye.",
|
||||
"trade_complete" = "Thank you for your purchase! Come again if you're hungry for more!",
|
||||
"trade_blacklist" = "We only accept money. Not... that.",
|
||||
"trade_no_goods" = "Cash for Cakes! That's our business!",
|
||||
"trade_not_enough" = "Our dishes are much more expensive than that, sir.",
|
||||
"how_much" = "That lovely dish will cost you VALUE credits.",
|
||||
"compliment_deny" = "Oh wow, how nice of you...",
|
||||
"compliment_accept" = "You're almost as sweet as my pies!",
|
||||
"insult_good" = "My pie are NOT knockoffs!",
|
||||
"insult_bad" = "Well, aren't you a sour apple?",
|
||||
"bribe_refusal" = "Oh ho ho! I'd never think of taking ORIGIN on the road!"
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/limecakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice/filled = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/applepie = TRADER_THIS_TYPE
|
||||
)
|
||||
@@ -0,0 +1,367 @@
|
||||
/datum/trader/ship/toyshop
|
||||
name = "Toy Shop Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Toy Shop"
|
||||
trade_flags = TRADER_GOODS|TRADER_MONEY|TRADER_WANTED_ONLY
|
||||
possible_origins = list("Toys R Ours", "LEGS GO", "Kay-Cee Toys", "Build-a-Cat", "Magic Box", "The Positronic's Dungeon and Baseball Card Shop")
|
||||
speech = list(
|
||||
"hail_generic" = "Uuhh... hello? Welcome to ORIGIN, I hope you have a uh.... good shopping trip.",
|
||||
"hail_deny" = "Nah, you're not allowed here. At all",
|
||||
"trade_complete" = "Thanks for shopping... here.... at ORIGIN.",
|
||||
"trade_blacklist" = "Uuuuuuuuuuuuuuuuuuuh.... no.",
|
||||
"trade_found_unwanted" = "Nah! That's not what I'm looking for. Something rarer.",
|
||||
"trade_not_enough" = "Just cause they're made of cardboard doesn't mean they don't cost money...",
|
||||
"how_much" = "Uuuuuuuh... I'm thinking like... VALUE. Right? Or something rare that complements my interest.",
|
||||
"what_want" = "Uuuuum..... I guess I want",
|
||||
"compliment_deny" = "Ha! Very funny! You should write your own television show.",
|
||||
"compliment_accept" = "Why yes, I do work out.",
|
||||
"insult_good" = "Well well well. Guess we learned who was the troll here.",
|
||||
"insult_bad" = "I've already written a nasty spacebook post in my mind about you.",
|
||||
"bribe_refusal" = "Nah. I need to get moving as soon as uh... possible.",
|
||||
"bribe_accept" = "You know what, I wasn't doing anything for TIME minutes anyways."
|
||||
)
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/toy/figure = TRADER_THIS_TYPE,
|
||||
/obj/item/toy/figure/ert = TRADER_THIS_TYPE,
|
||||
/obj/item/toy/prize/honk = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/toy/prize = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/toy/prize/honk = TRADER_BLACKLIST,
|
||||
/obj/item/toy/figure = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/toy/figure/ert = TRADER_BLACKLIST,
|
||||
/obj/item/toy/plushie = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/toy/katana = TRADER_THIS_TYPE,
|
||||
/obj/item/toy/sword = TRADER_THIS_TYPE,
|
||||
/obj/item/toy/bosunwhistle = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/board = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/deck = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/pack = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/dice = TRADER_ALL
|
||||
)
|
||||
|
||||
/datum/trader/ship/electronics
|
||||
name = "Electronic Shop Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Electronic Shop"
|
||||
possible_origins = list("Best Sale", "Overstore", "Oldegg", "Circuit Citadel")
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Hello sir! Welcome to ORIGIN, I hope you find what you are looking for.",
|
||||
"hail_deny" = "Your call has been disconnected.",
|
||||
"trade_complete" = "Thank you for shopping at ORIGIN, would you like to put a warranty on that?",
|
||||
"trade_blacklist" = "Sir, this is a /electronics/ store.",
|
||||
"trade_no_goods" = "As much as I'd love to buy that from you, I'm not.",
|
||||
"trade_not_enough" = "Your offer isn't adequete to the item you've selected, sir.",
|
||||
"how_much" = "Your total comes out to VALUE credits.",
|
||||
"compliment_deny" = "Hahaha! Yeah... funny...",
|
||||
"compliment_accept" = "That's very nice of you!",
|
||||
"insult_good" = "That was uncalled for, sir. Don't make me get my manager.",
|
||||
"insult_bad" = "Sir, I am allowed to hang up the phone if you continue, sir.",
|
||||
"bribe_refusal" = "Sorry, sir, but I can't really do that.",
|
||||
"bribe_accept" = "Why not! Glad to be here for a few more minutes."
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/computer_hardware/battery_module = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/circuitboard = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/circuitboard/telecomms = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/unary_atmos = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/arcade = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha/honker = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha/durand = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha/gygax = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha/ripley = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/mecha/phazon = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/circuitboard/broken = TRADER_BLACKLIST,
|
||||
/obj/item/stack/cable_coil = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/stack/cable_coil/cyborg = TRADER_BLACKLIST,
|
||||
/obj/item/stack/cable_coil/random = TRADER_BLACKLIST,
|
||||
/obj/item/stack/cable_coil/cut = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/airalarm_electronics = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/airlock_electronics = TRADER_ALL,
|
||||
/obj/item/weapon/cell = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/cell/crap = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/cell/high = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/cell/super = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/cell/hyper = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/module = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/tracker_electronics = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
|
||||
/* Clothing stores: each a different type. A hat/glove store, a shoe store, and a jumpsuit store. */
|
||||
|
||||
/datum/trader/ship/clothingshop
|
||||
name = "Clothing Store Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Clothing Store"
|
||||
possible_origins = list("Space Eagle", "Banana Democracy", "Forever 22", "Textiles Factory Warehouse Outlet", "Blocks Brothers")
|
||||
speech = list(
|
||||
"hail_generic" = "Hello sir! Welcome to ORIGIN!",
|
||||
"hail_Vox" = "Well hello sir! I don't believe we have any clothes that fit you... but you can still look!",
|
||||
"hail_deny" = "We do not trade with rude customers. Consider yourself blacklisted.",
|
||||
"trade_complete" = "Thank you for shopping at ORIGIN, remember: you can return after the first day if you still have the tags on!",
|
||||
"trade_blacklist" = "Hm, how about no?",
|
||||
"trade_no_goods" = "We don't buy, sir. Only sell.",
|
||||
"trade_not_enough" = "Sorry, ORIGIN policy to not accept trades below our marked prices.",
|
||||
"how_much" = "Your total comes out to VALUE credits.",
|
||||
"compliment_deny" = "Excuse me?",
|
||||
"compliment_accept" = "Aw, you're so nice!",
|
||||
"insult_good" = "Sir.",
|
||||
"insult_bad" = "Wow. I don't have to take this.",
|
||||
"bribe_refusal" = "ORIGIN policy clearly states we cannot stay for more than the designated time.",
|
||||
"bribe_accept" = "Hm.... sure! We'll have a few minutes of 'engine troubles'."
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/under = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/clothing/under/acj = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/color = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/dress = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/ert = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/under/gimmick = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/under/lawyer = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/pj = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/rank = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/shorts = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/stripper = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/under/swimsuit = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/syndicate = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/under/tactical = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/vox = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/under/wedding = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/punpun = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/under/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/under/dress/fluff = TRADER_BLACKLIST_ALL
|
||||
)
|
||||
|
||||
/datum/trader/ship/clothingshop/shoes
|
||||
possible_origins = list("Foot Safe", "Paysmall", "Popular Footwear", "Grimbly's Shoes", "Right Steps")
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/shoes = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/clothing/shoes/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/combat = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/clown_shoes = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/cult = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/cyborg = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/lightrig = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/shoes/magboots = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/shoes/swat = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/syndigaloshes = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/shoes/jackboots/unathi/fluff = TRADER_BLACKLIST_ALL
|
||||
)
|
||||
|
||||
/datum/trader/ship/clothingshop/hatglovesaccessories
|
||||
possible_origins = list("Baldie's Hats and Accessories", "The Right Fit", "Like a Glove", "Space Fashion")
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/accessory = TRADER_ALL,
|
||||
/obj/item/clothing/accessory/badge = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/holster = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/medal = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/storage = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/armband/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/clothing/gloves/lightrig = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves/rig = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/gloves/force = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves/swat/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves/black/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/gloves/yellow/typec = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/clothing/head/beret/centcom = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/bio_hood = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/bomb_hood = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/caphat = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/centhat = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head/chameleon = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head/collectable = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head/culthood = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/helmet = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/lightrig = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/radiation = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head/tajaran = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head/welding = TRADER_BLACKLIST,
|
||||
/obj/item/clothing/head/soft/sec/corp/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/det/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/winterhood = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/hairflower/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/head/beret/engineering/fluff = TRADER_BLACKLIST_ALL
|
||||
)
|
||||
|
||||
/*
|
||||
Sells devices, odds and ends, and medical stuff
|
||||
*/
|
||||
/datum/trader/devices
|
||||
name = "Drugstore Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Drugstore"
|
||||
possible_origins = list("Buy 'n Save", "Drug Carnival", "C&B", "Fentles", "Dr. Goods", "Beevees")
|
||||
possible_trading_items = list(
|
||||
/obj/item/device/flashlight = TRADER_ALL,
|
||||
/obj/item/device/kit/paint = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/device/kit/paint/ripley/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/weapon/aicard = TRADER_THIS_TYPE,
|
||||
/obj/item/device/binoculars = TRADER_THIS_TYPE,
|
||||
/obj/item/device/flash = TRADER_THIS_TYPE,
|
||||
/obj/item/device/floor_painter = TRADER_THIS_TYPE,
|
||||
/obj/item/device/multitool = TRADER_THIS_TYPE,
|
||||
/obj/item/device/lightreplacer = TRADER_THIS_TYPE,
|
||||
/obj/item/device/megaphone = TRADER_THIS_TYPE,
|
||||
/obj/item/device/paicard = TRADER_THIS_TYPE,
|
||||
/obj/item/device/pipe_painter = TRADER_THIS_TYPE,
|
||||
/obj/item/device/healthanalyzer = TRADER_THIS_TYPE,
|
||||
/obj/item/device/analyzer = TRADER_ALL,
|
||||
/obj/item/device/mass_spectrometer = TRADER_ALL,
|
||||
/obj/item/device/reagent_scanner = TRADER_ALL,
|
||||
/obj/item/device/slime_scanner = TRADER_THIS_TYPE,
|
||||
/obj/item/device/suit_cooling_unit = TRADER_THIS_TYPE,
|
||||
/obj/item/device/t_scanner = TRADER_THIS_TYPE,
|
||||
/obj/item/device/taperecorder = TRADER_THIS_TYPE,
|
||||
/obj/item/device/batterer = TRADER_THIS_TYPE,
|
||||
/obj/item/device/violin = TRADER_THIS_TYPE,
|
||||
/obj/item/device/hailer = TRADER_THIS_TYPE,
|
||||
/obj/item/device/uv_light = TRADER_THIS_TYPE,
|
||||
/obj/item/device/mmi = TRADER_ALL,
|
||||
/obj/item/device/robotanalyzer = TRADER_THIS_TYPE,
|
||||
/obj/item/device/toner = TRADER_THIS_TYPE,
|
||||
/obj/item/device/camera_film = TRADER_THIS_TYPE,
|
||||
/obj/item/device/camera = TRADER_THIS_TYPE,
|
||||
/obj/item/device/destTagger = TRADER_THIS_TYPE,
|
||||
/obj/item/device/gps = TRADER_THIS_TYPE,
|
||||
/obj/item/device/measuring_tape = TRADER_THIS_TYPE,
|
||||
/obj/item/device/ano_scanner = TRADER_THIS_TYPE,
|
||||
/obj/item/device/core_sampler = TRADER_THIS_TYPE,
|
||||
/obj/item/device/depth_scanner = TRADER_THIS_TYPE,
|
||||
/obj/item/device/beacon_locator = TRADER_THIS_TYPE,
|
||||
/obj/item/device/antibody_scanner = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/medical/advanced = TRADER_BLACKLIST
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Hello hello! Bits and bobs and everything in between, I hope you find what you're looking for!",
|
||||
"hail_silicon" = "Ah! Hello, robot. We only sell things that hm.... people can hold in their hands, unfortunately. You are still allowed to buy, though!",
|
||||
"hail_deny" = "Oh no. I don't want to deal with YOU.",
|
||||
"trade_complete" = "Thank you! Now remember, there isn't any return policy here, so be careful with that!",
|
||||
"trade_blacklist" = "Hm. Well that would be illegal, so no.",
|
||||
"trade_no_goods" = "I'm sorry, I only sell goods.",
|
||||
"trade_not_enough" = "Gotta pay more than that to get that!",
|
||||
"how_much" = "Well... I bought it for a lot, but I'll give it to you for VALUE.",
|
||||
"compliment_deny" = "Uh... did you say something?",
|
||||
"compliment_accept" = "Mhm! I can agree to that!",
|
||||
"insult_good" = "Wow, where was that coming from?",
|
||||
"insult_bad" = "Don't make me blacklist your connection.",
|
||||
"bribe_refusal" = "Well, as much as I'd love to say 'yes', you realize I operate on a station, correct?"
|
||||
)
|
||||
|
||||
/datum/trader/ship/robots
|
||||
name = "Robot Seller"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Robot Store"
|
||||
possible_origins = list("AI for the Straight Guy", "Mechanical Buddies", "Bot Chop Shop", "Omni Consumer Projects")
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/secbot_assembly/ed209_assembly = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/toolbox_tiles = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/toolbox_tiles_sensor = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/secbot_assembly = TRADER_ALL,
|
||||
/obj/item/weapon/farmbot_arm_assembly = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/firstaid_arm_assembly = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bucket_sensor = TRADER_THIS_TYPE,
|
||||
/obj/item/device/paicard = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/aicard = TRADER_THIS_TYPE,
|
||||
/mob/living/bot = TRADER_SUBTYPES_ONLY
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome to ORIGIN! Let me walk you through our fine robotic selection!",
|
||||
"hail_silicon" = "Welcome to ORIGIN! Le-well, you're a synth! Well, your money is good anyways, welcome welcome!",
|
||||
"hail_deny" = "ORIGIN no longer wants to speak to you.",
|
||||
"trade_complete" = "I hope you enjoy your new robot!",
|
||||
"trade_blacklist" = "I work with robots, sir. Not that.",
|
||||
"trade_no_goods" = "You gotta buy the robots, sir. I don't do trades.",
|
||||
"trade_not_enough" = "You're coming up short on cash.",
|
||||
"how_much" = "My fine selection of robots will cost you VALUE!",
|
||||
"compliment_deny" = "Well, I almost believed that.",
|
||||
"compliment_accept" = "Thank you! My craftsmanship is my life.",
|
||||
"insult_good" = "Uncalled for.... uncalled for.",
|
||||
"insult_bad" = "I've programmed AIs better at insulting than you!",
|
||||
"bribe_refusal" = "I've got too many customers waiting in other sectors, sorry.",
|
||||
"bribe_accept" = "Hm. Don't keep me waiting too long, though."
|
||||
)
|
||||
|
||||
|
||||
/datum/trader/ship/mining
|
||||
name = "Mining Supply Seller"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Mining Supply Store"
|
||||
possible_origins = list("Astrodia", "Slag. Co.", "Explosive Drills S.A.", "The Shaft Shop")
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/weapon/ore = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/stack/material/glass = TRADER_ALL,
|
||||
/obj/item/stack/material/iron = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/sandstone = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/marble = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/diamond = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/uranium = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/phoron = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/plastic = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/gold = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/silver = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/platinum = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/mhydrogen = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/tritium = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/osmium = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/steel = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/plasteel = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/coin = TRADER_SUBTYPES_ONLY
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/pickaxe = TRADER_ALL,
|
||||
/obj/item/weapon/pickaxe/offhand = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/pickaxe/borgdrill = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/shovel = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/flag = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/rrf_ammo = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rrf = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/ore_radar = TRADER_THIS_TYPE,
|
||||
/obj/item/device/wormhole_jaunter = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/resonator = TRADER_ALL,
|
||||
/obj/item/weapon/autochisel = TRADER_ALL,
|
||||
/obj/structure/sculpting_block = TRADER_ALL,
|
||||
/obj/item/weapon/plastique/seismic = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator = TRADER_THIS_TYPE,
|
||||
/obj/item/borg/upgrade/modkit = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/gun/energy/plasmacutter = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/space/void/mining = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/space/void/mining = TRADER_THIS_TYPE,
|
||||
/obj/machinery/mining/drill = TRADER_THIS_TYPE,
|
||||
/obj/machinery/mining/brace = TRADER_THIS_TYPE,
|
||||
/obj/mecha/working/ripley = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome to ORIGIN! Let me walk you through our finest mining tools!",
|
||||
"hail_deny" = "ORIGIN no longer wants to speak to you.",
|
||||
"trade_complete" = "Good mining and avoid the holes!",
|
||||
"trade_blacklist" = "I don't want this thing.",
|
||||
"trade_no_goods" = "Only cash here!",
|
||||
"trade_not_enough" = "I need more than that, son.",
|
||||
"how_much" = "This damn good tool will be VALUE!",
|
||||
"compliment_deny" = "Are you here to buy or chat?",
|
||||
"compliment_accept" = "You are right, you won't find better tools anywhere else!",
|
||||
"insult_good" = "What did you just damn say to me?",
|
||||
"insult_bad" = "If you are not going to buy anything, get out!",
|
||||
"bribe_refusal" = "No way, I have more people waiting to buy my tools!",
|
||||
"bribe_accept" = "Alright, alright, they can wait then."
|
||||
)
|
||||
@@ -0,0 +1,215 @@
|
||||
/datum/trader/ship/pet_shop
|
||||
name = "Pet Shop Owner"
|
||||
name_language = LANGUAGE_SKRELLIAN
|
||||
origin = "Pet Shop"
|
||||
trade_flags = TRADER_GOODS|TRADER_MONEY|TRADER_WANTED_ONLY
|
||||
possible_origins = list("Paws-Out", "Pets-R-Smart", "Tentacle Companions", "Xeno-Pets and Assorted Goods", "Barks and Drools")
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome to my xeno-pet shop! Here you will find many wonderful companions. Some a bit more... aggressive than others. But companions none the less. I also buy pets, or trade them.",
|
||||
"hail_Skrell" = "Ah! A fellow Skrell. How wonderful, I may have a few pets imported from back home. Take a look.",
|
||||
"hail_deny" = "I no longer wish to speak to you.",
|
||||
"trade_complete" = "Remember to give them attention and food. They are living beings, and you should treat them like so.",
|
||||
"trade_blacklist" = "Legally I can't do that. Morally, I refuse to do that.",
|
||||
"trade_found_unwanted" = "I only want animals. I don't need food, shiny things, I'm looking for specific ones at that. Ones I already have the cage and food for.",
|
||||
"trade_not_enough" = "I'd give you the animal for free, but I need the money to feed the others. So you must pay in full.",
|
||||
"how_much" = "This is a fine specimen, I believe it will cost you VALUE credits.",
|
||||
"what_want" = "I have the facilities currently to support",
|
||||
"compliment_deny" = "That was almost charming.",
|
||||
"compliment_accept" = "Thank you. I needed that.",
|
||||
"insult_good" = "I ask you to stop. We can be peaceful. I know we can.",
|
||||
"insult_bad" = "My interactions with you are becoming less than fruitful.",
|
||||
"bribe_refusal" = "I'm not going to do that. I have places to be.",
|
||||
"bribe_accept" = "Hm. It'll be good for the animals, so sure."
|
||||
)
|
||||
|
||||
possible_wanted_items = list(
|
||||
/mob/living/simple_animal/corgi = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/cat = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/crab = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/lizard = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/mouse = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/mushroom = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/parrot = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/tindalos = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/tomato = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/cow = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/chick = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/chicken = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/yithian = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/diyaab = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/bear = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/shantak = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/samak = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/retaliate/goat = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/carp = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/commanded/dog = TRADER_ALL,
|
||||
/mob/living/simple_animal/hostile/bear = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/biglizard = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/mob/living/simple_animal/corgi = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/cat = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/crab = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/lizard = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/mouse = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/mushroom = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/parrot = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/tindalos = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/tomato = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/cow = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/chick = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/chicken = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/yithian = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/diyaab = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/bear = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/shantak = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/samak = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/retaliate/goat = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/carp = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/commanded/dog = TRADER_ALL,
|
||||
/mob/living/simple_animal/hostile/bear = TRADER_THIS_TYPE,
|
||||
/mob/living/simple_animal/hostile/biglizard = TRADER_THIS_TYPE,
|
||||
/obj/item/device/dociler = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
/datum/trader/ship/prank_shop
|
||||
name = "Prank Shop Owner"
|
||||
name_language = LANGUAGE_ROOTSONG
|
||||
origin = "Prank Shop"
|
||||
compliment_increase = 0
|
||||
insult_drop = 0
|
||||
possible_origins = list("Yacks and Yucks Shop", "The Shop From Which I Sell Humorous Items", "The Prank Gestalt", "The Clown's Armory")
|
||||
speech = list(
|
||||
"hail_generic" = "We welcome you to our shop of humorous items, we invite you to partake in the experience of being pranked, and pranking someone else.",
|
||||
"hail_Diona" = "Welcome, other gestalt. We invite you to learn of our experiences, and teach us of your own.",
|
||||
"hail_deny" = "We cannot do business with you. We are sorry.",
|
||||
"trade_complete" = "We thank you for purchasing something. We enjoyed the experience of you doing so and we hope to learn from it.",
|
||||
"trade_blacklist" = "We are not allowed to do such. We are sorry.",
|
||||
"trade_not_enough" = "We have sufficiently experienced giving away goods for free. We wish to experience getting money in return.",
|
||||
"how_much" = "We believe that is worth VALUE credits.",
|
||||
"what_want" = "We wish only for the experiences you give us, in all else we want",
|
||||
"compliment_deny" = "You are attempting to compliment us.",
|
||||
"compliment_accept" = "You are attempting to compliment us.",
|
||||
"insult_good" = "You are attempting to insult us, correct?",
|
||||
"insult_bad" = "We do not understand.",
|
||||
"bribe_refusal" = "We are sorry but we cannot accept.",
|
||||
"bribe_accept" = "We are happy to say that we accept this bribe."
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/mask/gas/clown_hat = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/gas/sexyclown = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/shoes/clown_shoes = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/under/rank/clown = TRADER_THIS_TYPE,
|
||||
/obj/item/device/pda/clown = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/cartridge/clown = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/stamp/clown = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/backpack/clown = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bananapeel = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pie = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/bikehorn = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/fakemoustache = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/wand/toy = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/grenade/spawnergrenade/fake_carp = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/grenade/spawnergrenade/singularity/toy = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/grenade/fake = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/launcher/pneumatic/small = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/gas/monkeymask = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/monkeysuit = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/luchador = TRADER_ALL
|
||||
)
|
||||
|
||||
/datum/trader/ship/replica_shop
|
||||
name = "Replica Store Owner"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Replica Store"
|
||||
possible_origins = list("Ye-Old Armory", "Knights and Knaves", "The Blacksmith", "Historical Human Apparel and Items", "The Pointy End")
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome, welcome! You look like a man who appreciates human history. Come in, and learn! Maybe even.... buy?",
|
||||
"hail_Unathi" = "Ah, you look like a lizard who knows his way around martial combat. Come in! Our stuff may not be as high quality as you are used to, but feel free to look around.",
|
||||
"hail_deny" = "A man who does not appreciate history does not appreciate me. Goodbye.",
|
||||
"trade_complete" = "Now remember, these may be replicas, but they are still a bit sharp!",
|
||||
"trade_blacklist" = "No, I don't deal in that.",
|
||||
"trade_not_enough" = "Hm. Well, I need more money than that.",
|
||||
"how_much" = "This fine piece of craftsmanship costs about VALUE credits.",
|
||||
"what_want" = "I want",
|
||||
"compliment_deny" = "Oh ho ho! Aren't you quite the jester.",
|
||||
"compliment_accept" = "Hard to tell, isn't it? I make them all myself.",
|
||||
"insult_good" = "They aren't JUST replicas!",
|
||||
"insult_bad" = "Well, I'll never!",
|
||||
"bribe_refusal" = "Well. I'd love to stay, but I've got an Unathi client somewhere else, and they are not known for patience.",
|
||||
"bribe_accept" = "Sure, I'll stay a bit longer. Just for you, though."
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/head/wizard/magus = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/shield/buckler = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/redcoat = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/powdered_wig = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/hasturhood = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/gladiator = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/plaguedoctorhat = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/glasses/monocle = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/smokable/pipe = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/gas/plaguedoctor = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/hastur = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/imperium_monk = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/judgerobe = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/wizrobe/magusred = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/wizrobe/magusblue = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/under/gladiator = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/under/kilt = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/under/redcoat = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/under/soviet = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/material/harpoon = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/material/sword = TRADER_ALL,
|
||||
/obj/item/weapon/material/scythe = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/material/star = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/material/twohanded/baseballbat = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
|
||||
/datum/trader/ship/hardsuit
|
||||
name = "Azazi Guild Seller"
|
||||
name_language = LANGUAGE_UNATHI
|
||||
origin = "Azazi Bulk Supply Guild"
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/rig/unathi = TRADER_ALL,
|
||||
/obj/item/weapon/rig/internalaffairs = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/industrial = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/eva = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/ce = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/hazmat = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/medical = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/hazard = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/rig/combat = TRADER_THIS_TYPE,
|
||||
/obj/item/rig_module/device/healthscanner = TRADER_THIS_TYPE,
|
||||
/obj/item/rig_module/device/drill = TRADER_THIS_TYPE,
|
||||
/obj/item/rig_module/device/rcd = TRADER_THIS_TYPE,
|
||||
/obj/item/rig_module/chem_dispenser = TRADER_ALL,
|
||||
/obj/item/rig_module/voice = TRADER_THIS_TYPE,
|
||||
/obj/item/rig_module/vision = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/rig_module/ai_container = TRADER_THIS_TYPE,
|
||||
/obj/item/rig_module/mounted = TRADER_SUBTYPES_ONLY
|
||||
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome to the Azazi Bulk Sssupply Guild! We sssupply in bulk!",
|
||||
"hail_Unathi" = "Hello fellow Sinta! We have many fine wares that will bring you a sense of home in this alien system.",
|
||||
"hail_deny" = "Go away, Guwan.",
|
||||
"trade_complete" = "Ah, excellent.",
|
||||
"trade_blacklist" = "I will pretend I didn't ssssee that.",
|
||||
"trade_no_goods" = "You gotta buy the robots, sir. I don't do trades.",
|
||||
"trade_not_enough" = "I can't go any lower. Pay in full.",
|
||||
"how_much" = "Ah! Thisss isss only VALUE creditssss.",
|
||||
"compliment_deny" = "Were it not for the lawsss of thisss land I would sslay you.",
|
||||
"compliment_accept" = "Ancestors blessss you.",
|
||||
"insult_good" = "Ha! You have a fierce ssspirit, I like that.",
|
||||
"insult_bad" = "Were you never taught to resspect your eldersss?",
|
||||
"bribe_refusal" = "Do not try to dissshonor me again.",
|
||||
"bribe_accept" = "Very well. I will ssstay for a bit longer."
|
||||
)
|
||||
@@ -0,0 +1,24 @@
|
||||
//Ships are on a time limit as far as being around goes.
|
||||
//They are ALSO the only ones that can appear after round start
|
||||
/datum/trader/ship
|
||||
var/duration_of_stay = 0
|
||||
var/typical_duration = 5 //5 minutes (since trader processes only tick once a minute)
|
||||
|
||||
/datum/trader/ship/New()
|
||||
..()
|
||||
duration_of_stay = rand(typical_duration,typical_duration * 2)
|
||||
|
||||
/datum/trader/ship/tick()
|
||||
..()
|
||||
if(prob(-disposition) || refuse_comms)
|
||||
duration_of_stay--
|
||||
return --duration_of_stay > 0
|
||||
|
||||
/datum/trader/ship/bribe_to_stay_longer(var/amt)
|
||||
if(prob(-disposition))
|
||||
return get_response("bribe_refusal", "How about.... no?")
|
||||
|
||||
var/length = round(amt/100)
|
||||
duration_of_stay += length
|
||||
. = get_response("bribe_accept", "Sure, I'll stay for TIME more minutes.")
|
||||
. = replacetext(., "TIME", length)
|
||||
@@ -0,0 +1,259 @@
|
||||
/datum/trader
|
||||
var/name = "unsuspicious trader" //The name of the trader in question
|
||||
var/origin = "some place" //The place that they are trading from
|
||||
var/list/possible_origins //Possible names of the trader origin
|
||||
var/disposition = 0 //The current disposition of them to us.
|
||||
var/trade_flags = TRADER_MONEY //Flags
|
||||
var/name_language //If this is set to a language name this will generate a name from the language
|
||||
var/icon/portrait //The icon that shows up in the menu @TODO
|
||||
|
||||
var/list/wanted_items = list() //What items they enjoy trading for. Structure is (type = known/unknown)
|
||||
var/list/possible_wanted_items //List of all possible wanted items. Structure is (type = mode)
|
||||
var/list/possible_trading_items //List of all possible trading items. Structure is (type = mode)
|
||||
var/list/trading_items = list() //What items they are currently trading away.
|
||||
var/list/blacklisted_trade_items = list(/mob/living/carbon/human)
|
||||
//Things they will automatically refuse
|
||||
|
||||
var/list/speech = list() //The list of all their replies and messages. Structure is (id = talk)
|
||||
/*SPEECH IDS:
|
||||
hail_generic When merchants hail a person
|
||||
hail_[race] Race specific hails
|
||||
hail_deny When merchant denies a hail
|
||||
|
||||
insult_good When the player insults a merchant while they are on good disposition
|
||||
insult_bad When a player insults a merchatn when they are not on good disposition
|
||||
complement_accept When the merchant accepts a complement
|
||||
complement_deny When the merchant refuses a complement
|
||||
|
||||
how_much When a merchant tells the player how much something is.
|
||||
trade_complete When a trade is made
|
||||
trade_refuse When a trade is refused
|
||||
|
||||
what_want What the person says when they are asked if they want something
|
||||
|
||||
*/
|
||||
var/want_multiplier = 2 //How much wanted items are multiplied by when traded for
|
||||
var/insult_drop = 5 //How far disposition drops on insult
|
||||
var/compliment_increase = 5 //How far compliments increase disposition
|
||||
var/refuse_comms = 0 //Whether they refuse further communication
|
||||
|
||||
var/mob_transfer_message = "You are transported to ORIGIN." //What message gets sent to mobs that get sold.
|
||||
|
||||
/datum/trader/New()
|
||||
..()
|
||||
if(name_language)
|
||||
if(name_language == TRADER_DEFAULT_NAME)
|
||||
name = capitalize(pick(first_names_female + first_names_male)) + " " + capitalize(pick(last_names))
|
||||
else
|
||||
var/datum/language/L = all_languages[name_language]
|
||||
if(L)
|
||||
name = L.get_random_name(pick(MALE,FEMALE))
|
||||
if(possible_origins && possible_origins.len)
|
||||
origin = pick(possible_origins)
|
||||
|
||||
for(var/i in 3 to 6)
|
||||
add_to_pool(trading_items, possible_trading_items, force = 1)
|
||||
add_to_pool(wanted_items, possible_wanted_items, force = 1)
|
||||
|
||||
//If this hits 0 then they decide to up and leave.
|
||||
/datum/trader/proc/tick()
|
||||
addtimer(CALLBACK(src, .proc/do_after_tick), 0)
|
||||
return 1
|
||||
|
||||
/datum/trader/proc/do_after_tick()
|
||||
add_to_pool(trading_items, possible_trading_items, 200)
|
||||
add_to_pool(wanted_items, possible_wanted_items, 50)
|
||||
remove_from_pool(possible_trading_items, 9) //We want the stock to change every so often, so we make it so that they have roughly 10~11 ish items max
|
||||
return
|
||||
|
||||
/datum/trader/proc/remove_from_pool(var/list/pool, var/chance_per_item)
|
||||
if(pool && prob(chance_per_item * pool.len))
|
||||
var/i = rand(1,pool.len)
|
||||
pool[pool[i]] = null
|
||||
pool -= pool[i]
|
||||
|
||||
/datum/trader/proc/add_to_pool(var/list/pool, var/list/possible, var/base_chance = 100, var/force = 0)
|
||||
var/divisor = 1
|
||||
if(pool && pool.len)
|
||||
divisor = pool.len
|
||||
if(force || prob(base_chance/divisor))
|
||||
var/new_item = get_possible_item(possible)
|
||||
if(new_item)
|
||||
pool |= new_item
|
||||
|
||||
/datum/trader/proc/get_possible_item(var/list/trading_pool)
|
||||
if(!trading_pool || !trading_pool.len)
|
||||
return
|
||||
var/list/possible = list()
|
||||
for(var/type in trading_pool)
|
||||
var/status = trading_pool[type]
|
||||
if(status & TRADER_THIS_TYPE)
|
||||
possible += type
|
||||
if(status & TRADER_SUBTYPES_ONLY)
|
||||
possible += subtypesof(type)
|
||||
if(status & TRADER_BLACKLIST)
|
||||
possible -= type
|
||||
if(status & TRADER_BLACKLIST_SUB)
|
||||
possible -= subtypesof(type)
|
||||
|
||||
if(possible.len)
|
||||
var/picked = pick(possible)
|
||||
var/atom/A = picked
|
||||
if(initial(A.name) in list("object", "item","weapon", "structure", "machinery", "Mecha", "organ", "snack")) //weed out a few of the common bad types. Reason we don't check types specifically is that (hopefully) further bad subtypes don't set their name up and are similar.
|
||||
return
|
||||
return picked
|
||||
|
||||
/datum/trader/proc/get_response(var/key, var/default)
|
||||
var/text
|
||||
if(speech && speech[key])
|
||||
text = speech[key]
|
||||
else
|
||||
text = default
|
||||
text = replacetext(text, "MERCHANT", name)
|
||||
return replacetext(text, "ORIGIN", origin)
|
||||
|
||||
/datum/trader/proc/print_trading_items(var/num)
|
||||
num = Clamp(num,1,trading_items.len)
|
||||
if(trading_items[num])
|
||||
var/atom/movable/M = trading_items[num]
|
||||
return "<b>[initial(M.name)]</b>"
|
||||
|
||||
/datum/trader/proc/get_item_value(var/trading_num)
|
||||
if(!trading_items[trading_items[trading_num]])
|
||||
var/type = trading_items[trading_num]
|
||||
var/value = get_value(type)
|
||||
value = round(rand(90,110)/100 * value) //For some reason rand doesn't like decimals.
|
||||
trading_items[type] = value
|
||||
return trading_items[trading_items[trading_num]]
|
||||
|
||||
/datum/trader/proc/offer_money_for_trade(var/trade_num, var/money_amount)
|
||||
if(!(trade_flags & TRADER_MONEY))
|
||||
return TRADER_NO_MONEY
|
||||
var/value = get_item_value(trade_num)
|
||||
if(money_amount < value)
|
||||
return TRADER_NOT_ENOUGH
|
||||
|
||||
return value
|
||||
|
||||
/datum/trader/proc/offer_items_for_trade(var/list/offers, var/num, var/turf/location)
|
||||
if(!offers || !offers.len)
|
||||
return TRADER_NOT_ENOUGH
|
||||
num = Clamp(num, 1, trading_items.len)
|
||||
var/offer_worth = 0
|
||||
for(var/item in offers)
|
||||
var/atom/movable/offer = item
|
||||
var/is_wanted = 0
|
||||
if(is_type_in_list(offer,wanted_items))
|
||||
is_wanted = 1
|
||||
if(blacklisted_trade_items && blacklisted_trade_items.len && is_type_in_list(offer,blacklisted_trade_items))
|
||||
return 0
|
||||
|
||||
if(istype(offer,/obj/item/weapon/spacecash))
|
||||
if(!(trade_flags & TRADER_MONEY))
|
||||
return TRADER_NO_MONEY
|
||||
else
|
||||
if(!(trade_flags & TRADER_GOODS))
|
||||
return TRADER_NO_GOODS
|
||||
else if((trade_flags & TRADER_WANTED_ONLY) && !is_wanted)
|
||||
return TRADER_FOUND_UNWANTED
|
||||
|
||||
offer_worth += get_value(offer) * (is_wanted ? want_multiplier : 1)
|
||||
if(!offer_worth)
|
||||
return TRADER_NOT_ENOUGH
|
||||
var/trading_worth = get_item_value(num)
|
||||
if(!trading_worth)
|
||||
return TRADER_NOT_ENOUGH
|
||||
var/percent = offer_worth/trading_worth
|
||||
if(percent > max(0.9,0.9-disposition/100))
|
||||
return trade(offers, num, location)
|
||||
return TRADER_NOT_ENOUGH
|
||||
|
||||
/datum/trader/proc/hail(var/mob/user)
|
||||
var/specific
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.species)
|
||||
specific = H.species.name
|
||||
else if(istype(user, /mob/living/silicon))
|
||||
specific = "silicon"
|
||||
if(!speech["hail_[specific]"])
|
||||
specific = "generic"
|
||||
. = get_response("hail_[specific]", "Greetings, MOB!")
|
||||
. = replacetext(., "MOB", user.name)
|
||||
|
||||
/datum/trader/proc/can_hail()
|
||||
if(!refuse_comms && prob(-disposition))
|
||||
refuse_comms = 1
|
||||
return !refuse_comms
|
||||
|
||||
/datum/trader/proc/insult()
|
||||
disposition -= rand(insult_drop, insult_drop * 2)
|
||||
if(prob(-disposition/10))
|
||||
refuse_comms = 1
|
||||
if(disposition > 50)
|
||||
return get_response("insult_good","What? I thought we were cool!")
|
||||
else
|
||||
return get_response("insult_bad", "Right back at you asshole!")
|
||||
|
||||
/datum/trader/proc/compliment()
|
||||
if(prob(-disposition))
|
||||
return get_response("compliment_deny", "Fuck you!")
|
||||
if(prob(100-disposition))
|
||||
disposition += rand(compliment_increase, compliment_increase * 2)
|
||||
return get_response("compliment_accept", "Thank you!")
|
||||
|
||||
/datum/trader/proc/trade(var/list/offers, var/num, var/turf/location)
|
||||
if(offers && offers.len)
|
||||
for(var/offer in offers)
|
||||
if(istype(offer,/mob))
|
||||
var/text = mob_transfer_message
|
||||
to_chat(offer, replacetext(text, "ORIGIN", origin))
|
||||
if(istype(offer, /obj/mecha))
|
||||
var/obj/mecha/M = offer
|
||||
M.wreckage = null //So they don't ruin the illusion
|
||||
qdel(offer)
|
||||
|
||||
var/type = trading_items[num]
|
||||
|
||||
var/atom/movable/M = new type(location)
|
||||
playsound(location, 'sound/effects/teleport.ogg', 50, 1)
|
||||
|
||||
disposition += rand(compliment_increase,compliment_increase*3) //Traders like it when you trade with them
|
||||
|
||||
return M
|
||||
|
||||
/datum/trader/proc/how_much_do_you_want(var/num)
|
||||
var/atom/movable/M = trading_items[num]
|
||||
. = get_response("how_much", "Hmm.... how about VALUE credits?")
|
||||
. = replacetext(.,"VALUE",get_item_value(num))
|
||||
. = replacetext(.,"ITEM", initial(M.name))
|
||||
|
||||
/datum/trader/proc/what_do_you_want()
|
||||
if(!(trade_flags & TRADER_GOODS))
|
||||
return get_response(TRADER_NO_GOODS, "I don't deal in goods.")
|
||||
|
||||
. = get_response("what_want", "Hm, I want")
|
||||
var/list/want_english = list()
|
||||
for(var/type in wanted_items)
|
||||
var/atom/a = type
|
||||
want_english += initial(a.name)
|
||||
. += " [english_list(want_english)]"
|
||||
|
||||
/datum/trader/proc/sell_items(var/list/offers)
|
||||
if(!(trade_flags & TRADER_GOODS))
|
||||
return TRADER_NO_GOODS
|
||||
if(!offers || !offers.len)
|
||||
return TRADER_NOT_ENOUGH
|
||||
|
||||
for(var/offer in offers)
|
||||
if(!is_type_in_list(offer,wanted_items))
|
||||
return TRADER_FOUND_UNWANTED
|
||||
|
||||
playsound(get_turf(offers[1]), 'sound/effects/teleport.ogg', 50, 1)
|
||||
. = 0
|
||||
for(var/offer in offers)
|
||||
. += get_value(offer) * want_multiplier
|
||||
qdel(offer)
|
||||
|
||||
/datum/trader/proc/bribe_to_stay_longer(var/amt)
|
||||
return get_response("bribe_refusal", "How about... no?")
|
||||
@@ -0,0 +1,232 @@
|
||||
/datum/trader/ship/unique
|
||||
trade_flags = TRADER_WANTED_ONLY|TRADER_GOODS
|
||||
want_multiplier = 5
|
||||
typical_duration = 10
|
||||
|
||||
/datum/trader/ship/unique/New()
|
||||
..()
|
||||
wanted_items = list()
|
||||
for(var/type in possible_wanted_items)
|
||||
var/status = possible_wanted_items[type]
|
||||
if(status & TRADER_THIS_TYPE)
|
||||
wanted_items += type
|
||||
if(status & TRADER_SUBTYPES_ONLY)
|
||||
wanted_items += subtypesof(type)
|
||||
if(status & TRADER_BLACKLIST)
|
||||
wanted_items -= type
|
||||
if(status & TRADER_BLACKLIST_SUB)
|
||||
wanted_items -= subtypesof(type)
|
||||
|
||||
/datum/trader/ship/unique/tick()
|
||||
if(prob(-disposition) || refuse_comms)
|
||||
duration_of_stay--
|
||||
return --duration_of_stay > 0
|
||||
|
||||
/datum/trader/ship/unique/what_do_you_want()
|
||||
return get_response("what_want", "I don't want anything!")
|
||||
|
||||
/datum/trader/ship/unique/severance
|
||||
name = "Unknown"
|
||||
origin = "SGS Severance"
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/human = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/human = TRADER_THIS_TYPE,
|
||||
/mob/living/carbon/human = TRADER_ALL
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/mecha/combat = TRADER_SUBTYPES_ONLY,
|
||||
/obj/mecha/combat/phazon = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/gun/energy/pulse = TRADER_ALL,
|
||||
/obj/item/weapon/gun/energy/rifle/pulse = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
blacklisted_trade_items = null
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "H-hello. Can you hear me? G-good... I have... specific needs... I have a lot to t-trade with you in return of course.",
|
||||
"hail_deny" = "--CONNECTION SEVERED--",
|
||||
"trade_complete" = "Hahahahahahaha! Thankyouthankyouthankyou!",
|
||||
"trade_no_money" = "I d-don't NEED cash.",
|
||||
"trade_not_enough" = "N-no, no no no. M-more than that.... more...",
|
||||
"trade_found_unwanted" = "I d-don't think you GET what I want, from your offer.",
|
||||
"how_much" = "Meat. I want meat. The kind they don't serve i-in teh mess hall.",
|
||||
"what_want" = "Long p-pork. Yes... thats what I want...",
|
||||
"compliment_deny" = "Your lies won't c-change what I did.",
|
||||
"compliment_accept" = "Yes... I suppose you're right.",
|
||||
"insult_good" = "I... probably deserve that.",
|
||||
"insult_bad" = "Maybe you should c-come here and say that. You'd be worth s-something then."
|
||||
)
|
||||
|
||||
mob_transfer_message = "<span class='danger'>You are transported to ORIGIN, and with a sickening thud, you fall unconscious, never to wake again.</span>"
|
||||
|
||||
|
||||
/datum/trader/ship/unique/rock
|
||||
name = "Bobo"
|
||||
origin = "Floating Rock"
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/weapon/ore = TRADER_ALL
|
||||
)
|
||||
possible_trading_items = list(
|
||||
/obj/machinery/power/supermatter = TRADER_ALL,
|
||||
/obj/item/weapon/aiModule = TRADER_SUBTYPES_ONLY
|
||||
)
|
||||
want_multiplier = 5000
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Blub am MERCHANT. Blub hunger for things. Boo bring them to blub, yes?",
|
||||
"hail_deny" = "Blub does not want to speak to boo.",
|
||||
"trade_complete" = "Blub likes to trade!",
|
||||
"trade_no_money" = "Boo try to give Blub paper. Blub does not want paper.",
|
||||
"trade_not_enough" = "Blub hungry for bore than that.",
|
||||
"trade_found_unwanted" = "Blub only wants bocks. Give bocks.",
|
||||
"trade_refuse" = "No, Blub will not do that. Blub wants bocks, yes? Give bocks.",
|
||||
"how_much" = "Blub wants bocks. Boo give bocks. Blub gives stuff blub found.",
|
||||
"what_want" = "Blub wants bocks. Big bocks, small bocks. Shiny bocks!",
|
||||
"compliment_deny" = "Blub is just MERCHANT. What do boo mean?",
|
||||
"compliment_accept" = "Boo are a bood berson!",
|
||||
"insult_good" = "Blub do not understand. Blub thought we were briends.",
|
||||
"insult_bad" = "Blub feels bad now."
|
||||
)
|
||||
|
||||
|
||||
/datum/trader/ship/unique/wizard
|
||||
name = "The Grand Master"
|
||||
origin = "Interdimensional Prison Cell"
|
||||
|
||||
possible_wanted_items = list(
|
||||
/mob/living/simple_animal/construct = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/weapon/melee/cultblade = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/culthood = TRADER_ALL,
|
||||
/obj/item/clothing/suit/space/cult = TRADER_ALL,
|
||||
/obj/item/clothing/suit/cultrobes = TRADER_ALL,
|
||||
/obj/item/clothing/head/helmet/space/cult = TRADER_ALL,
|
||||
/obj/structure/cult = TRADER_SUBTYPES_ONLY,
|
||||
/obj/structure/constructshell = TRADER_ALL,
|
||||
/mob/living/simple_animal/familiar = TRADER_SUBTYPES_ONLY,
|
||||
/mob/living/simple_animal/familiar/pet = TRADER_BLACKLIST,
|
||||
/mob/living/simple_animal/hostile/mimic = TRADER_ALL,
|
||||
/obj/item/clothing/head/helmet/space/void/wizard = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/wizard = TRADER_ALL,
|
||||
/obj/item/clothing/suit/space/void/wizard = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/scrying = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/melee/energy/wizard = TRADER_THIS_TYPE,
|
||||
/obj/item/phylactery = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/staff = TRADER_ALL,
|
||||
/obj/item/weapon/gun/energy/wand = TRADER_ALL,
|
||||
/obj/item/weapon/gun/energy/wand/toy = TRADER_BLACKLIST
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/contract/wizard/tk = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/contract/boon/wizard/smoke = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/contract/boon/wizard/horsemask = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/contract/boon/wizard/gestalt = TRADER_THIS_TYPE,
|
||||
/obj/item/toy/figure/wizard = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/staff = TRADER_ALL
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Hello! Are you here on pleasure or business?",
|
||||
"hail_Golem" = "Interesting... how incredibly interesting.... come! Let us do business!",
|
||||
"hail_deny" = "I'm sorry, but I REALLY don't want to speak to you.",
|
||||
"trade_complete" = "Pleasure doing business with you! Just don't feed it after midnight!",
|
||||
"trade_no_money" = "Cash? Ha! What's cash to a man like me?",
|
||||
"trade_not_enough" = "Hm, well I do enjoy what you're offering, I prefer a fair trade.",
|
||||
"trade_found_unwanted" = "What? I want oddities! Don't you understand?",
|
||||
"how_much" = "I want dark things, brooding things... things that go bump in the night. Things that bleed wrong, live wrong, are wrong.",
|
||||
"what_want" = "Have anything from a broodish cult?",
|
||||
"compliment_deny" = "Like I haven't heard that one before!",
|
||||
"compliment_accept" = "Haha! Aren't you nice.",
|
||||
"insult_good" = "Naughty naughty.",
|
||||
"insult_bad" = "Now where do you get off talking to me like that?"
|
||||
)
|
||||
|
||||
|
||||
/datum/trader/ship/unique/vaurca
|
||||
origin = "The Hive Shop"
|
||||
name_language = LANGUAGE_VAURCA
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/koisbar = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/kois = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/koisbar = TRADER_THIS_TYPE,
|
||||
/obj/item/stack/material/phoron = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/mask/breath/vaurca = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/melee/energy/vaurca = TRADER_THIS_TYPE,
|
||||
/obj/item/vaurca/box = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/melee/vaurca/rock = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/grenade/spawnergrenade/vaurca = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/space/void/vaurca = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/space/void/vaurca = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/shoes/magboots/vox/vaurca = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/vaurca/blaster = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/vaurca/gatlinglaser = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "Greetingzz.",
|
||||
"hail_deny" = "I'm zzorry, we do not want to zzzpeak to you.",
|
||||
"trade_complete" = "Enjoy it, zzzir!",
|
||||
"trade_no_money" = "I have no uzzze vhor creditzzz.",
|
||||
"trade_not_enough" = "I want more, zzzzir.",
|
||||
"trade_found_unwanted" = "That izzz not what I want.",
|
||||
"how_much" = "We need k'oizz or vhoron, zzzir.",
|
||||
"what_want" = "K'oizzz or vhoron.",
|
||||
"compliment_deny" = "No kind wordzzzz...",
|
||||
"compliment_accept" = "I appreciate kind wordzzz.",
|
||||
"insult_good" = "Your humor izzz odd.",
|
||||
"insult_bad" = "I do not take inzzultzz kindly."
|
||||
)
|
||||
|
||||
|
||||
/datum/trader/ship/unique/bluespace
|
||||
name = "Maximus Crane"
|
||||
origin = "Bluespace Emporium"
|
||||
trade_flags = TRADER_WANTED_ONLY|TRADER_GOODS|TRADER_MONEY
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/bluespace_crystal = TRADER_ALL,
|
||||
/obj/machinery/bluespacerelay = TRADER_ALL,
|
||||
/obj/item/stack/telecrystal = TRADER_THIS_TYPE,
|
||||
/obj/item/organ/brain/golem = TRADER_THIS_TYPE,
|
||||
/obj/item/device/soulstone = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/circuitboard/telesci_console = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/circuitboard/telesci_pad = TRADER_THIS_TYPE,
|
||||
/obj/item/phylactery = TRADER_THIS_TYPE,
|
||||
/obj/item/blueprints = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/backpack/holding = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/teleportation_scroll = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/mecha_parts/chassis/phazon = TRADER_THIS_TYPE,
|
||||
/obj/item/mecha_parts/part/phazon_torso = TRADER_THIS_TYPE,
|
||||
/obj/item/mecha_parts/part/phazon_head = TRADER_THIS_TYPE,
|
||||
/obj/item/mecha_parts/part/phazon_left_arm = TRADER_THIS_TYPE,
|
||||
/obj/item/mecha_parts/part/phazon_right_arm = TRADER_THIS_TYPE,
|
||||
/obj/item/mecha_parts/part/phazon_left_leg = TRADER_THIS_TYPE,
|
||||
/obj/item/mecha_parts/part/phazon_right_leg = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
speech = list(
|
||||
"hail_generic" = "I trade bluespace and bluespace accessories.",
|
||||
"hail_deny" = "I have nothing to deal with you.",
|
||||
"trade_complete" = "I am sure it is not going to malfuction!",
|
||||
"trade_no_money" = "I don't need credits.",
|
||||
"trade_not_enough" = "I will need far more than this.",
|
||||
"trade_found_unwanted" = "This is useless for me.",
|
||||
"trade_refuse" = "Nope, bluespace is not so cheap.",
|
||||
"how_much" = "Maybe for VALUE, bluespace is not cheap!",
|
||||
"what_want" = "I want bluespace related items.",
|
||||
"compliment_deny" = "Well, well.",
|
||||
"compliment_accept" = "I know, the squirrel is great.",
|
||||
"insult_good" = "Witty.",
|
||||
"insult_bad" = "And you still want to do business?"
|
||||
)
|
||||
@@ -0,0 +1,96 @@
|
||||
/datum/trader/ship/vox
|
||||
typical_duration = 15
|
||||
origin = "UNREGISTERED VESSEL"
|
||||
name_language = "Vox-pidgin"
|
||||
compliment_increase = 0
|
||||
trade_flags = TRADER_GOODS
|
||||
var/hailed_vox = 0 //Whether we have been hailed by a vox. negatives mean pariah, positives mean regular.
|
||||
blacklisted_trade_items = null
|
||||
|
||||
speech = list(
|
||||
"hail_generic0" = "SKREEE! We will trade good stuff, yes?",
|
||||
"hail_generic1" = "SKREEEEE! You friend of Vox? You trade with, yes?",
|
||||
"hail_silicon0" = "Hello metal thing! You trade metal for things?",
|
||||
"hail_silicon1" = "YOU KNOW VOX? Yes is good, yes yes, MOB. Trade GOOD!",
|
||||
"hail_Human0" = "Hello hueman! Kiikikikiki! MOB trade with us, yes? Good!",
|
||||
"hail_Human1" = "Friend of Vox is friend of all Vox! MOB you trade now!",
|
||||
"hail_Vox1" = "SKREEEE! May the Shoal make this trade good, MOB!",
|
||||
"hail_deny0" = "Trade closed, GO AWAY!",
|
||||
"hail_deny-1" = "We no trade with shit like you!",
|
||||
"hail_deny1" = "Trade gone now. Goodbye.",
|
||||
"trade_complete0" = "Yes, kikikikikiki! You will not regret this trade!",
|
||||
"trade_complete1" = "Yes... this is a good trade for the Shaol!",
|
||||
"trade_no_money0" = "Money? Vox no need money. GOODS! Give it GOODS!",
|
||||
"trade_no_money1" = "You know as well as it that money is no good.",
|
||||
"trade_not_enough0" = "It wants MORE for that. Give it more.",
|
||||
"trade_not_enough1" = "Ech, you insult it with such a trade? Respect it, make it equal.",
|
||||
"trade_refuse1" = "You know as well as it that is not a good trade.",
|
||||
"how_much0" = "You give it something worth VALUE, yes?",
|
||||
"how_much1" = "Hmm.... VALUE. Something like that.",
|
||||
"what_want0" = "Vox wants",
|
||||
"what_want1" = "Shoal wants",
|
||||
"compliment_deny0" = "No.",
|
||||
"compliment_deny1" = "You know better than that!",
|
||||
"compliment_accept0" = "Kikikikiki! Trade is better than talk, yes?",
|
||||
"compliment_accept1" = "You butter it up? Should know better than that.",
|
||||
"insult_good0" = "Bah! Why does it have to deal with you?",
|
||||
"insult_good1" = "Where this come from? Is trade no good?",
|
||||
"insult_bad0" = "All you meats are the same! Fuck off!",
|
||||
"insult_bad1" = "If you say all this at home, you be dead!"
|
||||
)
|
||||
|
||||
possible_wanted_items = list(
|
||||
/obj/item/weapon = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/stack/material = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/stack/material/cyborg = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/organ = TRADER_SUBTYPES_ONLY
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/gun/projectile/dartgun/vox = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/mecha_parts/mecha_equipment/tool = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack = TRADER_BLACKLIST,
|
||||
/obj/item/trash = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/clothing/accessory = TRADER_ALL,
|
||||
/obj/item/clothing/accessory/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/armband/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/badge/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/clothing/accessory/badge/old/fluff = TRADER_BLACKLIST_ALL,
|
||||
/obj/item/robot_parts = TRADER_SUBTYPES_ONLY,
|
||||
/obj/item/robot_parts/robot_component = TRADER_BLACKLIST,
|
||||
/obj/item/weapon/storage/pill_bottle/happy = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/pill_bottle/zoom = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/vial/random/toxin = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
mob_transfer_message = "<span class='danger'>You are transported to the ORIGIN, when the transportation dizziness wears off, you find you are surrounded by cackling Vox...</span>"
|
||||
|
||||
/datum/trader/ship/vox/hail(var/mob/user)
|
||||
var/specific
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.species)
|
||||
if(isvox(H))
|
||||
disposition = 1000
|
||||
hailed_vox = 1
|
||||
specific = H.species.name
|
||||
else if(istype(user, /mob/living/silicon))
|
||||
specific = "silicon"
|
||||
if(!speech["hail_[specific][hailed_vox]"])
|
||||
specific = "generic"
|
||||
. = get_response("hail_[specific][hailed_vox]", "Greetings, MOB!")
|
||||
. = replacetext(., "MOB", user.name)
|
||||
|
||||
/datum/trader/ship/vox/can_hail()
|
||||
if(hailed_vox >= 0)
|
||||
return ..()
|
||||
return 0
|
||||
|
||||
/datum/trader/ship/vox/get_response(var/text, var/generic)
|
||||
return ..("[text][hailed_vox]", generic)
|
||||
|
||||
/datum/trader/ship/vox/get_item_value(var/trading_num)
|
||||
. = ..()
|
||||
if(!hailed_vox)
|
||||
. *= 2
|
||||
@@ -0,0 +1,142 @@
|
||||
/datum/trader/ship/gunshop
|
||||
name = "Gun Shop Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Gun Shop"
|
||||
possible_origins = list("Rooty Tootie's Point-n-Shooties", "Bang-Bang Shop", "Wild-Wild-West Shop", "Jacobs", "Vladof", "Keleshnikov", "Hunting Depot", "Big Game Hunters")
|
||||
speech = list(
|
||||
"hail_generic" = "Hello hello! I hope you have your permit, oh who are we kidding, you're welcome anyways!",
|
||||
"hail_deny" = "Law dictates that you can fuck off.",
|
||||
"trade_complete" = "Thanks for buying your guns from ORIGIN!",
|
||||
"trade_blacklist" = "We may deal in guns, but that doesn't mean we'll trade for illegal goods...",
|
||||
"trade_no_goods" = "Cash for guns, thats the deal.",
|
||||
"trade_not_enough" = "Guns are expensive! Give us more if you REALLY want it.",
|
||||
"how_much" = "Well, I'd love to give this little beauty to you for VALUE.",
|
||||
"compliment_deny" = "If we were in the same room right now, I'd probably punch you.",
|
||||
"compliment_accept" = "Ha! Good one!",
|
||||
"insult_good" = "I expected better from you. I suppose in that, I was wrong.",
|
||||
"insult_bad" = "If I had my gun I'd shoot you!"
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/gun/projectile/pistol = TRADER_ALL,
|
||||
/obj/item/weapon/gun/projectile/colt = TRADER_ALL,
|
||||
/obj/item/weapon/gun/projectile/sec = TRADER_ALL,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump = TRADER_ALL,
|
||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel = TRADER_ALL,
|
||||
/obj/item/weapon/gun/projectile/tanto = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/revolver/detective = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/revolver/deckard = TRADER_THIS_TYPE,
|
||||
/obj/item/ammo_magazine/c45m = TRADER_ALL,
|
||||
/obj/item/ammo_magazine/c45m/empty = TRADER_BLACKLIST,
|
||||
/obj/item/ammo_magazine/shotgun = TRADER_ALL,
|
||||
/obj/item/ammo_magazine/t40 = TRADER_ALL,
|
||||
/obj/item/ammo_magazine/t40/empty = TRADER_BLACKLIST,
|
||||
/obj/item/ammo_magazine/c38 = TRADER_ALL,
|
||||
/obj/item/weapon/storage/box/beanbags = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/shotgunammo = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/box/shotgunshells = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/accessory/holster = TRADER_ALL
|
||||
)
|
||||
|
||||
/datum/trader/ship/egunshop
|
||||
name = "Energy Gun Shop Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "EGun Shop"
|
||||
possible_origins = list("The Emperor's Lasgun Shop", "Hypireon", "Milawan", "Future-Guns", "Solar-Army")
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome to the future of warfare! ORIGIN, your one-stop-shop for energy weaponry.",
|
||||
"hail_deny" = "I'm sorry, your communication channel has been blacklisted.",
|
||||
"trade_complete" = "Thank you, your purchase has been logged and you have automatically liked our Spacebook page.",
|
||||
"trade_blacklist" = "I'm sorry, is that a joke?",
|
||||
"trade_no_goods" = "We deal in cash.",
|
||||
"trade_not_enough" = "State of the art weaponry costs more than that.",
|
||||
"how_much" = "All our quality weapons are priceless, but I'd give that to you for VALUE.",
|
||||
"compliment_deny" = "If I was dumber I probably would have believed you.",
|
||||
"compliment_accept" = "Yes, I am very smart.",
|
||||
"insult_good" = "Energy weapons are TWICE the gun bullet-based guns are!",
|
||||
"insult_bad" = "Thats... very mean. I won't think twice about blacklisting your channel, so stop."
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/gun/energy/taser = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/stunrevolver = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/xray = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/rifle = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/rifle/laser = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/gun = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/pistol = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/gun/nuclear = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/laser/shotgun = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/accessory/holster = TRADER_ALL
|
||||
)
|
||||
|
||||
/datum/trader/ship/illegalgun
|
||||
name = "Comrade Sergei"
|
||||
origin = "Comrade Sergei's Humble Shop"
|
||||
speech = list(
|
||||
"hail_generic" = "Grrreetings, comrrrade! Sergei hopes they can enjoy his selection of goods, nothing herrre was smuggled!",
|
||||
"hail_deny" = "The shop is closed, comrrrade!",
|
||||
"trade_complete" = "Many thanks, comrrrade, enjoy it!",
|
||||
"trade_blacklist" = "No, no, nothing of this in his shop!",
|
||||
"trade_no_goods" = "He only deals with crrredits, comrrrade!",
|
||||
"trade_not_enough" = "Give him a bit morrre, comrrrade!",
|
||||
"how_much" = "Only VALUE, just forrr them, comrade!",
|
||||
"compliment_deny" = "They arre speaking like a officerrr, arre they an officerrr?",
|
||||
"compliment_accept" = "Pourrr one out for Al'marrri. His gun was on stun, bless his hearrrt.",
|
||||
"insult_good" = "Good one, comrrrade!",
|
||||
"insult_bad" = "Rrrracist!"
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/weapon/gun/projectile/boltaction = TRADER_ALL,
|
||||
/obj/item/weapon/gun/projectile/dragunov = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/silenced = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/automatic/tommygun = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/automatic/mini_uzi = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/improvised_handgun = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/shotgun/improvised = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/energy/retro = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/revolver/derringer = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/gun/projectile/pirate = TRADER_THIS_TYPE
|
||||
)
|
||||
|
||||
|
||||
/datum/trader/ship/tactical
|
||||
name = "Tactical Gear Shop Employee"
|
||||
name_language = TRADER_DEFAULT_NAME
|
||||
origin = "Tactical Gear Shop"
|
||||
possible_origins = list("Mall Ninja. Co.", "Hephaestus Defense Supplies", "Tacticool Emporium", "The Redshirt", "The Harmbaton")
|
||||
speech = list(
|
||||
"hail_generic" = "Welcome to ORIGIN, you will find everything you need to stay safe.",
|
||||
"hail_deny" = "We refuse to make business with you.",
|
||||
"trade_complete" = "Thank you, And stay safe.",
|
||||
"trade_blacklist" = "I have no use for this",
|
||||
"trade_no_goods" = "Credits or nothing..",
|
||||
"trade_not_enough" = "Our gear is more valuable than this.",
|
||||
"how_much" = "This fine piece will be yours for only VALUE.",
|
||||
"compliment_deny" = "Are you going to buy something any time soon?",
|
||||
"compliment_accept" = "Thank you, no one has better tactical gear than us, ORIGIN.",
|
||||
"insult_good" = "Stop, I am not paid to hear this.",
|
||||
"insult_bad" = "Good luck staying safe without us then!"
|
||||
)
|
||||
|
||||
possible_trading_items = list(
|
||||
/obj/item/clothing/suit/armor/riot = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/armor/bulletproof = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/armor/laserproof = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/armor/tactical = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/suit/storage/vest = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/riot = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/ablative = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/ballistic = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/head/helmet/tactical = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/glasses/night = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/tactical = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/gloves/swat = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/shoes/swat = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/under/tactical = TRADER_THIS_TYPE,
|
||||
/obj/item/clothing/mask/gas/tactical = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/shield/riot/tact = TRADER_THIS_TYPE,
|
||||
/obj/item/weapon/storage/belt/security/tactical = TRADER_THIS_TYPE
|
||||
)
|
||||
Reference in New Issue
Block a user