[MIRROR] Arconomy: The bigger balance PR (REVISED EDITION) [MDB IGNORE] (#13164)

* Arconomy: The bigger balance PR (REVISED EDITION)

* yes

* wew

* Update multitool.dm

* yers

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
This commit is contained in:
SkyratBot
2022-04-27 22:29:22 +02:00
committed by GitHub
parent f7f3b2a7c0
commit 044d75253c
162 changed files with 530 additions and 384 deletions
@@ -68,3 +68,5 @@
/// Global signal sent when a light mechanism is completed (try_id)
#define COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED "!light_mechanism_completed"
///Global Signal sent when the crew wins the revolution (No arguments).
#define COMSIG_GLOB_REVOLUTION_TAX_REMOVAL "!revolution_tax_removal"
+18 -13
View File
@@ -1,28 +1,33 @@
/// Number of paychecks jobs start with at the creation of a new bank account for a player (So at shift-start or game join, but not a blank new account.)
#define STARTING_PAYCHECKS 7
#define STARTING_PAYCHECKS 5
/// How much mail the Economy SS will create per minute, regardless of firing time.
#define MAX_MAIL_PER_MINUTE 3
/// Probability of using letters of envelope sprites on all letters.
#define FULL_CRATE_LETTER_ODDS 70
//Experimental change: These are subject to tweaking based on the /tg/ economy overhaul.
//Current design direction: Higher paying jobs are vastly outnumbered by lower paying jobs, so anything above medium hurts inflation, common jobs help inflation
#define PAYCHECK_PRISONER 25
#define PAYCHECK_ASSISTANT 50
#define PAYCHECK_MINIMAL 55
#define PAYCHECK_EASY 60
#define PAYCHECK_MEDIUM 75
#define PAYCHECK_HARD 100
#define PAYCHECK_COMMAND 200
//Current Paycheck values. Altering these changes both the cost of items meant for each paygrade, as well as the passive/starting income of each job.
///Default paygrade for the Unassigned Job/Unpaid job assignments.
#define PAYCHECK_ZERO 0
///Paygrade for Prisoners and Assistants.
#define PAYCHECK_LOWER 25
///Paygrade for all regular crew not belonging to PAYGRADE_LOWER or PAYGRADE_COMMAND.
#define PAYCHECK_CREW 50
///Paygrade for Heads of Staff.
#define PAYCHECK_COMMAND 100
//How many credits a player is charged if they print something from a departmental lathe they shouldn't have access to.
#define LATHE_TAX 10
//How much POWER a borg's cell is taxed if they print something from a departmental lathe.
#define SILICON_LATHE_TAX 2000
#define STATION_TARGET_BUFFER 25
#define STATION_TARGET_BUFFER 40
#define MAX_GRANT_DPT 500
//What should vending machines charge when you buy something in-department.
#define VENDING_DISCOUNT 0.2
#define DEPARTMENT_DISCOUNT 0.2
#define ACCOUNT_CIV "CIV"
#define ACCOUNT_CIV_NAME "Civil Budget"
@@ -1,2 +0,0 @@
#define PAYCHECK_CYCLE_WAIT 6 //How many cycles of SSeconomy firing we're waiting till we get a paycheck. Each cycle is 5 minutes.
#define PAYCHECK_CYCLE_AMOUNT 4 //How many paychecks we get when we finally do get it
+2 -12
View File
@@ -13,9 +13,8 @@ SUBSYSTEM_DEF(economy)
ACCOUNT_MED = ACCOUNT_MED_NAME,
ACCOUNT_SRV = ACCOUNT_SRV_NAME,
ACCOUNT_CAR = ACCOUNT_CAR_NAME,
ACCOUNT_SEC = ACCOUNT_SEC_NAME,
ACCOUNT_CMD = ACCOUNT_CMD_NAME, // SKYRAT EDIT
)
ACCOUNT_SEC = ACCOUNT_SEC_NAME)
var/list/generated_accounts = list()
/**
* Enables extra money charges for things that normally would be free, such as sleepers/cryo/beepsky.
@@ -48,7 +47,6 @@ SUBSYSTEM_DEF(economy)
var/bounty_modifier = 1
///The modifier multiplied to the value of cargo pack prices.
var/pack_price_modifier = 1
var/fire_counter_for_paycheck = 0 //SKYRAT EDIT ADDITION
/**
* A list of strings containing a basic transaction history of purchases on the station.
* Added to any time when player accounts purchase something.
@@ -82,7 +80,6 @@ SUBSYSTEM_DEF(economy)
dep_cards = SSeconomy.dep_cards
/datum/controller/subsystem/economy/fire(resumed = 0)
fire_counter_for_paycheck++ //SKYRAT EDIT ADDITION
var/temporary_total = 0
var/delta_time = wait / (5 MINUTES)
departmental_payouts()
@@ -90,17 +87,10 @@ SUBSYSTEM_DEF(economy)
station_target_buffer += STATION_TARGET_BUFFER
for(var/account in bank_accounts_by_id)
var/datum/bank_account/bank_account = bank_accounts_by_id[account]
//SKYRAT EDIT ADDITION BEGIN
if(fire_counter_for_paycheck >= PAYCHECK_CYCLE_WAIT)
bank_account.payday(PAYCHECK_CYCLE_AMOUNT)
//SKYRAT EDIT ADDITION END
if(bank_account?.account_job && !ispath(bank_account.account_job))
temporary_total += (bank_account.account_job.paycheck * STARTING_PAYCHECKS)
bank_account.payday(1)
station_total += bank_account.account_balance
//SKYRAT EDIT ADDITION BEGIN
if(fire_counter_for_paycheck >= PAYCHECK_CYCLE_WAIT) //30 minutes per each paycheck
fire_counter_for_paycheck = 0
//SKYRAT EDIT ADDITION END
station_target = max(round(temporary_total / max(bank_accounts_by_id.len * 2, 1)) + station_target_buffer, 1)
if(!HAS_TRAIT(SSeconomy, TRAIT_MARKET_CRASHING))
price_update()
@@ -1,7 +1,7 @@
#define PAINTINGS_DATA_FORMAT_VERSION 2
// Patronage thresholds for paintings. Different cosmetic frames become available as more credits are spent on the patronage.
#define PATRONAGE_OK_FRAME PAYCHECK_ASSISTANT * 3 // 150 credits, as of early 2022
#define PATRONAGE_OK_FRAME PAYCHECK_CREW * 3 // 150 credits, as of march 2022
#define PATRONAGE_NICE_FRAME PATRONAGE_OK_FRAME * 2.5
#define PATRONAGE_GREAT_FRAME PATRONAGE_NICE_FRAME * 2
#define PATRONAGE_EXCELLENT_FRAME PATRONAGE_GREAT_FRAME * 2
+115 -24
View File
@@ -17,47 +17,130 @@
var/transaction_style = "Clinical"
///Who's getting paid?
var/datum/bank_account/target_acc
///Does this payment component respect same-department-discount?
var/department_discount = FALSE
///A static typecache of all the money-based items that can be actively used as currency.
var/static/list/allowed_money = typecacheof(list(
/obj/item/stack/spacecash,
/obj/item/holochip,
/obj/item/coin))
/datum/component/payment/Initialize(_cost, _target, _style)
target_acc = _target
if(!target_acc)
target_acc = SSeconomy.get_dep_account(ACCOUNT_CIV)
cost = _cost
transaction_style = _style
RegisterSignal(parent, COMSIG_OBJ_ATTEMPT_CHARGE, .proc/attempt_charge)
RegisterSignal(parent, COMSIG_OBJ_ATTEMPT_CHARGE_CHANGE, .proc/change_cost)
RegisterSignal(parent, COMSIG_GLOB_REVOLUTION_TAX_REMOVAL, .proc/clean_up)
/datum/component/payment/proc/attempt_charge(datum/source, atom/movable/target, extra_fees = 0)
SIGNAL_HANDLER
if(!cost) //In case a free variant of anything is made it'll skip charging anyone.
if(!cost && !extra_fees) //In case a free variant of anything is made it'll skip charging anyone.
return
var/total_cost = cost + extra_fees
if(!ismob(target))
return COMPONENT_OBJ_CANCEL_CHARGE
var/mob/living/user = target
if(issilicon(user)) //They have evolved beyond the need for mere credits
return
var/obj/item/card/id/card
if(istype(user))
card = user.get_idcard(TRUE)
if(!card)
switch(transaction_style)
if(PAYMENT_FRIENDLY)
to_chat(user, span_warning("ID not detected, sorry [user]!"))
if(PAYMENT_ANGRY)
to_chat(user, span_warning("WHERE IS YOUR GOD DAMN CARD! GOD DAMNIT!"))
if(PAYMENT_CLINICAL)
to_chat(user, span_warning("ID card not present. Aborting."))
return COMPONENT_OBJ_CANCEL_CHARGE
if(!card.registered_account)
if(!card && istype(user.pulling, /obj/item/card/id))
card = user.pulling
if(handle_card(user, card, total_cost))
return //Only breaks here if the card can handle the cost of purchasing with someone's ID.
if(handle_cardless(user, total_cost)) //Here we attempt to handle the purchase physically, with held money first. Otherwise we default to below.
return
return COMPONENT_OBJ_CANCEL_CHARGE
/**
* Proc that changes the base cost of the interaction.
*
* * source: Datum source of the thing changing the cost.
* * new_cost: the int value of the attempted new_cost to replace the cost value.
*/
/datum/component/payment/proc/change_cost(datum/source, new_cost)
SIGNAL_HANDLER
if(!isnum(new_cost))
CRASH("change_cost called with variable new_cost as not a number.")
cost = new_cost
/**
* Attempts to charge the mob, user, an integer number of credits, total_cost, without the use of an ID card to directly draw upon.
*/
/datum/component/payment/proc/handle_cardless(mob/living/user, total_cost)
//Here is all the possible non-ID payment methods.
var/list/counted_money = list()
var/physical_cash_total = 0
for(var/obj/item/credit in typecache_filter_list(user.get_all_contents(), allowed_money)) //Coins, cash, and credits.
if(physical_cash_total > total_cost)
break
physical_cash_total += credit.get_item_credit_value()
counted_money += credit
if(is_type_in_typecache(user.pulling, allowed_money) && (physical_cash_total < total_cost)) //Coins(Pulled).
var/obj/item/counted_credit = user.pulling
physical_cash_total += counted_credit.get_item_credit_value()
counted_money += counted_credit
if(physical_cash_total < total_cost)
var/armless //Suggestions for those with no arms/simple animals.
if(!ishuman(user) && !istype(user, /mob/living/simple_animal/slime))
armless = TRUE
else
var/mob/living/carbon/human/harmless_armless = user
if(!harmless_armless.get_bodypart(BODY_ZONE_L_ARM) && !harmless_armless.get_bodypart(BODY_ZONE_R_ARM))
armless = TRUE
if(armless)
if(!user.pulling || !iscash(user.pulling) && !istype(user.pulling, /obj/item/card/id))
to_chat(user, span_notice("Try pulling a valid ID, space cash, holochip or coin while using \the [parent]!"))
return FALSE
return FALSE
if(physical_cash_total < total_cost)
to_chat(user, span_notice("Insufficient funds. Aborting."))
return FALSE
for(var/obj/cash_object in counted_money)
qdel(cash_object)
physical_cash_total -= total_cost
if(physical_cash_total > 0)
var/obj/item/holochip/holochange = new /obj/item/holochip(user.loc) //Change is made in holocredits exclusively.
holochange.credits = physical_cash_total
holochange.name = "[holochange.credits] credit holochip"
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/paying_customer = user
if(!INVOKE_ASYNC(paying_customer, /mob.proc/put_in_hands, holochange))
user.pulling = holochange
else
user.pulling = holochange
log_econ("[total_cost] credits were spent on [parent] by [user].")
to_chat(user, span_notice("Purchase completed with held credits."))
playsound(user, 'sound/effects/cashregister.ogg', 20, TRUE)
return TRUE
/**
* Attempts to charge a mob, user, an integer number of credits, total_cost, directly from an ID card/bank account.
*/
/datum/component/payment/proc/handle_card(mob/living/user, obj/item/card/id/idcard, total_cost)
if(!idcard)
return FALSE
if(!idcard?.registered_account)
switch(transaction_style)
if(PAYMENT_FRIENDLY)
to_chat(user, span_warning("There's no account detected on your ID, how mysterious!"))
if(PAYMENT_ANGRY)
to_chat(user, span_warning("ARE YOU JOKING. YOU DON'T HAVE A BANK ACCOUNT ON YOUR ID YOU IDIOT."))
if(PAYMENT_CLINICAL)
to_chat(user, span_warning("ID Card lacks a bank account. Aborting."))
return COMPONENT_OBJ_CANCEL_CHARGE
if(!(card.registered_account.has_money(cost + extra_fees)))
to_chat(user, span_warning("ID Card lacks a bank account. Advancing."))
return FALSE
if(!(idcard.registered_account.has_money(total_cost)))
switch(transaction_style)
if(PAYMENT_FRIENDLY)
to_chat(user, span_warning("I'm so sorry... You don't seem to have enough money."))
@@ -65,14 +148,22 @@
to_chat(user, span_warning("YOU MORON. YOU ABSOLUTE BAFOON. YOU INSUFFERABLE TOOL. YOU ARE POOR."))
if(PAYMENT_CLINICAL)
to_chat(user, span_warning("ID Card lacks funds. Aborting."))
return COMPONENT_OBJ_CANCEL_CHARGE
target_acc.transfer_money(card.registered_account, cost + extra_fees)
card.registered_account.bank_card_talk("[cost + extra_fees] credits deducted from your account.")
user.balloon_alert(user, "Cost: [total_cost] credits.")
return FALSE
target_acc.transfer_money(idcard.registered_account, total_cost)
log_econ("[total_cost] credits were spent on [parent] by [user] via [idcard.registered_account.account_holder]'s card.")
idcard.registered_account.bank_card_talk("[total_cost] credits deducted from your account.")
playsound(src, 'sound/effects/cashregister.ogg', 20, TRUE)
SSeconomy.track_purchase(card.registered_account, cost + extra_fees, parent)
SSeconomy.track_purchase(idcard.registered_account, total_cost, parent)
return TRUE
/datum/component/payment/proc/change_cost(datum/source, new_cost)
/**
* Attempts to remove the payment component, currently when the crew wins a revolution.
* * datum/source: source of the signal.
*/
/datum/component/payment/proc/clean_up(datum/source)
SIGNAL_HANDLER
if(!isnum(new_cost))
CRASH("change_cost called with variable new_cost as not a number.")
cost = new_cost
target_acc = null
qdel(src)
return
-1
View File
@@ -45,7 +45,6 @@
/obj/machinery/autolathe/Initialize(mapload)
AddComponent(/datum/component/material_container, SSmaterials.materials_by_category[MAT_CATEGORY_ITEM_MATERIAL], 0, MATCONTAINER_EXAMINE, _after_insert = CALLBACK(src, .proc/AfterMaterialInsert))
. = ..()
wires = new /datum/wires/autolathe(src)
stored_research = new /datum/techweb/specialized/autounlocking/autolathe
matching_designs = list()
+1 -1
View File
@@ -227,7 +227,7 @@ RLD
worn_icon_state = "RCD"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_premium_price = PAYCHECK_HARD * 10
custom_premium_price = PAYCHECK_COMMAND * 10
max_matter = 160
slot_flags = ITEM_SLOT_BELT
item_flags = NO_MAT_REDEMPTION | NOBLUDGEON
+1 -1
View File
@@ -685,7 +685,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
heat = 1500
resistance_flags = FIRE_PROOF
grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/fuel/oil = 5)
custom_price = PAYCHECK_ASSISTANT * 1.1
custom_price = PAYCHECK_CREW * 1.1
light_system = MOVABLE_LIGHT
light_range = 2
light_power = 0.6
@@ -508,7 +508,7 @@
/obj/item/circuitboard/machine/vendor
name = "Custom Vendor (Machine Board)"
desc = "You can turn the \"brand selection\" dial using a screwdriver."
custom_premium_price = PAYCHECK_ASSISTANT * 1.5
custom_premium_price = PAYCHECK_CREW * 1.5
build_path = /obj/machinery/vending/custom
req_components = list(/obj/item/vending_refill/custom = 1)
@@ -1,7 +1,7 @@
/obj/item/flashlight
name = "flashlight"
desc = "A hand-held emergency light."
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
icon = 'icons/obj/lighting.dmi'
icon_state = "flashlight"
inhand_icon_state = "flashlight"
@@ -456,7 +456,7 @@
/obj/item/flashlight/glowstick
name = "glowstick"
desc = "A military-grade glowstick."
custom_price = PAYCHECK_PRISONER
custom_price = PAYCHECK_LOWER
w_class = WEIGHT_CLASS_SMALL
light_range = 4
light_system = MOVABLE_LIGHT
+2 -2
View File
@@ -27,8 +27,8 @@
drop_sound = 'sound/items/handling/multitool_drop.ogg'
pickup_sound = 'sound/items/handling/multitool_pickup.ogg'
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
custom_premium_price = PAYCHECK_HARD * 3
toolspeed = 0.7 //SKYRAT EDIT CHANGE - ORIGINAL: 1
custom_premium_price = PAYCHECK_COMMAND * 3
toolspeed = 1
usesound = 'sound/weapons/empty.ogg'
var/obj/machinery/buffer // simple machine buffer for device linkage
var/mode = 0
+1 -1
View File
@@ -8,7 +8,7 @@
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
custom_premium_price = PAYCHECK_HARD * 1.25
custom_premium_price = PAYCHECK_COMMAND * 1.25
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
/// Spam alert prevention
@@ -7,8 +7,8 @@
w_class = WEIGHT_CLASS_HUGE
slot_flags = ITEM_SLOT_BELT
equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
custom_price = PAYCHECK_MEDIUM * 10
custom_premium_price = PAYCHECK_MEDIUM * 14
custom_price = PAYCHECK_CREW * 10
custom_premium_price = PAYCHECK_CREW * 14
var/obj/item/reagent_containers/beaker = null ///Creating an empty slot for a beaker that can be added to dispense into
var/amount = 30 ///The amount of reagent that is to be dispensed currently
@@ -1,7 +1,7 @@
/obj/item/analyzer
desc = "A hand-held environmental scanner which reports current gas levels."
name = "gas analyzer"
custom_price = PAYCHECK_ASSISTANT * 0.9
custom_price = PAYCHECK_LOWER * 0.9
icon = 'icons/obj/device.dmi'
icon_state = "analyzer"
inhand_icon_state = "analyzer"
@@ -25,7 +25,7 @@
var/mode = SCANNER_VERBOSE
var/scanmode = SCANMODE_HEALTH
var/advanced = FALSE
custom_price = PAYCHECK_HARD
custom_price = PAYCHECK_COMMAND
/obj/item/healthanalyzer/Initialize(mapload)
. = ..()
@@ -1,7 +1,7 @@
/obj/item/t_scanner
name = "\improper T-ray scanner"
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
custom_price = PAYCHECK_ASSISTANT * 0.7
custom_price = PAYCHECK_LOWER * 0.7
icon = 'icons/obj/device.dmi'
icon_state = "t-ray0"
var/on = FALSE
@@ -7,8 +7,8 @@
worn_icon_state = "electronic"
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
custom_price = PAYCHECK_MEDIUM * 5
custom_premium_price = PAYCHECK_MEDIUM * 6
custom_price = PAYCHECK_CREW * 5
custom_premium_price = PAYCHECK_CREW * 6
/obj/item/sensor_device/attack_self(mob/user)
GLOB.crewmonitor.show(user,src) //Proc already exists, just had to call it
+3 -3
View File
@@ -13,7 +13,7 @@
desc = "The cornerstone of every nutritious breakfast."
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 1)
foodtypes = GRAIN | MEAT
custom_price = PAYCHECK_ASSISTANT * 0.8
custom_price = PAYCHECK_CREW * 0.8
venue_value = FOOD_PRICE_CHEAP
/obj/item/food/burger/plain/Initialize(mapload)
@@ -325,7 +325,7 @@
icon_state = "baseball"
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 2)
foodtypes = GRAIN | GROSS
custom_price = PAYCHECK_ASSISTANT * 0.8
custom_price = PAYCHECK_CREW * 0.8
venue_value = FOOD_PRICE_NORMAL
/obj/item/food/burger/baconburger
@@ -335,7 +335,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 2)
tastes = list("bacon" = 4, "bun" = 2)
foodtypes = GRAIN | MEAT
custom_premium_price = PAYCHECK_ASSISTANT * 1.6
custom_premium_price = PAYCHECK_CREW * 1.6
venue_value = FOOD_PRICE_NORMAL
/obj/item/food/burger/empoweredburger
+1 -1
View File
@@ -762,7 +762,7 @@
name = "\improper Activin 12 Hour medicated gum packet"
desc = "Stay awake during long shifts in the maintenance tunnels with Activin! The approval seal of the Mothic Nomad Fleet is emblazoned on the packaging, alongside a litany of health and safety disclaimers in both Mothic and Galactic Common."
icon_state = "bubblegum_wake_up"
custom_premium_price = PAYCHECK_EASY * 1.5
custom_premium_price = PAYCHECK_CREW * 1.5
/obj/item/storage/box/gum/wake_up/examine_more(mob/user)
. = ..()
+1 -1
View File
@@ -135,7 +135,7 @@
reagent_flags = OPENCONTAINER
custom_materials = list(/datum/material/glass = 500)
w_class = WEIGHT_CLASS_NORMAL
custom_price = PAYCHECK_ASSISTANT * 0.6
custom_price = PAYCHECK_CREW * 0.6
/obj/item/reagent_containers/glass/bowl/Initialize(mapload)
. = ..()
+7 -7
View File
@@ -25,7 +25,7 @@
bite_consumption = 10
tastes = list("candy" = 5, "weight loss" = 4, "insect larva" = 1)
foodtypes = JUNKFOOD | RAW | GROSS
custom_price = PAYCHECK_ASSISTANT * 1.6 //Joke adjusted for inflation
custom_price = PAYCHECK_CREW * 1.6 //Joke adjusted for inflation
w_class = WEIGHT_CLASS_TINY
var/revelation = FALSE
@@ -111,7 +111,7 @@
tastes = list("dried raisins" = 1)
foodtypes = JUNKFOOD | FRUIT | SUGAR
food_flags = FOOD_FINGER_FOOD
custom_price = PAYCHECK_ASSISTANT * 0.7
custom_price = PAYCHECK_CREW * 0.7
w_class = WEIGHT_CLASS_SMALL
/obj/item/food/no_raisin/healthy
@@ -130,7 +130,7 @@
junkiness = 25
foodtypes = JUNKFOOD | GRAIN | SUGAR
food_flags = FOOD_FINGER_FOOD
custom_price = PAYCHECK_PRISONER
custom_price = PAYCHECK_LOWER
w_class = WEIGHT_CLASS_SMALL
/obj/item/food/candy_trash
@@ -188,7 +188,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 2)
tastes = list("peanuts" = 4, "anger" = 1)
foodtypes = JUNKFOOD | NUTS
custom_price = PAYCHECK_ASSISTANT * 0.8 //nuts are expensive in real life, and this is the best food in the vendor.
custom_price = PAYCHECK_CREW * 0.8 //nuts are expensive in real life, and this is the best food in the vendor.
junkiness = 10 //less junky than other options, since peanuts are a decently healthy snack option
w_class = WEIGHT_CLASS_SMALL
grind_results = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/cooking_oil = 2)
@@ -321,7 +321,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) //a healthy but expensive snack
tastes = list("pistachios" = 4, "subtle sweetness" = 1)
foodtypes = JUNKFOOD | NUTS
custom_price = PAYCHECK_MEDIUM//pistachios are even more expensive.
custom_price = PAYCHECK_CREW//pistachios are even more expensive.
junkiness = 10 //on par with peanuts
w_class = WEIGHT_CLASS_SMALL
grind_results = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/cooking_oil = 2)
@@ -334,7 +334,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
food_reagents = list(/datum/reagent/consumable/cornoil = 1, /datum/reagent/consumable/salt = 6) //1 cornoil is equal to 1.33 nutriment
tastes = list("sunflowers" = 5)
foodtypes = JUNKFOOD | NUTS
custom_price = PAYCHECK_ASSISTANT * 0.4 //sunflowers are cheap in real life.
custom_price = PAYCHECK_LOWER * 0.4 //sunflowers are cheap in real life.
bite_consumption = 1
junkiness = 25
w_class = WEIGHT_CLASS_SMALL
@@ -356,7 +356,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
bite_consumption = 2
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/salt = 3)
junkiness = 20
custom_price = PAYCHECK_ASSISTANT * 0.8 //we are filled to the brim with flavor
custom_price = PAYCHECK_LOWER * 0.8 //we are filled to the brim with flavor
tastes = list("fried corn" = 1)
foodtypes = JUNKFOOD | FRIED
w_class = WEIGHT_CLASS_SMALL
@@ -54,7 +54,7 @@
var/flashbang_range = 1 //how many tiles away the mob will be stunned.
shrapnel_type = /obj/projectile/bullet/pellet/stingball
shrapnel_radius = 5
custom_premium_price = PAYCHECK_HARD * 3.5 // mostly gotten through cargo, but throw in one for the sec vendor ;)
custom_premium_price = PAYCHECK_COMMAND * 3.5 // mostly gotten through cargo, but throw in one for the sec vendor ;)
/obj/item/grenade/stingbang/mega
name = "mega stingbang"
+2 -2
View File
@@ -40,7 +40,7 @@
custom_materials = list(/datum/material/iron=500)
breakouttime = 1 MINUTES
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
custom_price = PAYCHECK_HARD * 0.35
custom_price = PAYCHECK_COMMAND * 0.35
///Sound that plays when starting to put handcuffs on someone
var/cuffsound = 'sound/weapons/handcuffs.ogg'
///If set, handcuffs will be destroyed on application and leave behind whatever this is set to.
@@ -504,7 +504,7 @@
hitsound = 'sound/weapons/taserhit.ogg'
w_class = WEIGHT_CLASS_SMALL
breakouttime = 6 SECONDS
custom_price = PAYCHECK_HARD * 0.35
custom_price = PAYCHECK_COMMAND * 0.35
/obj/item/restraints/legcuffs/bola/energy/Initialize(mapload)
. = ..()
+6 -6
View File
@@ -34,7 +34,7 @@
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30)
sharpness = SHARP_POINTY
var/datum/reagent/forkload //used to eat omelette
custom_price = PAYCHECK_PRISONER
custom_price = PAYCHECK_LOWER
/obj/item/kitchen/fork/Initialize(mapload)
. = ..()
@@ -69,7 +69,7 @@
w_class = WEIGHT_CLASS_TINY
throwforce = 0
custom_materials = list(/datum/material/plastic=80)
custom_price = PAYCHECK_PRISONER * 2
custom_price = PAYCHECK_LOWER * 2
/obj/item/kitchen/fork/plastic/Initialize(mapload)
. = ..()
@@ -92,7 +92,7 @@
attack_verb_continuous = list("prods", "whiffs", "scratches", "pokes")
attack_verb_simple = list("prod", "whiff", "scratch", "poke")
sharpness = SHARP_EDGED
custom_price = PAYCHECK_PRISONER * 2
custom_price = PAYCHECK_LOWER * 2
/obj/item/knife/plastic/Initialize(mapload)
. = ..()
@@ -111,7 +111,7 @@
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("bashes", "batters", "bludgeons", "thrashes", "whacks")
attack_verb_simple = list("bash", "batter", "bludgeon", "thrash", "whack")
custom_price = PAYCHECK_EASY * 1.5
custom_price = PAYCHECK_CREW * 1.5
tool_behaviour = TOOL_ROLLINGPIN
/obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user)
@@ -132,7 +132,7 @@
attack_verb_continuous = list("whacks", "spoons", "taps")
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 30)
custom_materials = list(/datum/material/iron=120)
custom_price = PAYCHECK_PRISONER * 5
custom_price = PAYCHECK_LOWER * 5
tool_behaviour = TOOL_MINING
toolspeed = 25 // Literally 25 times worse than the base pickaxe
@@ -141,7 +141,7 @@
icon_state = "plastic_spoon"
force = 0
custom_materials = list(/datum/material/plastic=120)
custom_price = PAYCHECK_PRISONER * 2
custom_price = PAYCHECK_LOWER * 2
toolspeed = 75 // The plastic spoon takes 5 minutes to dig through a single mineral turf... It's one, continuous, breakable, do_after...
/obj/item/kitchen/spoon/plastic/Initialize(mapload)
+1 -1
View File
@@ -89,7 +89,7 @@
attack_verb_continuous = list("cleaves", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts")
attack_verb_simple = list("cleave", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut")
w_class = WEIGHT_CLASS_NORMAL
custom_price = PAYCHECK_EASY * 5
custom_price = PAYCHECK_CREW * 5
wound_bonus = 15
/obj/item/knife/hunting
+1 -1
View File
@@ -272,7 +272,7 @@
desc = "A strange box containing wood working tools and an instruction paper to turn stun batons into something else."
icon = 'icons/obj/storage.dmi'
icon_state = "uk"
custom_price = PAYCHECK_HARD * 4.5
custom_price = PAYCHECK_COMMAND * 4.5
/obj/item/melee/baton/telescopic
name = "telescopic baton"
+3 -3
View File
@@ -90,8 +90,8 @@
desc = "A handheld tracking device that points to crew suit sensors."
icon_state = "pinpointer_crew"
worn_icon_state = "pinpointer_crew"
custom_price = PAYCHECK_MEDIUM * 4
custom_premium_price = PAYCHECK_MEDIUM * 6
custom_price = PAYCHECK_CREW * 4
custom_premium_price = PAYCHECK_CREW * 6
var/has_owner = FALSE
var/pinpointer_owner = null
var/ignore_suit_sensor_level = FALSE /// Do we find people even if their suit sensors are turned off
@@ -167,7 +167,7 @@
desc = "A handheld tracking device that displays its proximity to crew suit sensors."
icon_state = "pinpointer_crewprox"
worn_icon_state = "pinpointer_prox"
custom_price = PAYCHECK_MEDIUM * 3
custom_price = PAYCHECK_CREW * 3
/obj/item/pinpointer/crew/prox/get_direction_icon(here, there)
var/size = ""
+1 -1
View File
@@ -132,7 +132,7 @@
max_amount = 12
amount = 6
grind_results = list(/datum/reagent/cellulose = 2)
custom_price = PAYCHECK_ASSISTANT * 2
custom_price = PAYCHECK_CREW * 2
absorption_rate = 0.125
absorption_capacity = 5
splint_factor = 0.7
+1 -1
View File
@@ -104,5 +104,5 @@
prefix = "surgical"
conferred_embed = list("embed_chance" = 30, "pain_mult" = 0, "jostle_pain_mult" = 0, "ignore_throwspeed_threshold" = TRUE)
splint_factor = 0.5
custom_price = PAYCHECK_MEDIUM
custom_price = PAYCHECK_CREW
merge_type = /obj/item/stack/sticky_tape/surgical
+1 -1
View File
@@ -324,7 +324,7 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
custom_materials = list(/datum/material/iron=3000)
custom_price = PAYCHECK_ASSISTANT * 0.6
custom_price = PAYCHECK_CREW * 0.6
/obj/item/storage/bag/tray/ComponentInitialize()
. = ..()
+3 -3
View File
@@ -36,7 +36,7 @@
inhand_icon_state = "utility"
worn_icon_state = "utility"
content_overlays = TRUE
custom_premium_price = PAYCHECK_MEDIUM * 2
custom_premium_price = PAYCHECK_CREW * 2
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
@@ -358,7 +358,7 @@
inhand_icon_state = "securitywebbing"
worn_icon_state = "securitywebbing"
content_overlays = FALSE
custom_premium_price = PAYCHECK_HARD * 3
custom_premium_price = PAYCHECK_COMMAND * 3
/obj/item/storage/belt/security/webbing/ComponentInitialize()
. = ..()
@@ -721,7 +721,7 @@
inhand_icon_state = "fannypack_leather"
worn_icon_state = "fannypack_leather"
dying_key = DYE_REGISTRY_FANNYPACK
custom_price = PAYCHECK_ASSISTANT * 2
custom_price = PAYCHECK_CREW * 2
/obj/item/storage/belt/fannypack/ComponentInitialize()
. = ..()
+6 -6
View File
@@ -721,7 +721,7 @@
slot_flags = ITEM_SLOT_BELT
drop_sound = 'sound/items/handling/matchbox_drop.ogg'
pickup_sound = 'sound/items/handling/matchbox_pickup.ogg'
custom_price = PAYCHECK_ASSISTANT * 0.4
custom_price = PAYCHECK_CREW * 0.4
base_icon_state = "matchbox"
illustration = null
@@ -1123,7 +1123,7 @@
/obj/item/storage/box/dishdrive
name = "DIY Dish Drive Kit"
desc = "Contains everything you need to build your own Dish Drive!"
custom_premium_price = PAYCHECK_EASY * 3
custom_premium_price = PAYCHECK_CREW * 3
/obj/item/storage/box/dishdrive/PopulateContents()
var/static/items_inside = list(
@@ -1246,7 +1246,7 @@
w_class = WEIGHT_CLASS_TINY
illustration = null
foldable = null
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/storage/box/gum/ComponentInitialize()
. = ..()
@@ -1262,7 +1262,7 @@
name = "nicotine gum packet"
desc = "Designed to help with nicotine addiction and oral fixation all at once without destroying your lungs in the process. Mint flavored!"
icon_state = "bubblegum_nicotine"
custom_premium_price = PAYCHECK_EASY * 1.5
custom_premium_price = PAYCHECK_CREW * 1.5
/obj/item/storage/box/gum/nicotine/PopulateContents()
for(var/i in 1 to 4)
@@ -1272,8 +1272,8 @@
name = "HP+ gum packet"
desc = "A seemingly homemade packaging with an odd smell. It has a weird drawing of a smiling face sticking out its tongue."
icon_state = "bubblegum_happiness"
custom_price = PAYCHECK_HARD * 3
custom_premium_price = PAYCHECK_HARD * 3
custom_price = PAYCHECK_COMMAND * 3
custom_premium_price = PAYCHECK_COMMAND * 3
/obj/item/storage/box/gum/happiness/Initialize(mapload)
. = ..()
+3 -3
View File
@@ -82,7 +82,7 @@
spawn_type = /obj/item/food/donut/plain
is_open = TRUE
appearance_flags = KEEP_TOGETHER
custom_premium_price = PAYCHECK_HARD * 1.75
custom_premium_price = PAYCHECK_COMMAND * 1.75
contents_tag = "donut"
/obj/item/storage/fancy/donut_box/ComponentInitialize()
@@ -184,7 +184,7 @@
throwforce = 0
slot_flags = ITEM_SLOT_BELT
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
custom_price = PAYCHECK_MEDIUM
custom_price = PAYCHECK_CREW
age_restricted = TRUE
contents_tag = "cigarette"
///for cigarette overlay
@@ -386,7 +386,7 @@
base_icon_state = "cig_paper_pack"
contents_tag = "rolling paper"
spawn_type = /obj/item/rollingpaper
custom_price = PAYCHECK_PRISONER
custom_price = PAYCHECK_LOWER
/obj/item/storage/fancy/rollingpapers/ComponentInitialize()
. = ..()
+2 -2
View File
@@ -245,7 +245,7 @@
desc = "An advanced kit to help deal with advanced wounds."
icon_state = "medkit_advanced"
inhand_icon_state = "medkit-rad"
custom_premium_price = PAYCHECK_HARD * 6
custom_premium_price = PAYCHECK_COMMAND * 6
damagetype_healed = "all"
/obj/item/storage/medkit/advanced/PopulateContents()
@@ -531,7 +531,7 @@
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
throw_speed = 3
throw_range = 7
custom_premium_price = PAYCHECK_MEDIUM * 4
custom_premium_price = PAYCHECK_CREW * 4
/// var to prevent it freezing the same things over and over
var/cooling = FALSE
+1 -2
View File
@@ -156,8 +156,7 @@
/obj/item/storage/secure/briefcase/syndie/PopulateContents()
..()
var/datum/component/storage/storage_space = GetComponent(/datum/component/storage)
for(var/i in 1 to storage_space.max_items - 2)
for(var/iterator in 1 to 5)
new /obj/item/stack/spacecash/c1000(src)
///Secure Safe
+2 -2
View File
@@ -147,7 +147,7 @@
desc = "A janitorial cleaner backpack with nozzle to clean blood and graffiti."
icon_state = "waterbackpackjani"
inhand_icon_state = "waterbackpackjani"
custom_price = PAYCHECK_EASY * 5
custom_price = PAYCHECK_CREW * 5
/obj/item/watertank/janitor/Initialize(mapload)
. = ..()
@@ -178,7 +178,7 @@
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "pepperbackpacksec"
inhand_icon_state = "pepperbackpacksec"
custom_price = PAYCHECK_MEDIUM * 2
custom_price = PAYCHECK_CREW * 2
volume = 1000
/obj/item/watertank/pepperspray/Initialize(mapload)
+1 -1
View File
@@ -309,7 +309,7 @@ GLOBAL_LIST_EMPTY(tcgcard_radial_choices)
icon = 'icons/obj/tcgmisc.dmi'
icon_state = "cardback_nt"
w_class = WEIGHT_CLASS_TINY
custom_price = PAYCHECK_ASSISTANT * 1.5 //Effectively expensive as long as you're not a very high paying job... in which case, why are you playing trading card games?
custom_price = PAYCHECK_CREW * 2 //Effectively expensive as long as you're not a very high paying job... in which case, why are you playing trading card games?
///The card series to look in
var/series = "MEME"
///Chance of the pack having a coin in it out of 10
+1 -1
View File
@@ -90,4 +90,4 @@
w_class = WEIGHT_CLASS_SMALL
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10)
custom_price = PAYCHECK_EASY * 0.5
custom_price = PAYCHECK_CREW * 0.5
+1 -1
View File
@@ -616,7 +616,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
icon_state = "skateboard2"
inhand_icon_state = "skateboard2"
board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro
custom_premium_price = PAYCHECK_HARD * 5
custom_premium_price = PAYCHECK_COMMAND * 5
/obj/item/melee/skateboard/hoverboard
name = "hoverboard"
@@ -193,4 +193,4 @@
plunge_mod = 0.5
layer_mode_sprite = "reinforced_plunger_layer"
custom_premium_price = PAYCHECK_MEDIUM * 8
custom_premium_price = PAYCHECK_CREW * 8
@@ -434,7 +434,7 @@
if (. == STATION_VICTORY)
// If the revolution was quelled, make rev heads unable to be revived through pods
for (var/datum/mind/rev_head as anything in ex_headrevs)
if(!isnull(rev_head.current))
if(!isnull(rev_head.current))
ADD_TRAIT(rev_head.current, TRAIT_DEFIB_BLACKLISTED, REF(src))
rev_head.current.med_hud_set_status()
@@ -455,6 +455,8 @@
to_chat(headrev_mind.current, span_hear("You hear something crackle in your ears for a moment before a voice speaks. \
\"Please stand by for a message from your benefactor. Message as follows, provocateur. \
<b>You have been chosen out of your fellow provocateurs to rename the station. Choose wisely.</b> Message ends.\""))
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_REVOLUTION_TAX_REMOVAL)
for (var/mob/living/player as anything in GLOB.player_list)
var/datum/mind/player_mind = player.mind
+3 -3
View File
@@ -75,7 +75,7 @@
base_pixel_x = 11
base_pixel_y = 10
custom_premium_price = PAYCHECK_MEDIUM
custom_premium_price = PAYCHECK_CREW
/obj/item/canvas/Initialize(mapload)
. = ..()
@@ -399,7 +399,7 @@
pixels_per_unit = 20
w_class = WEIGHT_CLASS_BULKY
custom_premium_price = PAYCHECK_HARD * 1.25
custom_premium_price = PAYCHECK_CREW * 1.25
/obj/item/canvas/thirtysix_twentyfour/Initialize()
. = ..()
@@ -422,7 +422,7 @@
pixels_per_unit = 18
w_class = WEIGHT_CLASS_BULKY
custom_premium_price = PAYCHECK_HARD * 1.75
custom_premium_price = PAYCHECK_CREW * 1.75
/obj/item/canvas/fortyfive_twentyseven/Initialize()
. = ..()
@@ -41,19 +41,27 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
||||only by meta_gas_list(). ||||
\*||||||||||||||||||||||||||||||||||||||||*/
//This is a plot created using the values for gas exports. Each gas has a value that works as it's kind of soft-cap, which limits you from making billions of credits per sale, based on the base_value variable on the gasses themselves. Most of these gasses as a result have a rather low value when sold, like nitrogen and oxygen at 1500 and 600 respectively at their maximum value. The
/datum/gas
var/id = ""
var/specific_heat = 0
var/name = ""
var/gas_overlay = "" //icon_state in icons/effects/atmospherics.dmi
///icon_state in icons/effects/atmospherics.dmi
var/gas_overlay = ""
var/moles_visible = null
var/dangerous = FALSE //currently used by canisters
var/fusion_power = 0 //How much the gas accelerates a fusion reaction
var/rarity = 0 // relative rarity compared to other gases, used when setting up the reactions list.
///currently used by canisters
var/dangerous = FALSE
///How much the gas accelerates a fusion reaction
var/fusion_power = 0
/// relative rarity compared to other gases, used when setting up the reactions list.
var/rarity = 0
///Can gas of this type can purchased through cargo?
var/purchaseable = FALSE
///How does a single mole of this gas sell for? Formula to calculate maximum value is in code\modules\cargo\exports\large_objects.dm. Doesn't matter for roundstart gasses.
var/base_value = 0
var/desc
/datum/gas/oxygen
id = "o2"
specific_heat = 20
@@ -90,7 +98,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
moles_visible = MOLES_GAS_VISIBLE
dangerous = TRUE
rarity = 800
base_value = 2
base_value = 1.5
desc = "A flammable gas with many other curious properties. It's research is one of NT's primary objective."
/datum/gas/water_vapor
@@ -114,7 +122,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
dangerous = TRUE
fusion_power = 10
rarity = 50
base_value = 5
base_value = 2.5
desc = "The most noble gas of them all. High quantities of hyper-noblium actively prevents reactions from occuring."
/datum/gas/nitrous_oxide
@@ -127,7 +135,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
dangerous = TRUE
rarity = 600
purchaseable = TRUE
base_value = 3
base_value = 1.5
desc = "Causes drowsiness, euphoria, and eventually unconsciousness."
/datum/gas/nitrium
@@ -139,7 +147,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
moles_visible = MOLES_GAS_VISIBLE
dangerous = TRUE
rarity = 1
base_value = 100
base_value = 6
desc = "An experimental performance enhancing gas. Nitrium can have amplified effects as more of it gets into your bloodstream."
/datum/gas/tritium
@@ -151,7 +159,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
dangerous = TRUE
fusion_power = 5
rarity = 300
base_value = 5
base_value = 2.5
desc = "A highly flammable and radioctive gas."
/datum/gas/bz
@@ -162,7 +170,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
fusion_power = 8
rarity = 400
purchaseable = TRUE
base_value = 2
base_value = 1.5
desc = "A powerful hallucinogenic nerve agent able to induce cognitive damage."
/datum/gas/pluoxium
@@ -171,7 +179,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
name = "Pluoxium"
fusion_power = -10
rarity = 200
base_value = 5
base_value = 2.5
desc = "A gas that could supply even more oxygen to the bloodstream when inhaled, without being an oxidizer."
/datum/gas/miasma
@@ -182,7 +190,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
gas_overlay = "miasma"
moles_visible = MOLES_GAS_VISIBLE * 60
rarity = 250
base_value = 2
base_value = 1
desc = "Not necessarily a gas, miasma refers to biological pollutants found in the atmosphere."
/datum/gas/freon
@@ -194,7 +202,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
moles_visible = MOLES_GAS_VISIBLE *30
fusion_power = -5
rarity = 10
base_value = 15
base_value = 5
desc = "A coolant gas. Mainly used for it's endothermic reaction with oxygen."
/datum/gas/hydrogen
@@ -215,7 +223,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
gas_overlay = "healium"
moles_visible = MOLES_GAS_VISIBLE
rarity = 300
base_value = 19
base_value = 5.5
desc = "Causes deep, regenerative sleep."
/datum/gas/proto_nitrate
@@ -226,7 +234,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
gas_overlay = "proto_nitrate"
moles_visible = MOLES_GAS_VISIBLE
rarity = 200
base_value = 5
base_value = 2.5
desc = "A very volatile gas that reacts differently with various gases."
/datum/gas/zauker
@@ -237,7 +245,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
gas_overlay = "zauker"
moles_visible = MOLES_GAS_VISIBLE
rarity = 1
base_value = 100
base_value = 7
desc = "A highly toxic gas, it's production is highly regulated on top of being difficult. It also breaks down when in contact with nitrogen."
/datum/gas/halon
@@ -248,7 +256,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
gas_overlay = "halon"
moles_visible = MOLES_GAS_VISIBLE
rarity = 300
base_value = 9
base_value = 4
desc = "A potent fire supressant. Removes oxygen from high temperature fires and cools down the area"
/datum/gas/helium
@@ -257,7 +265,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
name = "Helium"
fusion_power = 7
rarity = 50
base_value = 6
base_value = 3.5
desc = "A very inert gas produced by the fusion of hydrogen and it's derivatives."
/datum/gas/antinoblium
@@ -96,6 +96,19 @@
unit_name = "security barrier"
export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security)
/**
* Gas canister exports.
* I'm going to put a quick aside here as this has been a pain to balance for several years now, and I'd like to at least break how to keep gas exports tame.
* So: Gasses are sold in canisters below, which have a variable amount of maximum pressure before they start to break. The largest of which is 9.2e13 kPa.
* This means we can determine a theoretical maximum value for gas sale prices using the ideal gas laws, as we know we have a minimum gas temperature of 2.7 kelvin.
*
* Additional note on base value. Gasses are soft capped to limit how much they're worth at large quantities, and time and time again players will find new ways to break your gasses.
* so please, *PLEASE* try not to go too much further past 10.
* * AUTHORS NOTE: This means the theoretical, insane madman number of moles of a single gas in a can sits at a horrifying 4,098,150,709.4 moles.
* * Use this as you will, and when someone makes a quinquadrillion credits using gas exports, use these metrics as a way to balance the bejesus out of them.
* * For more information, see code\modules\atmospherics\machinery\portable\canister.dm.
*/
/datum/export/large/gas_canister
cost = CARGO_CRATE_VALUE * 0.05 //Base cost of canister. You get more for nice gases inside.
unit_name = "Gas Canister"
+27 -27
View File
@@ -7,69 +7,69 @@
/datum/supply_pack/goody/dumdum38
name = ".38 DumDum Speedloader"
desc = "Contains one speedloader of .38 DumDum ammunition, good for embedding in soft targets."
cost = PAYCHECK_MEDIUM * 2
cost = PAYCHECK_CREW * 2
access_view = ACCESS_BRIG
contains = list(/obj/item/ammo_box/c38/dumdum)
/datum/supply_pack/goody/match38
name = ".38 Match Grade Speedloader"
desc = "Contains one speedloader of match grade .38 ammunition, perfect for showing off trickshots."
cost = PAYCHECK_MEDIUM * 2
cost = PAYCHECK_CREW * 2
access_view = ACCESS_BRIG
contains = list(/obj/item/ammo_box/c38/match)
/datum/supply_pack/goody/rubber
name = ".38 Rubber Speedloader"
desc = "Contains one speedloader of bouncy rubber .38 ammunition, for when you want to bounce your shots off anything and everything."
cost = PAYCHECK_MEDIUM * 1.5
cost = PAYCHECK_CREW * 1.5
access_view = ACCESS_BRIG
contains = list(/obj/item/ammo_box/c38/match/bouncy)
/datum/supply_pack/goody/mars_single
name = "Colt Detective Special Single-Pack"
desc = "The HoS took your gun and your badge? No problem! Just pay the absurd taxation fee and you too can be reunited with the lethal power of a .38!"
cost = PAYCHECK_HARD * 40 //they really mean a premium here
cost = PAYCHECK_CREW * 40 //they really mean a premium here
access_view = ACCESS_FORENSICS
contains = list(/obj/item/gun/ballistic/revolver/detective)
*/ //SKYRAT EDIT END
/datum/supply_pack/goody/stingbang
name = "Stingbang Single-Pack"
desc = "Contains one \"stingbang\" grenade, perfect for playing meanhearted pranks."
cost = PAYCHECK_HARD * 2.5
cost = PAYCHECK_COMMAND * 2.5
access_view = ACCESS_BRIG
contains = list(/obj/item/grenade/stingbang)
/datum/supply_pack/goody/Survivalknives_single
name = "Survival Knife Single-Pack"
desc = "Contains one sharpened survival knive. Guaranteed to fit snugly inside any Nanotrasen-standard boot. Weapons permit not included." //SKYRAT EDIT - CONTRABAND CLARIFICATION
cost = PAYCHECK_HARD * 1.75
desc = "Contains one sharpened survival knive. Guaranteed to fit snugly inside any Nanotrasen-standard boot."
cost = PAYCHECK_COMMAND * 1.75
contains = list(/obj/item/knife/combat/survival)
/* //SKYRAT EDIT START - GUN CARGO
/datum/supply_pack/goody/ballistic_single
name = "Combat Shotgun Single-Pack"
desc = "For when the enemy absolutely needs to be replaced with lead. Contains one Aussec-designed Combat Shotgun, and one Shotgun Bandolier."
cost = PAYCHECK_HARD * 15
cost = PAYCHECK_COMMAND * 15
access_view = ACCESS_ARMORY
contains = list(/obj/item/gun/ballistic/shotgun/automatic/combat, /obj/item/storage/belt/bandolier)
/datum/supply_pack/goody/energy_single
name = "Energy Gun Single-Pack"
desc = "Contains one energy gun, capable of firing both nonlethal and lethal blasts of light."
cost = PAYCHECK_HARD * 12
cost = PAYCHECK_COMMAND * 12
access_view = ACCESS_ARMORY
contains = list(/obj/item/gun/energy/e_gun)
/datum/supply_pack/goody/hell_single
name = "Hellgun Kit Single-Pack"
desc = "Contains one hellgun degradation kit, an old pattern of laser gun infamous for its ability to horribly disfigure targets with burns. Technically violates the Space Geneva Convention when used on humanoids."
cost = PAYCHECK_MEDIUM * 2
cost = PAYCHECK_CREW * 2
access_view = ACCESS_ARMORY
contains = list(/obj/item/weaponcrafting/gunkit/hellgun)
/datum/supply_pack/goody/thermal_single
name = "Thermal Pistol Holster Single-Pack"
desc = "Contains twinned thermal pistols in a holster, ready for use in the field."
cost = PAYCHECK_HARD * 15
cost = PAYCHECK_COMMAND * 15
access_view = ACCESS_ARMORY
contains = list(/obj/item/storage/belt/holster/thermal)
*/ //SKYRAT EDIT END
@@ -77,73 +77,73 @@
/datum/supply_pack/goody/sologamermitts
name = "Insulated Gloves Single-Pack"
desc = "The backbone of modern society. Barely ever ordered for actual engineering."
cost = PAYCHECK_MEDIUM * 8
cost = PAYCHECK_CREW * 8
contains = list(/obj/item/clothing/gloves/color/yellow)
/datum/supply_pack/goody/gripper_single
name = "Gripper Gloves Single-Pack"
desc = "A spare pair of gripper gloves. Perfect for when the security vendor is empty (or when you're not actually a security officer). Contraband permit not included." //SKYRAT EDIT - CONTRABAND CLARIFICATION
cost = PAYCHECK_HARD * 6
desc = "A spare pair of gripper gloves. Perfect for when the security vendor is empty (or when you're not actually a security officer)."
cost = PAYCHECK_COMMAND * 6
contains = list(/obj/item/clothing/gloves/tackler)
/datum/supply_pack/goody/firstaidbruises_single
name = "Bruise Treatment Kit Single-Pack"
desc = "A single brute medkit, perfect for recovering from being crushed in an airlock. Did you know people get crushed in airlocks all the time? Interesting..."
cost = PAYCHECK_MEDIUM * 4
cost = PAYCHECK_CREW * 4
contains = list(/obj/item/storage/medkit/brute)
/datum/supply_pack/goody/firstaidburns_single
name = "Burn Treatment Kit Single-Pack"
desc = "A single burn medkit. The advertisement displays a winking atmospheric technician giving a thumbs up, saying \"Mistakes happen!\""
cost = PAYCHECK_MEDIUM * 4
cost = PAYCHECK_CREW * 4
contains = list(/obj/item/storage/medkit/fire)
/datum/supply_pack/goody/firstaid_single
name = "First Aid Kit Single-Pack"
desc = "A single medkit, fit for healing most types of bodily harm."
cost = PAYCHECK_MEDIUM * 3
cost = PAYCHECK_CREW * 3
contains = list(/obj/item/storage/medkit/regular)
/datum/supply_pack/goody/firstaidoxygen_single
name = "Oxygen Deprivation Kit Single-Pack"
desc = "A single oxygen deprivation medkit, marketed heavily to those with crippling fears of asphyxiation."
cost = PAYCHECK_MEDIUM * 4
cost = PAYCHECK_CREW * 4
contains = list(/obj/item/storage/medkit/o2)
/datum/supply_pack/goody/firstaidtoxins_single
name = "Toxin Treatment Kit Single-Pack"
desc = "A single first aid kit focused on healing damage dealt by heavy toxins."
cost = PAYCHECK_MEDIUM * 4
cost = PAYCHECK_CREW * 4
contains = list(/obj/item/storage/medkit/toxin)
/datum/supply_pack/goody/toolbox // mostly just to water down coupon probability
name = "Mechanical Toolbox"
desc = "A fully stocked mechanical toolbox, for when you're too lazy to just print them out."
cost = PAYCHECK_MEDIUM * 3
cost = PAYCHECK_CREW * 3
contains = list(/obj/item/storage/toolbox/mechanical)
/datum/supply_pack/goody/valentine
name = "Valentine Card"
desc = "Make an impression on that special someone! Comes with one valentine card and a free candy heart!"
cost = PAYCHECK_ASSISTANT * 2
cost = PAYCHECK_CREW * 2
contains = list(/obj/item/valentine, /obj/item/food/candyheart)
/datum/supply_pack/goody/beeplush
name = "Bee Plushie"
desc = "The most important thing you could possibly spend your hard-earned money on."
cost = PAYCHECK_EASY * 4
cost = PAYCHECK_CREW * 4
contains = list(/obj/item/toy/plush/beeplushie)
/* SKYRAT EDIT REMOVAL
/datum/supply_pack/goody/dyespray
name = "Hair Dye Spray"
desc = "A cool spray to dye your hair with awesome colors!"
cost = PAYCHECK_EASY * 2
cost = PAYCHECK_CREW * 2
contains = list(/obj/item/dyespray)
*/
/datum/supply_pack/goody/beach_ball
name = "Beach Ball"
// uses desc from item
cost = PAYCHECK_MEDIUM
cost = PAYCHECK_CREW
contains = list(/obj/item/toy/beach_ball/branded)
/datum/supply_pack/goody/beach_ball/New()
@@ -154,17 +154,17 @@
/datum/supply_pack/goody/medipen_twopak
name = "Medipen Two-Pak"
desc = "Contains one standard epinephrine medipen and one standard emergency medkit medipen. For when you want to prepare for the worst."
cost = PAYCHECK_MEDIUM * 2
cost = PAYCHECK_CREW * 2
contains = list(/obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/hypospray/medipen/ekit)
/datum/supply_pack/goody/mothic_rations
name = "Surplus Mothic Ration Pack"
desc = "A single surplus ration pack from the Mothic Fleet. Comes with 3 random sustenance bars, and a package of Activin chewing gum."
cost = PAYCHECK_HARD * 2
cost = PAYCHECK_COMMAND * 2
contains = list(/obj/item/storage/box/mothic_rations)
/datum/supply_pack/goody/ready_donk
name = "Ready-Donk Single Meal"
desc = "A complete meal package for the terminally lazy. Contains one Ready-Donk meal."
cost = PAYCHECK_MEDIUM * 2
cost = PAYCHECK_CREW * 2
contains = list(/obj/item/food/ready_donk)
+1 -1
View File
@@ -16,7 +16,7 @@
strip_delay = 15
equip_delay_other = 25
resistance_flags = FLAMMABLE
custom_price = PAYCHECK_HARD * 1.5
custom_price = PAYCHECK_COMMAND * 1.5
/obj/item/clothing/ears/earmuffs/ComponentInitialize()
. = ..()
+3 -3
View File
@@ -9,7 +9,7 @@
siemens_coefficient = 0
permeability_coefficient = 0.05
resistance_flags = NONE
custom_price = PAYCHECK_MEDIUM * 10
custom_price = PAYCHECK_CREW * 10
custom_premium_price = PAYCHECK_COMMAND * 6
cut_type = /obj/item/clothing/gloves/cut
clothing_traits = list(TRAIT_CHUNKYFINGERS)
@@ -136,7 +136,7 @@
equip_delay_other = 20
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
custom_price = PAYCHECK_ASSISTANT * 1.5
custom_price = PAYCHECK_CREW * 1.5
undyeable = TRUE
clothing_traits = list(TRAIT_FINGERPRINT_PASSTHROUGH)
@@ -272,7 +272,7 @@
desc = "These look pretty fancy."
icon_state = "white"
inhand_icon_state = "wgloves"
custom_price = PAYCHECK_MINIMAL
custom_price = PAYCHECK_CREW
/obj/item/clothing/gloves/kim
name = "aerostatic gloves"
+1 -1
View File
@@ -6,7 +6,7 @@
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
resistance_flags = NONE
custom_premium_price = PAYCHECK_HARD * 3.5
custom_premium_price = PAYCHECK_COMMAND * 3.5
clothing_traits = list(TRAIT_FINGERPRINT_PASSTHROUGH)
/// For storing our tackler datum so we can remove it after
var/datum/component/tackler
+1 -1
View File
@@ -7,7 +7,7 @@
name = "white beanie"
desc = "A stylish beanie. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their heads."
icon_state = "beanie" //Default white
custom_price = PAYCHECK_ASSISTANT * 1.2
custom_price = PAYCHECK_CREW * 1.2
/obj/item/clothing/head/beanie/black
name = "black beanie"
+2 -2
View File
@@ -137,7 +137,7 @@
desc = "A reliable, blue tinted helmet reminding you that you <i>still</i> owe that engineer a beer."
icon_state = "blueshift"
inhand_icon_state = "blueshift"
custom_premium_price = PAYCHECK_HARD
custom_premium_price = PAYCHECK_COMMAND
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
@@ -234,7 +234,7 @@
desc = "A british looking helmet."
icon_state = "constable"
inhand_icon_state = "constable"
custom_price = PAYCHECK_HARD * 1.5
custom_price = PAYCHECK_COMMAND * 1.5
worn_y_offset = 4
/obj/item/clothing/head/helmet/swat/nanotrasen
+1 -1
View File
@@ -95,7 +95,7 @@
desc = "A bunch of hair without a head attached. This one changes color to match the hair of the wearer. Nothing natural about that."
color = "#FFFFFF"
adjustablecolor = FALSE
custom_price = PAYCHECK_HARD
custom_price = PAYCHECK_COMMAND
/obj/item/clothing/head/wig/natural/Initialize(mapload)
hairstyle = pick(GLOB.hairstyles_list - "Bald")
+1 -1
View File
@@ -191,7 +191,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
icon_state = "whistle"
inhand_icon_state = "whistle"
slot_flags = ITEM_SLOT_MASK|ITEM_SLOT_NECK
custom_price = PAYCHECK_HARD * 1.5
custom_price = PAYCHECK_COMMAND * 1.5
actions_types = list(/datum/action/item_action/halt)
/obj/item/clothing/mask/whistle/ui_action_click(mob/user, action)
+6 -6
View File
@@ -24,7 +24,7 @@
icon_state = "bluetie"
inhand_icon_state = "" //no inhands
w_class = WEIGHT_CLASS_SMALL
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/neck/tie/blue
name = "blue tie"
@@ -101,7 +101,7 @@
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
w_class = WEIGHT_CLASS_TINY
dog_fashion = /datum/dog_fashion/head
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/neck/scarf/black
name = "black scarf"
@@ -165,17 +165,17 @@
/obj/item/clothing/neck/stripedredscarf
name = "striped red scarf"
icon_state = "stripedredscarf"
custom_price = PAYCHECK_ASSISTANT * 0.2
custom_price = PAYCHECK_CREW * 0.2
/obj/item/clothing/neck/stripedgreenscarf
name = "striped green scarf"
icon_state = "stripedgreenscarf"
custom_price = PAYCHECK_ASSISTANT * 0.2
custom_price = PAYCHECK_CREW * 0.2
/obj/item/clothing/neck/stripedbluescarf
name = "striped blue scarf"
icon_state = "stripedbluescarf"
custom_price = PAYCHECK_ASSISTANT * 0.2
custom_price = PAYCHECK_CREW * 0.2
/obj/item/clothing/neck/petcollar
name = "pet collar"
@@ -238,7 +238,7 @@
icon = 'icons/obj/clothing/neck.dmi'
icon_state = "beads"
color = "#ffffff"
custom_price = PAYCHECK_ASSISTANT * 0.2
custom_price = PAYCHECK_CREW * 0.2
custom_materials = (list(/datum/material/plastic = 500))
/obj/item/clothing/neck/beads/Initialize(mapload)
+1 -1
View File
@@ -4,7 +4,7 @@
icon_state = "cowboy_brown"
permeability_coefficient = 0.05 //these are quite tall
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
var/list/occupants = list()
var/max_occupants = 4
can_be_tied = FALSE
+1 -1
View File
@@ -10,7 +10,7 @@
resistance_flags = NONE
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 40, ACID = 75)
can_be_bloody = FALSE
custom_price = PAYCHECK_EASY * 3
custom_price = PAYCHECK_CREW * 3
can_be_tied = FALSE
/obj/item/clothing/shoes/galoshes/dry
+1 -1
View File
@@ -10,7 +10,7 @@
/obj/item/clothing/shoes/sneakers/black
name = "black shoes"
desc = "A pair of black shoes."
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
+4 -4
View File
@@ -65,8 +65,8 @@
worn_icon_state = "rollerskates"
slowdown = SHOES_SLOWDOWN+1
wheels = /obj/vehicle/ridden/scooter/skateboard/wheelys/rollerskates
custom_premium_price = PAYCHECK_EASY * 5
custom_price = PAYCHECK_EASY * 5
custom_premium_price = PAYCHECK_CREW * 5
custom_price = PAYCHECK_CREW * 5
/obj/item/clothing/shoes/wheelys/skishoes
name = "ski shoes"
@@ -77,5 +77,5 @@
worn_icon_state = "skishoes"
slowdown = SHOES_SLOWDOWN+1
wheels = /obj/vehicle/ridden/scooter/skateboard/wheelys/skishoes
custom_premium_price = PAYCHECK_EASY * 1.6
custom_price = PAYCHECK_EASY * 1.6
custom_premium_price = PAYCHECK_CREW * 1.6
custom_price = PAYCHECK_CREW * 1.6
+1 -1
View File
@@ -66,7 +66,7 @@
desc = "A large, yet comfortable piece of armor, protecting you from some threats."
icon_state = "blueshift"
inhand_icon_state = "blueshift"
custom_premium_price = PAYCHECK_HARD
custom_premium_price = PAYCHECK_COMMAND
/obj/item/clothing/suit/armor/vest/cuirass
name = "cuirass"
+1 -1
View File
@@ -59,7 +59,7 @@
icon_state = "constable"
inhand_icon_state = "constable"
can_adjust = FALSE
custom_price = PAYCHECK_HARD
custom_price = PAYCHECK_COMMAND
/obj/item/clothing/under/rank/security/warden
+1 -1
View File
@@ -71,7 +71,7 @@
icon_state = "overalls"
inhand_icon_state = "lb_suit"
can_adjust = FALSE
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/under/misc/assistantformal
name = "assistant's formal uniform"
+2 -2
View File
@@ -3,7 +3,7 @@
body_parts_covered = GROIN|LEGS
female_sprite_flags = NO_FEMALE_UNIFORM
can_adjust = FALSE
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
icon = 'icons/obj/clothing/under/shorts_pants.dmi'
worn_icon = 'icons/mob/clothing/under/shorts_pants.dmi'
species_exception = list(/datum/species/golem)
@@ -17,7 +17,7 @@
name = "Must Hang jeans"
desc = "Made in the finest space jeans factory this side of Alpha Centauri."
icon_state = "jeansmustang"
custom_price = PAYCHECK_EASY * 3
custom_price = PAYCHECK_CREW * 3
/obj/item/clothing/under/pants/blackjeans
name = "black jeans"
+4 -4
View File
@@ -55,21 +55,21 @@
desc = "A blue, casual skirt."
icon_state = "blueskirt"
inhand_icon_state = "b_suit"
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/under/dress/skirt/red
name = "red skirt"
desc = "A red, casual skirt."
icon_state = "redskirt"
inhand_icon_state = "r_suit"
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/under/dress/skirt/purple
name = "purple skirt"
desc = "A purple, casual skirt."
icon_state = "purpleskirt"
inhand_icon_state = "p_suit"
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/under/dress/skirt/plaid
name = "red plaid skirt"
@@ -78,7 +78,7 @@
inhand_icon_state = "plaid_red"
can_adjust = TRUE
alt_covers_chest = TRUE
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/clothing/under/dress/skirt/plaid/blue
name = "blue plaid skirt"
+2
View File
@@ -123,6 +123,8 @@
if(!account_job)
return
var/money_to_transfer = round(account_job.paycheck * payday_modifier * amt_of_paychecks)
if(amt_of_paychecks == 1)
money_to_transfer = clamp(money_to_transfer, 0, PAYCHECK_CREW) //We want to limit single, passive paychecks to regular crew income.
if(free)
adjust_money(money_to_transfer)
SSblackbox.record_feedback("amount", "free_income", money_to_transfer)
@@ -235,7 +235,7 @@
/obj/item/reagent_containers/food/drinks/ice
name = "ice cup"
desc = "Careful, cold ice, do not chew."
custom_price = PAYCHECK_PRISONER * 0.6
custom_price = PAYCHECK_LOWER * 0.6
icon_state = "coffee"
list_reagents = list(/datum/reagent/consumable/ice = 30)
spillable = TRUE
@@ -268,7 +268,7 @@
list_reagents = list(/datum/reagent/consumable/hot_coco = 15, /datum/reagent/consumable/sugar = 5)
foodtype = SUGAR
resistance_flags = FREEZE_PROOF
custom_price = PAYCHECK_ASSISTANT * 1.2
custom_price = PAYCHECK_CREW * 1.2
/obj/item/reagent_containers/food/drinks/dry_ramen
@@ -278,7 +278,7 @@
list_reagents = list(/datum/reagent/consumable/dry_ramen = 15, /datum/reagent/consumable/salt = 3)
foodtype = GRAIN
isGlass = FALSE
custom_price = PAYCHECK_ASSISTANT * 0.9
custom_price = PAYCHECK_CREW * 0.9
/obj/item/reagent_containers/food/drinks/waterbottle
name = "bottle of water"
@@ -298,7 +298,7 @@
var/cap_lost = FALSE
var/mutable_appearance/cap_overlay
var/flip_chance = 10
custom_price = PAYCHECK_PRISONER * 0.8
custom_price = PAYCHECK_LOWER * 0.8
/obj/item/reagent_containers/food/drinks/waterbottle/Initialize(mapload)
. = ..()
@@ -584,7 +584,7 @@
/obj/item/reagent_containers/food/drinks/flask
name = "flask"
desc = "Every good spaceman knows it's a good idea to bring along a couple of pints of whiskey wherever they go."
custom_price = PAYCHECK_HARD * 2
custom_price = PAYCHECK_COMMAND * 2
icon_state = "flask"
custom_materials = list(/datum/material/iron=250)
volume = 60
@@ -623,7 +623,7 @@
reagent_flags = NONE
spillable = FALSE
isGlass = FALSE
custom_price = PAYCHECK_ASSISTANT * 0.9
custom_price = PAYCHECK_CREW * 0.9
obj_flags = CAN_BE_HIT
throwforce = 12 // set to 0 upon being opened. Have you ever been domed by a soda can? Those things fucking hurt
/// If the can hasn't been opened yet, this is the measure of how fizzed up it is from being shaken or thrown around. When opened, this is rolled as a percentage chance to burst
@@ -10,7 +10,7 @@
icon_state = "glassbottle"
worn_icon_state = "bottle"
fill_icon_thresholds = list(0, 10, 20, 30, 40, 50, 60, 70, 80, 90)
custom_price = PAYCHECK_EASY * 1.1
custom_price = PAYCHECK_CREW * 1.1
amount_per_transfer_from_this = 10
volume = 100
force = 15 //Smashing bottles over someone's head hurts.
@@ -29,7 +29,7 @@
desc = "This blank bottle is unyieldingly anonymous, offering no clues to its contents."
icon_state = "glassbottlesmall"
volume = 50
custom_price = PAYCHECK_EASY * 0.9
custom_price = PAYCHECK_CREW * 0.9
/obj/item/reagent_containers/food/drinks/bottle/smash(mob/living/target, mob/thrower, ranged = FALSE)
if(bartender_check(target) && ranged)
@@ -163,7 +163,7 @@
volume = 30
list_reagents = list(/datum/reagent/consumable/ethanol/beer = 30)
foodtype = GRAIN | ALCOHOL
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/reagent_containers/food/drinks/bottle/beer/almost_empty
list_reagents = list(/datum/reagent/consumable/ethanol/beer = 1)
@@ -179,8 +179,8 @@
volume = 30
list_reagents = list(/datum/reagent/consumable/rootbeer = 30)
foodtype = SUGAR | JUNKFOOD
custom_price = PAYCHECK_HARD * 1.5
custom_premium_price = PAYCHECK_HARD * 2
custom_price = PAYCHECK_CREW * 1.5
custom_premium_price = PAYCHECK_CREW * 2
/obj/item/reagent_containers/food/drinks/bottle/ale
name = "Magm-Ale"
@@ -189,7 +189,7 @@
volume = 30
list_reagents = list(/datum/reagent/consumable/ethanol/ale = 30)
foodtype = GRAIN | ALCOHOL
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/reagent_containers/food/drinks/bottle/gin
name = "Griffeater gin"
@@ -256,7 +256,7 @@
desc = "A 40 full of malt liquor. Kicks stronger than, well, a rabid bear."
icon_state = "maltliquorbottle"
list_reagents = list(/datum/reagent/consumable/ethanol/beer/maltliquor = 100)
custom_price = PAYCHECK_EASY
custom_price = PAYCHECK_CREW
/obj/item/reagent_containers/food/drinks/bottle/holywater
name = "flask of holy water"
@@ -448,7 +448,7 @@
/obj/item/reagent_containers/food/drinks/bottle/orangejuice
name = "orange juice"
desc = "Full of vitamins and deliciousness!"
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "orangejuice"
inhand_icon_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
@@ -461,7 +461,7 @@
/obj/item/reagent_containers/food/drinks/bottle/cream
name = "milk cream"
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "cream"
inhand_icon_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
@@ -474,7 +474,7 @@
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice
name = "tomato juice"
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "tomatojuice"
inhand_icon_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
@@ -487,7 +487,7 @@
/obj/item/reagent_containers/food/drinks/bottle/limejuice
name = "lime juice"
desc = "Sweet-sour goodness."
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "limejuice"
inhand_icon_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
@@ -500,7 +500,7 @@
/obj/item/reagent_containers/food/drinks/bottle/pineapplejuice
name = "pineapple juice"
desc = "Extremely tart, yellow juice."
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "pineapplejuice"
inhand_icon_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
@@ -513,7 +513,7 @@
/obj/item/reagent_containers/food/drinks/bottle/menthol
name = "menthol"
desc = "Tastes naturally minty, and imparts a very mild numbing sensation."
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "mentholbox"
inhand_icon_state = "carton"
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
@@ -524,7 +524,7 @@
/obj/item/reagent_containers/food/drinks/bottle/grenadine
name = "Jester Grenadine"
desc = "Contains 0% real cherries!"
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "grenadine"
isGlass = TRUE
list_reagents = list(/datum/reagent/consumable/grenadine = 100)
@@ -534,7 +534,7 @@
/obj/item/reagent_containers/food/drinks/bottle/applejack
name = "Buckin' Bronco's Applejack"
desc = "Kicks like a horse, tastes like an apple!"
custom_price = PAYCHECK_ASSISTANT
custom_price = PAYCHECK_CREW
icon_state = "applejack_bottle"
isGlass = TRUE
list_reagents = list(/datum/reagent/consumable/ethanol/applejack = 100)
@@ -14,7 +14,7 @@
obj_flags = UNIQUE_RENAME
drop_sound = 'sound/items/handling/drinkglass_drop.ogg'
pickup_sound = 'sound/items/handling/drinkglass_pickup.ogg'
custom_price = PAYCHECK_PRISONER
custom_price = PAYCHECK_LOWER
/obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(datum/reagents/holder, ...)
. = ..()
@@ -74,7 +74,7 @@
fill_icon_state = "shot_glass"
volume = 15
custom_materials = list(/datum/material/glass=100)
custom_price = PAYCHECK_ASSISTANT * 0.4
custom_price = PAYCHECK_CREW * 0.4
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/update_name(updates)
if(renamedByPlayer)
+1 -1
View File
@@ -11,7 +11,7 @@
icon_dead = "xpod-dead"
icon_harvest = "xpod-harvest"
growthstages = 4
custom_premium_price = PAYCHECK_EASY * 2
custom_premium_price = PAYCHECK_CREW * 2
/obj/item/seeds/random/Initialize(mapload)
. = ..()
+2 -2
View File
@@ -269,5 +269,5 @@
w_class = WEIGHT_CLASS_TINY
force = 0
hitsound = 'sound/voice/moth/scream_moth.ogg'
custom_price = PAYCHECK_HARD * 2.37
custom_premium_price = PAYCHECK_HARD * 2.37
custom_price = PAYCHECK_COMMAND * 2.37
custom_premium_price = PAYCHECK_COMMAND * 2.37
+2 -2
View File
@@ -24,7 +24,7 @@
slot_flags = ITEM_SLOT_EARS | ITEM_SLOT_HEAD
force = 0
w_class = WEIGHT_CLASS_SMALL
custom_price = PAYCHECK_ASSISTANT * 2.5
custom_price = PAYCHECK_CREW * 2.5
instrument_range = 1
circuit_type = /obj/item/circuit_component/synth/headphones
shell_capacity = SHELL_CAPACITY_TINY
@@ -59,7 +59,7 @@
slot_flags = ITEM_SLOT_EARS
strip_delay = 100 //air pods don't fall out
instrument_range = 0 //you're paying for quality here
custom_premium_price = PAYCHECK_ASSISTANT * 36 //Save up 5 shifts worth of pay just to lose it down a drainpipe on the sidewalk
custom_premium_price = PAYCHECK_CREW * 36 //Save up 5 shifts worth of pay just to lose it down a drainpipe on the sidewalk
/obj/item/circuit_component/synth
display_name = "Synthesizer"
+6 -2
View File
@@ -61,16 +61,20 @@
/// Experience type granted by playing in this job.
var/exp_granted_type = ""
var/paycheck = PAYCHECK_MINIMAL
///How much money does this crew member make in a single paycheck? Note that passive paychecks are capped to PAYCHECK_CREW in regular gameplay after roundstart.
var/paycheck = PAYCHECK_CREW
///Which department does this paycheck pay from?
var/paycheck_department = ACCOUNT_CIV
var/list/mind_traits // Traits added to the mind of the mob assigned this job
/// Traits added to the mind of the mob assigned this job
var/list/mind_traits
///Lazylist of traits added to the liver of the mob assigned this job (used for the classic "cops heal from donuts" reaction, among others)
var/list/liver_traits = null
var/display_order = JOB_DISPLAY_ORDER_DEFAULT
///What types of bounty tasks can this job recieve past the default?
var/bounty_types = CIV_JOB_BASIC
/// Goodies that can be received via the mail system.
+1 -1
View File
@@ -14,7 +14,7 @@ Assistant
exp_granted_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/assistant
plasmaman_outfit = /datum/outfit/plasmaman
paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it.
paycheck = PAYCHECK_LOWER // Get a job. Job reassignment changes your paycheck now. Get over it.
paycheck_department = ACCOUNT_CIV
display_order = JOB_DISPLAY_ORDER_ASSISTANT
@@ -14,7 +14,7 @@
outfit = /datum/outfit/job/atmos
plasmaman_outfit = /datum/outfit/plasmaman/atmospherics
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_ENG
liver_traits = list(TRAIT_ENGINEER_METABOLISM)
+1 -1
View File
@@ -12,7 +12,7 @@
outfit = /datum/outfit/job/bartender
plasmaman_outfit = /datum/outfit/plasmaman/bar
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_BARTENDER
bounty_types = CIV_JOB_DRINK
+1 -1
View File
@@ -12,7 +12,7 @@
outfit = /datum/outfit/job/botanist
plasmaman_outfit = /datum/outfit/plasmaman/botany
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_BOTANIST
bounty_types = CIV_JOB_GROW
@@ -15,7 +15,7 @@
outfit = /datum/outfit/job/cargo_tech
plasmaman_outfit = /datum/outfit/plasmaman/cargo
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_CAR
display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN
bounty_types = CIV_JOB_RANDOM
+1 -1
View File
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/chaplain
plasmaman_outfit = /datum/outfit/plasmaman/chaplain
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_CHAPLAIN
+1 -1
View File
@@ -15,7 +15,7 @@
outfit = /datum/outfit/job/chemist
plasmaman_outfit = /datum/outfit/plasmaman/chemist
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_MED
liver_traits = list(TRAIT_MEDICAL_METABOLISM)
+1 -1
View File
@@ -12,7 +12,7 @@
outfit = /datum/outfit/job/clown
plasmaman_outfit = /datum/outfit/plasmaman/clown
paycheck = PAYCHECK_MINIMAL
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
liver_traits = list(TRAIT_COMEDY_METABOLISM)
+1 -1
View File
@@ -15,7 +15,7 @@
outfit = /datum/outfit/job/cook
plasmaman_outfit = /datum/outfit/plasmaman/chef
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
liver_traits = list(TRAIT_CULINARY_METABOLISM)
+1 -1
View File
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/curator
plasmaman_outfit = /datum/outfit/plasmaman/curator
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_CURATOR
+1 -1
View File
@@ -20,7 +20,7 @@
/datum/job_department/security,
)
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SEC
mind_traits = list(TRAIT_DONUT_LOVER, TRAIT_DETECTIVE) //SKYRAT EDIT CHANGE: EXAMINEMORE
+1 -1
View File
@@ -17,7 +17,7 @@
/datum/job_department/science,
)
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SCI
display_order = JOB_DISPLAY_ORDER_GENETICIST
+1 -1
View File
@@ -12,7 +12,7 @@
outfit = /datum/outfit/job/janitor
plasmaman_outfit = /datum/outfit/plasmaman/janitor
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_JANITOR
+1 -1
View File
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/lawyer
plasmaman_outfit = /datum/outfit/plasmaman/bar
paycheck = PAYCHECK_EASY
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
mind_traits = list(TRAIT_DONUT_LOVER)
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/doctor
plasmaman_outfit = /datum/outfit/plasmaman/medical
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_MED
liver_traits = list(TRAIT_MEDICAL_METABOLISM)
+1 -1
View File
@@ -12,7 +12,7 @@
outfit = /datum/outfit/job/mime
plasmaman_outfit = /datum/outfit/plasmaman/mime
paycheck = PAYCHECK_MINIMAL
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_MIME
+1 -1
View File
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/paramedic
plasmaman_outfit = /datum/outfit/plasmaman/paramedic
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_MED
liver_traits = list(TRAIT_MEDICAL_METABOLISM)
+1 -1
View File
@@ -8,7 +8,7 @@
supervisors = "the security team"
selection_color = "#ffe1c3"
exp_granted_type = EXP_TYPE_CREW
paycheck = PAYCHECK_PRISONER
paycheck = PAYCHECK_LOWER
outfit = /datum/outfit/job/prisoner
plasmaman_outfit = /datum/outfit/plasmaman/prisoner
+1 -1
View File
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/psychologist
plasmaman_outfit = /datum/outfit/plasmaman/psychologist
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SRV
liver_traits = list(TRAIT_MEDICAL_METABOLISM)
+1 -1
View File
@@ -18,7 +18,7 @@
outfit = /datum/outfit/job/quartermaster
plasmaman_outfit = /datum/outfit/plasmaman/cargo
paycheck = PAYCHECK_COMMAND //SKYRAT EDIT CHANGE - ORIGINAL: PAYCHECK_MEDIUM
paycheck = PAYCHECK_COMMAND //SKYRAT EDIT CHANGE - ORIGINAL: PAYCHECK_CREW
paycheck_department = ACCOUNT_CAR
//liver_traits = list(TRAIT_PRETENDER_ROYAL_METABOLISM) //ORIGINAL
+1 -1
View File
@@ -18,7 +18,7 @@
/datum/job_department/science,
)
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SCI
display_order = JOB_DISPLAY_ORDER_ROBOTICIST
+1 -1
View File
@@ -14,7 +14,7 @@
outfit = /datum/outfit/job/scientist
plasmaman_outfit = /datum/outfit/plasmaman/science
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SCI
display_order = JOB_DISPLAY_ORDER_SCIENTIST
@@ -17,7 +17,7 @@
outfit = /datum/outfit/job/security
plasmaman_outfit = /datum/outfit/plasmaman/security
paycheck = PAYCHECK_HARD
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SEC
mind_traits = list(TRAIT_DONUT_LOVER)
+1 -1
View File
@@ -13,7 +13,7 @@
outfit = /datum/outfit/job/miner
plasmaman_outfit = /datum/outfit/plasmaman/mining
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_CAR
display_order = JOB_DISPLAY_ORDER_SHAFT_MINER
@@ -15,7 +15,7 @@
outfit = /datum/outfit/job/engineer
plasmaman_outfit = /datum/outfit/plasmaman/engineering
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_ENG
liver_traits = list(TRAIT_ENGINEER_METABOLISM)
+1 -1
View File
@@ -15,7 +15,7 @@
outfit = /datum/outfit/job/virologist
plasmaman_outfit = /datum/outfit/plasmaman/viro
paycheck = PAYCHECK_MEDIUM
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_MED
liver_traits = list(TRAIT_MEDICAL_METABOLISM)
+1 -1
View File
@@ -18,7 +18,7 @@
outfit = /datum/outfit/job/warden
plasmaman_outfit = /datum/outfit/plasmaman/warden
paycheck = PAYCHECK_HARD
paycheck = PAYCHECK_CREW
paycheck_department = ACCOUNT_SEC
mind_traits = list(TRAIT_DONUT_LOVER)
@@ -11,7 +11,7 @@
icon = 'icons/obj/card.dmi'
icon_state = "data_3"
custom_price = PAYCHECK_MEDIUM * 3
custom_price = PAYCHECK_CREW * 3
w_class = WEIGHT_CLASS_SMALL
/// Traits automatically granted by this chip, optional. Lazylist.
@@ -168,7 +168,7 @@
max_capacity = 64
icon_state = "ssd_mini"
w_class = WEIGHT_CLASS_TINY
custom_price = PAYCHECK_MEDIUM * 2
custom_price = PAYCHECK_CREW * 2
/obj/item/computer_hardware/hard_drive/small/install_default_programs()
. = ..()

Some files were not shown because too many files have changed in this diff Show More