mirror of
https://github.com/quotefox/Hyper-Station-13.git
synced 2026-07-16 02:02:56 +01:00
Merge pull request #1641 from quotefox/revert-1638-economy-update-junk
Revert "(CONFIG CHANGE) Updating Economy: Adding Paychecks, and makes Bank Accounts easier to work with"
This commit is contained in:
@@ -1,11 +0,0 @@
|
||||
#define ECONOMY_TYPE_ROOKIE "Rookie"
|
||||
#define ECONOMY_TYPE_DANGEROUS "Dangerous"
|
||||
#define ECONOMY_TYPE_COMMAND "Command"
|
||||
|
||||
#define ECONOMY_PRICE_DEFAULT 1
|
||||
#define ECONOMY_PRICE_LOW 2
|
||||
#define ECONOMY_PRICE_HIGH 3
|
||||
#define ECONOMY_PRICE_EROTIC 4
|
||||
#define ECONOMY_PRICE_EXPENSIVE 5
|
||||
#define ECONOMY_PRICE_EXPENSIVE_AF 6
|
||||
#define ECONOMY_PRICE_FORCED_FREE 7 //i sure do love force_free'd-ing with items :)
|
||||
@@ -90,38 +90,37 @@
|
||||
// Subsystem fire priority, from lowest to highest priority
|
||||
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
|
||||
|
||||
#define FIRE_PRIORITY_PING 10
|
||||
#define FIRE_PRIORITY_IDLE_NPC 10
|
||||
#define FIRE_PRIORITY_SERVER_MAINT 10
|
||||
#define FIRE_PRIORITY_RESEARCH 10
|
||||
#define FIRE_PRIORITY_VIS 10
|
||||
#define FIRE_PRIORITY_VORE 10
|
||||
#define FIRE_PRIORITY_GARBAGE 15
|
||||
#define FIRE_PRIORITY_ECONOMY 20
|
||||
#define FIRE_PRIORITY_WET_FLOORS 20
|
||||
#define FIRE_PRIORITY_AIR 20
|
||||
#define FIRE_PRIORITY_PROCESS 25
|
||||
#define FIRE_PRIORITY_THROWING 25
|
||||
#define FIRE_PRIORITY_SPACEDRIFT 30
|
||||
#define FIRE_PRIORITY_FIELDS 30
|
||||
#define FIRE_PRIOTITY_SMOOTHING 35
|
||||
#define FIRE_PRIORITY_NETWORKS 40
|
||||
#define FIRE_PRIORITY_OBJ 40
|
||||
#define FIRE_PRIORITY_ACID 40
|
||||
#define FIRE_PRIOTITY_BURNING 40
|
||||
#define FIRE_PRIORITY_AIR_TURFS 40
|
||||
#define FIRE_PRIORITY_DEFAULT 50
|
||||
#define FIRE_PRIORITY_PARALLAX 65
|
||||
#define FIRE_PRIORITY_NPC 80
|
||||
#define FIRE_PRIORITY_FLIGHTPACKS 80
|
||||
#define FIRE_PRIORITY_MOBS 100
|
||||
#define FIRE_PRIORITY_TGUI 110
|
||||
#define FIRE_PRIORITY_TICKER 200
|
||||
#define FIRE_PRIORITY_PING 10
|
||||
#define FIRE_PRIORITY_IDLE_NPC 10
|
||||
#define FIRE_PRIORITY_SERVER_MAINT 10
|
||||
#define FIRE_PRIORITY_RESEARCH 10
|
||||
#define FIRE_PRIORITY_VIS 10
|
||||
#define FIRE_PRIORITY_VORE 10
|
||||
#define FIRE_PRIORITY_GARBAGE 15
|
||||
#define FIRE_PRIORITY_WET_FLOORS 20
|
||||
#define FIRE_PRIORITY_AIR 20
|
||||
#define FIRE_PRIORITY_NPC 80
|
||||
#define FIRE_PRIORITY_PROCESS 25
|
||||
#define FIRE_PRIORITY_THROWING 25
|
||||
#define FIRE_PRIORITY_SPACEDRIFT 30
|
||||
#define FIRE_PRIORITY_FIELDS 30
|
||||
#define FIRE_PRIOTITY_SMOOTHING 35
|
||||
#define FIRE_PRIORITY_NETWORKS 40
|
||||
#define FIRE_PRIORITY_OBJ 40
|
||||
#define FIRE_PRIORITY_ACID 40
|
||||
#define FIRE_PRIOTITY_BURNING 40
|
||||
#define FIRE_PRIORITY_AIR_TURFS 40
|
||||
#define FIRE_PRIORITY_DEFAULT 50
|
||||
#define FIRE_PRIORITY_PARALLAX 65
|
||||
#define FIRE_PRIORITY_FLIGHTPACKS 80
|
||||
#define FIRE_PRIORITY_MOBS 100
|
||||
#define FIRE_PRIORITY_TGUI 110
|
||||
#define FIRE_PRIORITY_TICKER 200
|
||||
#define FIRE_PRIORITY_ATMOS_ADJACENCY 300
|
||||
#define FIRE_PRIORITY_STATPANEL 390
|
||||
#define FIRE_PRIORITY_CHAT 400
|
||||
#define FIRE_PRIORITY_OVERLAYS 500
|
||||
#define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost.
|
||||
#define FIRE_PRIORITY_STATPANEL 390
|
||||
#define FIRE_PRIORITY_CHAT 400
|
||||
#define FIRE_PRIORITY_OVERLAYS 500
|
||||
#define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost.
|
||||
|
||||
// SS runlevels
|
||||
|
||||
|
||||
@@ -384,55 +384,3 @@
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/flag/dynamic_mode
|
||||
|
||||
/datum/config_entry/number/economy_base_payment
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_base_pay_ratio
|
||||
config_entry_value = 6
|
||||
min_val = 1
|
||||
|
||||
/datum/config_entry/number/economy_price_multiplier
|
||||
config_entry_value = 1
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_price_low
|
||||
config_entry_value = 8
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_price_default
|
||||
config_entry_value = 15
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_price_high
|
||||
config_entry_value = 30
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_price_erotic
|
||||
config_entry_value = 25
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_price_expensive
|
||||
config_entry_value = 60
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_price_expensive_af
|
||||
config_entry_value = 90
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/number/economy_job_rate_default
|
||||
config_entry_value = 1.2
|
||||
min_val = 0
|
||||
|
||||
/datum/config_entry/keyed_list/economy_job_rate
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
lowercase = FALSE
|
||||
splitter = ","
|
||||
|
||||
/datum/config_entry/keyed_list/economy_job_rate_area
|
||||
key_mode = KEY_MODE_TEXT
|
||||
value_mode = VALUE_MODE_NUM
|
||||
lowercase = FALSE
|
||||
splitter = ","
|
||||
|
||||
@@ -14,16 +14,9 @@ SUBSYSTEM_DEF(job)
|
||||
|
||||
var/overflow_role = "Assistant"
|
||||
|
||||
var/static/list/economy_multipliers_by_job
|
||||
var/static/list/economy_multipliers_by_type
|
||||
|
||||
|
||||
/datum/controller/subsystem/job/Initialize(timeofday)
|
||||
SSmapping.HACK_LoadMapConfig()
|
||||
if(!economy_multipliers_by_job)
|
||||
economy_multipliers_by_job = CONFIG_GET(keyed_list/economy_job_rate)
|
||||
if(!economy_multipliers_by_type)
|
||||
economy_multipliers_by_type = CONFIG_GET(keyed_list/economy_job_rate_area)
|
||||
if(!occupations.len)
|
||||
SetupOccupations()
|
||||
if(CONFIG_GET(flag/load_jobs_from_txt))
|
||||
@@ -338,7 +331,7 @@ SUBSYSTEM_DEF(job)
|
||||
|
||||
if((job.title in GLOB.silly_positions) && (player.client.prefs.sillyroles == FALSE))
|
||||
JobDebug("DO is not whitelisted, Player: [player], Job:[job.title]")
|
||||
continue
|
||||
continue
|
||||
|
||||
if(!job.player_old_enough(player.client))
|
||||
JobDebug("DO player not old enough, Player: [player], Job:[job.title]")
|
||||
@@ -477,13 +470,13 @@ SUBSYSTEM_DEF(job)
|
||||
|
||||
job.after_spawn(H, M, joined_late)
|
||||
|
||||
//Account ID. ID is handled by outfit initialization
|
||||
//Account ID. ID is handled by human initialization
|
||||
if(ishuman(H))
|
||||
var/mob/living/carbon/human/wageslave = H
|
||||
if(wageslave.wear_id)
|
||||
var/obj/item/card/id/id_card = wageslave.wear_id
|
||||
to_chat(M, "<b><span class='big'>Your account ID is [id_card.registered_account.account_id]</span></b>")
|
||||
to_chat(M, "<b><span class='notice'>You do not have a pin, can set your pin at an ATM.</b>")
|
||||
to_chat(M, "<b><span class='big'>Your account ID is [wageslave.account_id]</span></b>")
|
||||
to_chat(M, "<b><span class='notice'>You do not have a pin, can set your pin at an ATM.</b>")
|
||||
if(H.mind)
|
||||
H.mind.memory += "Your account ID is [wageslave.account_id].<BR>"
|
||||
|
||||
return H
|
||||
|
||||
|
||||
@@ -254,7 +254,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
|
||||
else if(mode == 4)
|
||||
dat += {"<a href='?src=[REF(src)];choice=return'>Return</a>
|
||||
<table><tr><td style='width:25%'><b>Bank Accounts</b></td><td style='width:25%'></td></tr>"}
|
||||
for(var/datum/bank_account/account as anything in SSeconomy.bank_accounts)
|
||||
for(var/datum/bank_account/account in SSeconomy.bank_accounts)
|
||||
dat += {"<td>[account.account_holder] - [account.account_id]"}
|
||||
dat += "<a href='?src=[REF(src)];choice=bankassign;assign_bank=[REF(account)]'>Assign to ID</a></td>"
|
||||
dat += "</td><tr>"
|
||||
|
||||
@@ -118,9 +118,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
|
||||
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
|
||||
|
||||
//Hyper Economy
|
||||
var/economy_type = 0
|
||||
var/economy_price_mul = 1
|
||||
//Hyper economy
|
||||
var/price = 0
|
||||
|
||||
//Hyper, for clothes that reveal your behind! butt stuff, you know how it is.
|
||||
var/do_not_cover_butt = FALSE
|
||||
|
||||
@@ -171,10 +171,10 @@
|
||||
var/registered_name = null // The name registered_name on the card
|
||||
var/assignment = null
|
||||
var/access_txt // mapping aid
|
||||
var/datum/bank_account/registered_account
|
||||
var/uses_overlays = TRUE
|
||||
var/uses_assignment = TRUE
|
||||
var/icon/cached_flat_icon
|
||||
var/datum/bank_account/registered_account
|
||||
|
||||
/obj/item/card/id/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -200,9 +200,6 @@
|
||||
if(mining_points)
|
||||
. += "There's [mining_points] mining equipment redemption point\s loaded onto this card."
|
||||
|
||||
/obj/item/card/id/proc/create_bank_account(owner, job_assignment)
|
||||
registered_account = new/datum/bank_account(owner, job_assignment, src)
|
||||
|
||||
/obj/item/card/id/GetAccess()
|
||||
return access
|
||||
|
||||
@@ -646,7 +643,7 @@
|
||||
icon_state = "retrosci"
|
||||
uses_overlays = FALSE
|
||||
uses_assignment = FALSE
|
||||
|
||||
|
||||
/obj/item/card/id/away/snowdin/med
|
||||
name = "Arctic Station Doctor's ID card"
|
||||
desc = "A faded Arctic Station ID card. You can make out the rank \"Doctor\"."
|
||||
|
||||
@@ -510,7 +510,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
resistance_flags = FIRE_PROOF
|
||||
price = 1
|
||||
light_color = LIGHT_COLOR_FIRE
|
||||
|
||||
var/lit = 0
|
||||
var/fancy = TRUE
|
||||
var/overlay_state
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
throw_range = 7
|
||||
throw_speed = 3
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
var/mob/living/carbon/subject = null
|
||||
var/closed = FALSE
|
||||
price = 10
|
||||
|
||||
|
||||
//Hypnotize someone
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/item/stack/spacecash/proc/update_desc()
|
||||
var/total_worth = amount*value
|
||||
desc = "An outdated form of currency, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
|
||||
desc = "A outdated form of currency, It's worth [total_worth] credit[( total_worth > 1 ) ? "s" : ""]"
|
||||
|
||||
|
||||
/obj/item/stack/spacecash/merge(obj/item/stack/S)
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
desc = "Holds a variety of gear for \"alternative\" peacekeeping."
|
||||
icon_state = "slutbelt"
|
||||
item_state = "slut"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
price = 5
|
||||
|
||||
obj/item/storage/belt/slut/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -418,8 +418,7 @@
|
||||
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
|
||||
icon_state = "donkpocketbox"
|
||||
illustration=null
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE_AF
|
||||
economy_price_mul = 0.85
|
||||
price = 10
|
||||
var/donktype = /obj/item/reagent_containers/food/snacks/donkpocket
|
||||
var/warmtype = /obj/item/reagent_containers/food/snacks/donkpocket/warm
|
||||
|
||||
@@ -676,10 +675,9 @@
|
||||
item_state = "zippo"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
price = 2
|
||||
drop_sound = 'sound/items/handling/matchbox_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/matchbox_pickup.ogg'
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 0.5
|
||||
|
||||
/obj/item/storage/box/matches/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
icon_type = "cigarette"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 5
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -231,7 +231,7 @@
|
||||
desc = "Smoked by the truly robust."
|
||||
icon_state = "robustg"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/robustgold
|
||||
economy_price_mul = 1.5
|
||||
price = 6
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_carp
|
||||
name = "\improper Carp Classic packet"
|
||||
@@ -283,7 +283,7 @@
|
||||
icon_state = "cig_paper_pack"
|
||||
icon_type = "rolling paper"
|
||||
spawn_type = /obj/item/rollingpaper
|
||||
economy_price_mul = 0.25
|
||||
price = 2
|
||||
|
||||
/obj/item/storage/fancy/rollingpapers/ComponentInitialize()
|
||||
. = ..()
|
||||
@@ -308,8 +308,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
icon_type = "premium cigar"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/cigar
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 0.75
|
||||
price = 8
|
||||
|
||||
/obj/item/storage/fancy/cigarettes/cigars/ComponentInitialize()
|
||||
. = ..()
|
||||
|
||||
@@ -343,8 +343,7 @@
|
||||
item_state = "upindwelder"
|
||||
max_fuel = 80
|
||||
materials = list(MAT_METAL=70, MAT_GLASS=120)
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE_AF
|
||||
economy_price_mul = 1.5
|
||||
price = 10
|
||||
|
||||
/obj/item/weldingtool/experimental
|
||||
name = "experimental welding tool"
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
dat += "</table>"
|
||||
dat += "</div>"
|
||||
if(onstation && C && C.registered_account)
|
||||
dat += "<b>Balance: $[account.balance]</b>"
|
||||
dat += "<b>Balance: $[account.account_balance]</b>"
|
||||
if(istype(src, /obj/machinery/vending/snack))
|
||||
dat += "<h3>Chef's Food Selection</h3>"
|
||||
dat += "<div class='statusDisplay'>"
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE_AF
|
||||
economy_price_mul = 0.85
|
||||
price = 10
|
||||
|
||||
/obj/item/clothing/gloves/color/yellow/ce //funky looking, basically combat gloves
|
||||
desc = "Special Insulated gloves with pricy thermal shielding normally only found in combat gloves."
|
||||
@@ -35,8 +34,7 @@
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.2
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow/New()
|
||||
..()
|
||||
@@ -131,8 +129,7 @@
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
resistance_flags = NONE
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE_AF
|
||||
economy_price_mul = 0.85
|
||||
price = 12
|
||||
|
||||
/obj/item/clothing/gloves/color/rainbow
|
||||
name = "rainbow gloves"
|
||||
|
||||
@@ -260,8 +260,7 @@
|
||||
name = "security's bitch beret"
|
||||
desc = "A softer beret with the word 'BITCH' embroidered on it in pink thread."
|
||||
icon_state = "bitchberet"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.85
|
||||
price = 5
|
||||
|
||||
//Curator
|
||||
/obj/item/clothing/head/fedora/curator
|
||||
|
||||
@@ -45,8 +45,7 @@
|
||||
item_state = "sluthailer"
|
||||
aggressiveness = 0 //can't have your pets being mean!
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 0.85
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/slut/attack_hand(mob/user)
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -302,5 +302,4 @@
|
||||
icon = 'icons/obj/clothing/neck.dmi'
|
||||
icon_state = "bling"
|
||||
item_color = "bling"
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 1.25
|
||||
price = 30
|
||||
@@ -137,8 +137,7 @@
|
||||
desc = "A pair of knee-high jackboots, complete with heels. All style, all the time."
|
||||
icon_state = "jackboots-tall"
|
||||
item_state = "jackboots-tall"
|
||||
economy_type = ECONOMY_PRICE_DEFAULT
|
||||
economy_price_mul = 0.75
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/fast
|
||||
slowdown = -1
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
cold_protection = CHEST|LEGS|ARMS
|
||||
heat_protection = CHEST|LEGS|ARMS
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //you don't need it
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
price = 5
|
||||
|
||||
//Surgeon
|
||||
/obj/item/clothing/suit/apron/surgical
|
||||
|
||||
@@ -670,8 +670,7 @@
|
||||
icon_state = "coatsecuritypink"
|
||||
item_state = "coatsecuritypink"
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/security/pink
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 0.85
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/security/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -381,7 +381,7 @@
|
||||
item_state = "b_suit"
|
||||
item_color = "galaxy_blue"
|
||||
can_adjust = FALSE
|
||||
economy_type = ECONOMY_PRICE_DEFAULT
|
||||
price = 10
|
||||
|
||||
/obj/item/clothing/under/lawyer/galaxy_red
|
||||
name = "\improper Pulsar Gonne"
|
||||
|
||||
@@ -30,8 +30,7 @@
|
||||
icon_state = "rsecuritypink"
|
||||
item_state = "r_suit"
|
||||
item_color = "rsecuritypink"
|
||||
economy_type = ECONOMY_PRICE_DEFAULT
|
||||
economy_price_mul = 1.35
|
||||
price = 3
|
||||
/obj/item/clothing/under/rank/security/skirt
|
||||
name = "security jumpskirt"
|
||||
desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt."
|
||||
@@ -48,8 +47,7 @@
|
||||
item_state = "secslutskirt"
|
||||
item_color = null //i dont understand what item_color even is, apparently setting it to null means it won't change color in a washing machine?
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //look at the first two comments in vg_under.dm
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.75
|
||||
price = 3
|
||||
/obj/item/clothing/under/rank/security/skirt/slut/pink
|
||||
desc = "A \"\"\"tactical\"\"\" security jumpsuit with the legs replaced by a skirt. No matter how you adjust it, it always feels a little too small. This one seems to have an experimental color scheme."
|
||||
icon_state = "secslutskirtpink"
|
||||
@@ -63,7 +61,7 @@
|
||||
can_adjust = FALSE
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
price = 5
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/warden
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
resistance_flags = FREEZE_PROOF
|
||||
isGlass = FALSE
|
||||
foodtype = BREAKFAST
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 2
|
||||
|
||||
//Used by MREs
|
||||
/obj/item/reagent_containers/food/drinks/coffee/type2
|
||||
@@ -241,7 +241,7 @@
|
||||
icon_state = "tea"
|
||||
item_state = "coffee"
|
||||
spillable = TRUE
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 2
|
||||
|
||||
/* Doesn't exist lol
|
||||
/datum/chemical_reaction/catnip_tea
|
||||
@@ -252,7 +252,7 @@
|
||||
*/
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/on_reagent_change(changetype)
|
||||
cut_overlays()
|
||||
cut_overlays()
|
||||
if(reagents.total_volume)
|
||||
var/mutable_appearance/MA = mutable_appearance(icon,"mugoverlay")
|
||||
MA.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
@@ -265,7 +265,7 @@
|
||||
icon_state = "tea"
|
||||
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
|
||||
list_reagents = list(/datum/reagent/consumable/tea = 30)
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco
|
||||
name = "Dutch hot coco"
|
||||
@@ -284,8 +284,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/dry_ramen = 30)
|
||||
foodtype = GRAIN
|
||||
isGlass = FALSE
|
||||
economy_type = ECONOMY_PRICE_DEFAULT
|
||||
economy_price_mul = 1.5
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/beer
|
||||
name = "space beer"
|
||||
@@ -424,8 +423,7 @@
|
||||
reagent_flags = NONE
|
||||
spillable = FALSE
|
||||
isGlass = FALSE
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 0.8
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is trying to eat \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
@@ -550,5 +548,4 @@
|
||||
icon_state = "menergy"
|
||||
list_reagents = list(/datum/reagent/consumable/monkey_energy = 50)
|
||||
foodtype = SUGAR
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE //same as insulated gloves but slightly cheaper given the nature of these
|
||||
economy_price_mul = 0.75
|
||||
price = 3
|
||||
|
||||
@@ -416,8 +416,7 @@
|
||||
isGlass = FALSE
|
||||
list_reagents = list(/datum/reagent/consumable/cream = 100)
|
||||
foodtype = DAIRY
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.5
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice
|
||||
name = "tomato juice"
|
||||
|
||||
@@ -93,11 +93,10 @@
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola
|
||||
name = "Nuka Cola"
|
||||
list_reagents = list(/datum/reagent/consumable/nuka_cola = 50)
|
||||
economy_type = ECONOMY_PRICE_DEFAULT
|
||||
economy_price_mul = 1.5
|
||||
price = 7
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
name = "Syndicat Bomb"
|
||||
list_reagents = list(/datum/reagent/consumable/ethanol/syndicatebomb = 50)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -186,8 +186,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
|
||||
list_reagents = list(/datum/reagent/consumable/milk = 50)
|
||||
possible_states = list()
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.5
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/flour
|
||||
name = "flour sack"
|
||||
|
||||
@@ -35,8 +35,6 @@ All foods are distributed among various categories. Use common sense.
|
||||
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
|
||||
obj_flags = UNIQUE_RENAME
|
||||
grind_results = list() //To let them be ground up to transfer their reagents
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.5
|
||||
var/bitesize = 2
|
||||
var/bitecount = 0
|
||||
var/trash = null
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
dunkable = TRUE
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.5
|
||||
price = 2
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/hugemushroomslice
|
||||
@@ -664,4 +663,4 @@
|
||||
else if (icon_state != "marshmallowrburned")
|
||||
icon_state = "marshmallowburned"
|
||||
desc = "[initial(desc)] It looks just right for eating!"
|
||||
tastes = list("marshmallow" = 1, "cream" = 1)
|
||||
tastes = list("marshmallow" = 1, "cream" = 1)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
filling_color = "#D2691E"
|
||||
tastes = list("candy" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky
|
||||
name = "\improper Scaredy's Private Reserve Beef Jerky"
|
||||
@@ -23,6 +24,7 @@
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("dried meat" = 1)
|
||||
foodtype = JUNKFOOD | MEAT | SUGAR
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sosjerky/healthy
|
||||
name = "homemade beef jerky"
|
||||
@@ -41,6 +43,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("salt" = 1, "crisps" = 1)
|
||||
foodtype = JUNKFOOD | FRIED
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin
|
||||
name = "4no raisins"
|
||||
@@ -52,6 +55,7 @@
|
||||
filling_color = "#8B0000"
|
||||
tastes = list("dried raisins" = 1)
|
||||
foodtype = JUNKFOOD | FRUIT | SUGAR
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/no_raisin/healthy
|
||||
name = "homemade raisins"
|
||||
@@ -68,6 +72,7 @@
|
||||
junkiness = 25
|
||||
filling_color = "#FFD700"
|
||||
foodtype = JUNKFOOD | GRAIN | SUGAR
|
||||
price = 4
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers
|
||||
name = "cheesie honkers"
|
||||
@@ -79,6 +84,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("cheese" = 5, "crisps" = 2)
|
||||
foodtype = JUNKFOOD | DAIRY | SUGAR
|
||||
price = 4
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soyfood
|
||||
name = "Soyfood"
|
||||
@@ -90,7 +96,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("nanomachines" = 2, "soybeans" = 5)
|
||||
foodtype = JUNKFOOD | DAIRY | GRAIN
|
||||
economy_price_mul = 2
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/syndicake
|
||||
name = "syndi-cakes"
|
||||
@@ -101,7 +107,7 @@
|
||||
filling_color = "#F5F5DC"
|
||||
tastes = list("sweetness" = 3, "cake" = 1)
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC
|
||||
economy_price_mul = 2.5
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/carbonnanotube_noodles
|
||||
name = "carbon nanotube noodles"
|
||||
@@ -113,7 +119,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("charcoal" = 1, "spiciness" = 3, "soysauce" = 3)
|
||||
foodtype = GRAIN | VEGETABLES
|
||||
economy_price_mul = 2.5
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/bird_seed
|
||||
name = "Sunflower Seeds"
|
||||
@@ -124,4 +130,4 @@
|
||||
filling_color = "#b497162f"
|
||||
tastes = list("olives" = 1, "Nuts" = 3, "spice" = 2)
|
||||
foodtype = GRAIN | VEGETABLES
|
||||
economy_price_mul = 2.5
|
||||
price = 3
|
||||
@@ -15,6 +15,7 @@ Assistant
|
||||
outfit = /datum/outfit/job/assistant
|
||||
antag_rep = 7
|
||||
|
||||
|
||||
/datum/job/assistant/get_access()
|
||||
if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set
|
||||
. = ..()
|
||||
|
||||
@@ -16,7 +16,6 @@ Captain
|
||||
exp_requirements = 3000
|
||||
exp_type = EXP_TYPE_COMMAND
|
||||
exp_type_department = EXP_TYPE_COMMAND
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/captain
|
||||
|
||||
@@ -97,7 +96,6 @@ Head of Personnel
|
||||
exp_requirements = 1500
|
||||
exp_type = EXP_TYPE_SERVICE
|
||||
exp_type_department = EXP_TYPE_SERVICE
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/hop
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ Quartermaster is a real head fuck you
|
||||
minimal_player_age = 7
|
||||
exp_type = EXP_TYPE_SUPPLY
|
||||
exp_type_department = EXP_TYPE_SUPPLY
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
exp_requirements = 1200
|
||||
|
||||
outfit = /datum/outfit/job/quartermaster
|
||||
@@ -89,7 +88,6 @@ Shaft Miner
|
||||
exp_requirements = 600
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type_department = EXP_TYPE_SUPPLY
|
||||
economy_type = ECONOMY_TYPE_DANGEROUS
|
||||
|
||||
|
||||
outfit = /datum/outfit/job/miner
|
||||
@@ -169,7 +167,6 @@ Bartender
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/bartender
|
||||
|
||||
@@ -202,15 +199,13 @@ Cook
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
var/cooks = 0 //Counts cooks amount
|
||||
|
||||
outfit = /datum/outfit/job/cook
|
||||
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
var/cooks = 0 //Counts cooks amount
|
||||
|
||||
/datum/outfit/job/cook
|
||||
name = "Cook"
|
||||
jobtype = /datum/job/cook
|
||||
@@ -257,7 +252,6 @@ Botanist
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/botanist
|
||||
|
||||
@@ -296,15 +290,13 @@ Janitor
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#bbe291"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
var/global/janitors = 0
|
||||
|
||||
outfit = /datum/outfit/job/janitor
|
||||
|
||||
access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
var/global/janitors = 0
|
||||
|
||||
/datum/outfit/job/janitor
|
||||
name = "Janitor"
|
||||
jobtype = /datum/job/janitor
|
||||
|
||||
@@ -11,7 +11,6 @@ Clown
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/clown
|
||||
|
||||
@@ -79,7 +78,6 @@ Mime
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/mime
|
||||
|
||||
@@ -132,7 +130,6 @@ Curator
|
||||
spawn_positions = 1
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/curator
|
||||
|
||||
@@ -176,7 +173,6 @@ Lawyer
|
||||
spawn_positions = 2
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
var/lawyers = 0 //Counts lawyer amount
|
||||
|
||||
outfit = /datum/outfit/job/lawyer
|
||||
|
||||
@@ -13,7 +13,6 @@ Chaplain
|
||||
supervisors = "the head of personnel"
|
||||
selection_color = "#dddddd"
|
||||
custom_spawn_text = "You're playing a job that is essential for when the station deals with paranormal threats. While you have access to weapons, armor and tools such as your nullrod and bible, this does not mean you should hunt those threats unless warranted. If you have any questions, don't hesitate to ask mentors."
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/chaplain
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ Chief Engineer
|
||||
exp_requirements = 1500
|
||||
exp_type = EXP_TYPE_ENGINEERING
|
||||
exp_type_department = EXP_TYPE_ENGINEERING
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/ce
|
||||
|
||||
@@ -190,7 +189,6 @@ Junior Engineer
|
||||
selection_color = "#fff5cc"
|
||||
exp_requirements = 120
|
||||
exp_type = EXP_TYPE_CREW
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/engineer/junior
|
||||
|
||||
|
||||
@@ -61,23 +61,11 @@
|
||||
|
||||
var/list/alt_titles = list()
|
||||
|
||||
/// A multiplier for how much a person gets each paycheck
|
||||
var/base_paycheck_multiplier = 1.2
|
||||
/// The "type" of economy this job falls under
|
||||
var/economy_type
|
||||
|
||||
var/override_roundstart_spawn = null //Where the player spawns at roundstart if defined
|
||||
|
||||
//whitelisting
|
||||
var/whitelist_type = ""
|
||||
|
||||
/datum/job/New()
|
||||
base_paycheck_multiplier = CONFIG_GET(number/economy_job_rate_default)
|
||||
if(SSjob.economy_multipliers_by_job[title])
|
||||
base_paycheck_multiplier *= SSjob.economy_multipliers_by_job[title]
|
||||
if(SSjob.economy_multipliers_by_type[economy_type])
|
||||
base_paycheck_multiplier *= SSjob.economy_multipliers_by_type[economy_type]
|
||||
|
||||
//Only override this proc
|
||||
//H is usually a human unless an /equip override transformed it
|
||||
/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE)
|
||||
@@ -107,6 +95,15 @@
|
||||
if(!H)
|
||||
return FALSE
|
||||
|
||||
if(!visualsOnly)
|
||||
var/datum/bank_account/bank_account = new(H.real_name, src)
|
||||
bank_account.account_holder = H.real_name
|
||||
bank_account.account_job = src
|
||||
bank_account.account_id = rand(111111,999999) //give account ID!
|
||||
//bank_account.account_pin = rand(1000,9999) //give random pin!
|
||||
bank_account.account_balance = 80
|
||||
H.account_id = bank_account.account_id
|
||||
|
||||
if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions))
|
||||
if(H.dna.species.id != "human")
|
||||
H.set_species(/datum/species/human)
|
||||
@@ -125,14 +122,14 @@
|
||||
|
||||
/datum/job/proc/get_access()
|
||||
if(!config) //Needed for robots.
|
||||
return minimal_access.Copy()
|
||||
return src.minimal_access.Copy()
|
||||
|
||||
. = list()
|
||||
|
||||
if(CONFIG_GET(flag/jobs_have_minimal_access))
|
||||
. = minimal_access.Copy()
|
||||
. = src.minimal_access.Copy()
|
||||
else
|
||||
. = access.Copy()
|
||||
. = src.access.Copy()
|
||||
|
||||
if(CONFIG_GET(flag/everyone_has_maint_access)) //Config has global maint access set
|
||||
. |= list(ACCESS_MAINT_TUNNELS)
|
||||
@@ -236,8 +233,8 @@
|
||||
else
|
||||
H.real_name = "[J.title] #[rand(10000, 99999)]"
|
||||
|
||||
var/client/preference_source = H.client
|
||||
var/obj/item/card/id/C = H.wear_id
|
||||
var/client/preference_source = H.client
|
||||
if(istype(C))
|
||||
C.access = J.get_access()
|
||||
shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable
|
||||
@@ -248,8 +245,12 @@
|
||||
else
|
||||
C.update_label()
|
||||
|
||||
C.create_bank_account(H, J)
|
||||
|
||||
for(var/A in SSeconomy.bank_accounts)
|
||||
var/datum/bank_account/B = A
|
||||
if(B.account_id == H.account_id)
|
||||
C.registered_account = B
|
||||
B.bank_cards += C
|
||||
break
|
||||
H.sec_hud_set_ID()
|
||||
|
||||
var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot)
|
||||
|
||||
@@ -17,7 +17,6 @@ Chief Medical Officer
|
||||
exp_requirements = 1500
|
||||
exp_type = EXP_TYPE_MEDICAL
|
||||
exp_type_department = EXP_TYPE_MEDICAL
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/cmo
|
||||
|
||||
@@ -238,7 +237,6 @@ Junior Doctor
|
||||
selection_color = "#ffeef0"
|
||||
exp_requirements = 120
|
||||
exp_type = EXP_TYPE_CREW
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/doctor/junior
|
||||
|
||||
@@ -280,7 +278,6 @@ Psychologist
|
||||
selection_color = "#ffeef0"
|
||||
exp_requirements = 240
|
||||
exp_type = EXP_TYPE_CREW
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/doctor/psychologist
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ Research Director
|
||||
exp_requirements = 1500
|
||||
exp_type = EXP_TYPE_SCIENCE
|
||||
exp_type_department = EXP_TYPE_SCIENCE
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/rd
|
||||
|
||||
@@ -155,7 +154,6 @@ Junior Scientist
|
||||
selection_color = "#ffeeff"
|
||||
exp_requirements = 120
|
||||
exp_type = EXP_TYPE_CREW
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
|
||||
outfit = /datum/outfit/job/scientist/junior
|
||||
|
||||
@@ -23,7 +23,6 @@ Head of Security
|
||||
exp_requirements = 2000
|
||||
exp_type = EXP_TYPE_SECURITY
|
||||
exp_type_department = EXP_TYPE_SECURITY
|
||||
economy_type = ECONOMY_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/hos
|
||||
|
||||
@@ -92,7 +91,6 @@ Warden
|
||||
exp_requirements = 720
|
||||
exp_type = EXP_TYPE_SECURITY
|
||||
exp_type_department = EXP_TYPE_SECURITY
|
||||
economy_type = ECONOMY_TYPE_DANGEROUS
|
||||
|
||||
outfit = /datum/outfit/job/warden
|
||||
|
||||
@@ -152,7 +150,6 @@ Detective
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_SECURITY
|
||||
exp_type_department = EXP_TYPE_SECURITY
|
||||
economy_type = ECONOMY_TYPE_DANGEROUS
|
||||
|
||||
outfit = /datum/outfit/job/detective
|
||||
|
||||
@@ -210,7 +207,6 @@ Security Officer
|
||||
exp_requirements = 420
|
||||
exp_type = EXP_TYPE_SECURITY
|
||||
exp_type_department = EXP_TYPE_SECURITY
|
||||
economy_type = ECONOMY_TYPE_DANGEROUS
|
||||
|
||||
outfit = /datum/outfit/job/security
|
||||
|
||||
@@ -371,7 +367,6 @@ Junior Security Officer
|
||||
minimal_player_age = 3
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
economy_type = ECONOMY_TYPE_ROOKIE
|
||||
|
||||
outfit = /datum/outfit/job/security/junior
|
||||
|
||||
|
||||
@@ -79,5 +79,6 @@
|
||||
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot))
|
||||
var/lastpuke = 0
|
||||
var/last_fire_update
|
||||
var/account_id
|
||||
can_be_held = "micro"
|
||||
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
|
||||
@@ -336,7 +336,7 @@
|
||||
volume = 50
|
||||
amount_per_transfer_from_this = 10
|
||||
container_HP = 1
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 1
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle/Initialize()
|
||||
beaker_weakness_bitflag |= TEMP_WEAK
|
||||
|
||||
@@ -269,20 +269,17 @@
|
||||
/obj/item/reagent_containers/pill/penis_enlargement
|
||||
name = "penis enlargement pill"
|
||||
list_reagents = list(/datum/reagent/fermi/penis_enlarger = 10)
|
||||
price = 4
|
||||
icon_state = "pill_lewd"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.25
|
||||
|
||||
/obj/item/reagent_containers/pill/breast_enlargement
|
||||
name = "breast enlargement pill"
|
||||
list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10)
|
||||
price = 4
|
||||
icon_state = "pill_lewd"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.25
|
||||
|
||||
/obj/item/reagent_containers/pill/butt_enlargement
|
||||
name = "butt enlargement pill"
|
||||
list_reagents = list(/datum/reagent/fermi/butt_enlarger = 10)
|
||||
icon_state = "pill_lewd"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.25
|
||||
price = 4
|
||||
icon_state = "pill_lewd"
|
||||
@@ -167,12 +167,14 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
var/datum/data/vending_product/R = new /datum/data/vending_product()
|
||||
R.name = initial(temp.name)
|
||||
R.product_path = typepath
|
||||
if(!free)
|
||||
R.price = FLOOR(baseprice * CONFIG_GET(number/economy_price_multiplier), 1)
|
||||
if(product) //its a item!
|
||||
var/product_price = SSeconomy.GetPrice(product)
|
||||
if(!isnull(product_price))
|
||||
R.price = product_price
|
||||
R.price = baseprice
|
||||
if(product) //its a item!
|
||||
if((initial(product.price)))
|
||||
R.price = initial(product.price)
|
||||
else
|
||||
R.price = baseprice
|
||||
if(free)
|
||||
R.price = 0
|
||||
if(!start_empty)
|
||||
R.amount = amount
|
||||
R.max_amount = amount
|
||||
@@ -495,8 +497,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
updateUsrDialog()
|
||||
vend_ready = 1
|
||||
if(bankid && R == buying) //if we have a bank id, and we are trying to buy the same thing!
|
||||
if(bankid.balance >= R.price)
|
||||
bankid.balance -= R.price //take the money from the account.
|
||||
if(bankid.account_balance >= R.price)
|
||||
bankid.account_balance -= R.price //take the money from the account.
|
||||
menu = 1
|
||||
to_chat(usr, "<span class='notice'>You [R.name] via the provided bank account!</span>")
|
||||
bankid = null //so noone can buy from your account after youve purchased stuff
|
||||
|
||||
@@ -583,48 +583,3 @@ BOX_RANDOM_ENGINE Box TEG,2
|
||||
BOX_RANDOM_ENGINE Box Empty,0
|
||||
BOX_RANDOM_ENGINE Box Antimatter,0
|
||||
BOX_RANDOM_ENGINE Box P.A.C.M.A.N,0
|
||||
|
||||
#
|
||||
## HYPERSTATION
|
||||
#
|
||||
|
||||
## ECONOMY
|
||||
# Paychecks get sent to each bank account, which is only initialized if the account holder spawned on the station.
|
||||
# Bank Accounts are tied to the ID cards that players spawn with. If you have an unset pin, then that means anyone that gets the ID card has access to your money
|
||||
|
||||
# The base amount of credits, before any math whatsoever gets involved, that paychecks give
|
||||
ECONOMY_BASE_PAYMENT 60
|
||||
|
||||
# How many paychecks the crew gets when first joining the station. Adds 1 if this is the start of the round, because of how subsystems work
|
||||
ECONOMY_BASE_PAY_RATIO 6
|
||||
|
||||
# The default multiplier for a paycheck if nothing is assigned to a specific job.
|
||||
# You're allowed to set specific jobs a specific type of pay multiplier with ECONOMY_JOB_RATE
|
||||
ECONOMY_JOB_RATE_DEFAULT 1.2
|
||||
# The multiplier that Rookies get. This should be slightly more than assistant but less than default.
|
||||
ECONOMY_JOB_RATE_AREA Rookie, 1.1
|
||||
# The multiplier that Dangerous jobs get, such as Shaft Miner and Security. Should be somewhere between default and command pay rate
|
||||
ECONOMY_JOB_RATE_AREA Dangerous, 1.3
|
||||
# The multiplier that Command roles get, including QM because they're a head :)
|
||||
ECONOMY_JOB_RATE_AREA Command, 1.4
|
||||
# The multiplier for payment that the Captain gets. He controls the station, logically it's harder to do than all of the other jobs.
|
||||
ECONOMY_JOB_RATE Captain, 1.5
|
||||
|
||||
# Examples for adding a single job datum. The value will be included if it falls in a category from ECONOMY_JOB_RATE
|
||||
# This is a multiplier that Assistants get for their paycheck. This is less than 1 because assistants get the default multiplier added to them
|
||||
ECONOMY_JOB_RATE Assistant, 0.83
|
||||
# This is a multiplier that Shaft Miners get for their paycheck. They count as a dangerous job, but they shouldn't get the same as security
|
||||
ECONOMY_JOB_RATE Shaft Miner, 0.9
|
||||
|
||||
|
||||
# Default price for items that use these values
|
||||
ECONOMY_PRICE_LOW 8
|
||||
ECONOMY_PRICE_DEFAULT 15
|
||||
ECONOMY_PRICE_HIGH 30
|
||||
ECONOMY_PRICE_EROTIC 25
|
||||
ECONOMY_PRICE_EXPENSIVE 60
|
||||
ECONOMY_PRICE_EXPENSIVE_AF 90
|
||||
|
||||
# A multiplier to the prices of items inside vendors. Avoid setting this higher than the Assistant's paycheck multiplier if possible
|
||||
# This scales every item found in vendors. If you want to change an individual item, you have to change it through code
|
||||
ECONOMY_PRICE_MULTIPLIER 1.35
|
||||
|
||||
@@ -1,62 +1,10 @@
|
||||
SUBSYSTEM_DEF(economy)
|
||||
name = "Economy"
|
||||
wait = 5 MINUTES
|
||||
priority = FIRE_PRIORITY_ECONOMY
|
||||
init_order = INIT_ORDER_ECONOMY
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
/// How many "paychecks" someone gets at the creation of the bank account
|
||||
runlevels = RUNLEVEL_GAME
|
||||
flags = SS_NO_FIRE //Let's not forget this. This subsystem does not use fire and was needlessly using CPU.
|
||||
var/roundstart_paychecks = 5
|
||||
var/budget_pool = 35000
|
||||
var/list/generated_accounts = list()
|
||||
var/list/bank_accounts = list() //List of normal accounts (not department accounts)
|
||||
var/static/list/prices_by_type
|
||||
|
||||
/// Updates the prices from the config. Assorted into this individual proc instead of Initialize() so testers can change the config mid-round
|
||||
/// without having to initialize the economy SS again
|
||||
/datum/controller/subsystem/economy/proc/UpdatePrices()
|
||||
roundstart_paychecks
|
||||
prices_by_type = list()
|
||||
prices_by_type += CONFIG_GET(number/economy_price_default) //ECONOMY_PRICE_DEFAULT.. 1
|
||||
prices_by_type += CONFIG_GET(number/economy_price_low) //ECONOMY_PRICE_LOW.. 2
|
||||
prices_by_type += CONFIG_GET(number/economy_price_high)
|
||||
prices_by_type += CONFIG_GET(number/economy_price_erotic)
|
||||
prices_by_type += CONFIG_GET(number/economy_price_expensive)
|
||||
prices_by_type += CONFIG_GET(number/economy_price_expensive_af)
|
||||
prices_by_type += 0 //ECONOMY_PRICE_FORCED_FREE.. 7
|
||||
|
||||
/datum/controller/subsystem/economy/Initialize()
|
||||
roundstart_paychecks = CONFIG_GET(number/economy_base_pay_ratio)
|
||||
if(!prices_by_type)
|
||||
UpdatePrices()
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/economy/fire()
|
||||
for(var/datum/bank_account/account as anything in bank_accounts)
|
||||
account.GivePaycheck(GetPaycheck(account, account.account_job))
|
||||
|
||||
/**
|
||||
* Returns a value of the amount of money a bank account would be getting. It's just some simple multiplication.
|
||||
* Both the bank account and job is allowed to be null here.
|
||||
*
|
||||
* Thanks to the ultimate nature of byond, colon accessors, :, get the default values of the bank account and
|
||||
* job datums if the respective one is null. You can pass zero arguments here and you'd get the "default" amount of a paycheck.
|
||||
*/
|
||||
/datum/controller/subsystem/economy/proc/GetPaycheck(datum/bank_account/account, datum/job/job, multiplier=1)
|
||||
return FLOOR(account:base_pay * job:base_paycheck_multiplier * multiplier, 1)
|
||||
|
||||
/**
|
||||
* Returns a price value from a subtype of an /obj/item, assuming it was compiled to use money.
|
||||
* Otherwise, returns null if it does not use economy
|
||||
*/
|
||||
/datum/controller/subsystem/economy/proc/GetPrice(obj/item/costly_item)
|
||||
var/economy_type
|
||||
var/price_multiplier
|
||||
|
||||
if(istype(costly_item))
|
||||
economy_type = costly_item.economy_type
|
||||
price_multiplier = costly_item.economy_price_mul
|
||||
else
|
||||
economy_type = initial(costly_item.economy_type)
|
||||
price_multiplier = initial(costly_item.economy_price_mul)
|
||||
|
||||
if(!economy_type)
|
||||
return
|
||||
return FLOOR(prices_by_type[economy_type] * price_multiplier, 1)
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
icon_state = "nailcap"
|
||||
item_state = "nailpolish"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.25
|
||||
var/paint = "black"
|
||||
price = 5
|
||||
var/mutable_appearance/bottle //show the colour on the bottle.
|
||||
|
||||
/obj/item/nailpolish/red
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
lover's dice: based off a really funny yakuza gif i saw on tumblr years ago
|
||||
these give suggestions for sex acts to perform. it's stupid but fun.
|
||||
|
||||
@@ -12,8 +12,7 @@ sarcoph mar 2022
|
||||
desc = "Contains all the intimate ideas you'll ever need. A game that everyone wins!"
|
||||
icon = 'hyperstation/icons/obj/toy.dmi'
|
||||
icon_state = "lovedicebag"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.5
|
||||
price = 1
|
||||
|
||||
/obj/item/storage/pill_bottle/lovedice/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -1,45 +1,29 @@
|
||||
/datum/bank_account
|
||||
/// The name of whoever owns this account
|
||||
var/account_holder = "Some pleboid"
|
||||
/// The balance, in credits!
|
||||
var/balance = 0
|
||||
/// Fluff for the ID of this card. Purely cosmetic, but unique for every account
|
||||
var/account_id = 0
|
||||
/// The pin number that the owner wanted. Not set by default, so anyone can just steal your ID if you don't remember to set it
|
||||
var/account_pin
|
||||
/// The base amount of pay you get per paycheck
|
||||
var/base_pay = 80
|
||||
/// The linked job datum for this bank account, for calculating unique base payment for each job
|
||||
var/datum/job/account_job
|
||||
/// The associated ID, for letting the card-holder know when a paycheck is processed
|
||||
var/obj/item/card/id/associated_id
|
||||
#define DUMPTIME 3000
|
||||
|
||||
/datum/bank_account/New(mob/living/carbon/human/new_holder, datum/job/job, obj/item/card/id/id_card)
|
||||
account_holder = new_holder.real_name
|
||||
/datum/bank_account
|
||||
var/account_holder = "Some pleb"
|
||||
var/account_balance = 0
|
||||
var/account_offstation_balance = 0
|
||||
var/account_pin = 0
|
||||
var/account_dna = ""
|
||||
var/datum/job/account_job
|
||||
var/list/bank_cards = list()
|
||||
var/add_to_accounts = TRUE
|
||||
var/transferable = TRUE
|
||||
var/account_id
|
||||
var/withdrawDelay = 0
|
||||
|
||||
/datum/bank_account/New(newname, job)
|
||||
if(add_to_accounts)
|
||||
if(!SSeconomy)
|
||||
log_world("Wack")
|
||||
SSeconomy.bank_accounts += src
|
||||
account_holder = newname
|
||||
account_job = job
|
||||
associated_id = id_card
|
||||
account_id = rand(111111,999999)
|
||||
|
||||
if(!SSeconomy || !SSeconomy.initialized)
|
||||
stack_trace("A new bank account was made without the economy subsystem being initialized first. If this is an issue, change the subsystem's init_order.")
|
||||
return
|
||||
|
||||
base_pay = CONFIG_GET(number/economy_base_payment)
|
||||
|
||||
SSeconomy.bank_accounts += src
|
||||
balance += SSeconomy.GetPaycheck(src, job, SSeconomy.roundstart_paychecks)
|
||||
|
||||
/// Helper for whenever a paycheck gets processed into this account from the economy SS. Simply adds an amount to the account balance and notifies the user.
|
||||
/datum/bank_account/proc/GivePaycheck(amount, silent=FALSE)
|
||||
balance += amount
|
||||
if(associated_id && !silent)
|
||||
var/local_turf = get_turf(associated_id)
|
||||
for(var/mob/M in get_hearers_in_view(1, local_turf))
|
||||
M.playsound_local(local_turf, 'sound/machines/twobeep_high.ogg', 50, vary = TRUE)
|
||||
to_chat(M, "<span class='notice'>[icon2html(associated_id, M)] Paycheck processed, your account now holds [balance] credits.</span>")
|
||||
|
||||
/datum/bank_account/Destroy()
|
||||
if(SSeconomy)
|
||||
if(add_to_accounts)
|
||||
SSeconomy.bank_accounts -= src
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
icon = 'hyperstation/icons/obj/condom.dmi'
|
||||
throwforce = 0
|
||||
icon_state = "b_condom_wrapped"
|
||||
var/unwrapped = 0
|
||||
var/unwrapped = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 1
|
||||
|
||||
obj/item/condom/Initialize()
|
||||
create_reagents(300, DRAWABLE|NO_REACT)
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
light_power = 0
|
||||
light_range = 7
|
||||
light_color = COLOR_VIVID_RED
|
||||
|
||||
var/pin = 0
|
||||
|
||||
/obj/machinery/atm/ui_interact(mob/user)
|
||||
@@ -40,7 +39,7 @@
|
||||
|
||||
if(idcard.registered_account)
|
||||
if(!idcard.registered_account.account_pin || pin == idcard.registered_account.account_pin)
|
||||
dat += "<p>Balance: <b>$[idcard.registered_account.balance]</b>"
|
||||
dat += "<p>Balance: <b>$[idcard.registered_account.account_balance]</b>"
|
||||
//dat += "<p>Offstation Balance: <b()</b>"
|
||||
dat += "<p>"
|
||||
dat += "<a href='byond://?src=[REF(src)];withdraw=1'>Withdraw</A>"
|
||||
@@ -73,15 +72,15 @@
|
||||
user = idcard.registered_name
|
||||
pin = ""
|
||||
playsound(src, 'sound/machines/button.ogg', 50, FALSE)
|
||||
ui_interact(usr)
|
||||
src.ui_interact(usr)
|
||||
|
||||
if(istype(I, /obj/item/stack/credits)) //feed money back into the machine! dont need a pin to donate stuff.
|
||||
if(held_card)
|
||||
var/obj/item/stack/credits/cred = I
|
||||
var/obj/item/card/id/idcard = held_card
|
||||
idcard.registered_account.balance = (idcard.registered_account.balance+cred.amount)
|
||||
idcard.registered_account.account_balance = (idcard.registered_account.account_balance+cred.amount)
|
||||
to_chat(usr, "<span class='notice'>You insert [cred] into the ATM.</span>")
|
||||
ui_interact(usr)
|
||||
src.ui_interact(usr)
|
||||
del(cred)
|
||||
|
||||
/obj/machinery/atm/Topic(href, href_list)
|
||||
@@ -107,29 +106,29 @@
|
||||
var/pininput = input(user, "Input pin", "Pin Number") as num|null
|
||||
if(pininput)
|
||||
if(pininput > 9999 || pininput < 1000)
|
||||
to_chat(usr, "<span class='notice'>[src] buzzes, you must input a 4 digit number between 1000 and 9999.</span>")
|
||||
to_chat(usr, "<span class='notice'>[src.name] buzzes, you must input a 4 digit number between 1000 and 9999.</span>")
|
||||
return
|
||||
pin = max(min( round(text2num(pininput)), 9999),1000) //4 numbers or less.
|
||||
var/obj/item/card/id/idcard = held_card
|
||||
if(pin == idcard.registered_account.account_pin)
|
||||
to_chat(usr, "<span class='notice'>[src] beeps, accepting the pin.</span>")
|
||||
to_chat(usr, "<span class='notice'>[src.name] beeps, accepting the pin.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>[src] buzzes, denying the pin.</span>")
|
||||
to_chat(usr, "<span class='notice'>[src.name] buzzes, denying the pin.</span>")
|
||||
|
||||
if(href_list["changepin"])
|
||||
playsound(src, get_sfx("terminal_type"), 25, 1)
|
||||
var/pinchange = input(user, "Input pin", "Pin Number") as num|null
|
||||
if(pinchange > 9999 || pinchange < 1000)
|
||||
to_chat(usr, "<span class='warning'>[src], you must have a 4 digit number for a pin and be between 1000 and 9999.</span>")
|
||||
to_chat(usr, "<span class='warning'>[src.name], you must have a 4 digit number for a pin and be between 1000 and 9999.</span>")
|
||||
return
|
||||
if(pinchange)
|
||||
var/pinchange2 = input(user, "Confirm pin", "Confirm pin") as num|null //time to confirm!
|
||||
if(pinchange == pinchange2)
|
||||
var/obj/item/card/id/idcard = held_card
|
||||
idcard.registered_account.account_pin = pinchange
|
||||
to_chat(usr, "<span class='notice'>[src] beeps, your pin has been changed to [pinchange]!.</span>")
|
||||
to_chat(usr, "<span class='notice'>[src.name] beeps, your pin has been changed to [pinchange]!.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>[src] buzzes, your pins did not match!</span>")
|
||||
to_chat(usr, "<span class='warning'>[src.name] buzzes, your pins did not match!</span>")
|
||||
pin = ""
|
||||
|
||||
if(href_list["withdraw"])
|
||||
@@ -139,9 +138,9 @@
|
||||
if(idcard.registered_account)
|
||||
var/amount = input(user, "Choose amount", "Withdraw") as num|null
|
||||
if(amount>0)
|
||||
amount = max(min( round(text2num(amount)), idcard.registered_account.balance),0) //make sure they aint taking out more then what they have
|
||||
amount = max(min( round(text2num(amount)), idcard.registered_account.account_balance),0) //make sure they aint taking out more then what they have
|
||||
to_chat(usr, "<span class='notice'>The machine prints out [amount] credits.</span>")
|
||||
idcard.registered_account.balance = (idcard.registered_account.balance-amount) //subtract the amount they took out.
|
||||
idcard.registered_account.account_balance = (idcard.registered_account.account_balance-amount) //subtract the amount they took out.
|
||||
var/obj/item/stack/credits/C = new /obj/item/stack/credits/(loc)
|
||||
C.amount = amount
|
||||
if(usr.put_in_hands(C))
|
||||
|
||||
@@ -10,11 +10,10 @@
|
||||
icon_state = "fleshlight_base"
|
||||
item_state = "fleshlight"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.95
|
||||
var/inuse = 0
|
||||
var/sleevecolor = "#ffcbd4" //pink
|
||||
price = 8
|
||||
var/mutable_appearance/sleeve
|
||||
var/inuse = 0
|
||||
|
||||
/obj/item/fleshlight/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -79,11 +78,10 @@
|
||||
icon_state = "unpaired"
|
||||
item_state = "fleshlight"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 1.2
|
||||
var/partnercolor = "#ffcbd4"
|
||||
var/partnerbase = "normal"
|
||||
var/partnerorgan = "portal_vag"
|
||||
price = 20
|
||||
var/mutable_appearance/sleeve
|
||||
var/mutable_appearance/organ
|
||||
var/inuse = 0
|
||||
@@ -98,7 +96,7 @@
|
||||
else
|
||||
. += "<span class='notice'>The device is paired, and awaiting input. </span>"
|
||||
|
||||
/obj/item/portallight/attack(mob/living/carbon/user, mob/living/holder)
|
||||
/obj/item/portallight/attack(mob/living/carbon/user, mob/living/holder)
|
||||
if(inuse) //just to stop stacking and causing people to cum instantly
|
||||
return
|
||||
if(!UpdateUsability())
|
||||
@@ -113,8 +111,8 @@
|
||||
if(option == "Fuck" && !P.is_exposed())
|
||||
to_chat(holder, "<span class='notice'>You don't see anywhere to use this on.</span>")
|
||||
return
|
||||
/*
|
||||
WARMUP START - prevents spam/instant climax
|
||||
/*
|
||||
WARMUP START - prevents spam/instant climax
|
||||
*/
|
||||
inuse = TRUE
|
||||
if(user != holder)
|
||||
@@ -124,8 +122,8 @@
|
||||
inuse = FALSE
|
||||
return
|
||||
inuse = FALSE
|
||||
/*
|
||||
WARMUP END - proceed with the action
|
||||
/*
|
||||
WARMUP END - proceed with the action
|
||||
*/
|
||||
switch(option)
|
||||
if("Fuck")
|
||||
@@ -142,7 +140,7 @@
|
||||
user.adjustArousalLoss(20)
|
||||
target.adjustArousalLoss(20)
|
||||
target.do_jitter_animation()
|
||||
if(target.can_orgasm() && prob(5))
|
||||
if(target.can_orgasm() && prob(5))
|
||||
target.mob_climax_outside(target_genital, spillage=target_genital.is_exposed())
|
||||
if(user.can_orgasm())
|
||||
var/mob/living/carbon/human/O = user
|
||||
@@ -278,8 +276,7 @@
|
||||
icon = 'hyperstation/icons/obj/fleshlight.dmi'
|
||||
desc = "A small silver box with Silver Love Co embossed."
|
||||
icon_state = "box"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 1.5
|
||||
price = 15
|
||||
|
||||
// portal fleshlight box
|
||||
/obj/item/storage/box/portallight/PopulateContents()
|
||||
|
||||
@@ -6,16 +6,14 @@
|
||||
icon = 'hyperstation/icons/obj/clothing/gloves.dmi'
|
||||
alternate_worn_icon = 'hyperstation/icons/mobs/gloves.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.75
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/gloves/latexsleeves/security
|
||||
name = "security sleeves"
|
||||
desc = "A pair of latex sleeves, with a band of red above the elbows denoting that the wearer is part of the security team."
|
||||
icon_state = "latexsec"
|
||||
item_state = "latexsec"
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
economy_price_mul = 0.75
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/head/dominatrixcap
|
||||
name = "dominatrix cap"
|
||||
@@ -47,8 +45,7 @@ obj/item/clothing/neck/stole
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
icon_state = "stole"
|
||||
item_state = "" //no inhands
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 0.75
|
||||
price = 3
|
||||
|
||||
obj/item/clothing/neck/stole/black
|
||||
name = "black boa"
|
||||
@@ -58,8 +55,7 @@ obj/item/clothing/neck/stole/black
|
||||
icon_state = "stole"
|
||||
item_state = "" //no inhands
|
||||
color = "#3d3d3d"
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 0.75
|
||||
price = 3
|
||||
|
||||
/obj/item/clothing/suit/fluffyhalfcrop
|
||||
name = "fluffy half-crop jacket"
|
||||
|
||||
@@ -10,8 +10,7 @@
|
||||
item_state = "rope" //This sprite is in restraints.dmi until I figure out how to refrence somewhere else
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
economy_price_mul = 1.25
|
||||
price = 2
|
||||
|
||||
/mob/living/proc/rope_add(source) //Check to see if the rope is on, and then add effects
|
||||
var/mob/living/carbon/M = source
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
icon = 'hyperstation/icons/obj/sounding.dmi'
|
||||
throwforce = 0
|
||||
icon_state = "sounding_wrapped"
|
||||
var/unwrapped = 0
|
||||
var/unwrapped = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
economy_type = ECONOMY_PRICE_LOW
|
||||
price = 1
|
||||
|
||||
/obj/item/sounding/attack_self(mob/user)
|
||||
if(!istype(user))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/style = "long"
|
||||
var/inside = FALSE
|
||||
var/last = 0
|
||||
economy_type = ECONOMY_PRICE_EROTIC
|
||||
price = 3
|
||||
|
||||
/obj/item/electropack/vibrator/Initialize() //give the device its own code
|
||||
. = ..()
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
strip_delay = 60
|
||||
equip_delay_other = 60
|
||||
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
|
||||
economy_type = ECONOMY_PRICE_EXPENSIVE
|
||||
economy_price_mul = 0.75
|
||||
price = 5
|
||||
var/tagname = null
|
||||
|
||||
/datum/design/electropack/shockcollar
|
||||
|
||||
Binary file not shown.
@@ -43,7 +43,6 @@
|
||||
#include "code\__DEFINES\cult.dm"
|
||||
#include "code\__DEFINES\diseases.dm"
|
||||
#include "code\__DEFINES\DNA.dm"
|
||||
#include "code\__DEFINES\economy.dm"
|
||||
#include "code\__DEFINES\events.dm"
|
||||
#include "code\__DEFINES\exports.dm"
|
||||
#include "code\__DEFINES\fantasy_affixes.dm"
|
||||
|
||||
Reference in New Issue
Block a user