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.
@@ -176,6 +176,7 @@
|
||||
#include "code\controllers\subsystems\supply.dm"
|
||||
#include "code\controllers\subsystems\ticker.dm"
|
||||
#include "code\controllers\subsystems\timer.dm"
|
||||
#include "code\controllers\subsystems\trade.dm"
|
||||
#include "code\controllers\subsystems\vote.dm"
|
||||
#include "code\controllers\subsystems\wireless.dm"
|
||||
#include "code\controllers\subsystems\initialization\asteroid.dm"
|
||||
@@ -275,6 +276,16 @@
|
||||
#include "code\datums\repositories\cameras.dm"
|
||||
#include "code\datums\repositories\crew.dm"
|
||||
#include "code\datums\repositories\repository.dm"
|
||||
#include "code\datums\trading\_trading_defines.dm"
|
||||
#include "code\datums\trading\ai.dm"
|
||||
#include "code\datums\trading\food.dm"
|
||||
#include "code\datums\trading\goods.dm"
|
||||
#include "code\datums\trading\misc.dm"
|
||||
#include "code\datums\trading\ship.dm"
|
||||
#include "code\datums\trading\trade.dm"
|
||||
#include "code\datums\trading\unique.dm"
|
||||
#include "code\datums\trading\vox.dm"
|
||||
#include "code\datums\trading\weaponry.dm"
|
||||
#include "code\datums\uplink\ammunition.dm"
|
||||
#include "code\datums\uplink\announcements.dm"
|
||||
#include "code\datums\uplink\badassery.dm"
|
||||
@@ -452,6 +463,7 @@
|
||||
#include "code\game\jobs\job\science.dm"
|
||||
#include "code\game\jobs\job\security.dm"
|
||||
#include "code\game\jobs\job\silicon.dm"
|
||||
#include "code\game\jobs\job\outsider\merchant.dm"
|
||||
#include "code\game\machinery\adv_med.dm"
|
||||
#include "code\game\machinery\ai_slipper.dm"
|
||||
#include "code\game\machinery\alarm.dm"
|
||||
@@ -688,6 +700,7 @@
|
||||
#include "code\game\objects\items\devices\binoculars.dm"
|
||||
#include "code\game\objects\items\devices\chameleonproj.dm"
|
||||
#include "code\game\objects\items\devices\debugger.dm"
|
||||
#include "code\game\objects\items\devices\dociler.dm"
|
||||
#include "code\game\objects\items\devices\flash.dm"
|
||||
#include "code\game\objects\items\devices\flashlight.dm"
|
||||
#include "code\game\objects\items\devices\floor_painter.dm"
|
||||
@@ -803,6 +816,7 @@
|
||||
#include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm"
|
||||
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
|
||||
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
|
||||
#include "code\game\objects\items\weapons\grenades\fake_grenade.dm"
|
||||
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
|
||||
#include "code\game\objects\items\weapons\grenades\fragmentation.dm"
|
||||
#include "code\game\objects\items\weapons\grenades\grenade.dm"
|
||||
@@ -1324,6 +1338,18 @@
|
||||
#include "code\modules\hydroponics\trays\tray_tools.dm"
|
||||
#include "code\modules\hydroponics\trays\tray_update_icons.dm"
|
||||
#include "code\modules\intern\intern.dm"
|
||||
#include "code\modules\item_worth\_helpers.dm"
|
||||
#include "code\modules\item_worth\item_worth.dm"
|
||||
#include "code\modules\item_worth\material_weapons.dm"
|
||||
#include "code\modules\item_worth\materials.dm"
|
||||
#include "code\modules\item_worth\reagents.dm"
|
||||
#include "code\modules\item_worth\worths_list.dm"
|
||||
#include "code\modules\item_worth\Value_procs\atoms.dm"
|
||||
#include "code\modules\item_worth\Value_procs\mob.dm"
|
||||
#include "code\modules\item_worth\Value_procs\obj.dm"
|
||||
#include "code\modules\item_worth\Value_procs\obj\items.dm"
|
||||
#include "code\modules\item_worth\Value_procs\obj\machinery.dm"
|
||||
#include "code\modules\item_worth\Value_procs\obj\structures.dm"
|
||||
#include "code\modules\law\incident.dm"
|
||||
#include "code\modules\law\law.dm"
|
||||
#include "code\modules\law\laws\high_severity.dm"
|
||||
@@ -1352,6 +1378,8 @@
|
||||
#include "code\modules\materials\material_sheets.dm"
|
||||
#include "code\modules\materials\material_synth.dm"
|
||||
#include "code\modules\materials\materials.dm"
|
||||
#include "code\modules\merchant\merchant_machinery.dm"
|
||||
#include "code\modules\merchant\merchant_programs.dm"
|
||||
#include "code\modules\mining\abandonedcrates.dm"
|
||||
#include "code\modules\mining\alloys.dm"
|
||||
#include "code\modules\mining\coins.dm"
|
||||
|
||||
@@ -76,7 +76,7 @@ var/global/list/socks_m = list(
|
||||
|
||||
//Backpacks
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Duffel Bag")
|
||||
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
|
||||
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg, /datum/job/merchant)
|
||||
|
||||
// Visual nets
|
||||
var/list/datum/visualnet/visual_nets = list()
|
||||
@@ -133,7 +133,7 @@ var/global/list/cloaking_devices = list()
|
||||
sortTim(facial_hair_styles_male_list, /proc/cmp_text_asc)
|
||||
sortTim(facial_hair_styles_female_list, /proc/cmp_text_asc)
|
||||
|
||||
//Body markings
|
||||
//Body markings
|
||||
paths = subtypesof(/datum/sprite_accessory/marking)
|
||||
for(var/path in paths)
|
||||
var/datum/sprite_accessory/marking/M = new path()
|
||||
@@ -180,7 +180,7 @@ var/global/list/cloaking_devices = list()
|
||||
// The other lists are generated *after* we sort the main one so they don't need sorting too.
|
||||
for (var/thing in all_species)
|
||||
var/datum/species/S = all_species[thing]
|
||||
|
||||
|
||||
if (!(S.spawn_flags & IS_RESTRICTED))
|
||||
playable_species += S.name
|
||||
if(S.spawn_flags & IS_WHITELISTED)
|
||||
|
||||
@@ -270,6 +270,8 @@ var/list/gamemode_cache = list()
|
||||
var/sun_accuracy = 8
|
||||
var/sun_target_z = 7
|
||||
|
||||
var/merchant_chance = 20 //Chance, in percentage, of the merchant job slot being open at round start
|
||||
|
||||
/datum/configuration/New()
|
||||
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
|
||||
for (var/T in L)
|
||||
@@ -833,6 +835,9 @@ var/list/gamemode_cache = list()
|
||||
fastboot = TRUE
|
||||
world.log << "Fastboot is ENABLED."
|
||||
|
||||
if("merchant_chance")
|
||||
config.merchant_chance = text2num(value)
|
||||
|
||||
else
|
||||
log_misc("Unknown setting in configuration: '[name]'")
|
||||
|
||||
|
||||
@@ -66,6 +66,12 @@
|
||||
if (J.title == rank)
|
||||
return J
|
||||
|
||||
/datum/controller/subsystem/jobs/proc/ShouldCreateRecords(var/rank)
|
||||
if(!rank) return 0
|
||||
var/datum/job/job = GetJob(rank)
|
||||
if(!job) return 0
|
||||
return job.create_record
|
||||
|
||||
/datum/controller/subsystem/jobs/proc/GetPlayerAltTitle(mob/new_player/player, rank)
|
||||
. = player.client.prefs.GetPlayerAltTitle(GetJob(rank))
|
||||
|
||||
@@ -313,7 +319,7 @@
|
||||
|
||||
var/datum/job/job = GetJob(rank)
|
||||
var/list/spawn_in_storage = list()
|
||||
|
||||
|
||||
if(job)
|
||||
var/list/custom_equip_slots = list() //If more than one item takes the same slot, all after the first one spawn in storage.
|
||||
var/list/custom_equip_leftovers = list()
|
||||
@@ -676,7 +682,7 @@
|
||||
Debug("LS/([H]): Entry; rank=[rank]")
|
||||
|
||||
var/datum/spawnpoint/spawnpos
|
||||
|
||||
|
||||
if(H.client.prefs.spawnpoint)
|
||||
spawnpos = spawntypes[H.client.prefs.spawnpoint]
|
||||
|
||||
@@ -790,7 +796,7 @@
|
||||
else if (storage)
|
||||
storage += thing
|
||||
Debug("EC/([H]): Unable to equip [thing]; sending to storage.")
|
||||
|
||||
|
||||
Debug("EC/([H]): Complete.")
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/var/global/datum/controller/subsystem/trade/SStrade
|
||||
|
||||
/datum/controller/subsystem/trade
|
||||
name = "Trade"
|
||||
wait = 1 MINUTE
|
||||
flags = SS_NO_TICK_CHECK
|
||||
var/list/traders = list() //List of all nearby traders
|
||||
|
||||
/datum/controller/subsystem/trade/New()
|
||||
NEW_SS_GLOBAL(SStrade)
|
||||
|
||||
/datum/controller/subsystem/trade/Initialize()
|
||||
for(var/i in 1 to rand(1,3))
|
||||
generateTrader(1)
|
||||
..()
|
||||
|
||||
/datum/controller/subsystem/trade/Recover()
|
||||
traders = SStrade.traders
|
||||
|
||||
/datum/controller/subsystem/trade/fire()
|
||||
for(var/a in traders)
|
||||
var/datum/trader/T = a
|
||||
if(!T.tick())
|
||||
traders -= T
|
||||
qdel(T)
|
||||
if(prob(100-traders.len*10))
|
||||
generateTrader()
|
||||
|
||||
/datum/controller/subsystem/trade/proc/generateTrader(var/stations = 0)
|
||||
var/list/possible = list()
|
||||
if(stations)
|
||||
possible += subtypesof(/datum/trader) - typesof(/datum/trader/ship)
|
||||
else
|
||||
if(prob(5))
|
||||
possible += subtypesof(/datum/trader/ship/unique)
|
||||
else
|
||||
possible += subtypesof(/datum/trader/ship) - typesof(/datum/trader/ship/unique)
|
||||
|
||||
for(var/i in 1 to 10)
|
||||
var/type = pick(possible)
|
||||
var/bad = 0
|
||||
for(var/trader in traders)
|
||||
if(istype(trader,type))
|
||||
bad = 1
|
||||
break
|
||||
if(bad)
|
||||
continue
|
||||
traders += new type
|
||||
return
|
||||
@@ -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
|
||||
)
|
||||
@@ -628,6 +628,13 @@
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "ectoplasm"
|
||||
|
||||
/obj/item/weapon/anomaly_core
|
||||
name = "anomaly core"
|
||||
desc = "An advanced bluespace device, little is know about its applications."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "anomaly_core"
|
||||
origin_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 7, TECH_BLUESPACE = 8)
|
||||
|
||||
/obj/item/weapon/research
|
||||
name = "research debugging device"
|
||||
desc = "Instant research tool. For testing purposes only."
|
||||
|
||||
@@ -386,7 +386,7 @@
|
||||
id = access_paramedic
|
||||
desc = "Paramedic Equipment"
|
||||
region = ACCESS_REGION_MEDBAY
|
||||
|
||||
|
||||
/var/const/access_detective = 68
|
||||
/datum/access/access_detective
|
||||
id = access_detective
|
||||
@@ -450,6 +450,12 @@
|
||||
desc = "Code Gold"
|
||||
access_type = ACCESS_TYPE_CENTCOM
|
||||
|
||||
/var/const/access_merchant = 110//merchant access
|
||||
/datum/access/merchant
|
||||
id = access_merchant
|
||||
desc = "Merchant Access"
|
||||
access_type = ACCESS_TYPE_NONE
|
||||
|
||||
/***************
|
||||
* Antag access *
|
||||
***************/
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
var/account_allowed = 1 // Does this job type come with a station account?
|
||||
var/economic_modifier = 2 // With how much does this job modify the initial account amount?
|
||||
var/create_record = 1 // Do we announce/make records for people who spawn on this job?
|
||||
|
||||
var/bag_type = /obj/item/weapon/storage/backpack
|
||||
var/satchel_type = /obj/item/weapon/storage/backpack/satchel_norm
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand)
|
||||
|
||||
|
||||
if(has_alt_title(H, alt_title,"Emergency Physician"))
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/datum/job/merchant
|
||||
title = "Merchant"
|
||||
faction = "Station"
|
||||
department = "Civilian"
|
||||
flag = MERCHANT
|
||||
department_flag = CIVILIAN
|
||||
total_positions = 0
|
||||
spawn_positions = 1
|
||||
supervisors = "yourself and the market"
|
||||
selection_color = "#515151"
|
||||
idtype = /obj/item/weapon/card/id/merchant
|
||||
minimal_player_age = 10
|
||||
economic_modifier = 5
|
||||
ideal_character_age = 30
|
||||
create_record = 0
|
||||
account_allowed = 0
|
||||
|
||||
access = list(access_merchant)
|
||||
minimal_access = list(access_merchant)
|
||||
|
||||
/datum/job/merchant/equip(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return FALSE
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/merchant(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/price_scanner(H), slot_r_store)
|
||||
|
||||
H << "You are a merchant heading to the [station_name()] to make profit, your main objective is to sell and trade with the crew."
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/job/merchant/New()
|
||||
..()
|
||||
if(prob(config.merchant_chance))
|
||||
spawn_positions = 0
|
||||
@@ -47,7 +47,8 @@ var/const/LAWYER =(1<<9)
|
||||
var/const/CHAPLAIN =(1<<10)
|
||||
var/const/CLOWN =(1<<11)
|
||||
var/const/MIME =(1<<12)
|
||||
var/const/ASSISTANT =(1<<13)
|
||||
var/const/MERCHANT =(1<<13)
|
||||
var/const/ASSISTANT =(1<<14)
|
||||
|
||||
|
||||
var/list/assistant_occupations = list() //Leaving this on one line stops Travis complaining ~Scopes
|
||||
@@ -106,6 +107,7 @@ var/list/civilian_positions = list(
|
||||
"Janitor",
|
||||
"Librarian",
|
||||
"Chaplain",
|
||||
"Merchant",
|
||||
"Assistant"
|
||||
)
|
||||
|
||||
@@ -119,7 +121,6 @@ var/list/security_positions = list(
|
||||
"Security Cadet"
|
||||
)
|
||||
|
||||
|
||||
var/list/nonhuman_positions = list(
|
||||
"AI",
|
||||
"Cyborg",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/mecha/combat/phazon
|
||||
desc = "An exosuit which can only be described as 'WTF?'."
|
||||
desc = "The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge bluespace technology and expensive materials."
|
||||
name = "Phazon"
|
||||
icon_state = "phazon"
|
||||
initial_icon = "phazon"
|
||||
@@ -21,7 +21,7 @@
|
||||
max_equip = 4
|
||||
|
||||
|
||||
/obj/mecha/combat/phazon/New()
|
||||
/obj/mecha/combat/phazon/equipped/New()
|
||||
..()
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/tool/rcd
|
||||
ME.attach(src)
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
name = "teleporter"
|
||||
desc = "An exosuit module that allows exosuits to teleport to any position in view."
|
||||
icon_state = "mecha_teleport"
|
||||
origin_tech = list(TECH_BLUESPACE = 10)
|
||||
origin_tech = list(TECH_BLUESPACE = 5)
|
||||
equip_cooldown = 150
|
||||
energy_drain = 1000
|
||||
range = RANGED
|
||||
|
||||
@@ -1069,17 +1069,318 @@
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_head)
|
||||
)
|
||||
|
||||
custom_action(step, atom/used_atom, mob/user)
|
||||
user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
|
||||
holder.add_overlay("[used_atom.icon_state]+o")
|
||||
qdel(used_atom)
|
||||
return 1
|
||||
/datum/construction/mecha/phazon_chassis/custom_action(step, atom/used_atom, mob/user)
|
||||
user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
|
||||
holder.add_overlay("[used_atom.icon_state]+o")
|
||||
qdel(used_atom)
|
||||
return 1
|
||||
|
||||
action(atom/used_atom,mob/user as mob)
|
||||
return check_all_steps(used_atom,user)
|
||||
/datum/construction/mecha/phazon_chassis/action(atom/used_atom,mob/user as mob)
|
||||
return check_all_steps(used_atom,user)
|
||||
|
||||
/datum/construction/mecha/phazon_chassis/spawn_result()
|
||||
var/obj/item/mecha_parts/chassis/const_holder = holder
|
||||
const_holder.construct = new /datum/construction/reversible/mecha/phazon(const_holder)
|
||||
const_holder.icon = 'icons/mecha/mech_construction.dmi'
|
||||
const_holder.icon_state = "phazon0"
|
||||
const_holder.density = TRUE
|
||||
QDEL_IN(src, 0)
|
||||
return
|
||||
|
||||
/datum/construction/reversible/mecha/phazon
|
||||
result = "/obj/mecha/combat/phazon"
|
||||
steps = list(
|
||||
//1
|
||||
list("key"=/obj/item/weapon/anomaly_core,
|
||||
"backkey"=null, //Cannot remove the anomaly core once it's in
|
||||
"desc"="Anomaly core socket is open and awaiting connection."),
|
||||
|
||||
//2
|
||||
list("key"=/obj/item/weapon/weldingtool,
|
||||
"backkey"=/obj/item/weapon/wrench,
|
||||
"desc"="External armor is wrenched."),
|
||||
//3
|
||||
list("key"=/obj/item/weapon/wrench,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="External armor is installed."),
|
||||
//4
|
||||
list("key"=/obj/item/mecha_parts/part/phazon_armour,
|
||||
"backkey"=/obj/item/weapon/weldingtool,
|
||||
"desc"="Phase armor is welded."),
|
||||
//5
|
||||
list("key"=/obj/item/weapon/weldingtool,
|
||||
"backkey"=/obj/item/weapon/wrench,
|
||||
"desc"="Phase armor is wrenched."),
|
||||
//6
|
||||
list("key"=/obj/item/weapon/wrench,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Phase armor is installed."),
|
||||
//7
|
||||
list("key"=/obj/item/stack/material/plasteel,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The bluespace crystal is engaged."),
|
||||
//8
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/wirecutters,
|
||||
"desc"="The bluespace crystal is connected."),
|
||||
//9
|
||||
list("key"=/obj/item/stack/cable_coil,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="The bluespace crystal is installed."),
|
||||
//10
|
||||
list("key"=/obj/item/bluespace_crystal,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Super capacitor is secured."),
|
||||
//12
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Super capacitor is installed."),
|
||||
//12
|
||||
list("key"=/obj/item/weapon/stock_parts/capacitor/super,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Phasic scanner module is secured."),
|
||||
//13
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Phasic scanner module is installed."),
|
||||
//14
|
||||
list("key"=/obj/item/weapon/stock_parts/scanning_module/phasic,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Weapon control module is secured."),
|
||||
//15
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Weapon control is installed."),
|
||||
//16
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/phazon/targeting,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Peripherals control module is secured."),
|
||||
//17
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Peripherals control module is installed"),
|
||||
//18
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/phazon/peripherals,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="Central control module is secured."),
|
||||
//19
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/crowbar,
|
||||
"desc"="Central control module is installed."),
|
||||
//20
|
||||
list("key"=/obj/item/weapon/circuitboard/mecha/phazon/main,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The wiring is adjusted."),
|
||||
//21
|
||||
list("key"=/obj/item/weapon/wirecutters,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The wiring is added."),
|
||||
//22
|
||||
list("key"=/obj/item/stack/cable_coil,
|
||||
"backkey"=/obj/item/weapon/screwdriver,
|
||||
"desc"="The hydraulic systems are active."),
|
||||
//23
|
||||
list("key"=/obj/item/weapon/screwdriver,
|
||||
"backkey"=/obj/item/weapon/wrench,
|
||||
"desc"="The hydraulic systems are connected."),
|
||||
//24
|
||||
list("key"=/obj/item/weapon/wrench,
|
||||
"desc"="The hydraulic systems are disconnected.")
|
||||
)
|
||||
|
||||
/datum/construction/reversible/mecha/phazon/action(atom/used_atom,mob/user as mob)
|
||||
return check_step(used_atom,user)
|
||||
|
||||
/datum/construction/reversible/mecha/phazon/custom_action(index, diff, atom/used_atom, mob/user)
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
//TODO: better messages.
|
||||
switch(index)
|
||||
if(24)
|
||||
user.visible_message("[user] connects the [holder] hydraulic systems", "<span class='notice'>You connect the [holder] hydraulic systems.</span>")
|
||||
holder.icon_state = "phazon1"
|
||||
if(23)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] activates the [holder] hydraulic systems.", "<span class='notice'>You activate the [holder] hydraulic systems.</span>")
|
||||
holder.icon_state = "phazon2"
|
||||
else
|
||||
user.visible_message("[user] disconnects the [holder] hydraulic systems", "<span class='notice'>You disconnect the [holder] hydraulic systems.</span>")
|
||||
holder.icon_state = "phazon0"
|
||||
if(22)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] adds the wiring to the [holder].", "<span class='notice'>You add the wiring to the [holder].</span>")
|
||||
holder.icon_state = "phazon3"
|
||||
else
|
||||
user.visible_message("[user] deactivates the [holder] hydraulic systems.", "<span class='notice'>You deactivate the [holder] hydraulic systems.</span>")
|
||||
holder.icon_state = "phazon1"
|
||||
if(21)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] adjusts the wiring of the [holder].", "<span class='notice'>You adjust the wiring of the [holder].</span>")
|
||||
holder.icon_state = "phazon4"
|
||||
else
|
||||
user.visible_message("[user] removes the wiring from the [holder].", "<span class='notice'>You remove the wiring from the [holder].</span>")
|
||||
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
|
||||
coil.amount = 4
|
||||
holder.icon_state = "phazon2"
|
||||
if(20)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the central control module into the [holder].", "<span class='notice'>You install the central computer mainboard into the [holder].</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon5"
|
||||
else
|
||||
user.visible_message("[user] disconnects the wiring of the [holder].", "<span class='notice'>You disconnect the wiring of the [holder].</span>")
|
||||
holder.icon_state = "phazon3"
|
||||
if(19)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the mainboard.", "<span class='notice'>You secure the mainboard.</span>")
|
||||
holder.icon_state = "phazon6"
|
||||
else
|
||||
user.visible_message("[user] removes the central control module from the [holder].", "<span class='notice'>You remove the central computer mainboard from the [holder].</span>")
|
||||
new /obj/item/weapon/circuitboard/mecha/phazon/main(get_turf(holder))
|
||||
holder.icon_state = "phazon4"
|
||||
if(18)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the peripherals control module into the [holder].", "<span class='notice'>You install the peripherals control module into the [holder].</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon7"
|
||||
else
|
||||
user.visible_message("[user] unfastens the mainboard.", "<span class='notice'>You unfasten the mainboard.</span>")
|
||||
holder.icon_state = "phazon5"
|
||||
if(17)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the peripherals control module.", "<span class='notice'>You secure the peripherals control module.</span>")
|
||||
holder.icon_state = "phazon8"
|
||||
else
|
||||
user.visible_message("[user] removes the peripherals control module from the [holder].", "<span class='notice'>You remove the peripherals control module from the [holder].</span>")
|
||||
new /obj/item/weapon/circuitboard/mecha/phazon/peripherals(get_turf(holder))
|
||||
holder.icon_state = "phazon6"
|
||||
if(16)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the weapon control module into the [holder].", "<span class='notice'>You install the weapon control module into the [holder].</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon9"
|
||||
else
|
||||
user.visible_message("[user] unfastens the peripherals control module.", "<span class='notice'>You unfasten the peripherals control module.</span>")
|
||||
holder.icon_state = "phazon7"
|
||||
if(15)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the weapon control module.", "<span class='notice'>You secure the weapon control module.</span>")
|
||||
holder.icon_state = "phazon10"
|
||||
else
|
||||
user.visible_message("[user] removes the weapon control module from the [holder].", "<span class='notice'>You remove the weapon control module from the [holder].</span>")
|
||||
new /obj/item/weapon/circuitboard/mecha/phazon/targeting(get_turf(holder))
|
||||
holder.icon_state = "phazon8"
|
||||
if(14)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs phasic scanner module to the [holder].", "<span class='notice'>You install scanner module to the [holder].</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon11"
|
||||
else
|
||||
user.visible_message("[user] unfastens the weapon control module.", "<span class='notice'>You unfasten the weapon control module.</span>")
|
||||
holder.icon_state = "phazon9"
|
||||
if(13)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the phasic scanner module.", "<span class='notice'>You secure the scanner module.</span>")
|
||||
holder.icon_state = "phazon12"
|
||||
else
|
||||
user.visible_message("[user] removes the phasic scanner module from the [holder].", "<span class='notice'>You remove the scanner module from the [holder].</span>")
|
||||
new /obj/item/weapon/stock_parts/scanning_module/phasic(get_turf(holder))
|
||||
holder.icon_state = "phazon10"
|
||||
if(12)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs super capacitor to the [holder].", "<span class='notice'>You install capacitor to the [holder].</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon13"
|
||||
else
|
||||
user.visible_message("[user] unfastens the phasic scanner module.", "<span class='notice'>You unfasten the scanner module.</span>")
|
||||
holder.icon_state = "phazon11"
|
||||
if(11)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the super capacitor.", "<span class='notice'>You secure the capacitor.</span>")
|
||||
holder.icon_state = "phazon14"
|
||||
else
|
||||
user.visible_message("[user] removes the super capacitor from the [holder].", "<span class='notice'>You remove the capacitor from the [holder].</span>")
|
||||
new /obj/item/weapon/stock_parts/capacitor/super(get_turf(holder))
|
||||
holder.icon_state = "phazon12"
|
||||
if(10)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the bluespace crystal.", "<span class='notice'>You install the bluespace crystal.</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon15"
|
||||
else
|
||||
user.visible_message("[user] unsecures the super capacitor from the [holder].", "<span class='notice'>You unsecure the capacitor from the [holder].</span>")
|
||||
holder.icon_state = "phazon13"
|
||||
if(9)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] connects the bluespace crystal.", "<span class='notice'>You connect the bluespace crystal.</span>")
|
||||
holder.icon_state = "phazon16"
|
||||
else
|
||||
user.visible_message("[user] removes the bluespace crystal from the [holder].", "<span class='notice'>You remove the bluespace crystal from the [holder].</span>")
|
||||
new /obj/item/bluespace_crystal(get_turf(holder))
|
||||
holder.icon_state = "phazon14"
|
||||
if(8)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] engages the bluespace crystal.", "<span class='notice'>You engage the bluespace crystal.</span>")
|
||||
holder.icon_state = "phazon17"
|
||||
else
|
||||
user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "<span class='notice'>You disconnect the bluespace crystal from the [holder].</span>")
|
||||
holder.icon_state = "phazon15"
|
||||
if(7)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the phase armor layer to the [holder].", "<span class='notice'>You install the phase armor layer to the [holder].</span>")
|
||||
holder.icon_state = "phazon18"
|
||||
else
|
||||
user.visible_message("[user] disengages the bluespace crystal.", "<span class='notice'>You disengage the bluespace crystal.</span>")
|
||||
holder.icon_state = "phazon16"
|
||||
if(6)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures the phase armor layer.", "<span class='notice'>You secure the phase armor layer.</span>")
|
||||
holder.icon_state = "phazon19"
|
||||
else
|
||||
user.visible_message("[user] pries the phase armor layer from the [holder].", "<span class='notice'>You pry the phase armor layer from the [holder].</span>")
|
||||
var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
|
||||
MS.amount = 5
|
||||
holder.icon_state = "phazon17"
|
||||
if(5)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds the phase armor layer to the [holder].", "<span class='notice'>You weld the phase armor layer to the [holder].</span>")
|
||||
holder.icon_state = "phazon20"
|
||||
else
|
||||
user.visible_message("[user] unfastens the phase armor layer.", "<span class='notice'>You unfasten the phase armor layer.</span>")
|
||||
holder.icon_state = "phazon18"
|
||||
if(4)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "<span class='notice'>You install Phazon Armor Plates to the [holder].</span>")
|
||||
qdel(used_atom)
|
||||
holder.icon_state = "phazon21"
|
||||
else
|
||||
user.visible_message("[user] cuts phase armor layer from the [holder].", "<span class='notice'>You cut the phase armor layer from the [holder].</span>")
|
||||
holder.icon_state = "phazon19"
|
||||
if(3)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] secures Phazon Armor Plates.", "<span class='notice'>You secure Phazon Armor Plates.</span>")
|
||||
holder.icon_state = "phazon22"
|
||||
else
|
||||
user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "<span class='notice'>You pry Phazon Armor Plates from the [holder].</span>")
|
||||
new /obj/item/mecha_parts/part/phazon_armour(get_turf(holder))
|
||||
holder.icon_state = "phazon20"
|
||||
if(2)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "<span class='notice'>You weld Phazon Armor Plates to the [holder].</span>")
|
||||
else
|
||||
user.visible_message("[user] unfastens Phazon Armor Plates.", "<span class='notice'>You unfasten Phazon Armor Plates.</span>")
|
||||
holder.icon_state = "phazon21"
|
||||
if(1)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "<span class='notice'>You slowly place the anomaly core into its socket and close its chamber.</span>")
|
||||
qdel(used_atom)
|
||||
return 1
|
||||
|
||||
/datum/construction/mecha/phazon_chassis/spawn_result()
|
||||
..()
|
||||
feedback_inc("mecha_phazon_created",1)
|
||||
return
|
||||
|
||||
/datum/construction/mecha/odysseus_chassis
|
||||
steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
|
||||
|
||||
@@ -39,32 +39,32 @@
|
||||
/obj/item/mecha_parts/part/ripley_torso
|
||||
name="Ripley Torso"
|
||||
desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
|
||||
icon_state = "ripley_harness"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "ripley_harness"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/ripley_left_arm
|
||||
name="Ripley Left Arm"
|
||||
desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
|
||||
icon_state = "ripley_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "ripley_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/ripley_right_arm
|
||||
name="Ripley Right Arm"
|
||||
desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
|
||||
icon_state = "ripley_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "ripley_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/ripley_left_leg
|
||||
name="Ripley Left Leg"
|
||||
desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||
icon_state = "ripley_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "ripley_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/ripley_right_leg
|
||||
name="Ripley Right Leg"
|
||||
desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||
icon_state = "ripley_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "ripley_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
///////// Gygax
|
||||
|
||||
@@ -78,41 +78,41 @@
|
||||
/obj/item/mecha_parts/part/gygax_torso
|
||||
name="Gygax Torso"
|
||||
desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
|
||||
icon_state = "gygax_harness"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "gygax_harness"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/gygax_head
|
||||
name="Gygax Head"
|
||||
desc="A Gygax head. Houses advanced surveilance and targeting sensors."
|
||||
icon_state = "gygax_head"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "gygax_head"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/gygax_left_arm
|
||||
name="Gygax Left Arm"
|
||||
desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
|
||||
icon_state = "gygax_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
icon_state = "gygax_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/gygax_right_arm
|
||||
name="Gygax Right Arm"
|
||||
desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
|
||||
icon_state = "gygax_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
icon_state = "gygax_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/gygax_left_leg
|
||||
name="Gygax Left Leg"
|
||||
icon_state = "gygax_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
icon_state = "gygax_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/gygax_right_leg
|
||||
name="Gygax Right Leg"
|
||||
icon_state = "gygax_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
icon_state = "gygax_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/gygax_armour
|
||||
name="Gygax Armour Plates"
|
||||
icon_state = "gygax_armour"
|
||||
origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
|
||||
icon_state = "gygax_armour"
|
||||
origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
|
||||
|
||||
|
||||
//////////// Durand
|
||||
@@ -126,38 +126,38 @@
|
||||
|
||||
/obj/item/mecha_parts/part/durand_torso
|
||||
name="Durand Torso"
|
||||
icon_state = "durand_harness"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "durand_harness"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/durand_head
|
||||
name="Durand Head"
|
||||
icon_state = "durand_head"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "durand_head"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/durand_left_arm
|
||||
name="Durand Left Arm"
|
||||
icon_state = "durand_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "durand_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/durand_right_arm
|
||||
name="Durand Right Arm"
|
||||
icon_state = "durand_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "durand_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/durand_left_leg
|
||||
name="Durand Left Leg"
|
||||
icon_state = "durand_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "durand_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/durand_right_leg
|
||||
name="Durand Right Leg"
|
||||
icon_state = "durand_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
icon_state = "durand_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/durand_armour
|
||||
name="Durand Armour Plates"
|
||||
icon_state = "durand_armour"
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
|
||||
icon_state = "durand_armour"
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
|
||||
|
||||
|
||||
|
||||
@@ -204,44 +204,49 @@
|
||||
/obj/item/mecha_parts/part/phazon_torso
|
||||
name="Phazon Torso"
|
||||
icon_state = "phazon_harness"
|
||||
//construction_time = 300
|
||||
//construction_time = 300
|
||||
//construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"glass"=10000,"phoron"=20000)
|
||||
origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 6, TECH_POWER = 6)
|
||||
origin_tech = list(TECH_DATA = 5, TECH_MATERIAL = 7, TECH_BLUESPACE = 6, TECH_POWER = 6)
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_head
|
||||
name="Phazon Head"
|
||||
icon_state = "phazon_head"
|
||||
//construction_time = 200
|
||||
//construction_time = 200
|
||||
//construction_cost = list(DEFAULT_WALL_MATERIAL=15000,"glass"=5000,"phoron"=10000)
|
||||
origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6)
|
||||
origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 5, TECH_MAGNET = 6)
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_left_arm
|
||||
name="Phazon Left Arm"
|
||||
icon_state = "phazon_l_arm"
|
||||
//construction_time = 200
|
||||
//construction_time = 200
|
||||
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_right_arm
|
||||
name="Phazon Right Arm"
|
||||
icon_state = "phazon_r_arm"
|
||||
//construction_time = 200
|
||||
//construction_time = 200
|
||||
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_left_leg
|
||||
name="Phazon Left Leg"
|
||||
icon_state = "phazon_l_leg"
|
||||
//construction_time = 200
|
||||
//construction_time = 200
|
||||
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_right_leg
|
||||
name="Phazon Right Leg"
|
||||
icon_state = "phazon_r_leg"
|
||||
//construction_time = 200
|
||||
//construction_time = 200
|
||||
//construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 3, TECH_MAGNET = 3)
|
||||
|
||||
/obj/item/mecha_parts/part/phazon_armour
|
||||
name="Phazon Armour Plates"
|
||||
icon_state = "phazon_armor"
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_BLUESPACE = 5, TECH_MAGNET = 5)
|
||||
|
||||
///////// Odysseus
|
||||
|
||||
@@ -256,37 +261,37 @@
|
||||
/obj/item/mecha_parts/part/odysseus_head
|
||||
name="Odysseus Head"
|
||||
icon_state = "odysseus_head"
|
||||
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 2)
|
||||
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/odysseus_torso
|
||||
name="Odysseus Torso"
|
||||
desc="A torso part of Odysseus. Contains power unit, processing core and life support systems."
|
||||
icon_state = "odysseus_torso"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "odysseus_torso"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/odysseus_left_arm
|
||||
name="Odysseus Left Arm"
|
||||
desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
|
||||
icon_state = "odysseus_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "odysseus_l_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/odysseus_right_arm
|
||||
name="Odysseus Right Arm"
|
||||
desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
|
||||
icon_state = "odysseus_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "odysseus_r_arm"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/odysseus_left_leg
|
||||
name="Odysseus Left Leg"
|
||||
desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||
icon_state = "odysseus_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "odysseus_l_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/obj/item/mecha_parts/part/odysseus_right_leg
|
||||
name="Odysseus Right Leg"
|
||||
desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||
icon_state = "odysseus_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
icon_state = "odysseus_r_leg"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
/*/obj/item/mecha_parts/part/odysseus_armour
|
||||
name="Odysseus Carapace"
|
||||
|
||||
@@ -41,6 +41,10 @@
|
||||
latejoin_cyborg += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("JoinLateMerchant")
|
||||
latejoin_merchant += loc
|
||||
delete_me = 1
|
||||
return
|
||||
if("prisonwarp")
|
||||
prisonwarp += loc
|
||||
delete_me = 1
|
||||
|
||||
@@ -223,6 +223,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
default_cartridge = /obj/item/weapon/cartridge/medical
|
||||
icon_state = "pda-gene"
|
||||
|
||||
/obj/item/device/pda/merchant
|
||||
icon_state = "pda-chef"
|
||||
hidden = 1
|
||||
|
||||
// Special AI/pAI PDAs that cannot explode.
|
||||
/obj/item/device/pda/ai
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
/obj/item/device/dociler
|
||||
name = "dociler"
|
||||
desc = "A complex single use recharging injector that spreads a complex neurological serum that makes animals docile and friendly. Somewhat."
|
||||
w_class = 3
|
||||
origin_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2)
|
||||
icon_state = "animal_tagger1"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi'
|
||||
)
|
||||
item_state = "gun"
|
||||
force = 0
|
||||
var/loaded = 1
|
||||
var/mode = "completely"
|
||||
|
||||
/obj/item/device/dociler/examine(var/mob/user)
|
||||
. = ..(user)
|
||||
user << "<span class='notice'>It is currently set to [mode] docile mode.</span>"
|
||||
|
||||
/obj/item/device/dociler/attack_self(var/mob/user)
|
||||
if(mode == "somewhat")
|
||||
mode = "completely"
|
||||
else
|
||||
mode = "somewhat"
|
||||
|
||||
user << "You set \the [src] to [mode] docile mode."
|
||||
|
||||
/obj/item/device/dociler/afterattack(var/mob/living/L, var/mob/user, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
if(!istype(L, /mob/living/simple_animal))
|
||||
user << "<span class='warning'>\The [src] has no effect on \the [L].</span>"
|
||||
return
|
||||
|
||||
if(!loaded)
|
||||
user << "<span class='warning'>\The [src] isn't loaded!</span>"
|
||||
return
|
||||
|
||||
user.visible_message("\The [user] thrusts \the [src] deep into \the [L]'s head, injecting something!")
|
||||
|
||||
if(mode == "somewhat")
|
||||
L.faction = user.faction
|
||||
else
|
||||
L.faction = null
|
||||
if(istype(L,/mob/living/simple_animal/hostile))
|
||||
var/mob/living/simple_animal/hostile/H = L
|
||||
if(!H.tameable)
|
||||
user << "<span class='warning'>\The [src] has no effect on \the [L].</span>"
|
||||
return
|
||||
else
|
||||
H.LoseTarget()
|
||||
H.attack_same = 0
|
||||
H.friends += user
|
||||
|
||||
L.desc += "<br><span class='notice'>It looks especially docile.</span>"
|
||||
var/name = input(user, "Would you like to rename \the [L]?", "Dociler", L.name) as text
|
||||
if(length(name))
|
||||
L.real_name = name
|
||||
L.name = name
|
||||
|
||||
loaded = 0
|
||||
icon_state = "animal_tagger0"
|
||||
addtimer(CALLBACK(src, .proc/do_recharge), 5 MINUTES)
|
||||
|
||||
|
||||
/obj/item/device/dociler/proc/do_recharge()
|
||||
loaded = 1
|
||||
icon_state = "animal_tagger1"
|
||||
src.visible_message("\The [src] beeps, refilling itself.")
|
||||
@@ -372,3 +372,23 @@ REAGENT SCANNER
|
||||
if (T.cores > 1)
|
||||
user.show_message("Anomalious slime core amount detected")
|
||||
user.show_message("Growth progress: [T.amount_grown]/10")
|
||||
|
||||
|
||||
/obj/item/device/price_scanner
|
||||
name = "price scanner"
|
||||
desc = "Using an up-to-date database of various costs and prices, this device estimates the market price of an item up to 0.001% accuracy."
|
||||
icon_state = "price_scanner"
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = 2
|
||||
throwforce = 0
|
||||
throw_speed = 3
|
||||
throw_range = 3
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 25, "glass" = 25)
|
||||
|
||||
/obj/item/device/price_scanner/afterattack(atom/movable/target, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
var/value = get_value(target)
|
||||
user.visible_message("\The [user] scans \the [target] with \the [src]")
|
||||
user.show_message("Price estimation of \the [target]: [value ? value : "N/A"] Credits")
|
||||
@@ -312,10 +312,17 @@ var/const/NO_EMAG_ACT = -50
|
||||
item_state = "gold_id"
|
||||
registered_name = "Captain"
|
||||
assignment = "Captain"
|
||||
|
||||
/obj/item/weapon/card/id/captains_spare/New()
|
||||
access = get_all_station_access()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/merchant
|
||||
name = "merchant pass"
|
||||
icon_state = "centcom"
|
||||
desc = "An identification card issued to NanoTrasen sanctioned merchants, indicating their right to sell and buy goods."
|
||||
access = list(access_merchant)
|
||||
|
||||
/obj/item/weapon/card/id/synthetic
|
||||
name = "\improper Synthetic ID"
|
||||
desc = "Access module for NanoTrasen Synthetics"
|
||||
|
||||
@@ -12,77 +12,93 @@
|
||||
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/ripley
|
||||
origin_tech = list(TECH_DATA = 3)
|
||||
origin_tech = list(TECH_DATA = 3)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/ripley/peripherals
|
||||
name = T_BOARD_MECHA("Ripley peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
name = T_BOARD_MECHA("Ripley peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/ripley/main
|
||||
name = T_BOARD_MECHA("Ripley central control")
|
||||
icon_state = "mainboard"
|
||||
name = T_BOARD_MECHA("Ripley central control")
|
||||
icon_state = "mainboard"
|
||||
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/gygax
|
||||
origin_tech = list(TECH_DATA = 4)
|
||||
origin_tech = list(TECH_DATA = 4)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/gygax/peripherals
|
||||
name = T_BOARD_MECHA("Gygax peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
name = T_BOARD_MECHA("Gygax peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/gygax/targeting
|
||||
name = T_BOARD_MECHA("Gygax weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4)
|
||||
name = T_BOARD_MECHA("Gygax weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/gygax/main
|
||||
name = T_BOARD_MECHA("Gygax central control")
|
||||
icon_state = "mainboard"
|
||||
name = T_BOARD_MECHA("Gygax central control")
|
||||
icon_state = "mainboard"
|
||||
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/durand
|
||||
origin_tech = list(TECH_DATA = 4)
|
||||
origin_tech = list(TECH_DATA = 4)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/durand/peripherals
|
||||
name = T_BOARD_MECHA("Durand peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
name = T_BOARD_MECHA("Durand peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/durand/targeting
|
||||
name = T_BOARD_MECHA("Durand weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4)
|
||||
name = T_BOARD_MECHA("Durand weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/durand/main
|
||||
name = T_BOARD_MECHA("Durand central control")
|
||||
icon_state = "mainboard"
|
||||
name = T_BOARD_MECHA("Durand central control")
|
||||
icon_state = "mainboard"
|
||||
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/honker
|
||||
origin_tech = list(TECH_DATA = 4)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/honker/peripherals
|
||||
name = T_BOARD_MECHA("H.O.N.K peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
name = T_BOARD_MECHA("H.O.N.K peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/honker/targeting
|
||||
name = T_BOARD_MECHA("H.O.N.K weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
name = T_BOARD_MECHA("H.O.N.K weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/honker/main
|
||||
name = T_BOARD_MECHA("H.O.N.K central control")
|
||||
icon_state = "mainboard"
|
||||
name = T_BOARD_MECHA("H.O.N.K central control")
|
||||
icon_state = "mainboard"
|
||||
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus
|
||||
origin_tech = list(TECH_DATA = 3)
|
||||
origin_tech = list(TECH_DATA = 3)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus/peripherals
|
||||
name = T_BOARD_MECHA("Odysseus peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
name = T_BOARD_MECHA("Odysseus peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/odysseus/main
|
||||
name = T_BOARD_MECHA("Odysseus central control")
|
||||
icon_state = "mainboard"
|
||||
name = T_BOARD_MECHA("Odysseus central control")
|
||||
icon_state = "mainboard"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/phazon
|
||||
origin_tech = list(TECH_DATA = 5, TECH_BLUESPACE = 5)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/phazon/peripherals
|
||||
name = T_BOARD_MECHA("Phazon peripherals control")
|
||||
icon_state = "mcontroller"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/phazon/targeting
|
||||
name = T_BOARD_MECHA("Phazon weapon control and targeting")
|
||||
icon_state = "mcontroller"
|
||||
origin_tech = list(TECH_DATA = 5, TECH_COMBAT = 6, TECH_BLUESPACE = 5)
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/phazon/main
|
||||
name = T_BOARD_MECHA("Phazon central control")
|
||||
icon_state = "mainboard"
|
||||
|
||||
//Undef the macro, shouldn't be needed anywhere else
|
||||
#undef T_BOARD_MECHA
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
/obj/item/weapon/grenade/fake
|
||||
name = "fragmentation grenade"
|
||||
icon_state = "frag"
|
||||
|
||||
/obj/item/weapon/grenade/fake/prime()
|
||||
active = 0
|
||||
playsound(src.loc, get_sfx("explosion"), 50, 1, 30)
|
||||
@@ -8,6 +8,7 @@
|
||||
var/banglet = 0
|
||||
var/spawner_type = null // must be an object path
|
||||
var/deliveryamt = 1 // amount of type to deliver
|
||||
var/list/newvars
|
||||
|
||||
prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
|
||||
|
||||
@@ -21,6 +22,9 @@
|
||||
|
||||
for(var/i=1, i<=deliveryamt, i++)
|
||||
var/atom/movable/x = new spawner_type
|
||||
if(newvars && length(newvars))
|
||||
for(var/v in newvars)
|
||||
x.vars[v] = newvars[v]
|
||||
x.loc = T
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
@@ -43,3 +47,16 @@
|
||||
spawner_type = /mob/living/simple_animal/hostile/carp
|
||||
deliveryamt = 5
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/singularity
|
||||
name = "singularity grenade"
|
||||
spawner_type = /obj/singularity
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/singularity/toy
|
||||
spawner_type = /obj/item/toy/spinningtoy
|
||||
|
||||
/obj/item/weapon/grenade/spawnergrenade/fake_carp
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 5)
|
||||
spawner_type = /mob/living/simple_animal/hostile/carp/holodeck
|
||||
deliveryamt = 4
|
||||
newvars = list("faction" = null, "melee_damage_lower" = 0, "melee_damage_upper" = 0, "environment_smash" = 0, "destroy_surroundings" = 0)
|
||||
|
||||
@@ -86,6 +86,31 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/shield/buckler
|
||||
name = "buckler"
|
||||
desc = "A wooden buckler used to block sharp things from entering your body back in the day."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "buckler"
|
||||
slot_flags = SLOT_BACK
|
||||
force = 8
|
||||
throwforce = 8
|
||||
base_block_chance = 60
|
||||
throw_speed = 10
|
||||
throw_range = 20
|
||||
w_class = 4.0
|
||||
origin_tech = list(TECH_MATERIAL = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1000, "Wood" = 1000)
|
||||
attack_verb = list("shoved", "bashed")
|
||||
|
||||
/obj/item/weapon/shield/buckler/handle_shield(mob/user)
|
||||
. = ..()
|
||||
if(.) playsound(user.loc, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
|
||||
/obj/item/weapon/shield/buckler/get_block_chance(mob/user, var/damage, atom/damage_source = null, mob/attacker = null)
|
||||
if(istype(damage_source, /obj/item/projectile))
|
||||
return 0
|
||||
return base_block_chance
|
||||
|
||||
/*
|
||||
* Energy Shield
|
||||
*/
|
||||
@@ -112,7 +137,7 @@
|
||||
|
||||
if(user.incapacitated())
|
||||
return 0
|
||||
|
||||
|
||||
if(.)
|
||||
spark(user.loc, 5)
|
||||
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
|
||||
|
||||
@@ -4,13 +4,6 @@
|
||||
* Classic Baton
|
||||
*/
|
||||
|
||||
/*
|
||||
* Banhammer
|
||||
*/
|
||||
/obj/item/weapon/banhammer/attack(mob/M as mob, mob/user as mob)
|
||||
M << "<font color='red'><b> You have been banned FOR NO REISIN by [user]</b></font>"
|
||||
user << "<font color='red'> You have <b>BANNED</b> [M]</font>"
|
||||
playsound(loc, 'sound/effects/adminhelp.ogg', 15)
|
||||
|
||||
/*
|
||||
* Classic Baton
|
||||
|
||||
@@ -761,7 +761,8 @@
|
||||
/obj/item/weapon/gun/projectile/automatic/terminator = 0.5,
|
||||
/obj/item/weapon/rig/military = 0.5,
|
||||
/obj/item/weapon/rig/unathi/fancy = 0.5,
|
||||
/obj/item/clothing/mask/ai = 0.5
|
||||
/obj/item/clothing/mask/ai = 0.5,
|
||||
/obj/item/weapon/anomaly_core = 0.5
|
||||
)
|
||||
|
||||
/obj/random/junk
|
||||
|
||||
@@ -38,3 +38,7 @@
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/clothing/glasses/meson(src)
|
||||
new /obj/item/clothing/head/soft(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/merchant
|
||||
name = "merchant locker"
|
||||
req_access = list(access_merchant)
|
||||
@@ -60,10 +60,11 @@ var/list/wizardstart = list()
|
||||
var/turf/newplayer_start = null
|
||||
|
||||
//Spawnpoints.
|
||||
var/list/latejoin = list()
|
||||
var/list/latejoin_gateway = list()
|
||||
var/list/latejoin_cryo = list()
|
||||
var/list/latejoin_cyborg = list()
|
||||
var/list/latejoin = list()
|
||||
var/list/latejoin_gateway = list()
|
||||
var/list/latejoin_cryo = list()
|
||||
var/list/latejoin_cyborg = list()
|
||||
var/list/latejoin_merchant = list()
|
||||
var/list/kickoffsloc = list()
|
||||
|
||||
var/list/prisonwarp = list() // Prisoners go to these
|
||||
|
||||
@@ -25,6 +25,7 @@ var/list/spawntypes = list()
|
||||
/datum/spawnpoint/arrivals
|
||||
display_name = "Arrivals Shuttle"
|
||||
msg = "is inbound from the NTCC Odin"
|
||||
disallow_job = list("Merchant")
|
||||
|
||||
|
||||
/datum/spawnpoint/arrivals/New()
|
||||
@@ -34,7 +35,7 @@ var/list/spawntypes = list()
|
||||
/datum/spawnpoint/cryo
|
||||
display_name = "Cryogenic Storage"
|
||||
msg = "has completed cryogenic revival"
|
||||
disallow_job = list("Cyborg")
|
||||
disallow_job = list("Cyborg", "Merchant")
|
||||
|
||||
/datum/spawnpoint/cryo/New()
|
||||
..()
|
||||
@@ -43,8 +44,15 @@ var/list/spawntypes = list()
|
||||
/datum/spawnpoint/cyborg
|
||||
display_name = "Cyborg Storage"
|
||||
msg = "has been activated from storage"
|
||||
restrict_job = list("Cyborg")
|
||||
restrict_job = list("Cyborg", "Merchant")
|
||||
|
||||
/datum/spawnpoint/cyborg/New()
|
||||
..()
|
||||
turfs = latejoin_cyborg
|
||||
turfs = latejoin_cyborg
|
||||
|
||||
/datum/spawnpoint/merchant
|
||||
display_name = "Merchant Station"
|
||||
restrict_job = list("Merchant")
|
||||
|
||||
/datum/spawnpoint/merchant/New()
|
||||
turfs = latejoin_merchant
|
||||
@@ -0,0 +1,2 @@
|
||||
/atom/proc/Value(var/base)
|
||||
return base
|
||||
@@ -0,0 +1,4 @@
|
||||
/mob/living/carbon/human/Value(var/base)
|
||||
. = ..()
|
||||
if(species)
|
||||
. *= species.rarity_value
|
||||
@@ -0,0 +1,4 @@
|
||||
/obj/Value()
|
||||
. = ..()
|
||||
for(var/a in contents)
|
||||
. += get_value(a)
|
||||
@@ -0,0 +1,35 @@
|
||||
/obj/item/slime_extract/Value(var/base)
|
||||
return base * Uses
|
||||
|
||||
/obj/item/ammo_casing/Value()
|
||||
if(!BB)
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/Value()
|
||||
. = ..()
|
||||
if(reagents)
|
||||
for(var/a in reagents.reagent_list)
|
||||
var/datum/reagent/reg = a
|
||||
. += reg.value * reg.volume
|
||||
. = round(.)
|
||||
|
||||
/obj/item/stack/Value(var/base)
|
||||
return base * amount
|
||||
|
||||
/obj/item/stack/material/Value()
|
||||
if(!material)
|
||||
return ..()
|
||||
return material.value * amount
|
||||
|
||||
/obj/item/weapon/ore/Value()
|
||||
var/material/mat = get_material_by_name(material)
|
||||
if(mat)
|
||||
return mat.value
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/material/Value()
|
||||
return material.value * worth_multiplier
|
||||
|
||||
/obj/item/weapon/spacecash/Value()
|
||||
return worth
|
||||
@@ -0,0 +1,5 @@
|
||||
/obj/machinery/Value()
|
||||
. = ..()
|
||||
if(stat & BROKEN)
|
||||
. *= 0.5
|
||||
. = round(.)
|
||||
@@ -0,0 +1,5 @@
|
||||
/obj/structure/barricade/Value()
|
||||
return material.value
|
||||
|
||||
/obj/structure/bed/Value()
|
||||
return ..() * material.value
|
||||
@@ -0,0 +1,3 @@
|
||||
//Workaround by Ginja due to the fact initial(parent_type) does not work.
|
||||
|
||||
#define PARENT(x) text2path(replacetext("[x]", regex("/\[^/\]+$"), ""))
|
||||
@@ -0,0 +1,13 @@
|
||||
/proc/get_value(atom/A) // A can be either type *or* instance; ie get_value(/obj) is valid, as is get_value(new /obj)
|
||||
var/atom/t = ispath(A) ? A : A.type
|
||||
while(!(t in worths)) // Find the first parent that is in the list
|
||||
t = PARENT(t)
|
||||
if(!t)
|
||||
return 0
|
||||
var/value = worths[t]
|
||||
if(value >= 0) // Value zero or greater than zero, all instances have same value
|
||||
return value
|
||||
else // Negative. If it's a path, use -x, otherwise call Value() on the instance
|
||||
if(ispath(A))
|
||||
return -value
|
||||
return A.Value(-value)
|
||||
@@ -0,0 +1,35 @@
|
||||
/obj/item/weapon/material
|
||||
var/worth_multiplier = 1
|
||||
|
||||
//Rule of thumb is: worth more than the parts put in
|
||||
//Finished good is worth more than its individual parts
|
||||
|
||||
/obj/item/weapon/material/kitchen
|
||||
worth_multiplier = 1.1
|
||||
|
||||
/obj/item/weapon/material/butterfly
|
||||
worth_multiplier = 8
|
||||
|
||||
/obj/item/weapon/material/harpoon
|
||||
worth_multiplier = 15
|
||||
|
||||
/obj/item/weapon/material/hatchet
|
||||
worth_multiplier = 6
|
||||
|
||||
/obj/item/weapon/material/minihoe
|
||||
worth_multiplier = 6
|
||||
|
||||
/obj/item/weapon/material/scythe
|
||||
worth_multiplier = 20
|
||||
|
||||
/obj/item/weapon/material/sword
|
||||
worth_multiplier = 30
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe
|
||||
worth_multiplier = 31
|
||||
|
||||
/obj/item/weapon/material/twohanded/spear
|
||||
worth_multiplier = 7 //blade + stuff
|
||||
|
||||
/obj/item/weapon/material/star
|
||||
worth_multiplier = 25
|
||||
@@ -0,0 +1,89 @@
|
||||
/material
|
||||
var/value = 1
|
||||
|
||||
/material/uranium
|
||||
value = 100
|
||||
|
||||
/material/diamond
|
||||
value = 170
|
||||
|
||||
/material/gold
|
||||
value = 40
|
||||
|
||||
/material/silver
|
||||
value = 35
|
||||
|
||||
/material/phoron
|
||||
value = 150
|
||||
|
||||
/material/stone/marble
|
||||
value = 4
|
||||
|
||||
/material/steel
|
||||
value = 4
|
||||
|
||||
/material/diona
|
||||
value = 5
|
||||
|
||||
/material/steel/holographic
|
||||
value = 0
|
||||
|
||||
/material/plasteel
|
||||
value = 12
|
||||
|
||||
/material/plasteel/titanium
|
||||
value = 10
|
||||
|
||||
/material/glass/reinforced
|
||||
value = 2
|
||||
|
||||
/material/glass/phoron
|
||||
value = 30
|
||||
|
||||
/material/glass/phoron/reinforced
|
||||
value = 40
|
||||
|
||||
/material/osmium
|
||||
value = 30
|
||||
|
||||
/material/tritium
|
||||
value = 300
|
||||
|
||||
/material/mhydrogen
|
||||
value = 100
|
||||
|
||||
/material/platinum
|
||||
value = 200
|
||||
|
||||
/material/iron
|
||||
value = 5
|
||||
|
||||
/material/voxalloy
|
||||
value = 100
|
||||
|
||||
/material/wood
|
||||
value = 3
|
||||
|
||||
/material/wood/holographic
|
||||
value = 0
|
||||
|
||||
/material/cardboard
|
||||
value = 0
|
||||
|
||||
/material/leather
|
||||
value = 3
|
||||
|
||||
/material/hide
|
||||
value = 5
|
||||
|
||||
/material/hide/xeno
|
||||
value = 35
|
||||
|
||||
/material/hide/human
|
||||
value = 35
|
||||
|
||||
/material/bone
|
||||
value = 5
|
||||
|
||||
/material/bone/necromancer
|
||||
value = 50
|
||||
@@ -0,0 +1,603 @@
|
||||
//These value assume that each unit is roughly a gram
|
||||
|
||||
/datum/reagent
|
||||
var/value = 1 //per unit
|
||||
|
||||
/datum/reagent/blood
|
||||
value = 2
|
||||
|
||||
/datum/reagent/antibodies
|
||||
value = 6
|
||||
|
||||
/datum/reagent/water
|
||||
value = 0
|
||||
|
||||
/datum/reagent/fuel
|
||||
value = 6.8
|
||||
|
||||
/datum/reagent/acetone
|
||||
value = 0.27
|
||||
|
||||
/datum/reagent/aluminum
|
||||
value = 0.02
|
||||
|
||||
/datum/reagent/ammonia
|
||||
value = 0.01
|
||||
|
||||
/datum/reagent/carbon
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/copper
|
||||
value = 0.02
|
||||
|
||||
/datum/reagent/ethanol
|
||||
value = 0.01
|
||||
|
||||
/datum/reagent/butanol
|
||||
value = 0.02
|
||||
|
||||
/datum/reagent/hydrazine
|
||||
value = 0.017
|
||||
|
||||
/datum/reagent/iron
|
||||
value = 0.01
|
||||
|
||||
/datum/reagent/lithium
|
||||
value = 6
|
||||
|
||||
/datum/reagent/mercury
|
||||
value = 0.02
|
||||
|
||||
/datum/reagent/phosphorus
|
||||
value = 0.4
|
||||
|
||||
/datum/reagent/potassium
|
||||
value = 1
|
||||
|
||||
/datum/reagent/radium
|
||||
value = 50 //Radium is crazy expensive, like 100k+ per gram. So probably a bit less expensive in the future.
|
||||
|
||||
/datum/reagent/acid
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/sodium
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/sugar
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/sulfur
|
||||
value = 2
|
||||
|
||||
/datum/reagent/kois
|
||||
value = 0.5
|
||||
|
||||
/datum/reagent/nutriment
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/nutriment/virus_food
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/nutriment/sprinkles
|
||||
value = 0.05
|
||||
|
||||
/datum/reagent/nutriment/mint
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/lipozine
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/sodiumchloride
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/blackpepper
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/enzyme
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/frostoil
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/capsaicin
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/capsaicin/condensed
|
||||
value = 0.5
|
||||
|
||||
/datum/reagent/drink
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/drink/milk/chocolate
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/drink/milk/cream
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/drink/coffee
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/drink/coffee/soy_latte
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/drink/hot_coco
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/drink/milkshake
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/drink/rewriter
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/drink/nuka_cola
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/drink/doctor_delight
|
||||
value = 0.3
|
||||
|
||||
/datum/reagent/drink/ice
|
||||
value = 0
|
||||
|
||||
/datum/reagent/drink/nothing
|
||||
value = 0
|
||||
|
||||
/datum/reagent/ethanol/absinthe
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/ale
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/beer
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/ethanol/bluecuracao
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/deadrum
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/gin
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/coffee/kahlua
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/melonliquor
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/rum
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/sake
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/ethanol/tequilla
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/thirteenloko
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/vermouth
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/vodka
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/whiskey
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/wine
|
||||
value = 0.1
|
||||
|
||||
/datum/reagent/ethanol/acid_spit
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/alliescocktail
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/aloe
|
||||
value = 0.17
|
||||
|
||||
/datum/reagent/ethanol/amasec
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/andalusia
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/antifreeze
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/atomicbomb
|
||||
value = 0.21
|
||||
|
||||
/datum/reagent/ethanol/coffee/b52
|
||||
value = 0.17
|
||||
|
||||
/datum/reagent/ethanol/bahama_mama
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/bananahonk
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/barefoot
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/beepsky_smash
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/bilk
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/ethanol/black_russian
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/bloody_mary
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/booger
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/coffee/brave_bull
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/changelingsting
|
||||
value = 0.19
|
||||
|
||||
/datum/reagent/ethanol/martini
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/cuba_libre
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/demonsblood
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/devilskiss
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/driestmartini
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/ginfizz
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/grog
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/ethanol/erikasurprise
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/gargle_blaster
|
||||
value = 0.21
|
||||
|
||||
/datum/reagent/ethanol/gintonic
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/goldschlager
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/hippies_delight
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/ethanol/hooch
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/ethanol/iced_beer
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/irishcarbomb
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/coffee/irishcoffee
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/ethanol/irish_cream
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/longislandicedtea
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/manhattan
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/manhattan_proj
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/manly_dorf
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/margarita
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/mead
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/moonshine
|
||||
value = 0.11
|
||||
|
||||
/datum/reagent/ethanol/neurotoxin
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/patron
|
||||
value = 0.16
|
||||
|
||||
/datum/reagent/ethanol/pwine
|
||||
value = 0.19
|
||||
|
||||
/datum/reagent/ethanol/red_mead
|
||||
value = 0.14
|
||||
|
||||
/datum/reagent/ethanol/sbiten
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/screwdrivercocktail
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/silencer
|
||||
value = 0.135
|
||||
|
||||
/datum/reagent/ethanol/singulo
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/snowwhite
|
||||
value = 0.125
|
||||
|
||||
/datum/reagent/ethanol/suidream
|
||||
value = 0.12
|
||||
|
||||
/datum/reagent/ethanol/syndicatebomb
|
||||
value = 0.21
|
||||
|
||||
/datum/reagent/ethanol/tequilla_sunrise
|
||||
value = 0.13
|
||||
|
||||
/datum/reagent/ethanol/threemileisland
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/toxins_special
|
||||
value = 0.2
|
||||
|
||||
/datum/reagent/ethanol/vodkamartini
|
||||
value = 0.135
|
||||
|
||||
/datum/reagent/ethanol/vodkatonic
|
||||
value = 0.145
|
||||
|
||||
/datum/reagent/ethanol/white_russian
|
||||
value = 0.125
|
||||
|
||||
/datum/reagent/ethanol/whiskey_cola
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/whiskeysoda
|
||||
value = 0.15
|
||||
|
||||
/datum/reagent/ethanol/specialwhiskey
|
||||
value = 0.3
|
||||
|
||||
/datum/reagent/inaprovaline
|
||||
value = 3.5
|
||||
|
||||
/datum/reagent/bicaridine
|
||||
value = 4.9
|
||||
|
||||
/datum/reagent/kelotane
|
||||
value = 2.9
|
||||
|
||||
/datum/reagent/dermaline
|
||||
value = 3.9
|
||||
|
||||
/datum/reagent/dylovene
|
||||
value = 2.1
|
||||
|
||||
/datum/reagent/dexalin
|
||||
value = 2.4
|
||||
|
||||
/datum/reagent/dexalinp
|
||||
value = 3.6
|
||||
|
||||
/datum/reagent/tricordrazine
|
||||
value = 6
|
||||
|
||||
/datum/reagent/cryoxadone
|
||||
value = 3.9
|
||||
|
||||
/datum/reagent/clonexadone
|
||||
value = 5.5
|
||||
|
||||
/datum/reagent/paracetamol
|
||||
value = 3.3
|
||||
|
||||
/datum/reagent/tramadol
|
||||
value = 3.1
|
||||
|
||||
/datum/reagent/oxycodone
|
||||
value = 3.3
|
||||
|
||||
/datum/reagent/synaptizine
|
||||
value = 4.6
|
||||
|
||||
/datum/reagent/alkysine
|
||||
value = 5.9
|
||||
|
||||
/datum/reagent/imidazoline
|
||||
value = 4.2
|
||||
|
||||
/datum/reagent/peridaxon
|
||||
value = 6
|
||||
|
||||
/datum/reagent/ryetalyn
|
||||
value = 3.6
|
||||
|
||||
/datum/reagent/hyperzine
|
||||
value = 3.9
|
||||
|
||||
/datum/reagent/ethylredoxrazine
|
||||
value = 3.1
|
||||
|
||||
/datum/reagent/hyronalin
|
||||
value = 2.3
|
||||
|
||||
/datum/reagent/arithrazine
|
||||
value = 2.7
|
||||
|
||||
/datum/reagent/spaceacillin
|
||||
value = 2.5
|
||||
|
||||
/datum/reagent/sterilizine
|
||||
value = 2.2
|
||||
|
||||
/datum/reagent/leporazine
|
||||
value = 2
|
||||
|
||||
/datum/reagent/methylphenidate
|
||||
value = 6
|
||||
|
||||
/datum/reagent/citalopram
|
||||
value = 6
|
||||
|
||||
/datum/reagent/paroxetine
|
||||
value = 3.5
|
||||
|
||||
/datum/reagent/nicotine
|
||||
value = 2
|
||||
|
||||
/datum/reagent/rezadone
|
||||
value = 5
|
||||
|
||||
/datum/reagent/ipecac
|
||||
value = 2
|
||||
|
||||
/datum/reagent/crayon_dust
|
||||
value = 0.001
|
||||
|
||||
/datum/reagent/adminordrazine
|
||||
value = 1000
|
||||
|
||||
/datum/reagent/gold
|
||||
value = 7
|
||||
|
||||
/datum/reagent/silver
|
||||
value = 4
|
||||
|
||||
/datum/reagent/uranium
|
||||
value = 9
|
||||
|
||||
/datum/reagent/adrenaline
|
||||
value = 2
|
||||
|
||||
|
||||
/datum/reagent/diethylamine
|
||||
value = 0.9
|
||||
|
||||
/datum/reagent/surfactant
|
||||
value = 0.05
|
||||
|
||||
|
||||
/datum/reagent/thermite
|
||||
value = 6
|
||||
|
||||
/datum/reagent/space_cleaner
|
||||
value = 0.7
|
||||
|
||||
/datum/reagent/lube
|
||||
value = 0.6
|
||||
|
||||
/datum/reagent/glycerol
|
||||
value = 8
|
||||
|
||||
/datum/reagent/nitroglycerin
|
||||
value = 9
|
||||
|
||||
/datum/reagent/coolant
|
||||
value = 0.8
|
||||
|
||||
/datum/reagent/woodpulp
|
||||
value = 0.6
|
||||
|
||||
/datum/reagent/luminol
|
||||
value = 1.4
|
||||
|
||||
/datum/reagent/toxin
|
||||
value = 2
|
||||
|
||||
/datum/reagent/toxin/plasticide
|
||||
value = 2.1
|
||||
|
||||
/datum/reagent/toxin/amatoxin
|
||||
value = 2.3
|
||||
|
||||
/datum/reagent/toxin/carpotoxin
|
||||
value = 3
|
||||
|
||||
/datum/reagent/toxin/phoron
|
||||
value = 10
|
||||
|
||||
/datum/reagent/toxin/cyanide
|
||||
value = 3.3
|
||||
|
||||
/datum/reagent/toxin/potassium_chloride
|
||||
value = 4.4
|
||||
|
||||
/datum/reagent/toxin/potassium_chlorophoride
|
||||
value = 4.5
|
||||
|
||||
/datum/reagent/toxin/zombiepowder
|
||||
value = 2.9
|
||||
|
||||
/datum/reagent/toxin/fertilizer
|
||||
value = 1.2
|
||||
|
||||
/datum/reagent/toxin/plantbgone
|
||||
value = 1.1
|
||||
|
||||
/datum/reagent/acid/polyacid
|
||||
value = 2
|
||||
|
||||
/datum/reagent/lexorin
|
||||
value = 2.4
|
||||
|
||||
/datum/reagent/mutagen
|
||||
value = 3.1
|
||||
|
||||
/datum/reagent/slimejelly
|
||||
value = 1.2
|
||||
|
||||
/datum/reagent/soporific
|
||||
value = 2.5
|
||||
|
||||
/datum/reagent/chloralhydrate
|
||||
value = 2.6
|
||||
|
||||
/datum/reagent/chloralhydrate/beer2
|
||||
value = 2.2
|
||||
|
||||
/datum/reagent/space_drugs
|
||||
value = 2.8
|
||||
|
||||
/datum/reagent/serotrotium
|
||||
value = 2.5
|
||||
|
||||
/datum/reagent/cryptobiolin
|
||||
value = 2
|
||||
|
||||
/datum/reagent/impedrezene
|
||||
value = 1.8
|
||||
|
||||
/datum/reagent/mindbreaker
|
||||
value = 0.6
|
||||
|
||||
/datum/reagent/psilocybin
|
||||
value = 0.7
|
||||
|
||||
/datum/reagent/slimetoxin
|
||||
value = 2
|
||||
|
||||
/datum/reagent/aslimetoxin
|
||||
value = 3
|
||||
|
||||
/datum/reagent/nanites
|
||||
value = 9
|
||||
|
||||
/datum/reagent/xenomicrobes
|
||||
value = 5
|
||||
@@ -0,0 +1,892 @@
|
||||
//Negative values indicate that instances of these types should use the Value proc
|
||||
//Mainly used so that stuff inside them can also add to their value, and other things like material,
|
||||
//stuff like that.
|
||||
|
||||
var/list/worths = list(
|
||||
//ROBOT ASSEMBLIES,
|
||||
/obj/item/weapon/secbot_assembly = 180,
|
||||
/obj/item/weapon/secbot_assembly/ed209_assembly = 280,
|
||||
/obj/item/weapon/farmbot_arm_assembly = 130,
|
||||
/obj/item/weapon/toolbox_tiles = 80,
|
||||
/obj/item/weapon/toolbox_tiles_sensor = 180,
|
||||
/obj/item/weapon/firstaid_arm_assembly = 150,
|
||||
/obj/item/weapon/bucket_sensor = 40,
|
||||
//REAGENT CONTAINERS,
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat = -200,
|
||||
/obj/item/weapon/reagent_containers/hypospray = -90,
|
||||
/obj/item/weapon/reagent_containers/spray = -23,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube = -35,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/human = -300,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable = -25,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/monkeycube = -15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks = -10,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle = -11,
|
||||
/obj/item/weapon/reagent_containers/food/drinks = -8,
|
||||
/obj/item/weapon/reagent_containers/glass/rag = -5,
|
||||
/obj/item/weapon/reagent_containers/glass = -60,
|
||||
/obj/item/weapon/reagent_containers = -1,
|
||||
//ENERGY GUNS,
|
||||
/obj/item/weapon/gun/energy/rifle/pulse/destroyer = 9000,
|
||||
/obj/item/weapon/gun/energy/rifle/pulse = 7000,
|
||||
/obj/item/weapon/gun/energy/rifle/laser/heavy = 6500,
|
||||
/obj/item/weapon/gun/energy/rifle/laser/xray = 4500,
|
||||
/obj/item/weapon/gun/energy/rifle = 1500,
|
||||
/obj/item/weapon/gun/energy/gun/nuclear = 2800,
|
||||
/obj/item/weapon/gun/energy/gun = 700,
|
||||
/obj/item/weapon/gun/energy/pistol = 550,
|
||||
/obj/item/weapon/gun/energy/laser/shotgun = 4800,
|
||||
/obj/item/weapon/gun/energy/laser/practice = 500,
|
||||
/obj/item/weapon/gun/energy/laser = 1000,
|
||||
/obj/item/weapon/gun/energy/retro = 1400,
|
||||
/obj/item/weapon/gun/energy/captain = 8500,
|
||||
/obj/item/weapon/gun/energy/xray = 3500,
|
||||
/obj/item/weapon/gun/energy/sniperrifle = 6400,
|
||||
/obj/item/weapon/gun/energy/lasertag = 10,
|
||||
/obj/item/weapon/gun/energy/pulse/pistol = 4500,
|
||||
/obj/item/weapon/gun/energy/pulse = 5000,
|
||||
/obj/item/weapon/gun/energy/ionrifle = 2000,
|
||||
/obj/item/weapon/gun/energy/decloner = 6500,
|
||||
/obj/item/weapon/gun/energy/floragun = 1500,
|
||||
/obj/item/weapon/gun/energy/mindflayer = 4500,
|
||||
/obj/item/weapon/gun/energy/toxgun = 3500,
|
||||
/obj/item/weapon/gun/energy/beegun = 4500,
|
||||
/obj/item/weapon/gun/energy/mousegun = 2000,
|
||||
/obj/item/weapon/gun/energy/net = 3500,
|
||||
/obj/item/weapon/gun/energy/vaurca = 3000,
|
||||
/obj/item/weapon/gun/energy/taser = 500,
|
||||
/obj/item/weapon/gun/energy/crossbow/largecrossbow = 1600,
|
||||
/obj/item/weapon/gun/energy/crossbow = 750,
|
||||
/obj/item/weapon/gun/energy/temperature = 3000,
|
||||
/obj/item/weapon/gun/energy/lawgiver = 7000,
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator = 2500,
|
||||
/obj/item/weapon/gun/energy/plasmacutter = 4000,
|
||||
/obj/item/weapon/gun/energy = 2100,
|
||||
//LAUNCHERS,
|
||||
/obj/item/weapon/gun/launcher/spikethrower = 3500,
|
||||
/obj/item/weapon/gun/launcher/crossbow = 120,
|
||||
/obj/item/weapon/gun/launcher/pneumatic = 200,
|
||||
/obj/item/weapon/gun/launcher/syringe = 150,
|
||||
/obj/item/weapon/gun/launcher = 300,
|
||||
//AUTOMATICS,
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle/sts35 = 3800,
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle/z8 = 3100,
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw = 13400,
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle/shotgun = 8500,
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle/w556 = 7500,
|
||||
/obj/item/weapon/gun/projectile/automatic/c20r = 3250,
|
||||
/obj/item/weapon/gun/projectile/automatic/wt550 = 2200,
|
||||
/obj/item/weapon/gun/projectile/automatic/tommygun = 4000,
|
||||
/obj/item/weapon/gun/projectile/automatic/mini_uzi = 2000,
|
||||
/obj/item/weapon/gun/projectile/automatic/railgun = 8000,
|
||||
/obj/item/weapon/gun/projectile/automatic/x9 = 2500,
|
||||
/obj/item/weapon/gun/projectile/automatic/terminator = 15000,
|
||||
/obj/item/weapon/gun/projectile/automatic = 2000,
|
||||
//PROJECTILE,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/combat = 5500,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump = 3500,
|
||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel = 2500,
|
||||
/obj/item/weapon/gun/projectile/shotgun/improvised = 1000,
|
||||
/obj/item/weapon/gun/projectile/improvised_handgun = 650,
|
||||
/obj/item/weapon/gun/projectile/revolver/derringer = 2100,
|
||||
/obj/item/weapon/gun/projectile/revolver/detective = 1500,
|
||||
/obj/item/weapon/gun/projectile/revolver = 3500,
|
||||
/obj/item/weapon/gun/projectile/colt = 1700,
|
||||
/obj/item/weapon/gun/projectile/sec = 1650,
|
||||
/obj/item/weapon/gun/projectile/tanto = 2500,
|
||||
/obj/item/weapon/gun/projectile/deagle = 5600,
|
||||
/obj/item/weapon/gun/projectile/gyropistol = 7500,
|
||||
/obj/item/weapon/gun/projectile/heavysniper/tranq = 6000,
|
||||
/obj/item/weapon/gun/projectile/heavysniper = 12000,
|
||||
/obj/item/weapon/gun/projectile/silenced = 1700,
|
||||
/obj/item/weapon/gun/projectile/boltaction = 1200,
|
||||
/obj/item/weapon/gun/projectile/dragunov = 4500,
|
||||
/obj/item/weapon/gun/projectile = 1500,
|
||||
|
||||
//GUN,
|
||||
/obj/item/weapon/gun = 500,
|
||||
//MATERIAL STACKS,
|
||||
/obj/item/stack/material/marble = -20,
|
||||
/obj/item/stack/material/diamond = -60,
|
||||
/obj/item/stack/material/uranium = -120,
|
||||
/obj/item/stack/material/plastic = -15,
|
||||
/obj/item/stack/material/gold = -55,
|
||||
/obj/item/stack/material/silver = -45,
|
||||
/obj/item/stack/material/platinum = -95,
|
||||
/obj/item/stack/material/mhydrogen = -110,
|
||||
/obj/item/stack/material/tritium = -100,
|
||||
/obj/item/stack/material/osmium = -100,
|
||||
/obj/item/stack/material/plasteel = -100,
|
||||
/obj/item/stack/material/phoron = -70,
|
||||
/obj/item/stack/material/wood = -2,
|
||||
/obj/item/stack/material/cloth = -3,
|
||||
/obj/item/stack/material/cardboard = -1,
|
||||
/obj/item/stack/material/glass/reinforced = -12,
|
||||
/obj/item/stack/material/glass/phoronglass = -35,
|
||||
/obj/item/stack/material/glass/phoronrglass = -65,
|
||||
/obj/item/stack/material = -5,
|
||||
//STACKS,
|
||||
/obj/item/stack/medical/advanced/bruise_pack = -30,
|
||||
/obj/item/stack/medical/advanced/ointment = -40,
|
||||
/obj/item/stack/medical/splint = -25,
|
||||
/obj/item/stack/medical = -15,
|
||||
/obj/item/stack/nanopaste = -30,
|
||||
/obj/item/stack/rods = -5,
|
||||
/obj/item/stack/telecrystal = -1000,
|
||||
/obj/item/stack/wax = -5,
|
||||
/obj/item/stack = -5,
|
||||
//STORAGE,
|
||||
/obj/item/weapon/storage/briefcase/crimekit = -50,
|
||||
/obj/item/weapon/storage/belt/wands = 800,
|
||||
/obj/item/weapon/storage/belt/military = 700,
|
||||
/obj/item/weapon/storage/belt/security/tactical = 500,
|
||||
/obj/item/weapon/storage/belt/soulstone = 800,
|
||||
/obj/item/weapon/storage/belt = -50,
|
||||
/obj/item/weapon/storage/backpack/holding = -3000,
|
||||
/obj/item/weapon/storage = -30,
|
||||
//WEAPONS,
|
||||
/obj/item/weapon/spacecash = -1,
|
||||
/obj/item/weapon/ore = 10,
|
||||
/obj/item/weapon/mining_scanner = 130,
|
||||
/obj/item/weapon/bee_smoker = 50,
|
||||
/obj/item/weapon/anomaly_core = 20000,
|
||||
/obj/item/weapon/spellbook = 25000,
|
||||
/obj/item/weapon/am_containment = 5000,
|
||||
//MINING GEAR,
|
||||
/obj/item/weapon/pickaxe/silver = 300,
|
||||
/obj/item/weapon/pickaxe/drill = 100,
|
||||
/obj/item/weapon/pickaxe/jackhammer = 90,
|
||||
/obj/item/weapon/pickaxe/gold = 400,
|
||||
/obj/item/weapon/pickaxe/diamond = 600,
|
||||
/obj/item/weapon/pickaxe/diamonddrill = 700,
|
||||
/obj/item/weapon/pickaxe = 30,
|
||||
/obj/item/weapon/shovel/spade = 20,
|
||||
/obj/item/weapon/rrf = 200,
|
||||
/obj/item/weapon/rrf_ammo = 50,
|
||||
/obj/item/weapon/ore_radar = 30,
|
||||
/obj/item/device/wormhole_jaunter = 500,
|
||||
/obj/item/weapon/lazarus_injector = 800,
|
||||
/obj/item/weapon/extraction_pack = 600,
|
||||
/obj/item/weapon/resonator/upgraded = 650,
|
||||
/obj/item/weapon/resonator = 450,
|
||||
/obj/item/weapon/oremagnet = 250,
|
||||
/obj/item/weapon/autochisel = 500,
|
||||
/obj/item/weapon/slimepotion = 200,
|
||||
/obj/item/weapon/slimepotion2 = 300,
|
||||
/obj/item/weapon/slimesteroid = 150,
|
||||
/obj/item/weapon/slimesteroid2 = 250,
|
||||
/obj/item/weapon/portable_destructive_analyzer = 780,
|
||||
/obj/item/weapon/inflatable_dispenser = 300,
|
||||
/obj/item/weapon/matter_decompiler = 400,
|
||||
//COMPUTER HARDWARE,
|
||||
/obj/item/weapon/computer_hardware/battery_module/advanced = 110,
|
||||
/obj/item/weapon/computer_hardware/battery_module/super = 150,
|
||||
/obj/item/weapon/computer_hardware/battery_module/ultra = 190,
|
||||
/obj/item/weapon/computer_hardware/battery_module/micro = 80,
|
||||
/obj/item/weapon/computer_hardware/battery_module/nano = 60,
|
||||
/obj/item/weapon/computer_hardware/battery_module/lambda = 100000,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/advanced = 160,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/super = 250,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/cluster = 500,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/small = 100,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/micro = 60,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable = 30,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable/advanced = 60,
|
||||
/obj/item/weapon/computer_hardware/hard_drive/portable/super = 125,
|
||||
/obj/item/weapon/computer_hardware/network_card/advanced = 90,
|
||||
/obj/item/weapon/computer_hardware/network_card/wired = 40,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/small = 80,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic = 400,
|
||||
/obj/item/weapon/computer_hardware/processor_unit/photonic/small = 120,
|
||||
/obj/item/weapon/computer_hardware/processor_unit = 200,
|
||||
/obj/item/weapon/computer_hardware/tesla_link = 350,
|
||||
/obj/item/weapon/computer_hardware = 80,
|
||||
/obj/item/weapon/computer_hardware/hard_drive = 125,
|
||||
/obj/item/weapon/clipboard = 15,
|
||||
//POWER CELLS,
|
||||
/obj/item/weapon/cell/device = 100,
|
||||
/obj/item/weapon/cell/crap = 30,
|
||||
/obj/item/weapon/cell/apc = 130,
|
||||
/obj/item/weapon/cell/high = 160,
|
||||
/obj/item/weapon/cell/mecha = 220,
|
||||
/obj/item/weapon/cell/super = 280,
|
||||
/obj/item/weapon/cell/hyper = 310,
|
||||
/obj/item/weapon/cell/infinite = 50000,
|
||||
/obj/item/weapon/cell/potato = 1,
|
||||
/obj/item/weapon/cell/slime = 160,
|
||||
/obj/item/weapon/cell = 60,
|
||||
//SMES COILS,
|
||||
/obj/item/weapon/smes_coil/weak = 1000,
|
||||
/obj/item/weapon/smes_coil/super_capacity = 5000,
|
||||
/obj/item/weapon/smes_coil/super_io = 4500,
|
||||
/obj/item/weapon/smes_coil = 2000,
|
||||
/obj/item/weapon/tracker_electronics = 150,
|
||||
/obj/item/weapon/am_containment = 5000,
|
||||
/obj/item/weapon/syringe_cartridge = 20,
|
||||
/obj/item/weapon/silencer = 60,
|
||||
/obj/item/weapon/fossil = 100,
|
||||
/obj/item/weapon/vampiric = 666,
|
||||
/obj/item/weapon/anobattery = 1800,
|
||||
/obj/item/weapon/anodevice = 3300,
|
||||
/obj/item/weapon/scrying = 20000,
|
||||
/obj/item/weapon/virusdish = 65,
|
||||
/obj/item/weapon/diseasedisk = 100,
|
||||
/obj/item/weapon/soap/deluxe = 15,
|
||||
/obj/item/weapon/cane/concealed = 250,
|
||||
/obj/item/weapon/cane = 40,
|
||||
/obj/item/weapon/disk/nuclear = 10000,
|
||||
/obj/item/weapon/disk = 90,
|
||||
/obj/item/weapon/caution = 15,
|
||||
/obj/item/weapon/module = 100,
|
||||
//STOCK PARTS,
|
||||
/obj/item/weapon/stock_parts/capacitor/adv = 160,
|
||||
/obj/item/weapon/stock_parts/scanning_module/adv = 160,
|
||||
/obj/item/weapon/stock_parts/manipulator/nano = 160,
|
||||
/obj/item/weapon/stock_parts/micro_laser/high = 160,
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv = 160,
|
||||
/obj/item/weapon/stock_parts/capacitor/super = 300,
|
||||
/obj/item/weapon/stock_parts/scanning_module/phasic = 300,
|
||||
/obj/item/weapon/stock_parts/manipulator/pico = 250,
|
||||
/obj/item/weapon/stock_parts/micro_laser/ultra = 290,
|
||||
/obj/item/weapon/stock_parts/matter_bin/super = 310,
|
||||
/obj/item/weapon/stock_parts/subspace/ansible = 500,
|
||||
/obj/item/weapon/stock_parts/subspace/filter = 560,
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier = 540,
|
||||
/obj/item/weapon/stock_parts/subspace/treatment = 570,
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer = 630,
|
||||
/obj/item/weapon/stock_parts/subspace/crystal = 530,
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter = 620,
|
||||
/obj/item/weapon/stock_parts = 80,
|
||||
/obj/item/weapon/ectoplasm = 700,
|
||||
/obj/item/weapon/toy/xmas_cracker = 20,
|
||||
/obj/item/weapon/pinpointer/advpinpointer = 330,
|
||||
/obj/item/weapon/pinpointer = 180,
|
||||
/obj/item/weapon/airalarm_electronics = 90,
|
||||
/obj/item/weapon/firealarm_electronics = 80,
|
||||
/obj/item/weapon/camera_assembly = 35,
|
||||
/obj/item/weapon/orion_ship = 100,
|
||||
/obj/item/weapon/airlock_electronics/secure = 600,
|
||||
/obj/item/weapon/airlock_electronics = 300,
|
||||
/obj/item/weapon/cartridge = 50,
|
||||
/obj/item/weapon/aiModule = 3000,
|
||||
/obj/item/weapon/autopsy_scanner = 180,
|
||||
//CARDS,
|
||||
/obj/item/weapon/card/data/clown = 6000,
|
||||
/obj/item/weapon/card/data = 300,
|
||||
/obj/item/weapon/card/emag = 600,
|
||||
/obj/item/weapon/card/id/silver = 200,
|
||||
/obj/item/weapon/card/id/gold = 5000,
|
||||
/obj/item/weapon/card/id/captains_spare = 5000,
|
||||
/obj/item/weapon/card/id/syndicate_command = 7000,
|
||||
/obj/item/weapon/card/id/centcom = 7000,
|
||||
/obj/item/weapon/card/id/all_access = 10000,
|
||||
/obj/item/weapon/card/id = 30,
|
||||
/obj/item/weapon/flame/match = 1,
|
||||
/obj/item/weapon/flame/lighter/zippo = 10,
|
||||
/obj/item/weapon/plastique = 200,
|
||||
/obj/item/weapon/extinguisher/mini = 20,
|
||||
/obj/item/weapon/extinguisher = 40,
|
||||
/obj/item/weapon/flamethrower = 60,
|
||||
/obj/item/weapon/handcuffs/cable = 5,
|
||||
/obj/item/weapon/handcuffs = 35,
|
||||
/obj/item/weapon/rcd = 1000,
|
||||
/obj/item/weapon/rcd_ammo = 50,
|
||||
/obj/item/weapon/rsf = 300,
|
||||
/obj/item/weapon/teleportation_scroll = 7000,
|
||||
/obj/item/weapon/shield/riot/tact = 500,
|
||||
/obj/item/weapon/shield/riot = 150,
|
||||
/obj/item/weapon/shield/buckler = 200,
|
||||
/obj/item/weapon/shield/energy = 1200,
|
||||
//SURGERY,
|
||||
/obj/item/weapon/retractor = 80,
|
||||
/obj/item/weapon/hemostat = 90,
|
||||
/obj/item/weapon/cautery = 110,
|
||||
/obj/item/weapon/surgicaldrill = 130,
|
||||
/obj/item/weapon/scalpel/laser1 = 300,
|
||||
/obj/item/weapon/scalpel/laser2 = 600,
|
||||
/obj/item/weapon/scalpel/laser3 = 900,
|
||||
/obj/item/weapon/scalpel/manager = 1200,
|
||||
/obj/item/weapon/scalpel = 60,
|
||||
/obj/item/weapon/circular_saw = 140,
|
||||
/obj/item/weapon/bonegel = 300,
|
||||
/obj/item/weapon/FixOVein = 500,
|
||||
/obj/item/weapon/bonesetter = 150,
|
||||
/obj/item/weapon/locator = 100,
|
||||
/obj/item/weapon/wrench = 30,
|
||||
/obj/item/weapon/screwdriver = 15,
|
||||
/obj/item/weapon/wirecutters = 25,
|
||||
//WELDINGTOOLS,
|
||||
/obj/item/weapon/weldingtool/largetank = 150,
|
||||
/obj/item/weapon/weldingtool/hugetank = 300,
|
||||
/obj/item/weapon/weldingtool/experimental = 600,
|
||||
/obj/item/weapon/weldingtool = 100,
|
||||
/obj/item/weapon/crowbar = 10,
|
||||
/obj/item/weapon/beartrap = 35,
|
||||
/obj/item/weapon/nullrod = 60,
|
||||
/obj/item/weapon/weldpack = 300,
|
||||
/obj/item/weapon/circuitboard/aicore = 6000,
|
||||
/obj/item/weapon/circuitboard = 1000,
|
||||
//GRENADES,
|
||||
/obj/item/weapon/grenade/anti_photon = 200,
|
||||
/obj/item/weapon/grenade/empgrenade = 180,
|
||||
/obj/item/weapon/grenade/frag = 300,
|
||||
/obj/item/weapon/grenade/spawnergrenade/vaurca = 700,
|
||||
/obj/item/weapon/grenade/spawnergrenade/manhacks = 600,
|
||||
/obj/item/weapon/grenade/spawnergrenade/spesscarp = 350,
|
||||
/obj/item/weapon/grenade/spawnergrenade = 300,
|
||||
/obj/item/weapon/grenade = 150,
|
||||
/obj/item/weapon/implant = 100,
|
||||
/obj/item/weapon/implanter = 80,
|
||||
//MELEE,
|
||||
/obj/item/weapon/melee/cultblade = 1500,
|
||||
/obj/item/weapon/melee/energy/wizard = 15000,
|
||||
/obj/item/weapon/melee/energy/glaive = 5400,
|
||||
/obj/item/weapon/melee/energy/axe = 6000,
|
||||
/obj/item/weapon/melee/energy = 4200,
|
||||
/obj/item/weapon/melee/chainofcommand = 200,
|
||||
/obj/item/weapon/melee/baton/stunrod = 350,
|
||||
/obj/item/weapon/melee/baton/cattleprod = 30,
|
||||
/obj/item/weapon/melee/baton = 80,
|
||||
/obj/item/weapon/melee/classic_baton = 30,
|
||||
/obj/item/weapon/melee/telebaton = 450,
|
||||
/obj/item/weapon/melee/chainsword = 3000,
|
||||
/obj/item/weapon/melee/ceremonial_sword = 2500,
|
||||
/obj/item/weapon/melee/hammer = 1200,
|
||||
/obj/item/weapon/melee/vaurca/navcomp = 1500,
|
||||
/obj/item/weapon/melee/vaurca/rock = 700,
|
||||
/obj/item/weapon/tank/jetpack = 390,
|
||||
/obj/item/weapon/tank = 40,
|
||||
/obj/item/weapon/contract = 20000,
|
||||
/obj/item/weapon/ladder_mobile = 250,
|
||||
/obj/item/weapon/contraband/poster = 25,
|
||||
//MATERIAL,
|
||||
/obj/item/weapon/material/sword = -120,
|
||||
/obj/item/weapon/material/scythe = -100,
|
||||
/obj/item/weapon/material/twohanded/fireaxe = -150,
|
||||
/obj/item/weapon/material/harpoon = -70,
|
||||
/obj/item/weapon/material = -5,
|
||||
//RIGS,
|
||||
/obj/item/weapon/rig/unathi/fancy = 30000,
|
||||
/obj/item/weapon/rig/unathi = 17000,
|
||||
/obj/item/weapon/rig/combat = 25000,
|
||||
/obj/item/weapon/rig/ert = 20000,
|
||||
/obj/item/weapon/rig/light/hacker = 13000,
|
||||
/obj/item/weapon/rig/light/ninja = 16000,
|
||||
/obj/item/weapon/rig/light/stealth = 11000,
|
||||
/obj/item/weapon/rig/light = 14000,
|
||||
/obj/item/weapon/rig/internalaffairs = 9000,
|
||||
/obj/item/weapon/rig/merc = 25000,
|
||||
/obj/item/weapon/rig/military = 30000,
|
||||
/obj/item/weapon/rig/terminator = 30000,
|
||||
/obj/item/weapon/rig = 15000,
|
||||
/obj/item/weapon/forensics = 65,
|
||||
/obj/item/weapon/evidencebag = 5,
|
||||
/obj/item/weapon/sample = 15,
|
||||
/obj/item/weapon/board = 15,
|
||||
/obj/item/weapon/deck/holder = 10,
|
||||
/obj/item/weapon/pack = 6,
|
||||
/obj/item/weapon/holo = 0,
|
||||
/obj/item/weapon/beach_ball/holoball = 0,
|
||||
/obj/item/weapon/book/tome = 350,
|
||||
/obj/item/weapon/book = 15,
|
||||
/obj/item/weapon/barcodescanner = 130,
|
||||
//CLOTHING,
|
||||
//EARS,
|
||||
/obj/item/clothing/ears/skrell = 100,
|
||||
/obj/item/clothing/ears/bandanna = 20,
|
||||
//GLASSES,
|
||||
/obj/item/clothing/glasses/meson/prescription = 880,
|
||||
/obj/item/clothing/glasses/meson = 800,
|
||||
/obj/item/clothing/glasses/science = 400,
|
||||
/obj/item/clothing/glasses/night = 1000,
|
||||
/obj/item/clothing/glasses/regular/hipster = 400, //Hipstering is an expensive lifestyle yo,
|
||||
/obj/item/clothing/glasses/regular = 300,
|
||||
/obj/item/clothing/glasses/welding/superior = 450,
|
||||
/obj/item/clothing/glasses/welding = 250,
|
||||
/obj/item/clothing/glasses/sunglasses/prescription = 230,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud/tactical = 550,
|
||||
/obj/item/clothing/glasses/sunglasses/sechud = 530,
|
||||
/obj/item/clothing/glasses/thermal = 1990,
|
||||
/obj/item/clothing/glasses/night = 1200,
|
||||
/obj/item/clothing/glasses = 150,
|
||||
//GLOVES,
|
||||
/obj/item/clothing/gloves/boxing = 60,
|
||||
/obj/item/clothing/gloves/yellow = 300,
|
||||
/obj/item/clothing/gloves/fyellow = 25, //cheap cheap cheap,
|
||||
/obj/item/clothing/gloves/captain = 100,
|
||||
/obj/item/clothing/gloves/swat = 125,
|
||||
/obj/item/clothing/gloves/combat = 400,
|
||||
/obj/item/clothing/gloves/botanic_leather = 6,
|
||||
/obj/item/clothing/gloves/force/syndicate = 1500,
|
||||
/obj/item/clothing/gloves/force = 1000,
|
||||
/obj/item/clothing/gloves = 5,
|
||||
|
||||
//MASKS,
|
||||
/obj/item/clothing/mask/luchador = 60,
|
||||
/obj/item/clothing/mask/breath/medical = 180,
|
||||
/obj/item/clothing/mask/breath = 80,
|
||||
/obj/item/clothing/mask/gas/plaguedoctor = 100,
|
||||
/obj/item/clothing/mask/gas/swat = 200,
|
||||
/obj/item/clothing/mask/gas/voice = 600,
|
||||
/obj/item/clothing/mask/gas/swat/vox = 350,
|
||||
/obj/item/clothing/mask/gas/tactical = 500,
|
||||
/obj/item/clothing/mask/gas = 50,
|
||||
/obj/item/clothing/mask/muzzle/tape = 2,
|
||||
/obj/item/clothing/mask/muzzle = 100,
|
||||
/obj/item/clothing/mask/surgical = 20,
|
||||
/obj/item/clothing/mask/fakemoustache = 5,
|
||||
/obj/item/clothing/mask/snorkel = 5,
|
||||
/obj/item/clothing/mask/bluescarf = 10,
|
||||
/obj/item/clothing/mask/redscarf = 15,
|
||||
/obj/item/clothing/mask/greenscarf = 15,
|
||||
/obj/item/clothing/mask/ninjascarf = 15,
|
||||
/obj/item/clothing/mask/ai = 3000,
|
||||
//SHOES,
|
||||
/obj/item/clothing/shoes/galoshes = 50,
|
||||
/obj/item/clothing/shoes/syndigaloshes = 250,
|
||||
/obj/item/clothing/shoes/clown_shoes = 100,
|
||||
/obj/item/clothing/shoes/cult = 350,
|
||||
/obj/item/clothing/shoes/magboots = 350,
|
||||
/obj/item/clothing/shoes/swat = 200,
|
||||
/obj/item/clothing/shoes/combat = 450,
|
||||
/obj/item/clothing/shoes = 25,
|
||||
//SUITS,
|
||||
/obj/item/clothing/suit/space/void/wizard = 5000,
|
||||
/obj/item/clothing/suit/space/void/captain = 4000,
|
||||
/obj/item/clothing/suit/space/void/merc = 3000,
|
||||
/obj/item/clothing/suit/space/void/security = 3000,
|
||||
/obj/item/clothing/suit/space/void = 2800,
|
||||
/obj/item/clothing/suit/space/syndicate = 2200,
|
||||
/obj/item/clothing/suit/space/skrell = 1500,
|
||||
/obj/item/clothing/suit/space/vox = 1000,
|
||||
/obj/item/clothing/suit/space/cult = 1050,
|
||||
/obj/item/clothing/suit/space/emergency = 150,
|
||||
/obj/item/clothing/suit/space = 730,
|
||||
/obj/item/clothing/suit/unathi/mantle = 80,
|
||||
/obj/item/clothing/suit/tajaran/furs = 90,
|
||||
/obj/item/clothing/suit/cultrobes = 200,
|
||||
/obj/item/clothing/suit/storage/vest/heavy/ert = 2500,
|
||||
/obj/item/clothing/suit/storage/vest/merc = 3000,
|
||||
/obj/item/clothing/suit/armor/vest/ert = 2500,
|
||||
/obj/item/clothing/suit/armor/vest = 550,
|
||||
/obj/item/clothing/suit/armor/riot = 700,
|
||||
/obj/item/clothing/suit/armor/bulletproof = 700,
|
||||
/obj/item/clothing/suit/armor/laserproof = 700,
|
||||
/obj/item/clothing/suit/armor/reactive = 5000,
|
||||
/obj/item/clothing/suit/armor/centcomm = 2000,
|
||||
/obj/item/clothing/suit/armor/heavy = 1000,
|
||||
/obj/item/clothing/suit/armor/hos = 1000,
|
||||
/obj/item/clothing/suit/armor/tactical = 1500,
|
||||
/obj/item/clothing/suit/armor = 500,
|
||||
/obj/item/clothing/suit/bio_suit = 150,
|
||||
/obj/item/clothing/suit/captunic/capjacket = 100,
|
||||
/obj/item/clothing/suit/security/navyhos = 80,
|
||||
/obj/item/clothing/suit/storage/hazardvest = 60,
|
||||
/obj/item/clothing/suit/storage/toggle/labcoat = 55,
|
||||
/obj/item/clothing/suit/bluetag = 20,
|
||||
/obj/item/clothing/suit/redtag = 20,
|
||||
/obj/item/clothing/suit/fire/heavy = 600,
|
||||
/obj/item/clothing/suit/fire = 500,
|
||||
/obj/item/clothing/suit/radiation = 450,
|
||||
/obj/item/clothing/suit/bomb_suit = 300,
|
||||
//HEADS,
|
||||
/obj/item/clothing/head/collectable/petehat = 350,
|
||||
/obj/item/clothing/head/collectable = 80,
|
||||
/obj/item/clothing/head/hardhat = 180,
|
||||
/obj/item/clothing/head/helmet/swat = 400,
|
||||
/obj/item/clothing/head/helmet/gladiator = 280,
|
||||
/obj/item/clothing/head/helmet/augment = 600,
|
||||
/obj/item/clothing/head/helmet/riot = 500,
|
||||
/obj/item/clothing/head/helmet/ablative = 500,
|
||||
/obj/item/clothing/head/helmet/ballistic = 500,
|
||||
/obj/item/clothing/head/helmet/merc = 1000,
|
||||
/obj/item/clothing/head/helmet/tactical = 800,
|
||||
/obj/item/clothing/head/helmet/gladiator = 300,
|
||||
/obj/item/clothing/head/helmet/ert = 1000,
|
||||
/obj/item/clothing/head/helmet/HoS = 800,
|
||||
/obj/item/clothing/head/helmet = 250,
|
||||
/obj/item/clothing/head/culthood = 150,
|
||||
/obj/item/clothing/head/caphat/hop = 100,
|
||||
/obj/item/clothing/head/caphat = 200,
|
||||
/obj/item/clothing/head/centhat = 600,
|
||||
/obj/item/clothing/head/hairflower = 5,
|
||||
/obj/item/clothing/head/powdered_wig = 80,
|
||||
/obj/item/clothing/head/justice = 30,
|
||||
/obj/item/clothing/head/philosopher_wig = 70,
|
||||
/obj/item/clothing/head/welding = 150,
|
||||
/obj/item/clothing/head/bomb_hood = 200,
|
||||
/obj/item/clothing/head/radiation = 250,
|
||||
/obj/item/clothing/head/bio_hood = 100,
|
||||
/obj/item/clothing/head/navy = 250,
|
||||
/obj/item/clothing/head/dress/admiral = 1000,
|
||||
/obj/item/clothing/head/dress = 350,
|
||||
/obj/item/clothing/head/tajaran/scarf = 30,
|
||||
/obj/item/clothing/head/helmet/space/void/wizard = 4000,
|
||||
/obj/item/clothing/head/helmet/space/void/merc = 2000,
|
||||
/obj/item/clothing/head/helmet/space/void/security = 2000,
|
||||
/obj/item/clothing/head/helmet/space/void/captain = 3000,
|
||||
/obj/item/clothing/head/helmet/space/void = 1900,
|
||||
/obj/item/clothing/head/helmet/space/syndicate = 1200,
|
||||
/obj/item/clothing/head/helmet/space/deathsquad = 2400,
|
||||
/obj/item/clothing/head/helmet/space/vox = 1200,
|
||||
/obj/item/clothing/head/helmet/space/skrell = 1200,
|
||||
/obj/item/clothing/head/helmet/space/cult = 1300,
|
||||
/obj/item/clothing/head/helmet/space/emergency = 250,
|
||||
/obj/item/clothing/head/helmet/space = 450,
|
||||
//ACCESSORIES,
|
||||
/obj/item/clothing/accessory/storage = 55,
|
||||
/obj/item/clothing/accessory/stethoscope = 70,
|
||||
/obj/item/clothing/accessory/medal/gold/heroism = 1000,
|
||||
/obj/item/clothing/accessory/medal/gold/captain = 800,
|
||||
/obj/item/clothing/accessory/medal/gold = 600,
|
||||
/obj/item/clothing/accessory/medal/silver = 300,
|
||||
/obj/item/clothing/accessory/medal/iron = 150,
|
||||
/obj/item/clothing/accessory/medal = 100,
|
||||
/obj/item/clothing/accessory/armband = 30,
|
||||
/obj/item/clothing/accessory/badge = 60,
|
||||
/obj/item/clothing/accessory = 15,
|
||||
//UNDERS,
|
||||
/obj/item/clothing/under/rank/captain = 100,
|
||||
/obj/item/clothing/under/rank/head_of_personnel = 60,
|
||||
/obj/item/clothing/under/rank/head_of_personnel_whimsy = 80,
|
||||
/obj/item/clothing/under/rank/chief_engineer = 95,
|
||||
/obj/item/clothing/under/rank/research_director = 60,
|
||||
/obj/item/clothing/under/rank/chief_medical_officer = 65,
|
||||
/obj/item/clothing/under/rank/warden = 5,
|
||||
/obj/item/clothing/under/rank/centcom = 200,
|
||||
/obj/item/clothing/under/rank/fatigues = 250,
|
||||
/obj/item/clothing/under/rank/service = 350,
|
||||
/obj/item/clothing/under/rank/dress/admiral = 1000,
|
||||
/obj/item/clothing/under/rank/dress = 450,
|
||||
/obj/item/clothing/under/rank/centcom_commander = 300,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 60,
|
||||
/obj/item/clothing/under/syndicate = 150,
|
||||
/obj/item/clothing/under/tactical = 150,
|
||||
/obj/item/clothing/under/ert = 200,
|
||||
/obj/item/clothing/under/ccpolice = 250,
|
||||
/obj/item/clothing/under/space = 400,
|
||||
/obj/item/clothing = 50,
|
||||
//DEVICES,
|
||||
/obj/item/device/dociler = 450,
|
||||
/obj/item/device/mmi = 1200,
|
||||
/obj/item/device/kit/paint = 500,
|
||||
/obj/item/device/kit = 100,
|
||||
/obj/item/weapon/aicard = 6000,
|
||||
/obj/item/device/chameleon = 4000,
|
||||
/obj/item/device/paicard = 120,
|
||||
/obj/item/device/powersink = 1800,
|
||||
/obj/item/device/mass_spectrometer/adv = 400,
|
||||
/obj/item/device/mass_spectrometer = 300,
|
||||
/obj/item/device/reagent_scanner/adv = 600,
|
||||
/obj/item/device/reagent_scanner = 500,
|
||||
/obj/item/device/slime_scanner = 300,
|
||||
/obj/item/device/transfer_valve = 50,
|
||||
/obj/item/device/violin = 250,
|
||||
/obj/item/device/pda = 60,
|
||||
/obj/item/device/radio = 150,
|
||||
/obj/item/device/assembly/igniter = 15,
|
||||
/obj/item/device/assembly/infra = 10,
|
||||
/obj/item/device/assembly/mousetrap = 5,
|
||||
/obj/item/device/assembly/signaler = 30,
|
||||
/obj/item/device/assembly = 50,
|
||||
/obj/item/device/uv_light = 150,
|
||||
/obj/item/device/eftpos = 30,
|
||||
/obj/item/device = 90,
|
||||
//ORGANS,
|
||||
/obj/item/organ/heart = 1200,
|
||||
/obj/item/organ/brain/golem = 3000,
|
||||
/obj/item/organ/brain = 1200,
|
||||
/obj/item/organ/pariah_brain = 5,
|
||||
/obj/item/organ/vaurca/neuralsocket = 1500,
|
||||
/obj/item/organ/stack/vox = 5000,
|
||||
/obj/item/organ = 400,
|
||||
//ITEMS,
|
||||
/obj/item/slime_extract = 200,
|
||||
/obj/item/robot_parts/robot_component = 250,
|
||||
/obj/item/robot_parts = 30,
|
||||
/obj/item/modular_computer/tablet = 1300,
|
||||
/obj/item/modular_computer = 4000,
|
||||
/obj/item/solar_assembly = 680,
|
||||
/obj/item/ammo_casing = 5,
|
||||
/obj/item/ammo_magazine = 30,
|
||||
/obj/item/conveyor_construct = 100,
|
||||
/obj/item/conveyor_switch_construct = 30,
|
||||
/obj/item/supply_beacon = 5000,
|
||||
/obj/item/frame = 60,
|
||||
/obj/item/pipe = 100,
|
||||
/obj/item/pipe_meter = 300,
|
||||
/obj/item/mecha_parts/part/phazon_torso = 10000,
|
||||
/obj/item/mecha_parts/part/phazon_head = 10000,
|
||||
/obj/item/mecha_parts/part/phazon_left_arm = 10000,
|
||||
/obj/item/mecha_parts/part/phazon_right_arm = 10000,
|
||||
/obj/item/mecha_parts/part/phazon_left_leg = 10000,
|
||||
/obj/item/mecha_parts/part/phazon_right_leg = 10000,
|
||||
/obj/item/mecha_parts/part/phazon_armour = 10000,
|
||||
/obj/item/mecha_parts/chassis/phazon = 10000,
|
||||
/obj/item/mecha_parts/chassis = 1200,
|
||||
/obj/item/mecha_parts/mecha_tracking = 400,
|
||||
/obj/item/mecha_parts/mecha_equipment/teleporter = 3050,
|
||||
/obj/item/mecha_parts/mecha_equipment/gravcatapult = 3000,
|
||||
/obj/item/mecha_parts/mecha_equipment/armor_booster = 1100,
|
||||
/obj/item/mecha_parts/mecha_equipment/repair_droid = 1900,
|
||||
/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay = 1300,
|
||||
/obj/item/mecha_parts/mecha_equipment/generator/nuclear = 1700,
|
||||
/obj/item/mecha_parts/mecha_equipment/generator = 1200,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser = 2000,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser = 1200,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy = 3000,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion = 1550,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse = 5000,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot = 4750,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg = 5800,
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/explosive = 2500,
|
||||
/obj/item/mecha_parts/mecha_equipment = 1000,
|
||||
/obj/item/mecha_parts = 500,
|
||||
/obj/item/missile = 1200,
|
||||
/obj/item/blueprints = 4000, //Information is valuable,
|
||||
/obj/item/bodybag/cryobag = 600,
|
||||
/obj/item/bodybag = 20,
|
||||
/obj/item/glass_jar = 10,
|
||||
/obj/item/target = 15,
|
||||
/obj/item/inflatable = 30,
|
||||
/obj/item/roller = 80,
|
||||
/obj/item/rig_module/grenade_launcher = 1500,
|
||||
/obj/item/rig_module/mounted/energy_blade = 5000,
|
||||
/obj/item/rig_module/mounted/thermalldrill = 2500,
|
||||
/obj/item/rig_module/mounted/kinetic_accelerator = 1500,
|
||||
/obj/item/rig_module/mounted/plasmacutter = 2500,
|
||||
/obj/item/rig_module/mounted/ion = 2000,
|
||||
/obj/item/rig_module/mounted/xray = 3500,
|
||||
/obj/item/rig_module/mounted/smg = 2500,
|
||||
/obj/item/rig_module/mounted/pulse = 4500,
|
||||
/obj/item/rig_module/mounted/taser = 1500,
|
||||
/obj/item/rig_module/mounted/egun = 2100,
|
||||
/obj/item/rig_module/mounted/energy_blade = 5500,
|
||||
/obj/item/rig_module/mounted = 4100,
|
||||
/obj/item/rig_module/stealth_field = 2500,
|
||||
/obj/item/rig_module/teleporter = 3000,
|
||||
/obj/item/rig_module/fabricator/energy_net = 1200,
|
||||
/obj/item/rig_module/fabricator = 2800,
|
||||
/obj/item/rig_module = 1000,
|
||||
/obj/item/seeds = 10,
|
||||
/obj/item/honey_frame = 15,
|
||||
/obj/item/beehive_assembly = 100,
|
||||
/obj/item/bee_pack = 200,
|
||||
/obj/item/weedkiller = 30,
|
||||
/obj/item/phylactery = 40000,
|
||||
/obj/item/bluespace_crystal/artificial = 5000,
|
||||
/obj/item/bluespace_crystal = 10000,
|
||||
/obj/item/vaurca/box = 250,
|
||||
/obj/item/hoist_kit = 150,
|
||||
/obj/item = 5,
|
||||
//STRUCTURES,
|
||||
/obj/structure/ore_box = 12,
|
||||
/obj/structure/constructshell = 100,
|
||||
/obj/structure/cable = 1,
|
||||
/obj/structure/particle_accelerator = 2000,
|
||||
/obj/structure/droppod_door = 65,
|
||||
/obj/structure/disposalconstruct = 0, //Similar to cables, they are assembled into something else,
|
||||
/obj/structure/disposalpipe/tagger = 70,
|
||||
/obj/structure/disposalpipe/sortjunction = 65,
|
||||
/obj/structure/disposalpipe = 35,
|
||||
/obj/structure/disposaloutlet = 65,
|
||||
/obj/structure/boulder = 0, //just a dumb boulder,
|
||||
/obj/structure/shuttle = 150,
|
||||
/obj/structure/plasticflaps = 15,
|
||||
/obj/structure/cult/pylon = 700,
|
||||
/obj/structure/cult = 160,
|
||||
/obj/structure/cryofeed = 450,
|
||||
/obj/structure/AIcore = 6000,
|
||||
/obj/structure/AIcore/deactivated = 7000,
|
||||
/obj/structure/computerframe = 50,
|
||||
/obj/structure/plushie = 7,
|
||||
/obj/structure/bedsheetbin = 25,
|
||||
/obj/structure/coatrack = 10,
|
||||
/obj/structure/displaycase = 86,
|
||||
/obj/structure/door_assembly = 35,
|
||||
/obj/structure/girder = 15,
|
||||
/obj/structure/grille = 5,
|
||||
/obj/structure/inflatable = 1,
|
||||
/obj/structure/janitorialcart = 120,
|
||||
/obj/structure/kitchenspike = 35,
|
||||
/obj/structure/lattice = 1,
|
||||
/obj/structure/morgue = 100,
|
||||
/obj/structure/crematorium = 600,
|
||||
/obj/structure/device/piano = 1200, //pianos are expensive,
|
||||
/obj/structure/noticeboard = 15,
|
||||
/obj/structure/safe/floor = 180,
|
||||
/obj/structure/safe = 200,
|
||||
/obj/structure/sign = 25,
|
||||
/obj/structure/dispenser = 500,
|
||||
/obj/structure/transit_tube = 80,
|
||||
/obj/structure/transit_tube_pod = 100,
|
||||
/obj/structure/toilet = 50,
|
||||
/obj/structure/alien = 300,
|
||||
/obj/structure/closet = 15,
|
||||
/obj/structure/bed = 7,
|
||||
/obj/structure/holostool = 0,
|
||||
/obj/structure/holohoop = 0,
|
||||
/obj/structure/bookcase = 50,
|
||||
/obj/structure/barricade = -1,
|
||||
/obj/structure = 30,
|
||||
//BOTS,
|
||||
/mob/living/bot/cleanbot = 260,
|
||||
/mob/living/bot/farmbot = 500,
|
||||
/mob/living/bot/floorbot = 190,
|
||||
/mob/living/bot/medbot = 600,
|
||||
/mob/living/bot/secbot/ed209 = 1200,
|
||||
/mob/living/bot/secbot = 800,
|
||||
/mob/living/bot = 300,
|
||||
//MOBS,
|
||||
/mob/living/carbon/human = -10000,
|
||||
/mob/living/carbon/slime = 5000,
|
||||
/mob/living/silicon/robot = 10000,
|
||||
/mob/living/silicon/pai = 1000,
|
||||
/mob/living/silicon/ai = 50000,
|
||||
/mob/living/silicon = 5000,
|
||||
/mob/living/simple_animal/hostile/commanded/dog = 1000,
|
||||
/mob/living/simple_animal/hostile/true_changeling = 20000,
|
||||
/mob/living/simple_animal/hostile/biglizard = 10000,
|
||||
/mob/living/simple_animal/hostile/bear/spatial = 2000,
|
||||
/mob/living/simple_animal/hostile = 700,
|
||||
/mob/living/simple_animal/construct = 10000,
|
||||
/mob/living/simple_animal/mouse/king = 5000,
|
||||
/mob/living/simple_animal/mouse = 10,
|
||||
/mob/living/simple_animal/borer = 10000,
|
||||
/mob/living/simple_animal/corgi/Ian = 1000, //Ian is valuable,
|
||||
/mob/living/simple_animal/spiderbot = 3000,
|
||||
/mob/living/simple_animal/cow = 2000, //Cow expensive,
|
||||
/mob/living/simple_animal = 500,
|
||||
/mob/living = 100,
|
||||
//MECHAS,
|
||||
/obj/mecha/combat/phazon = -100000,
|
||||
/obj/mecha/combat/marauder/mauler = -80000,
|
||||
/obj/mecha/combat/marauder/seraph = -70000,
|
||||
/obj/mecha/combat/marauder = -60000,
|
||||
/obj/mecha/combat/gygax/dark = -60000,
|
||||
/obj/mecha/combat/gygax = -50000,
|
||||
/obj/mecha/combat/honker = -45000,
|
||||
/obj/mecha/combat/durand = -40000,
|
||||
/obj/mecha/combat = -30000,
|
||||
/obj/mecha = -20000,
|
||||
//MACHINERY,
|
||||
/obj/machinery/mineral/unloading_machine = -500,
|
||||
/obj/machinery/mining/brace = -300,
|
||||
/obj/machinery/drone_fabricator = -3000,
|
||||
/obj/machinery/photocopier/faxmachine = -500,
|
||||
/obj/machinery/papershredder = -80,
|
||||
/obj/machinery/gravity_generator = -16000,
|
||||
/obj/machinery/light = 25,
|
||||
/obj/machinery/power/smes/buildable = -15000,
|
||||
/obj/machinery/compressor = -4000,
|
||||
/obj/machinery/power/turbine = -6000,
|
||||
/obj/machinery/computer/turbine_computer = -2000,
|
||||
/obj/machinery/chem_master = -6000,
|
||||
/obj/machinery/chemical_dispenser = -5000,
|
||||
/obj/machinery/conveyor = 200,
|
||||
/obj/machinery/conveyor_switch = 100,
|
||||
/obj/machinery/disposal = 500,
|
||||
/obj/machinery/blackbox_recorder = -9500,
|
||||
/obj/machinery/r_n_d/protolathe = -15000,
|
||||
/obj/machinery/r_n_d/server = -20000,
|
||||
/obj/machinery/r_n_d = -1000,
|
||||
/obj/machinery/auto_cloner = -13000,
|
||||
/obj/machinery/giga_drill = -1900,
|
||||
/obj/machinery/artifact = -13500,
|
||||
/obj/machinery/artifact_analyser = -11900,
|
||||
/obj/machinery/artifact_harvester = -12300,
|
||||
/obj/machinery/artifact_scanpad = -1800,
|
||||
/obj/machinery/suspension_gen = -3000,
|
||||
/obj/machinery/keycard_auth = -100,
|
||||
/obj/machinery/power/supermatter/shard = 100000,
|
||||
/obj/machinery/power/supermatter = 500000,
|
||||
/obj/machinery/disease2/diseaseanalyser = -8000,
|
||||
/obj/machinery/disease2/isolator/ = -9000,
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging = -1000,
|
||||
/obj/machinery/atmospherics/pipe = -100,
|
||||
/obj/machinery/atmospherics/portables_connector = -500,
|
||||
/obj/machinery/atmospherics/tvalve = -150,
|
||||
/obj/machinery/atmospherics/valve = -120,
|
||||
/obj/machinery/atmospherics/binary/circulator = -2500,
|
||||
/obj/machinery/atmospherics/binary/dp_vent_pump = -850,
|
||||
/obj/machinery/atmospherics/binary/passive_gate = -1600,
|
||||
/obj/machinery/atmospherics/pipeturbine = -3000,
|
||||
/obj/machinery/atmospherics/binary/pump = -1900,
|
||||
/obj/machinery/atmospherics/binary/pump/high_power = -2500,
|
||||
/obj/machinery/atmospherics/omni/filter = -4000,
|
||||
/obj/machinery/atmospherics/omni/mixer = -3600,
|
||||
/obj/machinery/atmospherics/trinary/filter = -3300,
|
||||
/obj/machinery/atmospherics/trinary/mixer = -3000,
|
||||
/obj/machinery/atmospherics/unary/freezer = -6000,
|
||||
/obj/machinery/atmospherics/unary/generator_input = -2500,
|
||||
/obj/machinery/atmospherics/unary/heater = -6000,
|
||||
/obj/machinery/atmospherics/unary/outlet_injector = -2300,
|
||||
/obj/machinery/atmospherics/unary/oxygen_generator = -10000,
|
||||
/obj/machinery/atmospherics/unary/vent_pump = -2000,
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber = -2300,
|
||||
/obj/machinery/bodyscanner = -6000,
|
||||
/obj/machinery/body_scanconsole = -1500,
|
||||
/obj/machinery/ai_slipper = -500,
|
||||
/obj/machinery/alarm = -800,
|
||||
/obj/machinery/air_sensor = -800,
|
||||
/obj/machinery/autolathe = -3300,
|
||||
/obj/machinery/bluespacerelay = -4000,
|
||||
/obj/machinery/button = 100,
|
||||
/obj/machinery/cablelayer = -1700,
|
||||
/obj/machinery/cell_charger = -90,
|
||||
/obj/machinery/constructable_frame = -500,
|
||||
/obj/machinery/cryopod = -3000,
|
||||
/obj/machinery/deployable/barrier = -500,
|
||||
/obj/machinery/floodlight = -200,
|
||||
/obj/machinery/floor_light = -100,
|
||||
/obj/machinery/floorlayer = -1500,
|
||||
/obj/machinery/igniter = -300,
|
||||
/obj/machinery/sparker = -500,
|
||||
/obj/machinery/iv_drip = -100,
|
||||
/obj/machinery/media/jukebox = -700,
|
||||
/obj/machinery/magnetic_module = -500,
|
||||
/obj/machinery/magnetic_controller = -500,
|
||||
/obj/machinery/mass_driver = -500,
|
||||
/obj/machinery/navbeacon = -90,
|
||||
/obj/machinery/newscaster = -100,
|
||||
/obj/machinery/nuclearbomb = -10000,
|
||||
/obj/machinery/recharger = -200,
|
||||
/obj/machinery/sleeper = -4000,
|
||||
/obj/machinery/space_heater = -500,
|
||||
/obj/machinery/ai_status_display = -600,
|
||||
/obj/machinery/teleport = -15000,
|
||||
/obj/machinery/camera = -700,
|
||||
/obj/machinery/airlock_sensor = -800,
|
||||
/obj/machinery/door/airlock = -800,
|
||||
/obj/machinery/door/blast/shutters = -300,
|
||||
/obj/machinery/door/blast = -1000,
|
||||
/obj/machinery/door/firedoor = -600,
|
||||
/obj/machinery/door = -100,
|
||||
/obj/machinery/door_timer = -300,
|
||||
/obj/machinery/embedded_controller/radio/airlock = -600,
|
||||
/obj/machinery/gibber = -600,
|
||||
/obj/machinery/microwave = -70,
|
||||
/obj/machinery/pipedispenser = -100,
|
||||
/obj/machinery/telecomms/broadcaster = -10000,
|
||||
/obj/machinery/telecomms = -7000,
|
||||
/obj/machinery/computer/mecha = -1000,
|
||||
/obj/machinery/shower = -300,
|
||||
/obj/machinery/acting/changer = -3000,
|
||||
/obj/machinery/artillerycontrol = -1400,
|
||||
/obj/machinery/dnaforensics = -1200,
|
||||
/obj/machinery/microscope = -550,
|
||||
/obj/machinery/atm = -4500,
|
||||
/obj/machinery/readybutton = -0,
|
||||
/obj/machinery/botany/editor = -16000,
|
||||
/obj/machinery/botany = -9050,
|
||||
/obj/machinery/seed_storage = -500,
|
||||
/obj/machinery/beehive = -500,
|
||||
/obj/machinery/portable_atmospherics/hydroponics/soil = 1, //its dirt,
|
||||
/obj/machinery/portable_atmospherics/hydroponics = -2300,
|
||||
/obj/machinery/librarypubliccomp = -600,
|
||||
/obj/machinery/librarycomp = -1000,
|
||||
/obj/machinery/libraryscanner = -1000,
|
||||
/obj/machinery/bookbinder = -1200,
|
||||
/obj/machinery/wish_granter = - 1000000,
|
||||
/obj/machinery = -1000
|
||||
) //Must be in descending order. Child before parents, otherwise it doesn't work.,
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/obj/machinery/merchant_pad
|
||||
name = "Teleportation Pad"
|
||||
desc = "Place things here to trade."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "tele0"
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
/obj/machinery/merchant_pad/proc/get_target()
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/a in T)
|
||||
if(a == src || (!istype(a,/obj) && !istype(a,/mob/living)) || istype(a,/obj/effect))
|
||||
continue
|
||||
return a
|
||||
|
||||
/obj/machinery/merchant_pad/proc/get_targets()
|
||||
. = list()
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/a in T)
|
||||
if(a == src || (!istype(a,/obj) && !istype(a,/mob/living)) || istype(a,/obj/effect))
|
||||
continue
|
||||
. += a
|
||||
@@ -0,0 +1,227 @@
|
||||
/datum/computer_file/program/merchant
|
||||
filename = "mlist"
|
||||
filedesc = "Merchant's List"
|
||||
extended_desc = "Allows communication and trade between passing vessels, even while jumping."
|
||||
program_icon_state = "comm"
|
||||
nanomodule_path = /datum/nano_module/program/merchant
|
||||
requires_ntnet = 0
|
||||
available_on_ntnet = 0
|
||||
size = 12
|
||||
usage_flags = PROGRAM_CONSOLE
|
||||
required_access_run = access_merchant
|
||||
required_access_download = access_merchant
|
||||
var/obj/machinery/merchant_pad/pad = null
|
||||
var/current_merchant = 0
|
||||
var/show_trades = 0
|
||||
var/hailed_merchant = 0
|
||||
var/last_comms = null
|
||||
var/temp = null
|
||||
var/bank = 0 //A straight up money till
|
||||
|
||||
/datum/nano_module/program/merchant
|
||||
name = "Merchant's List"
|
||||
|
||||
/datum/computer_file/program/merchant/proc/get_merchant(var/num)
|
||||
if(num > SStrade.traders.len)
|
||||
num = SStrade.traders.len
|
||||
if(num)
|
||||
return SStrade.traders[num]
|
||||
|
||||
/datum/nano_module/program/merchant/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
|
||||
var/list/data = host.initial_data()
|
||||
var/show_trade = 0
|
||||
var/hailed = 0
|
||||
var/datum/trader/T
|
||||
if(program)
|
||||
var/datum/computer_file/program/merchant/P = program
|
||||
data["temp"] = P.temp
|
||||
data["mode"] = !!P.current_merchant
|
||||
data["last_comms"] = P.last_comms
|
||||
data["pad"] = !!P.pad
|
||||
data["bank"] = P.bank
|
||||
show_trade = P.show_trades
|
||||
hailed = P.hailed_merchant
|
||||
T = P.get_merchant(P.current_merchant)
|
||||
data["mode"] = !!T
|
||||
if(T)
|
||||
data["traderName"] = T.name
|
||||
data["origin"] = T.origin
|
||||
data["hailed"] = hailed
|
||||
if(show_trade)
|
||||
var/list/trades = list()
|
||||
if(T.trading_items.len)
|
||||
for(var/i in 1 to T.trading_items.len)
|
||||
trades += T.print_trading_items(i)
|
||||
data["trades"] = trades
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "merchant.tmpl", "Merchant List", 575, 700, state = state)
|
||||
ui.auto_update_layout = 1
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
/datum/computer_file/program/merchant/proc/connect_pad()
|
||||
for(var/obj/machinery/merchant_pad/P in orange(1,get_turf(computer)))
|
||||
pad = P
|
||||
return
|
||||
|
||||
/datum/computer_file/program/merchant/proc/test_fire()
|
||||
if(pad && pad.get_target())
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/computer_file/program/merchant/proc/offer_money(var/datum/trader/T, var/num)
|
||||
if(pad)
|
||||
var/response = T.offer_money_for_trade(num, bank)
|
||||
if(istext(response))
|
||||
last_comms = T.get_response(response, "No thank you.")
|
||||
else
|
||||
last_comms = T.get_response("trade_complete", "Thank you!")
|
||||
T.trade(null,num, get_turf(pad))
|
||||
bank -= response
|
||||
return
|
||||
last_comms = "PAD NOT CONNECTED"
|
||||
|
||||
/datum/computer_file/program/merchant/proc/bribe(var/datum/trader/T, var/amt)
|
||||
if(bank < amt)
|
||||
last_comms = "ERROR: NOT ENOUGH FUNDS."
|
||||
return
|
||||
|
||||
bank -= amt
|
||||
last_comms = T.bribe_to_stay_longer(amt)
|
||||
|
||||
/datum/computer_file/program/merchant/proc/offer_item(var/datum/trader/T, var/num)
|
||||
if(pad)
|
||||
var/list/targets = pad.get_targets()
|
||||
for(var/target in targets)
|
||||
if(!computer_emagged && istype(target,/mob/living/carbon/human))
|
||||
last_comms = "SAFETY LOCK ENABLED: SENTIENT MATTER UNTRANSMITTABLE"
|
||||
return
|
||||
var/response = T.offer_items_for_trade(targets,num, get_turf(pad))
|
||||
if(istext(response))
|
||||
last_comms = T.get_response(response,"No, a million times no.")
|
||||
else
|
||||
last_comms = T.get_response("trade_complete","Thanks for your business!")
|
||||
|
||||
return
|
||||
last_comms = "PAD NOT CONNECTED"
|
||||
|
||||
/datum/computer_file/program/merchant/proc/sell_items(var/datum/trader/T)
|
||||
if(pad)
|
||||
var/list/targets = pad.get_targets()
|
||||
var/response = T.sell_items(targets)
|
||||
if(istext(response))
|
||||
last_comms = T.get_response(response, "Nope. Nope nope nope.")
|
||||
else
|
||||
last_comms = T.get_response("trade_complete", "Glad to be of service!")
|
||||
bank += response
|
||||
return
|
||||
last_comms = "PAD NOT CONNECTED"
|
||||
|
||||
/datum/computer_file/program/merchant/proc/transfer_to_bank()
|
||||
if(pad)
|
||||
var/list/targets = pad.get_targets()
|
||||
for(var/target in targets)
|
||||
if(istype(target, /obj/item/weapon/spacecash))
|
||||
var/obj/item/weapon/spacecash/cash = target
|
||||
bank += cash.worth
|
||||
qdel(target)
|
||||
last_comms = "ALL MONEY DETECTED ON PAD TRANSFERED"
|
||||
return
|
||||
last_comms = "PAD NOT CONNECTED"
|
||||
|
||||
/datum/computer_file/program/merchant/proc/get_money()
|
||||
if(!pad)
|
||||
last_comms = "PAD NOT CONNECTED. CANNOT TRANSFER"
|
||||
return
|
||||
var/turf/T = get_turf(pad)
|
||||
var/obj/item/weapon/spacecash/bundle/B = new(T)
|
||||
B.worth = bank
|
||||
bank = 0
|
||||
B.update_icon()
|
||||
|
||||
/datum/computer_file/program/merchant/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
var/mob/user = usr
|
||||
if(href_list["PRG_connect_pad"])
|
||||
. = 1
|
||||
connect_pad()
|
||||
if(href_list["PRG_continue"])
|
||||
. = 1
|
||||
temp = null
|
||||
if(href_list["PRG_transfer_to_bank"])
|
||||
. = 1
|
||||
transfer_to_bank()
|
||||
if(href_list["PRG_get_money"])
|
||||
. = 1
|
||||
get_money()
|
||||
if(href_list["PRG_main_menu"])
|
||||
. = 1
|
||||
current_merchant = 0
|
||||
if(href_list["PRG_merchant_list"])
|
||||
if(SStrade.traders.len == 0)
|
||||
. = 0
|
||||
temp = "Cannot find any traders within broadcasting range."
|
||||
else
|
||||
. = 1
|
||||
current_merchant = 1
|
||||
hailed_merchant = 0
|
||||
last_comms = null
|
||||
if(href_list["PRG_test_fire"])
|
||||
. = 1
|
||||
if(test_fire())
|
||||
temp = "Test Fire Successful"
|
||||
else
|
||||
temp = "Test Fire Unsuccessful"
|
||||
if(href_list["PRG_scroll"])
|
||||
. = 1
|
||||
var/scrolled = 0
|
||||
switch(href_list["PRG_scroll"])
|
||||
if("right")
|
||||
scrolled = 1
|
||||
if("left")
|
||||
scrolled = -1
|
||||
var/new_merchant = Clamp(current_merchant + scrolled, 1, SStrade.traders.len)
|
||||
if(new_merchant != current_merchant)
|
||||
hailed_merchant = 0
|
||||
last_comms = null
|
||||
current_merchant = new_merchant
|
||||
if(current_merchant)
|
||||
var/datum/trader/T = get_merchant(current_merchant)
|
||||
if(!T.can_hail())
|
||||
last_comms = T.get_response("hail_deny", "No, I'm not speaking with you.")
|
||||
. = 1
|
||||
else
|
||||
if(href_list["PRG_hail"])
|
||||
. = 1
|
||||
last_comms = T.hail(user)
|
||||
show_trades = 0
|
||||
hailed_merchant = 1
|
||||
if(href_list["PRG_show_trades"])
|
||||
. = 1
|
||||
show_trades = !show_trades
|
||||
if(href_list["PRG_insult"])
|
||||
. = 1
|
||||
last_comms = T.insult()
|
||||
if(href_list["PRG_compliment"])
|
||||
. = 1
|
||||
last_comms = T.compliment()
|
||||
if(href_list["PRG_offer_item"])
|
||||
. = 1
|
||||
offer_item(T,text2num(href_list["PRG_offer_item"]) + 1)
|
||||
if(href_list["PRG_how_much_do_you_want"])
|
||||
. = 1
|
||||
last_comms = T.how_much_do_you_want(text2num(href_list["PRG_how_much_do_you_want"]) + 1)
|
||||
if(href_list["PRG_offer_money_for_item"])
|
||||
. = 1
|
||||
offer_money(T, text2num(href_list["PRG_offer_money_for_item"])+1)
|
||||
if(href_list["PRG_what_do_you_want"])
|
||||
. = 1
|
||||
last_comms = T.what_do_you_want()
|
||||
if(href_list["PRG_sell_items"])
|
||||
. = 1
|
||||
sell_items(T)
|
||||
if(href_list["PRG_bribe"])
|
||||
. = 1
|
||||
bribe(T, text2num(href_list["PRG_bribe"]))
|
||||
@@ -29,6 +29,9 @@
|
||||
supernatural = 1
|
||||
see_in_dark = 8
|
||||
see_invisible = SEE_INVISIBLE_NOLIGHTING
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
var/nullblock = 0
|
||||
|
||||
mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
|
||||
@@ -37,6 +40,7 @@
|
||||
var/list/construct_spells = list()
|
||||
var/can_repair = 0
|
||||
|
||||
|
||||
/mob/living/simple_animal/construct/cultify()
|
||||
return
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
heat_damage_per_tick = 20
|
||||
mob_size = 10
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/drone
|
||||
name = "alien drone"
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
/mob/living/simple_animal/hostile/scarybat/cult
|
||||
faction = "cult"
|
||||
supernatural = 1
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/cult/cultify()
|
||||
return
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
|
||||
mob_push_flags = ALLMOBS
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
response_help = "pets"
|
||||
response_disarm = "shoves"
|
||||
response_harm = "harmlessly punches"
|
||||
@@ -34,23 +36,23 @@
|
||||
min_oxy = 0
|
||||
max_co2 = 0
|
||||
max_tox = 0
|
||||
|
||||
|
||||
var/is_devouring = FALSE
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/true_changeling/Initialize()
|
||||
. = ..()
|
||||
if(prob(25))
|
||||
icon_state = "horror_alt"
|
||||
icon_living = "horror_alt"
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/true_changeling/Life()
|
||||
..()
|
||||
adjustBruteLoss(-10) //it will slowly heal brute damage, making fire/laser a stronger option
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/true_changeling/mind_initialize()
|
||||
..()
|
||||
mind.assigned_role = "Changeling"
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/true_changeling/death(gibbed)
|
||||
..()
|
||||
if(!gibbed)
|
||||
@@ -110,7 +112,7 @@
|
||||
last_special = world.time + 100
|
||||
src.is_devouring = FALSE
|
||||
return
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/true_changeling/verb/dart(mob/living/target as mob in oview())
|
||||
set name = "Launch Bone Dart"
|
||||
set desc = "Launches a Bone Dart at a target."
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
known_commands = list("stay", "stop", "attack", "follow", "dance", "boogie", "boogy")
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/bear/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
|
||||
. = ..()
|
||||
if(!.)
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
speed = 4
|
||||
mob_size = 14
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/cult
|
||||
faction = "cult"
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
health = 80
|
||||
environment_smash = 2
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
harm_intent_damage = 10
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
minbodytemp = 0
|
||||
speed = 4
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/range
|
||||
name = "Hivebot"
|
||||
desc = "A smallish robot, this one is armed!"
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/proc/FindTarget()
|
||||
|
||||
if(!faction) //No faction, no reason to attack anybody.
|
||||
return null
|
||||
|
||||
var/atom/T = null
|
||||
stop_automated_movement = 0
|
||||
for(var/atom/A in ListTargets(10))
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
faction = "mimic"
|
||||
move_to_delay = 8
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/FindTarget()
|
||||
. = ..()
|
||||
if(.)
|
||||
|
||||
@@ -37,3 +37,5 @@
|
||||
heat_damage_per_tick = 15 //amount of damage applied if animal's body temperature is higher than maxbodytemp
|
||||
cold_damage_per_tick = 10 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
|
||||
unsuitable_atoms_damage = 10
|
||||
|
||||
tameable = FALSE
|
||||
@@ -49,6 +49,8 @@
|
||||
var/has_loot = 1
|
||||
faction = "malf_drone"
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/malf_drone/Initialize()
|
||||
. = ..()
|
||||
if(prob(5))
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
faction = "russian"
|
||||
status_flags = CANPUSH
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/ranged
|
||||
icon_state = "russianranged"
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
faction = "syndicate"
|
||||
status_flags = CANPUSH
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/death()
|
||||
..()
|
||||
if(corpse)
|
||||
@@ -159,6 +161,8 @@
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
|
||||
tameable = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/viscerator/death()
|
||||
..(null,"is smashed into pieces!")
|
||||
var/T = get_turf(src)
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
var/can_nap = 0
|
||||
var/icon_rest = null
|
||||
|
||||
var/tameable = TRUE //if you can tame it, used by the dociler for now
|
||||
|
||||
/mob/living/simple_animal/proc/beg(var/atom/thing, var/atom/holder)
|
||||
visible_emote("gazes longingly at [holder]'s [thing]",0)
|
||||
|
||||
|
||||
@@ -329,16 +329,16 @@
|
||||
character.buckled.set_dir(character.dir)
|
||||
|
||||
SSticker.mode.handle_latejoin(character)
|
||||
|
||||
if(character.mind.assigned_role != "Cyborg")
|
||||
data_core.manifest_inject(character)
|
||||
SSticker.minds += character.mind //Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
if(SSjobs.ShouldCreateRecords(rank))
|
||||
if(character.mind.assigned_role != "Cyborg")
|
||||
data_core.manifest_inject(character)
|
||||
SSticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
|
||||
//Grab some data from the character prefs for use in random news procs.
|
||||
|
||||
AnnounceArrival(character, rank, join_message)
|
||||
else
|
||||
AnnounceCyborg(character, rank, join_message)
|
||||
AnnounceArrival(character, rank, join_message)
|
||||
else
|
||||
AnnounceCyborg(character, rank, join_message)
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -82,3 +82,15 @@ ERT
|
||||
ai_slot = new/obj/item/weapon/computer_hardware/ai_slot(src)
|
||||
nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src)
|
||||
card_slot = new/obj/item/weapon/computer_hardware/card_slot(src)
|
||||
|
||||
|
||||
// Merchant
|
||||
/obj/item/modular_computer/console/preset/merchant
|
||||
_app_preset_name = "merchant"
|
||||
enrolled = 2
|
||||
|
||||
/obj/item/modular_computer/console/preset/merchant/install_default_hardware()
|
||||
..()
|
||||
ai_slot = new/obj/item/weapon/computer_hardware/ai_slot(src)
|
||||
nano_printer = new/obj/item/weapon/computer_hardware/nano_printer(src)
|
||||
card_slot = new/obj/item/weapon/computer_hardware/card_slot(src)
|
||||
|
||||
@@ -162,3 +162,17 @@
|
||||
new/datum/computer_file/program/crushercontrol()
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
|
||||
/datum/modular_computer_app_presets/merchant
|
||||
name = "merchant"
|
||||
display_name = "Merchant"
|
||||
description = "A preset for the merchant console"
|
||||
available = 0
|
||||
/datum/modular_computer_app_presets/merchant/return_install_programs()
|
||||
var/list/_prg_list = list(
|
||||
new/datum/computer_file/program/filemanager(),
|
||||
new/datum/computer_file/program/chatclient(),
|
||||
new /datum/computer_file/program/merchant()
|
||||
)
|
||||
return _prg_list
|
||||
|
||||
@@ -213,3 +213,9 @@
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/pneumatic/small
|
||||
name = "small pneumatic cannon"
|
||||
desc = "It looks smaller than your garden variety cannon"
|
||||
max_w_class = 1
|
||||
w_class = 3
|
||||
@@ -99,7 +99,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate
|
||||
name = "Chloral Hydrate Bottle"
|
||||
name = "chloral hydrate bottle"
|
||||
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-3"
|
||||
@@ -352,7 +352,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
|
||||
name = "Capsaicin Bottle"
|
||||
name = "capsaicin bottle"
|
||||
desc = "A small bottle. Contains hot sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
@@ -362,7 +362,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
|
||||
name = "Frost Oil Bottle"
|
||||
name = "frost oil bottle"
|
||||
desc = "A small bottle. Contains cold sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
@@ -1569,6 +1569,27 @@ CIRCUITS BELOW
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting
|
||||
sort_string = "NAADC"
|
||||
|
||||
/datum/design/circuit/mecha/phazon_main
|
||||
name = "'Phazon' central control"
|
||||
id = "phazon_main"
|
||||
req_tech = list(TECH_DATA = 6, TECH_BLUESPACE = 6)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/phazon/main
|
||||
sort_string = "NAAEA"
|
||||
|
||||
/datum/design/circuit/mecha/phazon_peri
|
||||
name = "'Phazon' peripherals control"
|
||||
id = "phazon_peri"
|
||||
req_tech = list(TECH_DATA = 6, TECH_BLUESPACE = 6)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals
|
||||
sort_string = "NAAEB"
|
||||
|
||||
/datum/design/circuit/mecha/phazon_targ
|
||||
name = "'Phazon' weapon control and targeting"
|
||||
id = "phazon_targ"
|
||||
req_tech = list(TECH_DATA = 6, TECH_COMBAT = 6, TECH_BLUESPACE = 6)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting
|
||||
sort_string = "NAAEC"
|
||||
|
||||
/datum/design/circuit/tcom
|
||||
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||
|
||||
|
||||
@@ -370,6 +370,9 @@ EVENT_CUSTOM_START_MAJOR 80;100
|
||||
## Strength of ambient star light. Set to 0 or less to turn off. A value of 1 is unlikely to have a noticeable effect in most lighting systems.
|
||||
STARLIGHT 0
|
||||
|
||||
## Chance, in percentage, of the merchant job slot being open at round start
|
||||
MERCHANT_CHANCE 20
|
||||
|
||||
## Defines which races are allowed to join as ERT, in singular form. If unset, defaults to only human. Casing matters, separate using ;
|
||||
## Example races include: Human, Tajara, Skrell, Unathi
|
||||
# ERT_SPECIES Human;Skrell;Unathi
|
||||
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,65 @@
|
||||
{{if data.temp }}
|
||||
<center>
|
||||
<table>
|
||||
<tr><td>{{:data.temp }}</td>
|
||||
<tr><td>{{:helper.link('Continue', null, {'PRG_continue' : 1})}}</td>
|
||||
</table>
|
||||
</center>
|
||||
{{else}}
|
||||
<center><h3>Balance: {{:data.bank}} Credits</h3><br>
|
||||
{{if data.mode}}
|
||||
<div>
|
||||
<div style="float: left">{{:helper.link('<=', null, {'PRG_scroll' : 'left'})}}</div>
|
||||
<div>{{:helper.link('Main Menu', null, {'PRG_main_menu' : 1})}}</div>
|
||||
<div style="float: right">{{:helper.link('=>', null, {'PRG_scroll' : 'right'})}}</div>
|
||||
</div>
|
||||
<center><h3>{{:data.traderName}}</h3><br>
|
||||
Signal Origin: {{:data.origin}}<br>
|
||||
{{if data.last_comms}}
|
||||
<i>{{:data.last_comms}}</i>
|
||||
{{/if}}
|
||||
</center>
|
||||
<br>
|
||||
{{if data.hailed}}
|
||||
{{if data.trades}}
|
||||
{{:helper.link('Go Back', null, {'PRG_show_trades' : 1})}}
|
||||
<br><br>
|
||||
<h3>Trade Goods</h3>
|
||||
<table>
|
||||
{{for data.trades}}
|
||||
<tr><td>{{:value}}</td>
|
||||
<td>{{:helper.link('Trade', null, {'PRG_offer_item' : index})}}</td>
|
||||
<td>{{:helper.link('Offer Money', null, {'PRG_offer_money_for_item' : index})}}</td>
|
||||
<td>{{:helper.link('Ask Cost', null, {'PRG_how_much_do_you_want' : index})}}</td>
|
||||
{{/for}}
|
||||
</table>
|
||||
{{else}}
|
||||
{{:helper.link('List Goods', null, {'PRG_show_trades' : 1})}}<br><br>
|
||||
{{:helper.link('Sell Items', null, {'PRG_sell_items' : 1})}}<br><br>
|
||||
{{:helper.link('Compliment', null, {'PRG_compliment' : 1})}}<br><br>
|
||||
<span class=itemLabel>Pay them to stay longer: </span><span class=itemContent>{{:helper.link('100', null, {'PRG_bribe' : 100})}} {{:helper.link('500', null, {'PRG_bribe' : 500})}} {{:helper.link('1000', null, {'PRG_bribe' : 1000})}}</span><br><br>
|
||||
{{:helper.link('Ask What They Want', null, {'PRG_what_do_you_want': 1})}}<br><br>
|
||||
{{:helper.link('Insult', null, {'PRG_insult' : 1})}}<br><br>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{:helper.link('Hail',null,{'PRG_hail': 1})}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<center>
|
||||
<h2>Main Menu</h2>
|
||||
<table style="text-align:center">
|
||||
<tr><td>{{:helper.link('Open Communications', null, {'PRG_merchant_list' : 1})}}</td>
|
||||
<tr><td>{{:helper.link('Test Fire Transporter', null, {'PRG_test_fire': 1 })}}</td>
|
||||
<tr><td>{{:helper.link('Connect Pad', null, {'PRG_connect_pad' : 1})}}
|
||||
{{if data.pad}}
|
||||
<font color="green">Connected</font>
|
||||
{{else}}
|
||||
<font color="red">DISCONNECTED</font>
|
||||
{{/if}}
|
||||
</td>
|
||||
<tr><td>{{:helper.link('Deposit Money', null, {'PRG_transfer_to_bank' : 1})}}</td>
|
||||
<tr><td>{{:helper.link('Retrieve Money', null, {'PRG_get_money' : 1})}}</td>
|
||||
</table>
|
||||
</center>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||