mirror of
https://github.com/goonstation/goonstation-2016.git
synced 2026-08-26 23:46:12 +01:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
/datum/trader/buford
|
||||
// Stoner frog.
|
||||
// Buys and sells drugs, gardening stuff, etc. Is sometimes REALLY fucking high.
|
||||
name = "Buford Tenin"
|
||||
picture = "gethighfrog.png"
|
||||
crate_tag = "BUFO420"
|
||||
hiketolerance = 30
|
||||
base_patience = list(10,15)
|
||||
chance_leave = 66
|
||||
chance_arrive = 100
|
||||
|
||||
max_goods_buy = 4
|
||||
max_goods_sell = 6
|
||||
|
||||
base_goods_buy = list(/datum/commodity/trader/buford/vennecure,
|
||||
/datum/commodity/trader/buford/megaweed,
|
||||
/datum/commodity/trader/buford/whiteweed,
|
||||
/datum/commodity/trader/buford/omegaweed,
|
||||
/datum/commodity/trader/buford/psilocybin,
|
||||
/datum/commodity/trader/buford/pizza)// 6
|
||||
|
||||
base_goods_sell = list(/datum/commodity/trader/buford/alienseeds,
|
||||
/datum/commodity/trader/buford/weedseeds,
|
||||
/datum/commodity/trader/buford/powerplant,
|
||||
/datum/commodity/trader/buford/mutriant,
|
||||
/datum/commodity/trader/buford/groboost,
|
||||
/datum/commodity/trader/buford/fruitful,
|
||||
/datum/commodity/trader/buford/topcrop,
|
||||
/datum/commodity/trader/buford/weedkiller)// 8
|
||||
|
||||
dialogue_greet = list("Hey man. Got the good shit for sale, yeah.",
|
||||
"Sup brother, what's goin' on. Got the damn fresh shit for you here.",
|
||||
"Hey, how's it goin? Got the best shit right here, you know it.")
|
||||
dialogue_leave = list("GET OUT.")
|
||||
dialogue_purchase = list("Aw yeah. I know you're gonna enjoy this shit, man.",
|
||||
"Thanks man. You always come through. Enjoy the shit, ha ha.",
|
||||
"Good buys, man, good buys. Got more deals if you're interested?")
|
||||
dialogue_haggle_accept = list("Ehh... alright. Don't see why not.",
|
||||
"Sure, not like I can't just grow more of this shit, ha ha.",
|
||||
"I'm down with that.",
|
||||
"Yeah okay, cool.",
|
||||
"Aight man, but you're really pushing it. Let's make the trade now, yeah?")
|
||||
dialogue_haggle_reject = list("Woah man. Bit much there.",
|
||||
"I'm not THAT high, dude.",
|
||||
"No way man, I gotta make some profit here.",
|
||||
"Nooooo way.",
|
||||
"Look brother, you're kinda getting on my nerves. How about we just make the trade now?")
|
||||
dialogue_wrong_haggle_accept = list("Sure man, I appreciate it.")
|
||||
dialogue_wrong_haggle_reject = list("Ha, are you more blazed than I am or what?")
|
||||
dialogue_cant_afford_that = list("Sorry brother, you ain't got the ducats for that.",
|
||||
"Hey, as much as I like you, I can't just give this stuff away. Get some cash first.",
|
||||
"Aw man, how'd you run outta cash already? Bummer.")
|
||||
dialogue_out_of_stock = list("Whoops, ha ha, guess I already smo.. er, sold all of that.",
|
||||
"Sorry man, none of that left.")
|
||||
|
||||
New()
|
||||
..()
|
||||
if(prob(10))
|
||||
// sometimes he is really, REALLY fucking high and can barely function as a trader
|
||||
src.hiketolerance = 95
|
||||
src.base_patience = list(50,200)
|
||||
src.patience = rand(src.base_patience[1],src.base_patience[2])
|
||||
src.dialogue_greet = list("Hey m... uh.. good shit.. i think? Yeah...",
|
||||
"Hey man, what if like... oh.. wait, it's you.. wait, where the fuck am I again? Ha ha.",
|
||||
"Man I.. ha ha. Got any like.. pizza? Or any shit like that? ...wait, who are you again?")
|
||||
src.dialogue_leave = list("GET OUT.")
|
||||
src.dialogue_purchase = list("Buy... what now? Uh... sure... I think..?",
|
||||
"Thanks man... ha ha. Man what if.. you could buy like... the moon? Ha ha.",
|
||||
"Like.. oh shit, wait? Was I supposed to send you some shit?")
|
||||
src.dialogue_haggle_accept = list("Ahahaha, fuckin' hilarious man.",
|
||||
"Woah that's like.. cosmic, yeah?",
|
||||
"Uhh.. fuck I dunno what you even just said? Sure I guess...?",
|
||||
"I uh.. yeah okay? I dunno. Is that a good idea?",
|
||||
"Uh.. shit.. sure! I think? ..fuck. I'm getting a headache.")
|
||||
src.dialogue_haggle_reject = list("Nah man. That's like.. it's like.. if a snake was just like.. a head with a tail, you know?",
|
||||
"Fuck... uh.. no. I'm not THAT high.. I.. think? Ha ha...",
|
||||
"Fuck that shit. I wanna.. talk about... lighthouses. You don't like lighthouses.. you suck.",
|
||||
"Never mind that shit, what if like... fuck. I forgot...",
|
||||
"Man no. You're harshing my mellow. Ugh. Think i'm getting a headache.")
|
||||
src.dialogue_wrong_haggle_accept = list("Like.. more than I asked for..? Woah, sure... ha ha. I'ma buy pizza.")
|
||||
src.dialogue_wrong_haggle_reject = list("What? Sorry, wasn't listening. Ha ha.")
|
||||
src.dialogue_cant_afford_that = list("FUCK A DRAGON.. oh wait shit, never mind. Ha ha. Uh.. some shit about not enough cash is on my screen. Dunno.",
|
||||
"Uhh.. well my computer says no.. yeah i'ma go with that. I don't give a fuck right now. Ha ha.")
|
||||
src.dialogue_out_of_stock = list("Oh I ain't got any of that? Where is it? Where'd it go? Huh.")
|
||||
|
||||
// Buford is selling these things
|
||||
|
||||
/datum/commodity/trader/buford/alienseeds
|
||||
comname = "Strange Seeds"
|
||||
comtype = /obj/item/seed/alien
|
||||
amount = 5
|
||||
price_boundary = list(200,400)
|
||||
possible_names = list("Got these weirdo alien plant seeds. Dunno what they'll grow.",
|
||||
"I got some strange seeds, maybe they'll grow some good shit. It's some alien shit.",
|
||||
"Some real strange alien plant seeds for sale here. I dunno what they grow into.")
|
||||
|
||||
/datum/commodity/trader/buford/weedseeds
|
||||
comname = "Cannabis Seeds"
|
||||
comtype = /obj/item/seed/cannabis
|
||||
price_boundary = list(3,5)
|
||||
possible_names = list("Got some good weed seeds here for sale.",
|
||||
"If you can't get your hands on some weed seeds, i'll sell you some.")
|
||||
|
||||
/datum/commodity/trader/buford/powerplant
|
||||
comname = "Saltpetre Plant Formula"
|
||||
comtype = /obj/item/reagent_containers/glass/bottle/powerplant
|
||||
amount = 20
|
||||
price_boundary = list(50,100)
|
||||
possible_names = list("Got some good nutrients to make your plants more potent.",
|
||||
"I'm selling some Powerplant formula. It's great for making your herbs more potent.")
|
||||
|
||||
/datum/commodity/trader/buford/mutriant
|
||||
comname = "Mutagenic Plant Formula"
|
||||
comtype = /obj/item/reagent_containers/glass/bottle/mutriant
|
||||
amount = 20
|
||||
price_boundary = list(50,100)
|
||||
possible_names = list("Got some weird plant nutrients. It makes your plants mutate more often.",
|
||||
"Mutriant formula for sale. Makes your plants go all fucked up and weird. In a good way. I hope.")
|
||||
|
||||
/datum/commodity/trader/buford/topcrop
|
||||
comname = "Potash Plant Formula"
|
||||
comtype = /obj/item/reagent_containers/glass/bottle/topcrop
|
||||
amount = 20
|
||||
price_boundary = list(50,100)
|
||||
possible_names = list("Got some plant nutrients that'll encourage huge yields.",
|
||||
"Got some good old Top Crop formula. I'm buying most of the good shit you grow, by the way.")
|
||||
|
||||
/datum/commodity/trader/buford/groboost
|
||||
comname = "Ammonia Plant Formula"
|
||||
comtype = /obj/item/reagent_containers/glass/bottle/groboost
|
||||
amount = 20
|
||||
price_boundary = list(50,100)
|
||||
possible_names = list("Selling some great nutrients for making plants grow fast.",
|
||||
"Gro-Boost for sale, great nutrients that make your plants grow really quickly.")
|
||||
|
||||
/datum/commodity/trader/buford/fruitful
|
||||
comname = "Mutadone Plant Formula"
|
||||
comtype = /obj/item/reagent_containers/glass/bottle/fruitful
|
||||
amount = 20
|
||||
price_boundary = list(50,100)
|
||||
possible_names = list("Got some nutrients that'll fix any bad shit on your plants.",
|
||||
"Got some good Fruitful Farming formula here. Got any ill plants, this'll fix em.")
|
||||
|
||||
/datum/commodity/trader/buford/weedkiller
|
||||
comname = "Weedkiller"
|
||||
comtype = /obj/item/reagent_containers/glass/bottle/weedkiller
|
||||
amount = 20
|
||||
price_boundary = list(20,60)
|
||||
possible_names = list("Selling some good ol' weedkiller. Got any shitty plants, douse em with this.",
|
||||
"Weedkiller for sale. Like, for shitty weeds, not good weed. Ha ha.")
|
||||
|
||||
// Buford wants these things
|
||||
|
||||
/datum/commodity/trader/buford/vennecure
|
||||
comname = "Curative Venne"
|
||||
comtype = /obj/item/plant/herb/venne/curative
|
||||
price_boundary = list(40,250)
|
||||
possible_names = list("I hear there's a mutation of Venne that's a cool sunset color. Hit me up with some of that, brother.")
|
||||
|
||||
/datum/commodity/trader/buford/megaweed
|
||||
comname = "Rainbow Weed"
|
||||
comtype = /obj/item/plant/herb/cannabis/mega
|
||||
price_boundary = list(50,500)
|
||||
possible_names = list("I'd like to buy any rainbow weed you got. Good stuff.")
|
||||
|
||||
/datum/commodity/trader/buford/whiteweed
|
||||
comname = "White Weed"
|
||||
comtype = /obj/item/plant/herb/cannabis/white
|
||||
price_boundary = list(50,400)
|
||||
possible_names = list("You got any of that white cannabis?")
|
||||
|
||||
/datum/commodity/trader/buford/omegaweed
|
||||
comname = "Omega Weed"
|
||||
comtype = /obj/item/plant/herb/cannabis/omega
|
||||
price_boundary = list(500,1500)
|
||||
possible_names = list("I hear there's a super-potent mutant strain of Cannabis. Got any of that?")
|
||||
|
||||
/datum/commodity/trader/buford/psilocybin
|
||||
comname = "Psilocybin Mushrooms"
|
||||
comtype = /obj/item/reagent_containers/food/snacks/mushroom/psilocybin
|
||||
price_boundary = list(100,650)
|
||||
possible_names = list("You got any magic mushrooms? The Psilocybin kind.")
|
||||
|
||||
/datum/commodity/trader/buford/pizza
|
||||
comname = "Pizza"
|
||||
comtype = /obj/item/reagent_containers/food/snacks/pizza
|
||||
price_boundary = list(50,250)
|
||||
possible_names = list("You got any pizza?")
|
||||
@@ -0,0 +1,172 @@
|
||||
/datum/trader/generic
|
||||
// completely randomised generic trader
|
||||
hiketolerance = 20
|
||||
base_patience = list(4,20)
|
||||
chance_leave = 33
|
||||
chance_arrive = 33
|
||||
|
||||
max_goods_buy = 5
|
||||
max_goods_sell = 3
|
||||
|
||||
base_goods_buy = list(/datum/commodity/trader/generic/anyore,
|
||||
/datum/commodity/trader/generic/herbs,
|
||||
/datum/commodity/trader/generic/electronics,
|
||||
/datum/commodity/trader/generic/anyfood,
|
||||
/datum/commodity/trader/generic/shipcomponents,
|
||||
/datum/commodity/trader/generic/jumpsuits)
|
||||
base_goods_sell = list(/datum/commodity/trader/generic/sheetmetal,
|
||||
/datum/commodity/trader/generic/rcd_ammo,
|
||||
/datum/commodity/trader/generic/fabric,
|
||||
/datum/commodity/trader/generic/telecrystal,
|
||||
/datum/commodity/trader/generic/glowstick)
|
||||
/*
|
||||
/datum/commodity/trader/synthmodule/bacteria,
|
||||
/datum/commodity/trader/synthmodule/virii,
|
||||
/datum/commodity/trader/synthmodule/parasite,
|
||||
/datum/commodity/trader/synthmodule/fungi,
|
||||
/datum/commodity/trader/synthmodule/gmcell,
|
||||
/datum/commodity/trader/synthmodule/upgrader)
|
||||
*/
|
||||
New()
|
||||
..()
|
||||
var/pickfirstname = pick("Honest","Fair","Merchant","Trader","Kosher","Real Deal","Dealer","Sketchy","100%","Sassy","Zesty")
|
||||
var/picklastname = pick(last_names)
|
||||
src.name = "[pickfirstname] [picklastname]"
|
||||
|
||||
src.hiketolerance = rand(2,4)
|
||||
src.hiketolerance *= 10
|
||||
crate_tag = "TDR[rand(100,999)]"
|
||||
|
||||
// Traders are selling these things
|
||||
|
||||
/datum/commodity/trader/generic/sheetmetal
|
||||
comname = "Sheet Metal"
|
||||
comtype = /obj/item/sheet/steel
|
||||
amount = 200
|
||||
price_boundary = list(5,9)
|
||||
possible_names = list("I'm selling sheets of construction-grade steel.",
|
||||
"I'm selling sheets of steel. Below market price, guaranteed!")
|
||||
|
||||
/datum/commodity/trader/generic/rcd_ammo
|
||||
comname = "RCD Charges"
|
||||
comtype = /obj/item/rcd_ammo
|
||||
amount = 15
|
||||
price_boundary = list(200,700)
|
||||
possible_names = list("We have RCD ammunition for sale.",
|
||||
"We have charges for RCD devices available for a good price!")
|
||||
|
||||
/datum/commodity/trader/generic/fabric
|
||||
comname = "Cloth Fabric"
|
||||
comtype = /obj/item/raw_material/fabric
|
||||
price_boundary = list(5,7)
|
||||
possible_names = list("We have lots of cloth for sale. Good for making clothes with.",
|
||||
"We have a great deal of cloth we need to shift soon, so please buy it!")
|
||||
|
||||
/datum/commodity/trader/generic/telecrystal
|
||||
comname = "Telecrystal"
|
||||
comtype = /obj/item/raw_material/telecrystal
|
||||
amount = 20
|
||||
price_boundary = list(750,1200)
|
||||
possible_names = list("We have a limited amount of telecrystal available for purchase.",
|
||||
"We have raw telecrystal stones and no facilities to make use of them, so we're selling them instead.")
|
||||
|
||||
/datum/commodity/trader/generic/glowstick
|
||||
comname = "Glowstick"
|
||||
comtype = /obj/item/device/glowstick
|
||||
amount = 20
|
||||
price_boundary = list(8,20)
|
||||
possible_names = list("We have a number of glowsticks available for purchase.",
|
||||
"We have come across some glowstick lighting supplies and have no use for them. Please buy them!")
|
||||
|
||||
/datum/commodity/trader/synthmodule
|
||||
comname = "Synth-O-Matic module"
|
||||
comtype = /obj/item/synthmodule
|
||||
desc = "A synth-o-matic module."
|
||||
price_boundary = list(7000, 11000)
|
||||
possible_names = list("We have some Synth-O-Matic upgrades for sale.",
|
||||
"We recently salvaged a couple of Synth-O-Matic machines, and we cannot make use of these spare parts.")
|
||||
|
||||
/datum/commodity/trader/synthmodule/vaccine
|
||||
comname = "Synth-O-Matic vaccine module"
|
||||
comtype = /obj/item/synthmodule/vaccine
|
||||
|
||||
/datum/commodity/trader/synthmodule/upgrader
|
||||
comname = "Synth-O-Matic efficiency module"
|
||||
comtype = /obj/item/synthmodule/upgrader
|
||||
|
||||
/datum/commodity/trader/synthmodule/assistant
|
||||
comname = "Synth-O-Matic assistant module"
|
||||
comtype = /obj/item/synthmodule/assistant
|
||||
|
||||
/datum/commodity/trader/synthmodule/synthesizer
|
||||
comname = "Synth-O-Matic synthesizer module"
|
||||
comtype = /obj/item/synthmodule/synthesizer
|
||||
|
||||
/datum/commodity/trader/synthmodule/virii
|
||||
comname = "Synth-O-Matic virus module"
|
||||
comtype = /obj/item/synthmodule/virii
|
||||
|
||||
/datum/commodity/trader/synthmodule/bacteria
|
||||
comname = "Synth-O-Matic bacterium module"
|
||||
comtype = /obj/item/synthmodule/bacteria
|
||||
|
||||
/datum/commodity/trader/synthmodule/fungi
|
||||
comname = "Synth-O-Matic fungus module"
|
||||
comtype = /obj/item/synthmodule/fungi
|
||||
|
||||
/datum/commodity/trader/synthmodule/parasite
|
||||
comname = "Synth-O-Matic parasite module"
|
||||
comtype = /obj/item/synthmodule/parasite
|
||||
|
||||
/datum/commodity/trader/synthmodule/gmcell
|
||||
comname = "Synth-O-Matic great mutatis cell module"
|
||||
comtype = /obj/item/synthmodule/gmcell
|
||||
|
||||
/datum/commodity/trader/synthmodule/radiation
|
||||
comname = "Synth-O-Matic irradiation module"
|
||||
comtype = /obj/item/synthmodule/radiation
|
||||
|
||||
|
||||
// Traders want these things
|
||||
|
||||
/datum/commodity/trader/generic/anyore
|
||||
comname = "Ore"
|
||||
comtype = /obj/item/raw_material/
|
||||
price_boundary = list(20,120)
|
||||
possible_names = list("I'm looking to buy any kind of ore you might have.",
|
||||
"Our ore supplies are critically low - i'll buy any kind of ore for this price.")
|
||||
|
||||
/datum/commodity/trader/generic/anyfood
|
||||
comname = "Food"
|
||||
comtype = /obj/item/reagent_containers/food/snacks
|
||||
price_boundary = list(10,100)
|
||||
possible_names = list("We're ferrying food to the outer colonies, so sell us any extra you have.",
|
||||
"An accident has lost us most of our food supplies, so we're willing to buy any you may have.")
|
||||
|
||||
/datum/commodity/trader/generic/herbs
|
||||
comname = "Medical Herbs"
|
||||
comtype = /obj/item/plant/herb/
|
||||
price_boundary = list(20,150)
|
||||
possible_names = list("I'll buy any medical herbs you may have.",
|
||||
"I need to restock on medical herbs. I'm willing to buy them from you for a good price.")
|
||||
|
||||
/datum/commodity/trader/generic/electronics
|
||||
comname = "Electrical Components"
|
||||
comtype = /obj/item/electronics/
|
||||
price_boundary = list(10,85)
|
||||
possible_names = list("I need to buy electrical components for a project.",
|
||||
"We're rather short on electrical components needed for repairs. We're willing to pay well.")
|
||||
|
||||
/datum/commodity/trader/generic/shipcomponents
|
||||
comname = "Ship/Pod Components"
|
||||
comtype = /obj/item/shipcomponent/
|
||||
price_boundary = list(500,2500)
|
||||
possible_names = list("Our shipyards are low on ship-building components. Could you sell us some?",
|
||||
"We're trying a new experimental pod construction technique and need all the ship components we can get.")
|
||||
|
||||
/datum/commodity/trader/generic/jumpsuits
|
||||
comname = "Jumpsuits"
|
||||
comtype = /obj/item/clothing/under/
|
||||
price_boundary = list(20,100)
|
||||
possible_names = list("We're drafting in some new staff soon, and need new jumpsuits.",
|
||||
"We need any jumpsuits you can spare. Don't ask.")
|
||||
@@ -0,0 +1,161 @@
|
||||
/datum/trader/gragg
|
||||
// Rockworm guy.
|
||||
// Always buys mineral items from the station. Very honest and straightforward.
|
||||
name = "Gragg"
|
||||
picture = "gragg.png"
|
||||
crate_tag = "GRAGG"
|
||||
hiketolerance = 15
|
||||
base_patience = list(4,8)
|
||||
chance_leave = 10
|
||||
chance_arrive = 33
|
||||
|
||||
max_goods_buy = 3
|
||||
max_goods_sell = 3
|
||||
|
||||
base_goods_buy = list(/datum/commodity/trader/gragg/rock,
|
||||
/datum/commodity/trader/gragg/mauxite,
|
||||
/datum/commodity/trader/gragg/bohrum,
|
||||
/datum/commodity/trader/gragg/cobryl,
|
||||
/datum/commodity/trader/gragg/syreline)
|
||||
|
||||
base_goods_sell = list(/datum/commodity/trader/gragg/char,
|
||||
/datum/commodity/trader/gragg/erebite,
|
||||
/datum/commodity/trader/gragg/cerenkite,
|
||||
/datum/commodity/trader/gragg/plasmastone,
|
||||
/datum/commodity/trader/gragg/uqill,
|
||||
/datum/commodity/trader/gragg/artifact)
|
||||
|
||||
dialogue_greet = list("HELLO. WANT BUY TASTY ROCKS. TRADE?",
|
||||
"HUNGRY. WANT ORE FOR EAT. TRADE?",
|
||||
"WANT DELICIOUS ORE. SELL YOU NOT SO DELICIOUS ORE. TRADE?")
|
||||
dialogue_leave = list("UGH. FUCK THIS.",
|
||||
"YOU TOO STUPID. GOING ELSEWHERE NOW.",
|
||||
"SQUISHY BRAIN TOO DUMB. STONE BRAIN BETTER. LEAVING NOW.")
|
||||
dialogue_purchase = list("ENJOY. GOT TASTY ROCKS TO TRADE?",
|
||||
"NOT KNOW WHY WANT THAT. BUT YOURS NOW ANYWAY.",
|
||||
"DEAL. NOW, GOT ORE FOR ME?")
|
||||
dialogue_haggle_accept = list("UGH. FINE.",
|
||||
"OKAY. BUT LESS TALK. MORE SELL ORE.",
|
||||
"FUCK SAKE. FINE.",
|
||||
"FINE. WHATEVER. CAN HAVE ORE YET?",
|
||||
"FINE. BUT ENOUGH TALK. TRADE NOW OR FORGET IT.")
|
||||
dialogue_haggle_reject = list("NO.",
|
||||
"NOT *THAT* HUNGRY. CHRIST.",
|
||||
"NOT GOOD DEAL. YOU STUPID?",
|
||||
"NO. NO. NO.",
|
||||
"NO. NO MORE TALK. TRADE NOW OR FORGET IT.")
|
||||
dialogue_wrong_haggle_accept = list("OK. NOT GOING COMPLAIN.")
|
||||
dialogue_wrong_haggle_reject = list("WHAT? NOT MAKE SENSE. YOU STUPID?")
|
||||
dialogue_cant_afford_that = list("NOT ENOUGH CREDITS. MAYBE SELL ORE TO ME FIRST.",
|
||||
"NO. TOO EXPENSIVE FOR YOU.",
|
||||
"HUMAN BANK ACCOUNT NOT HAVE ENOUGH DELICIOUS GOLD.")
|
||||
dialogue_out_of_stock = list("SORRY. NO MORE OF THAT.",
|
||||
"RAN OUT OF THAT.")
|
||||
|
||||
set_up_goods()
|
||||
..()
|
||||
var/datum/commodity/COM = new /datum/commodity/trader/gragg/starstone(src)
|
||||
src.goods_buy += COM
|
||||
|
||||
// Gragg is selling these things
|
||||
|
||||
/datum/commodity/trader/gragg/char
|
||||
comname = "Char"
|
||||
comtype = /obj/item/raw_material/char
|
||||
price_boundary = list(20,40)
|
||||
possible_names = list("SELLING CHAR. NOT EVEN FOOD.",
|
||||
"SELLING CHAR ORE. TRIED TO COOK. BURNT IT.",
|
||||
"SELLING CHAR. FLAKY. GROSS.")
|
||||
|
||||
/datum/commodity/trader/gragg/erebite
|
||||
comname = "Strange Red Rock"
|
||||
comtype = /obj/item/raw_material/erebite
|
||||
amount = 5
|
||||
price_boundary = list(300,500)
|
||||
possible_names = list("SELLING GROSS SPICY ROCK. NOT GOOD EAT.",
|
||||
"SELLING WEIRD RED ROCK. GIVES GAS.",
|
||||
"SELLING TERRIBLE TO EAT RED ROCK.")
|
||||
|
||||
/datum/commodity/trader/gragg/cerenkite
|
||||
comname = "Toxic Blue Rock"
|
||||
comtype = /obj/item/raw_material/cerenkite
|
||||
amount = 5
|
||||
price_boundary = list(200,400)
|
||||
possible_names = list("SELLING BAD TASTING ROCK. NOT GOOD EAT.",
|
||||
"SELLING GLOWY BLUE ROCK. MAKES SICK.",
|
||||
"SELLING TERRIBLE TO EAT BLUE ROCK.")
|
||||
|
||||
/datum/commodity/trader/gragg/plasmastone
|
||||
comname = "Volatile Purple Rock"
|
||||
comtype = /obj/item/raw_material/plasmastone
|
||||
amount = 5
|
||||
price_boundary = list(400,700)
|
||||
possible_names = list("SELLING AWFUL PURPLE ROCK. TASTE TERRIBLE.",
|
||||
"SELLING NASTY PURPLE ROCK. EXPLODE KIND OF EASY.",
|
||||
"SELLING TERRIBLE TO EAT PURPLE ROCK.")
|
||||
|
||||
/datum/commodity/trader/gragg/uqill
|
||||
comname = "Rock Worm Poop"
|
||||
comtype = /obj/item/raw_material/uqill
|
||||
amount = 5
|
||||
price_boundary = list(500,600)
|
||||
possible_alt_types = list(/obj/item/raw_material/gemstone)
|
||||
alt_type_chance = 10
|
||||
possible_names = list("SELLING ROCK WORM POOP. NOT KNOW WHY YOU WANT THAT. BUT THERE IT IS.",
|
||||
"SELLING ROCK WORM POOP. NOT EATING THAT.",
|
||||
"SELLING SHIT. LITERAL SHIT. NEED MONEY OKAY. NO JUDGING.")
|
||||
|
||||
/datum/commodity/trader/gragg/artifact
|
||||
comname = "Unknown Item"
|
||||
comtype = /obj/item/artifact
|
||||
amount = 1
|
||||
price_boundary = list(1000,50000)
|
||||
possible_alt_types = list(/obj/item/artifact/activator_key,/obj/item/artifact/forcewall_wand,
|
||||
/obj/item/artifact/melee_weapon,/obj/item/artifact/teleport_wand,
|
||||
/obj/item/cell/artifact,/obj/item/gun/energy/artifact,/obj/item/raw_material/miracle,/obj/item/mining_tool)
|
||||
alt_type_chance = 90
|
||||
possible_names = list("SELLING WEIRD THING I DUG UP. DONT KNOW WHAT IS.",
|
||||
"ODD LITTLE THING. DUG IT UP. NO IDEA. CAN BUY IF WANT.")
|
||||
|
||||
// Gragg wants these things
|
||||
|
||||
/datum/commodity/trader/gragg/rock
|
||||
comname = "Rock"
|
||||
comtype = /obj/item/raw_material/rock
|
||||
price_boundary = list(30,60)
|
||||
possible_names = list("BUYING PLAIN ROCK. NOT ORE, JUST ROCK. STOCKING UP ON FOOD.",
|
||||
"BUYING PLAIN ROCK. NOT METAL OR CRYSTAL, JUST STONE.")
|
||||
|
||||
/datum/commodity/trader/gragg/mauxite
|
||||
comname = "Mauxite"
|
||||
comtype = /obj/item/raw_material/mauxite
|
||||
price_boundary = list(60,120)
|
||||
possible_names = list("BUYING MAUXITE. CRUNCHY AND DELICIOUS.",
|
||||
"BUYING MAUXITE. GOOD MEAL FOR LITHOVORE. HELPS GROW STRONG CARAPACE.")
|
||||
|
||||
/datum/commodity/trader/gragg/bohrum
|
||||
comname = "Bohrum"
|
||||
comtype = /obj/item/raw_material/bohrum
|
||||
price_boundary = list(250,400)
|
||||
possible_names = list("BUYING BOHRUM. GOES GOOD IN STONE SOUP.",
|
||||
"BUYING BOHRUM. VERY DENSE. GOOD AND FILLING.")
|
||||
|
||||
/datum/commodity/trader/gragg/cobryl
|
||||
comname = "Cobryl"
|
||||
comtype = /obj/item/raw_material/cobryl
|
||||
price_boundary = list(200,600)
|
||||
possible_names = list("BUYING COBRYL. MAKE GOOD SNACK.",
|
||||
"BUYING COBRYL. TASTY.")
|
||||
|
||||
/datum/commodity/trader/gragg/syreline
|
||||
comname = "Syreline"
|
||||
comtype = /obj/item/raw_material/syreline
|
||||
price_boundary = list(800,5000)
|
||||
possible_names = list("BUYING SYRELINE. NICE SWEET TREAT NOW AND THEN.",
|
||||
"BUYING SYRELINE. NOT TOO MANY THOUGH. DON'T WANT FAT.")
|
||||
|
||||
/datum/commodity/trader/gragg/starstone
|
||||
comname = "Rare star-shaped jewel"
|
||||
comtype = /obj/item/raw_material/starstone
|
||||
price_boundary = list(3000000,3000000)
|
||||
possible_names = list("WANT BUY PALE BLUE STAR-SHAPED GEMSTONE. EXTREMELY RARE. SELL TO ME IF FIND.")
|
||||
@@ -0,0 +1,183 @@
|
||||
/datum/trader/pianzi_hundan
|
||||
// Lizardman dude in chinese finery.
|
||||
// A total asshole who'll rip you off most of the time.
|
||||
name = "Pianzi Hundan"
|
||||
picture = "lizardman.png"
|
||||
crate_tag = "PIANZI"
|
||||
hiketolerance = 33
|
||||
base_patience = list(12,20)
|
||||
chance_leave = 25
|
||||
chance_arrive = 25
|
||||
asshole = 1
|
||||
|
||||
max_goods_buy = 2
|
||||
max_goods_sell = 5
|
||||
|
||||
base_goods_buy = list(/datum/commodity/trader/pianzi/herbs,
|
||||
/datum/commodity/trader/pianzi/crystalglass,
|
||||
/datum/commodity/trader/pianzi/telecrystal,
|
||||
/datum/commodity/trader/pianzi/artifact,
|
||||
/datum/commodity/trader/pianzi/cigarettes)
|
||||
base_goods_sell = list(/datum/commodity/trader/pianzi/metal,
|
||||
/datum/commodity/trader/pianzi/bees,
|
||||
/datum/commodity/trader/pianzi/cameraviewers,
|
||||
/datum/commodity/trader/pianzi/scanners,
|
||||
/datum/commodity/trader/pianzi/concgloves,
|
||||
/datum/commodity/trader/pianzi/medicine,
|
||||
/datum/commodity/trader/pianzi/wine,
|
||||
/datum/commodity/trader/pianzi/recdrugs,
|
||||
/datum/commodity/trader/pianzi/seeds)
|
||||
|
||||
dialogue_greet = list("Why hello there, my good friend! Plenty of wares today, as usual! Care to take a browse?",
|
||||
"Ahh, my good friend, a pleasure to see you as always! Come to browse Pianzi's menagerie of delightful goods?",
|
||||
"Welcome, welcome my good friend! How nice to see you! Do take advantage of my deals, hee hee! It's why I make them!")
|
||||
dialogue_leave = list("My goodness, DO look at the time! I must be off, deals to make! Ta-ta for now, my good friend!",
|
||||
"Ah.. I er.. have a business meeting to attend to. I forgot all about it! Ciao for now, my good friend!",
|
||||
"Ugh... *cough* Um, I do apologize my good friend, but I must depart. Important business to attend to! Arrivederci!")
|
||||
dialogue_purchase = list("Another fine transaction, my good friend! I knew I could count on your raw business acumen!",
|
||||
"Another deal for Pianzi. And you, too! Don't you love the fruits of mutual business deals? Hee hee!",
|
||||
"Excellent choice, my good friend. Capital! You and I make quite the team when it comes to profits!")
|
||||
dialogue_haggle_accept = list("Ah! My good friend, you wound me. I can concede this much, though...",
|
||||
"Well, perhaps if we meet halfway... is this an acceptable price?",
|
||||
"Oh my. You'll make poor Pianzi go broke at this rate!",
|
||||
"Good grief. I thought we were friends? Nevertheless, I can forgive you if we agree on this much...",
|
||||
"Well, my good friend. This is my final offer, I'd have to be insane to cut you a better bargain than this!")
|
||||
dialogue_haggle_reject = list("Now now, my good friend. Let's not get TOO eager.",
|
||||
"Well now! That's just rude! Fortunatley I can forgive you, since we're such good friends.",
|
||||
"I don't think I heard you correctly there, my good friend.",
|
||||
"Oh come now, I know you don't really mean that.",
|
||||
"I can see you're not having the best of days, my good friend. I suggest we make a trade now and stop all this silly haggling, hmm?")
|
||||
dialogue_wrong_haggle_accept = list("Why, that's just capital! A wonderful proposition! Don't mind if I do!")
|
||||
dialogue_wrong_haggle_reject = list("Ah my good friend, tha- wait, what? Hee hee! I think you typed the wrong number!")
|
||||
dialogue_cant_afford_that = list("Oh dear, oh dear. It looks like your reserves of capital are running a little too dry for Pianzi's taste, my good friend!",
|
||||
"Ahh, such a pity. You haven't enough credits! You really aught to stop making deals with those other traders. They're just ripping you off, you know!",
|
||||
"Oh my. Not enough credits! That's a shame, such a shame. I thought you had more business sense than this, my good friend!")
|
||||
dialogue_out_of_stock = list("Hmm. That item appears to be out of stock! No suprise, with such quality! Hee hee!",
|
||||
"Oh dear. My reserves of that item have ran out! Too bad, my good friend!")
|
||||
|
||||
// Pianzi is selling these things
|
||||
|
||||
/datum/commodity/trader/pianzi/metal
|
||||
comname = "Sheets of Construction Supplies"
|
||||
comtype = /obj/item/sheet/steel
|
||||
price_boundary = list(5,9)
|
||||
possible_alt_types = list(/obj/item/paper)
|
||||
alt_type_chance = 50
|
||||
possible_names = list("I am selling sheets of a lightweight and flexible building material! Very useful!",
|
||||
"Now for sale, I have these material sheets - very light, very flexible. Could be used for anything, theoretically!")
|
||||
|
||||
/datum/commodity/trader/pianzi/bees
|
||||
comname = "Live Insects"
|
||||
comtype = /obj/critter/domestic_bee
|
||||
amount = 10
|
||||
price_boundary = list(75,120)
|
||||
possible_alt_types = list(/obj/critter/roach)
|
||||
alt_type_chance = 50
|
||||
possible_names = list("I have a number of very friendly live insects for sale! Very cute too!",
|
||||
"I'm now selling some very adorable bugs! They could be very useful for hydroponics work!")
|
||||
|
||||
/datum/commodity/trader/pianzi/cameraviewers
|
||||
comname = "Camera Viewing Devices"
|
||||
comtype = /obj/item/device/camera_viewer
|
||||
amount = 3
|
||||
price_boundary = list(300,500)
|
||||
possible_alt_types = list(/obj/item/device/flashlight)
|
||||
alt_type_chance = 55
|
||||
possible_names = list("Now for sale; a handful of devices that can be used for viewing cameras far more easily!",
|
||||
"I happen to have a few devices that will make camera viewing much easier! It's a bargain for this price!")
|
||||
|
||||
/datum/commodity/trader/pianzi/scanners
|
||||
comname = "Scanning Devices"
|
||||
comtype = /obj/item/emeter
|
||||
amount = 10
|
||||
price_boundary = list(100,500)
|
||||
possible_alt_types = list(/obj/item/oreprospector,/obj/item/plantanalyzer,/obj/item/device/healthanalyzer)
|
||||
alt_type_chance = 40
|
||||
possible_names = list("I have some spare scanning devices for sale! Think of all the data you could scan, my good friend!",
|
||||
"I seem to have quite a lot of spare left over scanners. I could sell them to you, for a price!")
|
||||
|
||||
/datum/commodity/trader/pianzi/concgloves
|
||||
comname = "Mining Gloves"
|
||||
comtype = /obj/item/clothing/gloves/concussive
|
||||
amount = 2
|
||||
price_boundary = list(1000,2500)
|
||||
possible_alt_types = list(/obj/item/clothing/gloves/black)
|
||||
alt_type_chance = 50
|
||||
possible_names = list("I've got some gloves your miners may find very useful! Very black and substantial!",
|
||||
"Now for sale, some gloves i've been informed your mining crew will love!")
|
||||
|
||||
/datum/commodity/trader/pianzi/medicine
|
||||
comname = "Medicine"
|
||||
comtype = /obj/item/reagent_containers/glass/beaker/large/brute
|
||||
amount = 5
|
||||
price_boundary = list(250,1000)
|
||||
possible_alt_types = list(/obj/item/reagent_containers/glass/beaker/large/epinephrine,/obj/item/storage/firstaid/old)
|
||||
alt_type_chance = 25
|
||||
possible_names = list("Everyone needs medicine at some point. Luckily, Pianzi has some for sale!",
|
||||
"Heal what ails you with this medicine I have for sale!")
|
||||
|
||||
/datum/commodity/trader/pianzi/wine
|
||||
comname = "Vintage Drink"
|
||||
comtype = /obj/item/reagent_containers/food/drinks/bottle/wine
|
||||
amount = 8
|
||||
price_boundary = list(25,75)
|
||||
possible_alt_types = list(/obj/item/reagent_containers/food/drinks/bottle/vintage)
|
||||
alt_type_chance = 50
|
||||
possible_names = list("Cause to celebrate? This deal certainly is! Vintage drink of the best quality!",
|
||||
"I've come across some very prized vintage drink! Excellent for parties!")
|
||||
|
||||
/datum/commodity/trader/pianzi/recdrugs
|
||||
comname = "Addiction Aid Patches"
|
||||
comtype = /obj/item/reagent_containers/patch/nicotine
|
||||
amount = 50
|
||||
price_boundary = list(15,150)
|
||||
possible_alt_types = list(/obj/item/reagent_containers/patch/LSD)
|
||||
alt_type_chance = 33
|
||||
possible_names = list("Having trouble with addictive drugs? No worries! Just slap on one of these patches and your worries will go away!",
|
||||
"Now for sale, some light drug patches. Addiction won't be a problem if you use these!")
|
||||
|
||||
/datum/commodity/trader/pianzi/seeds
|
||||
comname = "Unusual Plant Seeds"
|
||||
comtype = /obj/item/seed/alien
|
||||
price_boundary = list(90,150)
|
||||
possible_alt_types = list(/obj/item/seed/creeper)
|
||||
alt_type_chance = 75
|
||||
possible_names = list("Love growing unusual plants? Then these seeds are for you, my good friend!",
|
||||
"Your botanists will love the opportunity to grow these very strange and unusual plant seeds!")
|
||||
|
||||
// Pianzi wants these things
|
||||
|
||||
/datum/commodity/trader/pianzi/herbs
|
||||
comname = "Medical Herbs"
|
||||
comtype = /obj/item/plant/herb/
|
||||
price_boundary = list(30,250)
|
||||
possible_names = list("My good friend, I am rather low on medical herbs right now. Perhaps you could sell me some, hmm?",
|
||||
"Everyone's in need of medical herbs, and Pianzi is no exception! I'll pay top premium, as always!")
|
||||
|
||||
/datum/commodity/trader/pianzi/crystalglass
|
||||
comname = "Crystal Glass"
|
||||
comtype = /obj/item/sheet/glass/crystal/
|
||||
price_boundary = list(400,600)
|
||||
possible_names = list("I have need of some glass made from crystallised plasma, my good friend! I'll pay a very good price!",
|
||||
"I'm currently paying a very good price for crystallised plasma glass! It's all the rage, I'm sure you know!")
|
||||
|
||||
/datum/commodity/trader/pianzi/telecrystal
|
||||
comname = "Telecrystal"
|
||||
comtype = /obj/item/raw_material/telecrystal
|
||||
price_boundary = list(500,2500)
|
||||
possible_names = list("Right now I'm in need of raw Telecrystals. Buying for top price as always!",
|
||||
"Telecrystals, weird little things aren't they? What's even more weird is that i'm also buying them for such a great price!")
|
||||
|
||||
/datum/commodity/trader/pianzi/artifact
|
||||
comname = "Useless Handheld Artifacts"
|
||||
comtype = /obj/item/artifact/
|
||||
price_boundary = list(1000,4000)
|
||||
possible_names = list("I'm collecting handheld artifacts! I only want inert ones, though!",
|
||||
"Right now i'd like to get my hands on some inert handheld artifacts! Keep the dangerous ones for yourself though.")
|
||||
|
||||
/datum/commodity/trader/pianzi/cigarettes
|
||||
comname = "Cigarettes"
|
||||
comtype = /obj/item/clothing/mask/cigarette/
|
||||
price_boundary = list(60,500)
|
||||
possible_names = list("Cigarettes are always a good trade. Right now, I'd like to buy any you have!",
|
||||
"Did you know cigarettes are currency on some colonies? That's why I'd like to buy any you can spare!")
|
||||
@@ -0,0 +1,165 @@
|
||||
/datum/trader
|
||||
var/name = "trader" // The name of the trader (duh)
|
||||
var/picture = "generic.png" // What they look like on comms
|
||||
var/crate_tag = "trader" // What to label a crate if selling to them
|
||||
var/list/base_patience = list(0,0) // min and max patience for this trader
|
||||
var/patience = 0 // how many times you can haggle the price before they get pissed off and leave, randomise it
|
||||
var/hiketolerance = 20// if the haggled price hike is this % or greater of the current price, reject it
|
||||
var/hidden = 0 // Makes the trader not show up on the QM console
|
||||
var/chance_leave = 20 // Chance for a trader to go hidden during a market shift
|
||||
var/chance_arrive = 33 // Chance for a trader to stop hiding during a market shift
|
||||
var/asshole = 0 // will accept wrong-direction haggles
|
||||
|
||||
// lists of commodity datums that the trader will buy or sell, and the cart
|
||||
// these are the base lists of commodities this trader will have
|
||||
var/list/base_goods_buy = list()
|
||||
var/list/base_goods_sell = list()
|
||||
// these are the max amount of entries the trader will have on each list
|
||||
var/max_goods_buy = 1
|
||||
var/max_goods_sell = 1
|
||||
// and these three are the active ones used for gameplay
|
||||
var/list/goods_buy = list()
|
||||
var/list/goods_sell = list()
|
||||
var/list/shopping_cart = list()
|
||||
|
||||
var/current_message = "what"// draws from dialogue to display a message
|
||||
// dialogue banks
|
||||
var/list/dialogue_greet = list("Hello there. Care to take a look at my wares?")
|
||||
var/list/dialogue_leave = list("This is going nowhere. I'm outta here.")
|
||||
var/list/dialogue_purchase = list("Thank you for your purchase! Your goods should arrive shortly.")
|
||||
var/list/dialogue_haggle_accept = list("Alright, how's this sound?",
|
||||
"You drive a hard bargain. How's this price?",
|
||||
"You're busting my balls here. How's this?",
|
||||
"I'm being more than generous here, I think you'll agree.",
|
||||
"This is my final offer. Can't do better than this.")
|
||||
var/list/dialogue_haggle_reject = list("No way. That's too much of a stretch.",
|
||||
"You're kidding, right?",
|
||||
"That's just not reasonable.",
|
||||
"I can't go for that.",
|
||||
"I'm afraid that's unacceptable.")
|
||||
var/list/dialogue_wrong_haggle_accept = list("...huh. If you say so!")
|
||||
var/list/dialogue_wrong_haggle_reject = list("Are you sure about that?")
|
||||
var/list/dialogue_cant_afford_that = list("I'm sorry, but you can't afford that.")
|
||||
var/list/dialogue_out_of_stock = list("Sorry, that item is out of stock.")
|
||||
|
||||
var/currently_selling = 0 //Are we currently processing an order?
|
||||
|
||||
New()
|
||||
src.current_message = pick(src.dialogue_greet)
|
||||
src.patience = rand(src.base_patience[1],src.base_patience[2])
|
||||
if (src.max_goods_buy > src.base_goods_buy.len)
|
||||
src.max_goods_buy = src.base_goods_buy.len
|
||||
if (src.max_goods_sell > src.base_goods_sell.len)
|
||||
src.max_goods_sell = src.base_goods_sell.len
|
||||
src.set_up_goods()
|
||||
|
||||
proc/set_up_goods()
|
||||
// This is called in New and also when the trader comes back from being away for a while
|
||||
// It basically clears out and rejumbles their commodity lists to keep things fresh
|
||||
src.goods_buy = new/list()
|
||||
src.goods_sell = new/list()
|
||||
src.wipe_cart()
|
||||
|
||||
var/list/goods_buy_temp = list()
|
||||
goods_buy_temp |= base_goods_buy
|
||||
var/list/goods_sell_temp = list()
|
||||
goods_sell_temp |= base_goods_sell
|
||||
|
||||
var/howmanybuy = rand(1,src.max_goods_buy)
|
||||
while(howmanybuy > 0)
|
||||
howmanybuy--
|
||||
var/the_commodity = pick(goods_buy_temp)
|
||||
var/datum/commodity/COM = new the_commodity(src)
|
||||
src.goods_buy += COM
|
||||
goods_buy_temp -= the_commodity
|
||||
|
||||
var/howmanysell = rand(1,src.max_goods_sell)
|
||||
while(howmanysell > 0)
|
||||
howmanysell--
|
||||
var/the_commodity = pick(goods_sell_temp)
|
||||
var/datum/commodity/COM = new the_commodity(src)
|
||||
if(COM.type == /datum/commodity) logTheThing("debug", src, null, "<B>SpyGuy/Traders:</B> [src] got a /datum/commodity when trying to set up stock with [the_commodity]")
|
||||
src.goods_sell += COM
|
||||
goods_sell_temp -= the_commodity
|
||||
|
||||
proc/haggle(var/datum/commodity/goods,var/askingprice,var/buying = 0)
|
||||
// if something's gone wrong and there's no input, reject the haggle
|
||||
// also reject if there's no change in the price at all
|
||||
if (!askingprice || !goods) return
|
||||
if (askingprice == goods.price) return
|
||||
|
||||
// if the player is being dumb and haggling in the wrong direction, tell them
|
||||
// unless the trader is a dick in which case accept the terrible haggle outright
|
||||
if ((buying && askingprice > goods.price) || (!buying && askingprice < goods.price))
|
||||
if (src.asshole)
|
||||
src.current_message = pick(src.dialogue_wrong_haggle_accept)
|
||||
goods.price = askingprice
|
||||
return
|
||||
else
|
||||
src.current_message = pick(src.dialogue_wrong_haggle_reject)
|
||||
return
|
||||
|
||||
// check if the price increase % of the haggle is more than this trader will tolerate
|
||||
var/adjustedTolerance = src.hiketolerance
|
||||
|
||||
if(istype(usr, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(H.traitHolder && H.traitHolder.hasTrait("smoothtalker"))
|
||||
adjustedTolerance = round(adjustedTolerance * 1.5)
|
||||
|
||||
var/hikeperc = askingprice - goods.price
|
||||
hikeperc = (hikeperc / goods.price) * 100
|
||||
var/negatol = 0 - adjustedTolerance
|
||||
|
||||
if ((buying && hikeperc <= negatol) || (!buying && hikeperc >= adjustedTolerance))
|
||||
// you are being a rude nerd and pushing it too far!
|
||||
src.current_message = pick(src.dialogue_haggle_reject)
|
||||
src.patience--
|
||||
if (src.patience == 0)
|
||||
src.current_message = src.dialogue_haggle_reject[src.dialogue_haggle_reject.len]
|
||||
return
|
||||
|
||||
// now, the actual haggling part! find the middle ground between the two prices
|
||||
var/middleground = (goods.price + askingprice) / 2
|
||||
// now slide it in the trader's favor slightly (hey, they're haggling too)
|
||||
var/negotiate = abs(goods.price-middleground)-1
|
||||
if (buying)
|
||||
goods.price = round(middleground + rand(0,negotiate))
|
||||
else
|
||||
if(middleground-goods.price <= 0.5)
|
||||
goods.price = round(middleground + 1)
|
||||
else
|
||||
goods.price = round(middleground - rand(0,negotiate))
|
||||
src.current_message = pick(src.dialogue_haggle_accept)
|
||||
src.patience--
|
||||
// warn the player if the trader isn't going to take any more haggling
|
||||
if (src.patience == 0)
|
||||
src.current_message = src.dialogue_haggle_accept[src.dialogue_haggle_accept.len]
|
||||
|
||||
proc/wipe_cart(var/sold_stuff)
|
||||
for (var/datum/commodity/trader/incart/COM in src.shopping_cart)
|
||||
if (COM.reference && istype(COM.reference,/datum/commodity/))
|
||||
if (COM.reference.amount > -1 && !sold_stuff) //If we sold shit then don't increase the amount. Fuck.
|
||||
COM.reference.amount += COM.amount
|
||||
src.shopping_cart -= COM
|
||||
src.shopping_cart.Cut()
|
||||
|
||||
/datum/commodity/trader/
|
||||
var/listed_name = "a thing!!!" // What it shows up as outside the shopping cart
|
||||
var/list/possible_names = list() // List of names the trader will call this commodity
|
||||
var/list/possible_alt_types = list() // List of things this trade can be other than the base path
|
||||
var/alt_type_chance = 0 // The chance it will be one of those alternate things
|
||||
var/list/price_boundary = list(0,0) // Minimum and maximum price for this commodity
|
||||
|
||||
New()
|
||||
..()
|
||||
if(src.possible_names.len)
|
||||
src.listed_name = pick(src.possible_names)
|
||||
else
|
||||
src.listed_name = src.comname
|
||||
if(prob(src.alt_type_chance) && src.possible_alt_types.len)
|
||||
src.comtype = pick(src.possible_alt_types)
|
||||
src.price = rand(src.price_boundary[1],src.price_boundary[2])
|
||||
|
||||
/datum/commodity/trader/incart/
|
||||
var/datum/commodity/reference = null
|
||||
@@ -0,0 +1,146 @@
|
||||
/datum/trader/vurdalak
|
||||
// Dude in a cloak in the dark.
|
||||
// A creepy guy who buys and sells really suspicious shit.
|
||||
name = "Vurdalak the Shrouded"
|
||||
picture = "cloakdude.png"
|
||||
crate_tag = "SHROUD"
|
||||
hiketolerance = 10
|
||||
base_patience = list(2,12)
|
||||
chance_leave = 10
|
||||
chance_arrive = 10
|
||||
|
||||
max_goods_buy = 3
|
||||
max_goods_sell = 1
|
||||
|
||||
base_goods_buy = list(/datum/commodity/trader/vurdalak/meat,
|
||||
/datum/commodity/trader/vurdalak/brains,
|
||||
/datum/commodity/trader/vurdalak/deathweed,
|
||||
/datum/commodity/trader/vurdalak/toxicvenne,
|
||||
/datum/commodity/trader/vurdalak/amanita,
|
||||
/datum/commodity/trader/vurdalak/roburger)
|
||||
base_goods_sell = list(/datum/commodity/trader/vurdalak/artifact)
|
||||
|
||||
dialogue_greet = list("Well met. We have several items for sale, as well as several desired articles.",
|
||||
"Greetings. We believe it would be mutually profitable for the both of us to engage in commerce.",
|
||||
"Hail. We have been led to believe you have several items we are interested in acquiring. Perhaps an agreement could be reached.")
|
||||
dialogue_leave = list("We can delay here no longer. These negotiations have become most unproductive. Farewell.",
|
||||
"Fool. You have not treated these proceedings with the due consideration they require. We are leaving.",
|
||||
"This is a waste of time. We will take our leave to engage in more important pursuits.")
|
||||
dialogue_purchase = list("We thank you for your custom.",
|
||||
"Excellent. You will recieve your goods shortly.",
|
||||
"As we suspected, this has benefited us both.")
|
||||
dialogue_haggle_accept = list("If that is what it takes to facilitate this transaction, so be it.",
|
||||
"Very well. You should find this compromise to be adequate.",
|
||||
"We would find your proposition offensive, were we not in such need of commerce.",
|
||||
"We find this compromise to be... satisfactory. Barely.",
|
||||
"We will afford you no further leniency. Make the transaction now.")
|
||||
dialogue_haggle_reject = list("We find your offer unacceptable. We suggest you begin taking this proposition seriously.",
|
||||
"This is no time for levity, fool.",
|
||||
"That offer is unacceptable.",
|
||||
"We refuse your foolish and nonsensical offer.",
|
||||
"Enough of your nonsense. Make a trade now, or we shall depart.")
|
||||
dialogue_wrong_haggle_accept = list("Offer accepted.")
|
||||
dialogue_wrong_haggle_reject = list("It makes no sense for you to spend more credits than we have requested, you fool.")
|
||||
dialogue_cant_afford_that = list("You cannot afford that transaction.",
|
||||
"Your budget is too diminished to fulfill these terms.",
|
||||
"We do not give charity. You require more credits.")
|
||||
dialogue_out_of_stock = list("Unfortunatley, we no longer possess any of that item to sell.",
|
||||
"Our stocks of that item have been exhausted.")
|
||||
|
||||
set_up_goods()
|
||||
..()
|
||||
var/datum/commodity/the_commodity = null
|
||||
var/pickwhich = rand(1,3)
|
||||
switch(pickwhich)
|
||||
if(1)
|
||||
the_commodity = /datum/commodity/trader/vurdalak/obsidiancrown
|
||||
if(2)
|
||||
the_commodity = /datum/commodity/trader/vurdalak/ancientarmor
|
||||
if(3)
|
||||
the_commodity = /datum/commodity/trader/vurdalak/relic
|
||||
var/datum/commodity/COM = new the_commodity(src)
|
||||
src.goods_buy += COM
|
||||
|
||||
// Vurdalak is selling these things
|
||||
|
||||
/datum/commodity/trader/vurdalak/artifact
|
||||
comname = "Alien Artifacts"
|
||||
comtype = /obj/item/artifact
|
||||
amount = 4
|
||||
price_boundary = list(4000,6000)
|
||||
possible_alt_types = list(/obj/item/artifact/activator_key,/obj/item/artifact/forcewall_wand,
|
||||
/obj/item/artifact/melee_weapon,/obj/item/artifact/teleport_wand,
|
||||
/obj/item/cell/artifact,/obj/item/gun/energy/artifact,
|
||||
/obj/machinery/artifact/bio_damage_field_generator,/obj/machinery/artifact/gravity_well_generator/,
|
||||
/obj/machinery/artifact/noisy_thing,/obj/machinery/artifact/plant_helper,
|
||||
/obj/artifact/bomb,/obj/artifact/borgifier,/obj/artifact/forcefield_generator,
|
||||
/obj/artifact/healer_bio,/obj/artifact/teleport_recaller)
|
||||
alt_type_chance = 95
|
||||
possible_names = list("We are selling artifacts of alien origin. We cannot verify their purpose.",
|
||||
"We have a collection of alien artifacts you may be interested in.")
|
||||
|
||||
// Vurdalak wants these things
|
||||
|
||||
/datum/commodity/trader/vurdalak/meat
|
||||
comname = "Raw Meat"
|
||||
comtype = /obj/item/reagent_containers/food/snacks/ingredient/meat/
|
||||
price_boundary = list(30,150)
|
||||
possible_names = list("Our stocks of raw meat are running low. The condition is of no concern.",
|
||||
"We wish to purchase raw meat of any kind. Spoilage is not an issue.")
|
||||
|
||||
/datum/commodity/trader/vurdalak/brains
|
||||
comname = "Brains"
|
||||
comtype = /obj/item/organ/brain/
|
||||
price_boundary = list(1000,3500)
|
||||
possible_names = list("Our stocks of brains are running low. We care not for the condition.",
|
||||
"We require the excised brains of living creatures. If you have such an item, sell it to us.")
|
||||
|
||||
/datum/commodity/trader/vurdalak/deathweed
|
||||
comname = "Deathweed Cannabis"
|
||||
comtype = /obj/item/plant/herb/cannabis/black
|
||||
price_boundary = list(75,400)
|
||||
possible_names = list("We require black leaves from a mutated cannabis plant.",
|
||||
"There is a mutation of the cannabis plant that renders the plant a deep black. We wish to purchase leaves of this strain.")
|
||||
|
||||
/datum/commodity/trader/vurdalak/toxicvenne
|
||||
comname = "Black Venne"
|
||||
comtype = /obj/item/plant/herb/venne/toxic
|
||||
price_boundary = list(50,500)
|
||||
possible_names = list("The venne plant has a mutation that turns its fibers black. Sell us these fibers.",
|
||||
"We require black venne fibers from a mutated venne plant.")
|
||||
|
||||
/datum/commodity/trader/vurdalak/amanita
|
||||
comname = "Amanita Mushrooms"
|
||||
comtype = /obj/item/reagent_containers/food/snacks/mushroom/amanita
|
||||
price_boundary = list(180,520)
|
||||
possible_names = list("We wish to buy white amanita mushrooms.",
|
||||
"We require white mushrooms grown from a mutated mushroom plant.")
|
||||
|
||||
/datum/commodity/trader/vurdalak/roburger
|
||||
comname = "Roburgers"
|
||||
comtype = /obj/item/reagent_containers/food/snacks/burger/roburger
|
||||
price_boundary = list(125,550)
|
||||
possible_names = list("There is a burger known to transmute living beings into machines. We wish to purchase these.",
|
||||
"We are looking to buy the human culinary creation known as \"Roburgers\".")
|
||||
|
||||
// Unique things that Vurdalak wants
|
||||
|
||||
/datum/commodity/trader/vurdalak/obsidiancrown
|
||||
comname = {"We are looking to buy a reputedly unique relic that is said to be jet-black and horned in appearance,
|
||||
and hails from another dimension of space and time. We are willing to pay a considerable premium to purchase it,
|
||||
should you locate the curio in question."}
|
||||
comtype = /obj/item/clothing/head/void_crown
|
||||
price_boundary = list(20000,100000)
|
||||
|
||||
/datum/commodity/trader/vurdalak/ancientarmor
|
||||
comname = {"We have heard of an unusual relic that takes on the appearance of a black suit of armor adorned with bones.
|
||||
If you come by such an item, we strongly advise against wearing it. Instead, sell it to us, we have a great deal of funds
|
||||
allocated specifically for purchasing this item."}
|
||||
comtype = /obj/item/clothing/suit/armor/ancient
|
||||
price_boundary = list(20000,100000)
|
||||
|
||||
/datum/commodity/trader/vurdalak/relic
|
||||
comname = {"We are seeking a reputed relic that takes the appearance of a small grey box adorned with a simplistic
|
||||
symbol. If you have such an item, we are willing to pay a very large price for it."}
|
||||
comtype = /obj/item/relic
|
||||
price_boundary = list(15000,75000)
|
||||
Reference in New Issue
Block a user