mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-10 07:30:36 +01:00
Merge branch 'master' into plant-adding
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
msg = keywords_lookup(msg)
|
||||
msg = "<span class='adminsay'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> [ADMIN_FLW(mob)]: <span class='message linkify'>[msg]</span></span>"
|
||||
to_chat(GLOB.admins, msg)
|
||||
|
||||
SEND_SOUND(GLOB.admins, sound('sound/effects/asay.ogg'))
|
||||
SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/get_admin_say()
|
||||
|
||||
@@ -184,7 +184,18 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g
|
||||
name = "Miasma"
|
||||
gas_overlay = "miasma"
|
||||
moles_visible = MOLES_GAS_VISIBLE * 60
|
||||
rarity = 250
|
||||
rarity = 150
|
||||
|
||||
|
||||
/datum/gas/pheromone
|
||||
id = "pheromone"
|
||||
specific_heat = 0.00001
|
||||
fusion_power = 30
|
||||
name = "Pheromones"
|
||||
gas_overlay = "pheromone"
|
||||
moles_visible = MOLES_GAS_VISIBLE * 10
|
||||
rarity = 30
|
||||
|
||||
|
||||
/obj/effect/overlay/gas
|
||||
icon = 'icons/effects/atmospherics.dmi'
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
/datum/gas/nitrogen = new/datum/tlv(-1, -1, 1000, 1000),
|
||||
/datum/gas/carbon_dioxide = new/datum/tlv(-1, -1, 5, 10),
|
||||
/datum/gas/miasma = new/datum/tlv/(-1, -1, 2, 5),
|
||||
/datum/gas/pheromone = new/datum/tlv/(-1, -1, 2, 5),
|
||||
/datum/gas/plasma = new/datum/tlv/dangerous,
|
||||
/datum/gas/nitrous_oxide = new/datum/tlv/dangerous,
|
||||
/datum/gas/bz = new/datum/tlv/dangerous,
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
|
||||
/obj/item/paper/fluff/awaymissions/snowdin/secnotice
|
||||
name = "Security Notice"
|
||||
info = {"YOu have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked
|
||||
info = {"You have been assigned to this Arctic Post with intention of protecting Nanotrasen assets and ensuring vital information is kept secure while the stationed crew obeys protocol. The picked
|
||||
staff for this post have been pre-screened with no prior incidients on record, but incase of an issue you have been given a single holding cell and instructions to contact Central to terminate the
|
||||
offending crewmember."}
|
||||
|
||||
|
||||
@@ -215,3 +215,24 @@
|
||||
description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails."
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/melee/chainofcommand/tailwhip)
|
||||
|
||||
/datum/bounty/item/assistant/shadow_wood_chair
|
||||
name = "Shadow Wood Chairs"
|
||||
description = "Commander Mat is unhappy with his chair. He claims it hurts his back. Ship some shadow wood chairs to humor him."
|
||||
reward = 1000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/shadoww)
|
||||
|
||||
/datum/bounty/item/assistant/mushroom_chair
|
||||
name = "Mushroom Chairs"
|
||||
description = "Commander Rat is unhappy with his chair. He claims it hurts his back. Ship some mushroom chairs to humor him."
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/gmushroom)
|
||||
|
||||
/datum/bounty/item/assistant/plaswood_chair
|
||||
name = "Plaswood Chairs"
|
||||
description = "Commander Cat is unhappy with his chair. He claims it hurts his back. Ship some plaswood chairs to humor him."
|
||||
reward = 2250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/plaswood)
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
crate_name = "swat crate"
|
||||
|
||||
/datum/supply_pack/security/armory/swattasers //Lesser AEG tbh
|
||||
name = "SWAT tatical tasers Crate"
|
||||
name = "SWAT tactical tasers Crate"
|
||||
desc = "Contains two tactical energy gun, these guns are able to tase, disable and lethal as well as hold a seclight. Requires Armory access to open."
|
||||
cost = 7000
|
||||
contains = list(/obj/item/gun/energy/e_gun/stun,
|
||||
|
||||
@@ -289,6 +289,30 @@
|
||||
crate_name = "wizard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/magicka
|
||||
name = "Proper Wizard Costume Crate"
|
||||
desc = "Up to four crewmates take on a grand adventure to save their world from certain doom using the robes in this crate!"
|
||||
cost = 7000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/suit/notwizrobe,
|
||||
/obj/item/clothing/head/notwizard,
|
||||
/obj/item/clothing/suit/notwizrobe/red,
|
||||
/obj/item/clothing/head/notwizard/red,
|
||||
/obj/item/clothing/suit/notwizrobe/yellow,
|
||||
/obj/item/clothing/head/notwizard/yellow,
|
||||
/obj/item/clothing/suit/notwizrobe/black,
|
||||
/obj/item/clothing/head/notwizard/black)
|
||||
crate_name = "proper wizard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
|
||||
@@ -350,6 +350,19 @@
|
||||
/obj/item/toner)
|
||||
crate_name = "toner crate"
|
||||
|
||||
/datum/supply_pack/misc/wedding
|
||||
name = "Wedding Crate"
|
||||
desc = "Almost everything you need to host a wedding! Don't forget a ring!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/clothing/under/wedding_dress,
|
||||
/obj/item/clothing/under/tuxedo,
|
||||
/obj/item/storage/belt/cummerbund,
|
||||
/obj/item/bouquet,
|
||||
/obj/item/bouquet/sunflower,
|
||||
/obj/item/bouquet/poppy,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/champagne)
|
||||
crate_name = "wedding crate"
|
||||
|
||||
/datum/supply_pack/misc/diamondring
|
||||
name = "Diamond Ring"
|
||||
desc = "Show them your love is like a diamond: unbreakable and forever lasting. Shipped straight from child slave cartels in the space african mines."
|
||||
|
||||
@@ -588,7 +588,7 @@
|
||||
/datum/supply_pack/organic/seeds
|
||||
name = "Seeds Crate"
|
||||
desc = "Big things have small beginnings. Contains fourteen different seeds."
|
||||
cost = 1250
|
||||
cost = 1300
|
||||
contains = list(/obj/item/seeds/chili,
|
||||
/obj/item/seeds/berry,
|
||||
/obj/item/seeds/corn,
|
||||
|
||||
@@ -46,6 +46,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/buttons_locked = FALSE
|
||||
var/hotkeys = FALSE
|
||||
var/chat_on_map = TRUE
|
||||
var/autocorrect = TRUE
|
||||
var/radiosounds = TRUE
|
||||
var/max_chat_length = CHAT_MESSAGE_MAX_LENGTH
|
||||
var/see_chat_non_mob = TRUE
|
||||
@@ -96,7 +97,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
//H13
|
||||
var/body_size = 100 //Body Size in percent
|
||||
var/can_get_preg = 0 //Body Size in percent
|
||||
var/can_get_preg = 0 //if they can get preggers
|
||||
|
||||
|
||||
var/datum/species/pref_species = new /datum/species/human() //Mutant race
|
||||
var/list/features = list("mcolor" = "FFF",
|
||||
@@ -135,6 +137,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"has_sheath" = FALSE,
|
||||
"sheath_color" = "fff",
|
||||
"has_belly" = FALSE,
|
||||
"hide_belly" = FALSE,
|
||||
"belly_color" = "fff",
|
||||
"has_balls" = FALSE,
|
||||
"balls_internal" = FALSE,
|
||||
@@ -903,7 +906,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
else
|
||||
dat += "<b>Color:</b></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[features["belly_color"]];'> </span> <a href='?_src_=prefs;preference=belly_color;task=input'>Change</a><br>"
|
||||
|
||||
dat += "<b>Hide on Round-Start:</b><a style='display:block;width:50px' href='?_src_=prefs;preference=hide_belly'>[features["hide_belly"] == 1 ? "Yes" : "No"]</a>"
|
||||
|
||||
dat += "</td>"
|
||||
dat += "</td>"
|
||||
@@ -919,6 +922,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<b>Chat Bubbles message char limit:</b> <a href='?_src_=prefs;preference=max_chat_length;task=input'>[max_chat_length]</a><br>"
|
||||
dat += "<b>Chat Bubbles for non-mobs:</b> <a href='?_src_=prefs;preference=see_chat_non_mob'>[see_chat_non_mob ? "Enabled" : "Disabled"]</a><br>"
|
||||
dat += "<br>"
|
||||
dat += "<b>Autocorrect:</b> <a href='?_src_=prefs;preference=autocorrect'>[(autocorrect) ? "On" : "Off"]</a><br>"
|
||||
dat += "<b>Radio Sounds:</b> <a href='?_src_=prefs;preference=radiosounds'>[radiosounds ? "Enabled" : "Disabled"]</a><br>"
|
||||
dat += "<br>"
|
||||
dat += "<b>Action Buttons:</b> <a href='?_src_=prefs;preference=action_buttons'>[(buttons_locked) ? "Locked In Place" : "Unlocked"]</a><br>"
|
||||
@@ -2401,6 +2405,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["has_balls"] = FALSE
|
||||
if("has_belly")
|
||||
features["has_belly"] = !features["has_belly"]
|
||||
if(features["has_belly"] == FALSE)
|
||||
features["hide_belly"] = FALSE
|
||||
if("hide_belly")
|
||||
features["hide_belly"] = !features["hide_belly"]
|
||||
if("has_balls")
|
||||
features["has_balls"] = !features["has_balls"]
|
||||
if("has_ovi")
|
||||
@@ -2474,6 +2482,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
buttons_locked = !buttons_locked
|
||||
if("chat_on_map")
|
||||
chat_on_map = !chat_on_map
|
||||
if("autocorrect")
|
||||
autocorrect = !autocorrect
|
||||
if("radiosounds")
|
||||
radiosounds = !radiosounds
|
||||
if("see_chat_non_mob")
|
||||
|
||||
@@ -108,6 +108,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["uses_glasses_colour"]>> uses_glasses_colour
|
||||
S["clientfps"] >> clientfps
|
||||
S["chat_on_map"] >> chat_on_map
|
||||
S["autocorrect"] >> autocorrect
|
||||
S["radiosounds"] >> radiosounds
|
||||
S["max_chat_length"] >> max_chat_length
|
||||
S["see_chat_non_mob"] >> see_chat_non_mob
|
||||
@@ -146,6 +147,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
|
||||
UI_style = sanitize_inlist(UI_style, GLOB.available_ui_styles, GLOB.available_ui_styles[1])
|
||||
hotkeys = sanitize_integer(hotkeys, 0, 1, initial(hotkeys))
|
||||
autocorrect = sanitize_integer(autocorrect, 0, 1, initial(autocorrect))
|
||||
chat_on_map = sanitize_integer(chat_on_map, 0, 1, initial(chat_on_map))
|
||||
radiosounds = sanitize_integer(radiosounds, 0, 1, initial(radiosounds))
|
||||
max_chat_length = sanitize_integer(max_chat_length, 1, CHAT_MESSAGE_MAX_LENGTH, initial(max_chat_length))
|
||||
@@ -159,7 +161,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
clientfps = sanitize_integer(clientfps, 0, 1000, 0)
|
||||
if (clientfps == 0) clientfps = world.fps*2
|
||||
body_size = sanitize_integer(body_size, 90, 110, 0)
|
||||
can_get_preg = sanitize_integer(body_size, 0, 1, 0)
|
||||
can_get_preg = sanitize_integer(can_get_preg, 0, 1, 0)
|
||||
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
|
||||
ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion))
|
||||
auto_fit_viewport = sanitize_integer(auto_fit_viewport, 0, 1, initial(auto_fit_viewport))
|
||||
@@ -414,6 +416,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//balls features
|
||||
S["feature_has_belly"] >> features["has_belly"]
|
||||
S["feature_belly_color"] >> features["belly_color"]
|
||||
S["feature_hide_belly"] >> features["hide_belly"]
|
||||
|
||||
//flavor text
|
||||
//Let's make our players NOT cry desperately as we wipe their savefiles of their special snowflake texts:
|
||||
if((S["flavor_text"] != "") && (S["flavor_text"] != null) && S["flavor_text"]) //If old text isn't null and isn't "" but still exists.
|
||||
|
||||
@@ -72,6 +72,12 @@
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions. This one has prescription lens fitted in."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/eyepatch
|
||||
name = "meson scanner eyepatch"
|
||||
desc = "An eyepatch with a built-in meson scanner."
|
||||
icon_state = "mesonpatch"
|
||||
item_state = "mesonpatch"
|
||||
|
||||
/obj/item/clothing/glasses/meson/night
|
||||
name = "night vision meson scanner"
|
||||
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
|
||||
@@ -108,6 +114,12 @@
|
||||
if(slot == SLOT_GLASSES)
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/glasses/science/eyepatch
|
||||
name = "science eyepatch"
|
||||
desc = "An eyepatch with an analyser for scanning items and reagents."
|
||||
icon_state = "scipatch"
|
||||
item_state = "scipatch"
|
||||
|
||||
/obj/item/clothing/glasses/night
|
||||
name = "night vision goggles"
|
||||
desc = "You can totally see in the dark now!"
|
||||
@@ -122,6 +134,12 @@
|
||||
desc = "NVGs but for those with nearsightedness."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/night/eyepatch
|
||||
name = "night vision eyepatch"
|
||||
desc = "An eyepatch with night vision technology!"
|
||||
icon_state = "nightpatch"
|
||||
item_state = "nightpatch"
|
||||
|
||||
/obj/item/clothing/glasses/science/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] is tightening \the [src]'s straps around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return OXYLOSS
|
||||
|
||||
@@ -37,6 +37,12 @@
|
||||
hud_type = DATA_HUD_MEDICAL_ADVANCED
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightblue
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/eyepatch
|
||||
name = "health scanner HUD eyepatch"
|
||||
desc = "A heads-up display, in an eyepatch, that scans the humans in view and provides accurate data about their health status."
|
||||
icon_state = "medpatch"
|
||||
item_state = "medpatch"
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/prescription
|
||||
name = "prescription health scanner HUD"
|
||||
desc = "A heads-up display, made with a prescription lens, that scans the humans in view and provides accurate data about their health status."
|
||||
@@ -84,6 +90,12 @@
|
||||
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightorange
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/eyepatch
|
||||
name = "diagnostic HUD eyepatch"
|
||||
desc = "A heads-up display, in an eyepatch, capable of analyzing the integrity and status of robotics and exosuits."
|
||||
icon_state = "diapatch"
|
||||
item_state = "diapatch"
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
name = "prescription diagnostic HUD"
|
||||
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits. This one has a prescription lens."
|
||||
@@ -141,7 +153,7 @@
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch
|
||||
name = "eyepatch HUD"
|
||||
name = "Security eyepatch HUD"
|
||||
desc = "A heads-up display that connects directly to the optical nerve of the user, replacing the need for that useless eyeball."
|
||||
icon_state = "hudpatch"
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
price = 10
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap
|
||||
desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly."
|
||||
@@ -19,6 +20,7 @@
|
||||
item_color="yellow"
|
||||
resistance_flags = NONE
|
||||
var/can_be_cut = 1
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/gloves/color/fyellow/New()
|
||||
..()
|
||||
@@ -113,6 +115,7 @@
|
||||
siemens_coefficient = 0
|
||||
permeability_coefficient = 0.05
|
||||
resistance_flags = NONE
|
||||
price = 12
|
||||
|
||||
/obj/item/clothing/gloves/color/rainbow
|
||||
name = "rainbow gloves"
|
||||
|
||||
@@ -260,6 +260,7 @@
|
||||
name = "security's bitch beret"
|
||||
desc = "A softer beret with the word 'BITCH' embroidered on it in pink thread."
|
||||
icon_state = "bitchberet"
|
||||
price = 5
|
||||
|
||||
//Curator
|
||||
/obj/item/clothing/head/fedora/curator
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
item_state = "sluthailer"
|
||||
aggressiveness = 0 //can't have your pets being mean!
|
||||
actions_types = list(/datum/action/item_action/halt)
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/slut/attack_hand(mob/user)
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
var/obj/item/organ/heart/heart = M.getorganslot(ORGAN_SLOT_HEART)
|
||||
var/obj/item/organ/lungs/lungs = M.getorganslot(ORGAN_SLOT_LUNGS)
|
||||
|
||||
|
||||
|
||||
if (!do_mob(user,M,60)) // Stethoscope should take a moment to listen
|
||||
return // FAIL
|
||||
@@ -302,3 +302,4 @@
|
||||
icon = 'icons/obj/clothing/neck.dmi'
|
||||
icon_state = "bling"
|
||||
item_color = "bling"
|
||||
price = 30
|
||||
@@ -137,6 +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"
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/fast
|
||||
slowdown = -1
|
||||
|
||||
@@ -169,6 +169,7 @@
|
||||
cold_protection = CHEST|LEGS|ARMS
|
||||
heat_protection = CHEST|LEGS|ARMS
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //you don't need it
|
||||
price = 5
|
||||
|
||||
//Surgeon
|
||||
/obj/item/clothing/suit/apron/surgical
|
||||
|
||||
@@ -635,6 +635,7 @@
|
||||
icon_state = "coatsecuritypink"
|
||||
item_state = "coatsecuritypink"
|
||||
hoodtype = /obj/item/clothing/head/hooded/winterhood/security/pink
|
||||
price = 5
|
||||
|
||||
/obj/item/clothing/suit/hooded/wintercoat/security/Initialize()
|
||||
. = ..()
|
||||
@@ -954,3 +955,12 @@
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/durathread
|
||||
icon_state = "winterhood_durathread"
|
||||
|
||||
//Enzo_Leon Patron stuff
|
||||
/obj/item/clothing/suit/toggle/enzojacket
|
||||
name = "Altevain Colony-Ship Command Jacket"
|
||||
desc = "A comfortable form fitting jacket that has a little cheese emblem on the chest."
|
||||
icon_state = "enzojacket"
|
||||
item_state = "enzojacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
//End
|
||||
@@ -226,3 +226,63 @@
|
||||
W.current_charges += 8
|
||||
to_chat(user, "<span class='notice'>You charge \the [W]. It can now absorb [W.current_charges] hits.</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/clothing/head/notwizard
|
||||
name = "wizard hat"
|
||||
desc = "Strange-looking hat-wear that most certainly belongs to an aspiring magic user."
|
||||
icon_state = "wizard"
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
strip_delay = 50
|
||||
equip_delay_other = 50
|
||||
resistance_flags = FLAMMABLE
|
||||
dog_fashion = /datum/dog_fashion/head/blue_wizard
|
||||
|
||||
/obj/item/clothing/head/notwizard/red
|
||||
name = "red wizard hat"
|
||||
desc = "Strange-looking red hat-wear that most certainly belongs to an aspiring magic user."
|
||||
icon_state = "redwizard"
|
||||
dog_fashion = /datum/dog_fashion/head/red_wizard
|
||||
|
||||
/obj/item/clothing/head/notwizard/yellow
|
||||
name = "yellow wizard hat"
|
||||
desc = "Strange-looking yellow hat-wear that most certainly belongs to an aspiring magic user."
|
||||
icon_state = "yellowwizard"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/notwizard/black
|
||||
name = "black wizard hat"
|
||||
desc = "Strange-looking black hat-wear that most certainly belongs to an aspiring skeleton. Way cooler than magic." //skeleton gang 4lyfe
|
||||
icon_state = "blackwizard"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe
|
||||
name = "wizard robe"
|
||||
desc = "A decent looking robe that seems to radiate imagination."
|
||||
icon_state = "wizard"
|
||||
item_state = "wizrobe"
|
||||
gas_transfer_coefficient = 1
|
||||
permeability_coefficient = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
strip_delay = 50
|
||||
equip_delay_other = 50
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe/red
|
||||
name = "red wizard robe"
|
||||
desc = "A decent looking red robe that seems to radiate imagination."
|
||||
icon_state = "redwizard"
|
||||
item_state = "redwizrobe"
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe/yellow
|
||||
name = "yellow wizard robe"
|
||||
desc = "A decent looking yellow robe that seems to radiate imagination."
|
||||
icon_state = "yellowwizard"
|
||||
item_state = "yellowwizrobe"
|
||||
|
||||
/obj/item/clothing/suit/notwizrobe/black
|
||||
name = "black wizard robe"
|
||||
desc = "An unnerving black robe that radiates death and decay."
|
||||
icon_state = "blackwizard"
|
||||
item_state = "blackwizrobe"
|
||||
@@ -381,6 +381,7 @@
|
||||
item_state = "b_suit"
|
||||
item_color = "galaxy_blue"
|
||||
can_adjust = FALSE
|
||||
price = 10
|
||||
|
||||
/obj/item/clothing/under/lawyer/galaxy_red
|
||||
name = "\improper Pulsar Gonne"
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
icon_state = "rsecuritypink"
|
||||
item_state = "r_suit"
|
||||
item_color = "rsecuritypink"
|
||||
price = 3
|
||||
/obj/item/clothing/under/rank/security/skirt
|
||||
name = "security jumpskirt"
|
||||
desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt."
|
||||
@@ -46,6 +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
|
||||
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"
|
||||
@@ -59,6 +61,7 @@
|
||||
can_adjust = FALSE
|
||||
body_parts_covered = CHEST|GROIN
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
price = 5
|
||||
|
||||
|
||||
/obj/item/clothing/under/rank/warden
|
||||
|
||||
@@ -796,4 +796,32 @@
|
||||
item_color = "greenplaidshirt"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
can_adjust = FALSE
|
||||
//yes
|
||||
//yes
|
||||
|
||||
//Enzo_Leon patron stuff
|
||||
/obj/item/clothing/under/enzoshirt
|
||||
name = "Altevain Standard-Issue Uniform"
|
||||
desc = "A soft, and light uniform with blue-space threading to help with Altevain proportions."
|
||||
icon_state = "enzoshirt"
|
||||
item_state = "enzoshirt"
|
||||
item_color = "enzoshirt"
|
||||
body_parts_covered = CHEST|GROIN|ARMS|LEGS
|
||||
//End
|
||||
|
||||
/obj/item/clothing/under/wedding_dress
|
||||
name = "wedding dress"
|
||||
desc = "A luxurious gown for once-in-a-lifetime occasions."
|
||||
icon_state = "wedding_dress"
|
||||
item_state = "wedding_dress"
|
||||
body_parts_covered = CHEST|GROIN|LEGS
|
||||
flags_cover = HIDESHOES
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
can_adjust = FALSE
|
||||
|
||||
/obj/item/clothing/under/tuxedo
|
||||
name = "tuxedo"
|
||||
desc = "A formal black tuxedo. It exudes classiness."
|
||||
icon_state = "tuxedo"
|
||||
item_state = "tuxedo"
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION //temporary
|
||||
can_adjust = FALSE
|
||||
|
||||
@@ -21,19 +21,19 @@
|
||||
|
||||
/obj/item/clothing/under/syndicate/tacticool
|
||||
name = "tacticool turtleneck"
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool"
|
||||
desc = "A robust looking turtleneck designed to fit tightly against the body while still being comfortable."
|
||||
icon_state = "syndicate"
|
||||
item_state = "bl_suit"
|
||||
item_color = "tactifool"
|
||||
item_color = "syndicate"
|
||||
has_sensor = HAS_SENSORS
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
|
||||
/obj/item/clothing/under/syndicate/tacticool/skirt
|
||||
name = "tacticool skirtleneck"
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool_skirt"
|
||||
desc = "A robust looking skirtleneck designed to fit tightly against the body while still being comfortable."
|
||||
icon_state = "syndicate_skirt"
|
||||
item_state = "bl_suit"
|
||||
item_color = "tactifool_skirt"
|
||||
item_color = "syndicate_skirt"
|
||||
has_sensor = HAS_SENSORS
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
|
||||
@@ -43,6 +43,24 @@
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesec
|
||||
name = "Security HUD eyepatch"
|
||||
result = /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesecremoval
|
||||
name = "Security HUD removal (Eyepatch)"
|
||||
result = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunsecremoval
|
||||
name = "Security HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
@@ -61,6 +79,16 @@
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemed
|
||||
name = "Medical HUD eyepatch"
|
||||
result = /obj/item/clothing/glasses/hud/health/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunmedremoval
|
||||
name = "Medical HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
@@ -69,6 +97,86 @@
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemedremoval
|
||||
name = "Medical HUD removal (Eyepatch)"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyedia
|
||||
name = "Diagnostic HUD eyepatch"
|
||||
result = /obj/item/clothing/glasses/hud/diagnostic/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyediaremoval
|
||||
name = "Diagnostic HUD removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesci
|
||||
name = "Science eyepatch"
|
||||
result = /obj/item/clothing/glasses/science/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/science = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyesciremoval
|
||||
name = "Science eyepatch removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/science/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemeson
|
||||
name = "Meson eyepatch"
|
||||
result = /obj/item/clothing/glasses/meson/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/meson = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyemesonremoval
|
||||
name = "Meson eyepatch removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/meson/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyenv
|
||||
name = "Night Vision eyepatch"
|
||||
result = /obj/item/clothing/glasses/night/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/night = 1,
|
||||
/obj/item/clothing/glasses/eyepatch = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudeyenvremoval
|
||||
name = "Night Vision eyepatch removal"
|
||||
result = /obj/item/clothing/glasses/eyepatch
|
||||
time = 20
|
||||
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/clothing/glasses/night/eyepatch = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/beergoggles
|
||||
name = "Beer Goggles"
|
||||
result = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
|
||||
@@ -373,3 +373,30 @@
|
||||
time = 100
|
||||
category = CAT_MISC
|
||||
always_availible = FALSE // Disabled til learned
|
||||
|
||||
//Bouquets <3
|
||||
/datum/crafting_recipe/mixedbouquet
|
||||
name = "Mixed bouquet"
|
||||
result = /obj/item/bouquet
|
||||
reqs = list(/obj/item/reagent_containers/food/snacks/grown/poppy/lily =2,
|
||||
/obj/item/grown/sunflower = 2,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium = 2)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/sunbouquet
|
||||
name = "Sunflower bouquet"
|
||||
result = /obj/item/bouquet/sunflower
|
||||
reqs = list(/obj/item/grown/sunflower = 6)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/poppybouquet
|
||||
name = "Poppy bouquet"
|
||||
result = /obj/item/bouquet/poppy
|
||||
reqs = list (/obj/item/reagent_containers/food/snacks/grown/poppy = 6)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/rosebouquet
|
||||
name = "Rose bouquet"
|
||||
result = /obj/item/bouquet/rose
|
||||
reqs = list(/obj/item/grown/rose = 6)
|
||||
category = CAT_MISC
|
||||
|
||||
@@ -13,6 +13,19 @@
|
||||
|
||||
dream_fragments += "you see"
|
||||
|
||||
//NIGHTMARE
|
||||
var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
|
||||
if(prob(mood.sanity-100)&&(mood.sanity < 60)||prob(5))
|
||||
fragment += pick(GLOB.dream_strings)
|
||||
if(findtext(fragment, "%A% "))
|
||||
fragment = replacetext(fragment, "%ADJECTIVE% ", "")
|
||||
fragment = "\a [replacetext(fragment, "%A% ", "")]"
|
||||
to_chat(src, "<span class='warning'><b>... You have a terrifying nightmare about [fragment] ...</b></span>")
|
||||
src.visible_message("<span class='notice'>[src] shakes in their sleep.</span>")
|
||||
src.do_jitter_animation() //shake in their sleep.
|
||||
fragment = ""
|
||||
return
|
||||
|
||||
//Subject
|
||||
if(custom_dream_nouns.len && prob(90))
|
||||
fragment += pick(custom_dream_nouns)
|
||||
|
||||
@@ -217,6 +217,7 @@
|
||||
resistance_flags = FREEZE_PROOF
|
||||
isGlass = FALSE
|
||||
foodtype = BREAKFAST
|
||||
price = 2
|
||||
|
||||
//Used by MREs
|
||||
/obj/item/reagent_containers/food/drinks/coffee/type2
|
||||
@@ -240,6 +241,7 @@
|
||||
icon_state = "tea"
|
||||
item_state = "coffee"
|
||||
spillable = TRUE
|
||||
price = 2
|
||||
|
||||
/* Doesn't exist lol
|
||||
/datum/chemical_reaction/catnip_tea
|
||||
@@ -259,6 +261,7 @@
|
||||
name = "Duke Purple 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)
|
||||
price = 2
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco
|
||||
name = "Dutch hot coco"
|
||||
@@ -276,6 +279,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/dry_ramen = 30)
|
||||
foodtype = GRAIN
|
||||
isGlass = FALSE
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/beer
|
||||
name = "space beer"
|
||||
@@ -414,6 +418,7 @@
|
||||
reagent_flags = NONE
|
||||
spillable = FALSE
|
||||
isGlass = FALSE
|
||||
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>")
|
||||
@@ -538,3 +543,4 @@
|
||||
icon_state = "monkey_energy"
|
||||
list_reagents = list(/datum/reagent/consumable/monkey_energy = 50)
|
||||
foodtype = SUGAR | JUNKFOOD
|
||||
price = 3
|
||||
|
||||
@@ -416,6 +416,7 @@
|
||||
isGlass = FALSE
|
||||
list_reagents = list(/datum/reagent/consumable/cream = 100)
|
||||
foodtype = DAIRY
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/bottle/tomatojuice
|
||||
name = "tomato juice"
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola
|
||||
name = "Nuka Cola"
|
||||
list_reagents = list(/datum/reagent/consumable/nuka_cola = 50)
|
||||
price = 7
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/syndicatebomb
|
||||
name = "Syndicat Bomb"
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
|
||||
list_reagents = list(/datum/reagent/consumable/milk = 50)
|
||||
possible_states = list()
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/flour
|
||||
name = "flour sack"
|
||||
|
||||
@@ -59,6 +59,8 @@
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
dunkable = TRUE
|
||||
price = 2
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/hugemushroomslice
|
||||
name = "huge mushroom slice"
|
||||
@@ -559,9 +561,9 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tinychocolate
|
||||
name = "chocolate"
|
||||
desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!"
|
||||
desc = "A tiny and sweet chocolate. Has a strawberry filling!"
|
||||
icon_state = "tiny_chocolate"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/drug/aphrodisiac = 1)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/consumable/pinkmilk = 1)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
|
||||
@@ -116,3 +116,12 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("rice" = 1, "egg" = 1)
|
||||
foodtype = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/hellcobb
|
||||
name = "hell cobb salad"
|
||||
desc = "If you're being honest with yourself it's just a bowl of mushrooms with chunks of meat and an egg."
|
||||
icon_state = "hellcobb"
|
||||
trash = /obj/item/reagent_containers/glass/bowl/mushroom_bowl
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("fruity cactus" = 5, "ash" = 1, "tough meat" = 3, "your eternal damnation" = 1)
|
||||
foodtype = FRUIT | MEAT | VEGETABLES //MUSHROOM = VEGETABLE -VladinXXV 2021
|
||||
|
||||
@@ -254,3 +254,20 @@
|
||||
tastes = list("bungo" = 2, "hot curry" = 4, "tropical sweetness" = 1)
|
||||
filling_color = "#E6A625"
|
||||
foodtype = VEGETABLES | FRUIT | DAIRY
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/creamofwastes
|
||||
name = "cream of the wastes soup"
|
||||
desc = "Locals say the bowl gives it a unique flavor each time. That might just be whatever killed the goliath getting in your bowl, though."
|
||||
icon_state = "wastessoup"
|
||||
trash = /obj/item/reagent_containers/glass/bowl/mushroom_bowl
|
||||
var/snowflake_reagent = null
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 6)
|
||||
tastes = list("a fresh kill" = 3, "creamy mushroom" = 5, "a warm sunset over the scorched landscape of hell" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/creamofwastes/Initialize()
|
||||
. = ..()
|
||||
snowflake_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil,
|
||||
/datum/reagent/blood, /datum/reagent/oil, /datum/reagent/consumable/honey,
|
||||
/datum/reagent/carbon, /datum/reagent/drug/mushroomhallucinogen)
|
||||
bonus_reagents = list(snowflake_reagent = 5, /datum/reagent/consumable/nutriment = 6)
|
||||
reagents.add_reagent(snowflake_reagent, 5)
|
||||
|
||||
@@ -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,6 +96,7 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("nanomachines" = 2, "soybeans" = 5)
|
||||
foodtype = JUNKFOOD | DAIRY | GRAIN
|
||||
price = 3
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/syndicake
|
||||
name = "syndi-cakes"
|
||||
@@ -100,6 +107,7 @@
|
||||
filling_color = "#F5F5DC"
|
||||
tastes = list("sweetness" = 3, "cake" = 1)
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC
|
||||
price = 5
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/carbonnanotube_noodles
|
||||
name = "carbon nanotube noodles"
|
||||
@@ -111,3 +119,4 @@
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("charcoal" = 1, "spiciness" = 3, "soysauce" = 3)
|
||||
foodtype = GRAIN | VEGETABLES
|
||||
price = 3
|
||||
@@ -892,3 +892,10 @@
|
||||
results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50)
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10)
|
||||
mix_message = "When your powers combine, I am Captain Pl-..."
|
||||
|
||||
/datum/chemical_reaction/wockyslush
|
||||
name = "Wocky Slush"
|
||||
id = /datum/reagent/consumable/wockyslush
|
||||
results = list(/datum/reagent/consumable/wockyslush = 5)
|
||||
required_reagents = list(/datum/reagent/toxin/fentanyl = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/consumable/lemon_lime = 1)
|
||||
mix_message = "That thang bleedin’ P!"
|
||||
|
||||
@@ -94,3 +94,16 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/salad/citrusdelight
|
||||
subcategory = CAT_SALAD
|
||||
|
||||
/datum/crafting_recipe/food/hellcobb
|
||||
name = "Hell Cobb Salad"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/glass/bowl/mushroom_bowl = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf = 3,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit = 2,
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/goliath = 1,
|
||||
/obj/item/reagent_containers/food/snacks/boiledegg = 1
|
||||
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/salad/hellcobb
|
||||
subcategory = CAT_SALAD
|
||||
|
||||
@@ -247,3 +247,15 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/soup/macaco
|
||||
subcategory = CAT_SOUP
|
||||
|
||||
/datum/crafting_recipe/food/creamofwastes
|
||||
name = "Cream of the Wastes soup"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/milk = 10,
|
||||
/obj/item/reagent_containers/glass/bowl/mushroom_bowl = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem =2,
|
||||
/obj/item/reagent_containers/food/snacks/meat/steak/goliath = 2 //wanted to make this three cutlets, but goliath meat doesn't get a unique cutlet
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/soup/creamofwastes
|
||||
subcategory = CAT_SOUP
|
||||
|
||||
@@ -93,7 +93,8 @@
|
||||
yield = 3
|
||||
rarity = 20
|
||||
mutatelist = list()
|
||||
reagents_add = list("aphro" = 0.2, "penis_enlarger" = 0.08, "vitamin" = 0.04, "nutriment" = 0.04)
|
||||
genes = list(/datum/plant_gene/reagent/fragile/penischem, /datum/plant_gene/reagent/fragile/crocin)
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/pink_chili
|
||||
seed = /obj/item/seeds/chili/pink
|
||||
|
||||
@@ -68,15 +68,10 @@
|
||||
icon_grow = "spacemanstrumpet-grow"
|
||||
icon_dead = "spacemanstrumpet-dead"
|
||||
mutatelist = list()
|
||||
genes = list(/datum/plant_gene/reagent/polypyr)
|
||||
genes = list(/datum/plant_gene/reagent/fragile/polypyr)
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
|
||||
rarity = 30
|
||||
|
||||
/obj/item/seeds/poppy/lily/trumpet/Initialize(mapload, nogenes = FALSE)
|
||||
. = ..()
|
||||
if(!nogenes)
|
||||
unset_mutability(/datum/plant_gene/reagent/polypyr, PLANT_GENE_EXTRACTABLE)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/trumpet
|
||||
seed = /obj/item/seeds/poppy/lily/trumpet
|
||||
name = "spaceman's trumpet"
|
||||
@@ -262,6 +257,69 @@
|
||||
to_chat(user, "<span class='danger'>The [name] burns your bare hand!</span>")
|
||||
user.adjustFireLoss(rand(1, 5))
|
||||
|
||||
// Rose
|
||||
/obj/item/seeds/rose
|
||||
name = "pack of rose seeds"
|
||||
desc = "These seeds grow into roses."
|
||||
icon_state = "seed-rose"
|
||||
species = "rose"
|
||||
plantname = "Rose Bush"
|
||||
product = /obj/item/grown/rose
|
||||
endurance = 12
|
||||
yield = 6
|
||||
potency = 15
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
icon_grow = "rose-grow"
|
||||
icon_dead = "rose-dead"
|
||||
mutatelist = list(/obj/item/seeds/carbon_rose)
|
||||
//Roses are commonly used as herbal medicines (diarrhodons) and for their 'rose oil'.
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/tricordrazine = 0.1, /datum/reagent/oil = 0.05)
|
||||
|
||||
/obj/item/grown/rose
|
||||
seed = /obj/item/seeds/rose
|
||||
name = "rose"
|
||||
desc = "The classic fleur d'amour - flower of love. Watch for its thorns!"
|
||||
icon_state = "rose"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_HEAD //|ITEM_SLOT_MASK // couldn't get this to work, revive another day
|
||||
|
||||
// Carbon Rose
|
||||
/obj/item/seeds/carbon_rose
|
||||
name = "pack of carbon rose seeds"
|
||||
desc = "These seeds grow into carbon roses."
|
||||
icon_state = "seed-carbonrose"
|
||||
species = "carbonrose"
|
||||
plantname = "Carbon Rose Flower"
|
||||
product = /obj/item/grown/carbon_rose
|
||||
endurance = 12
|
||||
yield = 6
|
||||
potency = 15
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
icon_grow = "carbonrose-grow"
|
||||
icon_dead = "carbonrose-dead"
|
||||
mutatelist = list(/obj/item/seeds/carbon_rose)
|
||||
reagents_add = list(/datum/reagent/plastic_polymers = 0.05)
|
||||
rarity = 10
|
||||
|
||||
|
||||
|
||||
/obj/item/grown/carbon_rose
|
||||
seed = /obj/item/seeds/carbon_rose
|
||||
name = "carbon rose"
|
||||
desc = "The all new fleur d'amour gris - the flower of love, modernized, with no harsh thorns."
|
||||
icon_state = "carbonrose"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
|
||||
force = 0
|
||||
throwforce = 0
|
||||
slot_flags = ITEM_SLOT_HEAD
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
|
||||
// Beebalm
|
||||
/obj/item/seeds/bee_balm
|
||||
name = "pack of Bee Balm seeds"
|
||||
|
||||
@@ -84,13 +84,14 @@
|
||||
plantname = "Milk Melon Vines"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/milkmelon
|
||||
mutatelist = list()
|
||||
reagents_add = list("milk" = 0.2, "breast_enlarger" = 0.08, "vitamin" = 0.04, "nutriment" = 0.1)
|
||||
genes = list(/datum/plant_gene/reagent/fragile/breastchem)
|
||||
reagents_add = list(/datum/reagent/consumable/milk = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
|
||||
rarity = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/milkmelon
|
||||
seed = /obj/item/seeds/watermelon/milk
|
||||
name = "milkmelon"
|
||||
desc = "A softer, rounder-looking watermelon that audibly sloshes with milk."
|
||||
desc = "A softer watermelon that audibly sloshes with milk."
|
||||
icon_state = "milkmelon"
|
||||
filling_color = "#FFAABB"
|
||||
dried_type = null
|
||||
|
||||
@@ -63,6 +63,42 @@
|
||||
T.assume_air(stank)
|
||||
T.air_update_turf()
|
||||
|
||||
|
||||
// Valentines flower
|
||||
/obj/item/seeds/starthistle/valentines
|
||||
name = "pack of valentines flower seeds"
|
||||
desc = "A species of plant that emits a arousing odor. The odor stops being produced in difficult atmospheric conditions."
|
||||
icon_state = "valentines"
|
||||
species = "valentines"
|
||||
plantname = "Valentines Flower"
|
||||
production = 2
|
||||
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
|
||||
genes = list()
|
||||
mutatelist = list()
|
||||
|
||||
/obj/item/seeds/starthistle/valentines/pre_attack(obj/machinery/hydroponics/I)
|
||||
if(istype(I, /obj/machinery/hydroponics))
|
||||
if(!I.myseed)
|
||||
START_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/seeds/starthistle/valentines/process()
|
||||
var/obj/machinery/hydroponics/parent = loc
|
||||
if(parent.age < maturation || parent.dead) // Start a little before it blooms
|
||||
return
|
||||
|
||||
var/turf/open/T = get_turf(parent)
|
||||
if(abs(ONE_ATMOSPHERE - T.return_air().return_pressure()) > (potency/10 + 10))
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/scent = new
|
||||
var/list/cached_gases = scent.gases
|
||||
|
||||
cached_gases[/datum/gas/pheromone] += (yield + 5)*7*0.1
|
||||
scent.temperature = T20C
|
||||
T.assume_air(scent)
|
||||
T.air_update_turf()
|
||||
|
||||
//Galaxy Thistle
|
||||
/obj/item/seeds/galaxythistle
|
||||
name = "pack of galaxythistle seeds"
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
endurance = 8
|
||||
yield = 4
|
||||
growthstages = 2
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/teslium, /datum/plant_gene/trait/plant_type/carnivory)
|
||||
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/fragile/teslium, /datum/plant_gene/trait/plant_type/carnivory)
|
||||
growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi'
|
||||
reagents_add = list(/datum/reagent/consumable/nutriment = 0.1)
|
||||
mutatelist = list()
|
||||
@@ -251,7 +251,6 @@
|
||||
/obj/item/seeds/chanterelle/jupitercup/Initialize(mapload, nogenes = FALSE)
|
||||
. = ..()
|
||||
if(!nogenes)
|
||||
unset_mutability(/datum/plant_gene/reagent/teslium, PLANT_GENE_EXTRACTABLE)
|
||||
unset_mutability(/datum/plant_gene/trait/plant_type/carnivory, PLANT_GENE_REMOVABLE)
|
||||
|
||||
/obj/item/seeds/chanterelle/jupitercup/hollow
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
// Reagent genes store reagent ID and reagent ratio. Amount of reagent in the plant = 1 + (potency * rate)
|
||||
/datum/plant_gene/reagent
|
||||
name = "Nutriment"
|
||||
var/reagent_id = "nutriment"
|
||||
var/reagent_id = /datum/reagent/consumable/nutriment
|
||||
var/rate = 0.04
|
||||
|
||||
/datum/plant_gene/reagent/get_name()
|
||||
@@ -153,16 +153,35 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/plant_gene/reagent/polypyr
|
||||
/datum/plant_gene/reagent/fragile
|
||||
name = "Fragile Gene"
|
||||
mutability_flags = PLANT_GENE_REMOVABLE //Cannot be extracted
|
||||
|
||||
/datum/plant_gene/reagent/fragile/polypyr
|
||||
name = "Polypyrylium Oligomers"
|
||||
reagent_id = "polypyr"
|
||||
reagent_id = /datum/reagent/medicine/polypyr
|
||||
rate = 0.15
|
||||
|
||||
/datum/plant_gene/reagent/teslium
|
||||
/datum/plant_gene/reagent/fragile/teslium
|
||||
name = "Teslium"
|
||||
reagent_id = "teslium"
|
||||
reagent_id = /datum/reagent/teslium
|
||||
rate = 0.1
|
||||
|
||||
/datum/plant_gene/reagent/fragile/breastchem
|
||||
name = "Succubus Milk"
|
||||
reagent_id = /datum/reagent/fermi/breast_enlarger
|
||||
rate = 0.04 //5 units at 100 potency
|
||||
|
||||
/datum/plant_gene/reagent/fragile/penischem
|
||||
name = "Incubus Draft"
|
||||
reagent_id = /datum/reagent/fermi/penis_enlarger
|
||||
rate = 0.04
|
||||
|
||||
/datum/plant_gene/reagent/fragile/crocin
|
||||
name = "Crocin"
|
||||
reagent_id = /datum/reagent/drug/aphrodisiac
|
||||
rate = 0.2
|
||||
|
||||
// Various traits affecting the product.
|
||||
/datum/plant_gene/trait
|
||||
var/rate = 0.05
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
var/list/mind_traits // Traits added to the mind of the mob assigned this job
|
||||
|
||||
var/list/blacklisted_quirks //list of quirk typepaths blacklisted.
|
||||
|
||||
|
||||
var/list/alt_titles = list()
|
||||
|
||||
//Only override this proc
|
||||
@@ -90,6 +90,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)
|
||||
@@ -230,6 +239,13 @@
|
||||
C.update_label(C.registered_name, preference_source.prefs.alt_titles_preferences[J.title])
|
||||
else
|
||||
C.update_label()
|
||||
|
||||
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)
|
||||
|
||||
@@ -13,7 +13,7 @@ AI
|
||||
req_admin_notify = TRUE
|
||||
minimal_player_age = 14
|
||||
exp_requirements = 1800
|
||||
//exp_type = EXP_TYPE_CREW
|
||||
exp_type = EXP_TYPE_SILICON
|
||||
exp_type_department = EXP_TYPE_SILICON
|
||||
var/do_special_check = TRUE
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
/datum/language/mushroom
|
||||
name = "Mushroom"
|
||||
desc = "A language that consists of the sound of periodic gusts of spore-filled air being released."
|
||||
speech_verb = "puffs"
|
||||
ask_verb = "puffs inquisitively"
|
||||
exclaim_verb = "poofs loudly"
|
||||
whisper_verb = "puffs quietly"
|
||||
sing_verb = "puffs musically"
|
||||
key = "y"
|
||||
sentence_chance = 0
|
||||
default_priority = 80
|
||||
syllables = list("poof", "pff", "pFfF", "piff", "puff", "pooof", "pfffff", "piffpiff", "puffpuff", "poofpoof", "pifpafpofpuf")
|
||||
@@ -0,0 +1,23 @@
|
||||
/datum/language/spacerussian
|
||||
name = "Neo-Russkiya"
|
||||
desc = "Neo-Russkiya, a bastard mix of Galactic Common and old Russian. The official language of the USSP. It has started to see use outside of the fringe in hobby circles and protest groups."
|
||||
speech_verb = "articulates"
|
||||
ask_verb = "questions"
|
||||
exclaim_verb = "exaggerates"
|
||||
whisper_verb = "mutters"
|
||||
sing_verb = "articulates musically"
|
||||
key = "?"
|
||||
flags = TONGUELESS_SPEECH
|
||||
sentence_chance = 0
|
||||
default_priority = 80
|
||||
syllables = list("dyen","bar","bota","vyek","tvo","slov","slav","syen","doup","vah","laz","gloz","yet",
|
||||
"nyet","da","sky","glav","glaz","netz","doomat","zat","moch","boz",
|
||||
"comy","vrad","vrade","tay","bli","ay","nov","livn","tolv","glaz","gliz",
|
||||
"ouy","zet","yevt","dat","botat","nev","novy","vzy","nov","sho","obsh","dasky",
|
||||
"key","skey","ovsky","skaya","bib","kiev","studen","var","bul","vyan",
|
||||
"tzion","vaya","myak","gino","volo","olam","miti","nino","menov","perov",
|
||||
"odasky","trov","niki","ivano","dostov","sokol","oupa","pervom","schel",
|
||||
"tizan","chka","tagan","dobry","okt","boda","veta","idi","cyk","blyt","hui","na",
|
||||
"udi","litchki","casa","linka","toly","anatov","vich","vech","vuch","toi","ka","vod")
|
||||
|
||||
icon_state = "spacerussia"
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/language/tajara
|
||||
name = "Siik'Tajr"
|
||||
desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran."
|
||||
speech_verb = "mrowls"
|
||||
ask_verb = "mrowls inquisitively"
|
||||
exclaim_verb = "yowls loudly"
|
||||
whisper_verb = "mrowls quietly"
|
||||
sing_verb = "mrowls musically"
|
||||
key = "j"
|
||||
flags = TONGUELESS_SPEECH
|
||||
sentence_chance = 0
|
||||
default_priority = 80
|
||||
syllables = list("rr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr",
|
||||
"mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r",
|
||||
"ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah",
|
||||
"hal","ket","jurl","mah","tul","cresh","azu","ragh")
|
||||
|
||||
icon_state = "taja"
|
||||
@@ -509,7 +509,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums
|
||||
name = "scanner control interface"
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "bigscanner"
|
||||
desc = "It servers the purpose of scanning stuff."
|
||||
desc = "It serves the purpose of scanning stuff."
|
||||
density = TRUE
|
||||
var/obj/item/book/cache // Last scanned book
|
||||
|
||||
|
||||
@@ -389,7 +389,10 @@
|
||||
if(!arrivals_docked)
|
||||
var/obj/screen/splash/Spl = new(character.client, TRUE)
|
||||
Spl.Fade(TRUE)
|
||||
character.playsound_local(get_turf(character), 'sound/voice/ApproachingTG.ogg', 25)
|
||||
if(!prob(1))
|
||||
character.playsound_local(get_turf(character), 'sound/voice/Approaching.ogg', 25)
|
||||
else
|
||||
character.playsound_local(get_turf(character), 'sound/voice/boat.ogg', 35) //boatbomber easter egg. (love your videos man, thanks for visiting!)
|
||||
|
||||
character.update_parallax_teleport()
|
||||
|
||||
@@ -589,12 +592,9 @@
|
||||
H.name = real_name
|
||||
//h13 assign your characters custom height.
|
||||
if (H.custom_body_size) //Do they have it set?
|
||||
//H.size_multiplier = (max(min( round((H.custom_body_size)), MAX_BODYSIZE),MIN_BODYSIZE)* 0.01) //Old method
|
||||
H.resize(H.custom_body_size * 0.01)
|
||||
//h13 give your starting impregchance (30%)
|
||||
if (H.breedable == TRUE)
|
||||
H.impregchance = 30
|
||||
|
||||
. = H
|
||||
new_character = .
|
||||
if(transfer_after)
|
||||
|
||||
@@ -470,7 +470,17 @@
|
||||
/datum/sprite_accessory/hair/quotey
|
||||
name = "Tail Hair"
|
||||
icon_state = "hair_tailhair"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
/datum/sprite_accessory/hair/mommy
|
||||
name = "Hairfre"
|
||||
name = "(Hyper) Hairfre"
|
||||
icon_state = "hair_hairfre"
|
||||
|
||||
/datum/sprite_accessory/hair/sidehair
|
||||
name = "(Hyper) Side Hair"
|
||||
icon_state = "hair_tailhair2"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
/datum/sprite_accessory/hair/curtains
|
||||
name = "(Hyper) Curtains"
|
||||
icon_state = "hair_curtains"
|
||||
|
||||
@@ -85,6 +85,10 @@
|
||||
icon_state = "socks_short"
|
||||
has_color = TRUE
|
||||
|
||||
/datum/sprite_accessory/underwear/socks/stockings_black
|
||||
name = "Stockings - Black"
|
||||
icon_state = "stockings_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/socks/stockings_blue
|
||||
name = "Stockings - Blue"
|
||||
icon_state = "stockings_blue"
|
||||
|
||||
@@ -343,3 +343,10 @@
|
||||
/datum/sprite_accessory/underwear/top/cowboyshirt/red/s
|
||||
name = "Cowboy Shirt Shortsleeved Red"
|
||||
icon_state = "cowboyshirt_reds"
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/top/arms
|
||||
name = "Arm Warmers"
|
||||
icon_state = "armwarmer"
|
||||
has_color = TRUE
|
||||
gender = FEMALE
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
if(bleed_rate < 0)
|
||||
bleed_rate = 0
|
||||
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_NOMARROW)) //Bloodsuckers don't need to be here.
|
||||
return
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
//Blood regeneration if there is some space
|
||||
if(blood_volume < (BLOOD_VOLUME_NORMAL * blood_ratio) && !HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
var/nutrition_ratio = 0
|
||||
var/thirst_ratio = 1
|
||||
switch(nutrition)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
nutrition_ratio = 0.2
|
||||
@@ -60,6 +61,7 @@
|
||||
if(satiety > 80)
|
||||
nutrition_ratio *= 1.25
|
||||
nutrition = max(0, nutrition - nutrition_ratio * HUNGER_FACTOR)
|
||||
thirst = max(0, thirst - thirst_ratio * THIRST_FACTOR)
|
||||
blood_volume = min((BLOOD_VOLUME_NORMAL * blood_ratio), blood_volume + 0.5 * nutrition_ratio)
|
||||
|
||||
//Effects of bloodloss
|
||||
|
||||
@@ -286,7 +286,19 @@
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT)) //No mood buff since you're not really liking it.
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem annoyed...</span>", \
|
||||
"<span class='warning'>You give [H] a pat on the head to make [p_them()] feel better! They seem annoyed as they're now glaring towards you...</span>")
|
||||
H.adjustArousalLoss(-5) //Why are you touching me?
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[H] quickly twists [M]\'s arm!</span>", \
|
||||
"<span class='boldwarning'>Your arm gets twisted in [H]\'s grasp. Maybe you should have taken the hint...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
M.emote("scream")
|
||||
M.dropItemToGround(M.get_active_held_item())
|
||||
M.apply_damage(50, STAMINA, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
M.Knockdown(60)//STOP TOUCHING ME! For those spam head pat individuals
|
||||
else if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem incredibly pleased!</span>", \
|
||||
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better! They seem to like it way too much</span>")
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "lewd_headpat", /datum/mood_event/lewd_headpat)
|
||||
@@ -302,7 +314,10 @@
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M)
|
||||
else if (mood.sanity >= SANITY_DISTURBED)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M)
|
||||
if(H.dna.species.can_wag_tail(H))
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT))
|
||||
return
|
||||
else if(H.dna.species.can_wag_tail(H))
|
||||
if("tail_human" in pref_species.default_features)
|
||||
if(H.dna.features["tail_human"] == "None")
|
||||
return
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous
|
||||
else if(nutrition && stat != DEAD)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
nutrition -= HUNGER_FACTOR/12
|
||||
thirst -= THIRST_FACTOR/12
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
nutrition -= HUNGER_FACTOR/5
|
||||
thirst -= THIRST_FACTOR/5 //running around depleats thirst more so.
|
||||
@@ -100,6 +100,7 @@
|
||||
stat("Unique Identity:", "[dna.unique_enzymes]")
|
||||
stat("Overall Status:", "[stat > 1 ? "dead" : "[health]% healthy"]")
|
||||
stat("Nutrition Status:", "[nutrition]")
|
||||
stat("Hydration Status:", "[thirst]")
|
||||
stat("Oxygen Loss:", "[getOxyLoss()]")
|
||||
stat("Toxin Levels:", "[getToxLoss()]")
|
||||
stat("Burn Severity:", "[getFireLoss()]")
|
||||
|
||||
@@ -68,5 +68,5 @@
|
||||
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"
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
to_chat(src, "<span class='warning'>Use of ranged weaponry would bring dishonor to the clan.</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
/mob/living/carbon/human/can_see_reagents()
|
||||
. = ..()
|
||||
if(.) //No need to run through all of this if it's already true.
|
||||
|
||||
@@ -1243,6 +1243,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER))
|
||||
// THEY HUNGER
|
||||
var/hunger_rate = HUNGER_FACTOR
|
||||
var/thirst_rate = THIRST_FACTOR
|
||||
var/datum/component/mood/mood = H.GetComponent(/datum/component/mood)
|
||||
if(mood && mood.sanity > SANITY_DISTURBED)
|
||||
hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75
|
||||
@@ -1261,6 +1262,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
hunger_rate = 3 * HUNGER_FACTOR
|
||||
hunger_rate *= H.physiology.hunger_mod
|
||||
H.nutrition = max(0, H.nutrition - hunger_rate)
|
||||
H.thirst = max(0, H.thirst - thirst_rate)
|
||||
|
||||
|
||||
if (H.nutrition > NUTRITION_LEVEL_FULL)
|
||||
@@ -1296,6 +1298,14 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
|
||||
switch(H.thirst)
|
||||
if(NUTRITION_LEVEL_HUNGRY to INFINITY)
|
||||
H.clear_alert("thirst")
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
H.throw_alert("thirst", /obj/screen/alert/thirsty)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("thirst", /obj/screen/alert/dehydrated)
|
||||
|
||||
/datum/species/proc/update_health_hud(mob/living/carbon/human/H)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@
|
||||
use_skintones = FALSE
|
||||
var/datum/martial_art/mushpunch/mush
|
||||
|
||||
/datum/species/mush/after_equip_job(datum/job/J, mob/living/carbon/human/H)
|
||||
H.grant_language(/datum/language/mushroom) //pomf pomf
|
||||
|
||||
/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
if(ishuman(C))
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
if(HAS_TRAIT(B, TRAIT_CHOKE_SLUT))
|
||||
B.adjustArousalLoss(7)
|
||||
if (B.getArousalLoss() >= 100 && ishuman(B) && B.has_dna())
|
||||
B.mob_climax(forced_climax=TRUE)
|
||||
B.mob_climax(forced_climax=TRUE)
|
||||
else
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
|
||||
else
|
||||
@@ -285,6 +285,27 @@
|
||||
var/nitryl_partialpressure = (breath_gases[/datum/gas/nitryl]/breath.total_moles())*breath_pressure
|
||||
adjustFireLoss(nitryl_partialpressure/4)
|
||||
|
||||
//PHEROMONE
|
||||
if(breath_gases[/datum/gas/pheromone])
|
||||
var/pheromone_partialpressure = (breath_gases[/datum/gas/pheromone]/breath.total_moles())*breath_pressure
|
||||
if(pheromone_partialpressure > MINIMUM_MOLES_DELTA_TO_MOVE)
|
||||
|
||||
//pheromone side effects
|
||||
switch(pheromone_partialpressure)
|
||||
if(1 to 5)
|
||||
// At lower pp, give out a little warning
|
||||
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell")
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='notice'>There is an entracing smell in the air.</span>")
|
||||
if(5 to 20)
|
||||
//At somewhat higher pp, warning becomes more obvious
|
||||
if(prob(15))
|
||||
to_chat(src, "<span class='warning'>You smell something enticing inside this room.</span>")
|
||||
if(15 to INFINITY)
|
||||
//Small chance to vomit. By now, people have internals on anyway
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='warning'>The enticing smell is unbearable!</span>")
|
||||
|
||||
//MIASMA
|
||||
if(breath_gases[/datum/gas/miasma])
|
||||
var/miasma_partialpressure = (breath_gases[/datum/gas/miasma]/breath.total_moles())*breath_pressure
|
||||
@@ -407,7 +428,7 @@
|
||||
if(O)
|
||||
O.on_life()
|
||||
else
|
||||
if(reagents.has_reagent("formaldehyde", 1)) // No organ decay if the body contains formaldehyde.
|
||||
if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1)) // No organ decay if the body contains formaldehyde.
|
||||
return
|
||||
for(var/V in internal_organs)
|
||||
var/obj/item/organ/O = V
|
||||
|
||||
@@ -174,6 +174,10 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
src.log_talk(message, LOG_SAY, forced_by=forced)
|
||||
|
||||
message = treat_message(message) // unfortunately we still need this
|
||||
|
||||
if(client?.prefs.autocorrect)
|
||||
message = autocorrect(message)
|
||||
|
||||
var/sigreturn = SEND_SIGNAL(src, COMSIG_MOB_SAY, args)
|
||||
if (sigreturn & COMPONENT_UPPERCASE_SPEECH)
|
||||
message = uppertext(message)
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
poison_per_bite = 3
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
var/atom/movable/cocoon_target
|
||||
var/fed = 0
|
||||
var/obj/effect/proc_holder/wrap/wrap
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
var/dizziness = 0//Carbon
|
||||
var/jitteriness = 0//Carbon
|
||||
var/nutrition = NUTRITION_LEVEL_START_MIN // randomised in Initialize
|
||||
var/thirst = NUTRITION_LEVEL_START_MIN // randomised in Initialize
|
||||
var/satiety = 0//Carbon
|
||||
|
||||
var/overeatduration = 0 // How long this guy is overeating //Carbon
|
||||
|
||||
@@ -528,3 +528,12 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
//Can the mob see reagents inside of containers?
|
||||
/mob/proc/can_see_reagents()
|
||||
return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents
|
||||
|
||||
/mob/proc/can_read(obj/O)
|
||||
if(is_blind())
|
||||
to_chat(src, "<span class='warning'>As you are trying to read [O], you suddenly feel very stupid!</span>")
|
||||
return
|
||||
if(!is_literate())
|
||||
to_chat(src, "<span class='notice'>You try to read [O], but can't comprehend any of it.</span>")
|
||||
return
|
||||
return TRUE
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
/obj/item/paper/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Alt-click to fold it.</span>"
|
||||
if(oui_canview(user))
|
||||
if((in_range(user, src)))
|
||||
ui.render(user)
|
||||
else
|
||||
. += "<span class='warning'>You're too far away to read it!</span>"
|
||||
|
||||
+34
-29
@@ -19,10 +19,21 @@
|
||||
var/ndir = SOUTH // target dir
|
||||
var/turn_angle = 0
|
||||
var/obj/machinery/power/solar_control/control = null
|
||||
var/obj/item/solar_assembly/assembly
|
||||
var/efficiency = 1
|
||||
|
||||
/obj/machinery/power/solar/Initialize(mapload, obj/item/solar_assembly/S)
|
||||
. = ..()
|
||||
Make(S)
|
||||
if(!S)
|
||||
assembly = new /obj/item/solar_assembly
|
||||
assembly.glass_type = new /obj/item/stack/sheet/glass(null, 2)
|
||||
assembly.anchored = TRUE
|
||||
else
|
||||
S.moveToNullspace()
|
||||
assembly = S
|
||||
assembly.glass_type.on_solar_construction(src)
|
||||
obj_integrity = max_integrity
|
||||
update_icon()
|
||||
connect_to_network()
|
||||
|
||||
/obj/machinery/power/solar/Destroy()
|
||||
@@ -43,18 +54,6 @@
|
||||
control.connected_panels.Remove(src)
|
||||
control = null
|
||||
|
||||
/obj/machinery/power/solar/proc/Make(obj/item/solar_assembly/S)
|
||||
if(!S)
|
||||
S = new /obj/item/solar_assembly(src)
|
||||
S.glass_type = /obj/item/stack/sheet/glass
|
||||
S.anchored = TRUE
|
||||
else
|
||||
S.forceMove(src)
|
||||
if(S.glass_type == /obj/item/stack/sheet/rglass) //if the panel is in reinforced glass
|
||||
max_integrity *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to
|
||||
obj_integrity = max_integrity
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I)
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user.visible_message("[user] begins to take the glass off [src].", "<span class='notice'>You begin to take the glass off [src]...</span>")
|
||||
@@ -85,14 +84,14 @@
|
||||
/obj/machinery/power/solar/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(disassembled)
|
||||
var/obj/item/solar_assembly/S = locate() in src
|
||||
if(S)
|
||||
S.forceMove(loc)
|
||||
S.give_glass(stat & BROKEN)
|
||||
if(assembly)
|
||||
assembly.forceMove(loc)
|
||||
assembly.give_glass(stat & BROKEN)
|
||||
else
|
||||
playsound(src, "shatter", 70, 1)
|
||||
new /obj/item/shard(src.loc)
|
||||
new /obj/item/shard(src.loc)
|
||||
var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard
|
||||
new shard(loc)
|
||||
new shard(loc)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -131,7 +130,7 @@
|
||||
if(powernet == control.powernet)//check if the panel is still connected to the computer
|
||||
if(obscured) //get no light from the sun, so don't generate power
|
||||
return
|
||||
var/sgen = SOLARGENRATE * sunfrac
|
||||
var/sgen = SOLARGENRATE * sunfrac * efficiency
|
||||
add_avail(sgen)
|
||||
control.gen += sgen
|
||||
else //if we're no longer on the same powernet, remove from control computer
|
||||
@@ -186,19 +185,23 @@
|
||||
w_class = WEIGHT_CLASS_BULKY // Pretty big!
|
||||
anchored = FALSE
|
||||
var/tracker = 0
|
||||
var/glass_type = null
|
||||
var/obj/item/stack/sheet/glass_type
|
||||
var/static/list/allowed_sheets = typecacheof(list(/obj/item/stack/sheet/glass, /obj/item/stack/sheet/rglass,
|
||||
/obj/item/stack/sheet/plasmaglass, /obj/item/stack/sheet/plasmarglass,
|
||||
/obj/item/stack/sheet/titaniumglass, /obj/item/stack/sheet/plastitaniumglass))
|
||||
|
||||
// Give back the glass type we were supplied with
|
||||
/obj/item/solar_assembly/proc/give_glass(device_broken)
|
||||
var/atom/Tsec = drop_location()
|
||||
if(device_broken)
|
||||
new /obj/item/shard(Tsec)
|
||||
new /obj/item/shard(Tsec)
|
||||
var/shard = glass_type ? glass_type.shard_type : /obj/item/shard
|
||||
if(shard)
|
||||
new shard(Tsec)
|
||||
new shard(Tsec)
|
||||
else if(glass_type)
|
||||
new glass_type(Tsec, 2)
|
||||
glass_type.forceMove(Tsec)
|
||||
glass_type = null
|
||||
|
||||
|
||||
/obj/item/solar_assembly/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/wrench) && isturf(loc))
|
||||
if(isinspace())
|
||||
@@ -213,14 +216,16 @@
|
||||
W.play_tool_sound(src, 75)
|
||||
return 1
|
||||
|
||||
if(istype(W, /obj/item/stack/sheet/glass) || istype(W, /obj/item/stack/sheet/rglass))
|
||||
if(is_type_in_typecache(W, allowed_sheets))
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='warning'>You need to secure the assembly before you can add glass.</span>")
|
||||
return
|
||||
var/obj/item/stack/sheet/S = W
|
||||
if(S.use(2))
|
||||
glass_type = W.type
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||
var/obj/item/stack/sheet/G = S.change_stack(null, 2)
|
||||
if(G)
|
||||
glass_type = G
|
||||
G.moveToNullspace()
|
||||
playsound(loc, 'sound/machines/click.ogg', 50, 1)
|
||||
user.visible_message("[user] places the glass on the solar assembly.", "<span class='notice'>You place the glass on the solar assembly.</span>")
|
||||
if(tracker)
|
||||
new /obj/machinery/power/tracker(get_turf(src), src)
|
||||
|
||||
@@ -16,10 +16,19 @@
|
||||
var/id = 0
|
||||
var/sun_angle = 0 // sun angle as set by sun datum
|
||||
var/obj/machinery/power/solar_control/control = null
|
||||
var/obj/item/solar_assembly/assembly
|
||||
|
||||
/obj/machinery/power/tracker/Initialize(mapload, obj/item/solar_assembly/S)
|
||||
. = ..()
|
||||
Make(S)
|
||||
if(!S)
|
||||
assembly = new /obj/item/solar_assembly
|
||||
assembly.glass_type = new /obj/item/stack/sheet/glass(null, 2)
|
||||
assembly.tracker = TRUE
|
||||
assembly.anchored = TRUE
|
||||
else
|
||||
S.moveToNullspace()
|
||||
assembly = S
|
||||
update_icon()
|
||||
connect_to_network()
|
||||
|
||||
/obj/machinery/power/tracker/Destroy()
|
||||
@@ -40,15 +49,6 @@
|
||||
control.connected_tracker = null
|
||||
control = null
|
||||
|
||||
/obj/machinery/power/tracker/proc/Make(obj/item/solar_assembly/S)
|
||||
if(!S)
|
||||
S = new /obj/item/solar_assembly(src)
|
||||
S.glass_type = /obj/item/stack/sheet/glass
|
||||
S.tracker = 1
|
||||
S.anchored = TRUE
|
||||
S.forceMove(src)
|
||||
update_icon()
|
||||
|
||||
//updates the tracker icon and the facing angle for the control computer
|
||||
/obj/machinery/power/tracker/proc/set_angle(angle)
|
||||
sun_angle = angle
|
||||
@@ -77,14 +77,14 @@
|
||||
/obj/machinery/power/solar/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(disassembled)
|
||||
var/obj/item/solar_assembly/S = locate() in src
|
||||
if(S)
|
||||
S.forceMove(loc)
|
||||
S.give_glass(stat & BROKEN)
|
||||
if(assembly)
|
||||
assembly.forceMove(loc)
|
||||
assembly.give_glass(stat & BROKEN)
|
||||
else
|
||||
playsound(src, "shatter", 70, 1)
|
||||
new /obj/item/shard(src.loc)
|
||||
new /obj/item/shard(src.loc)
|
||||
var/shard = assembly?.glass_type ? assembly.glass_type.shard_type : /obj/item/shard
|
||||
new shard(loc)
|
||||
new shard(loc)
|
||||
qdel(src)
|
||||
|
||||
// Tracker Electronic
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
item_state = "combatshotgun"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
unique_reskin = list("Tatical" = "cshotgun",
|
||||
unique_reskin = list("Tactical" = "cshotgun",
|
||||
"Slick" = "cshotgun_slick"
|
||||
)
|
||||
|
||||
|
||||
@@ -53,6 +53,9 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
|
||||
var/chemical_flags // See fermi/readme.dm REAGENT_DEAD_PROCESS, REAGENT_DONOTSPLIT, REAGENT_ONLYINVERSE, REAGENT_ONMOBMERGE, REAGENT_INVISIBLE, REAGENT_FORCEONNEW, REAGENT_SNEAKYNAME
|
||||
var/value = 0 //How much does it sell for in cargo?
|
||||
|
||||
//hyperstation
|
||||
var/hydration = 0 //does this hydrate your thirst?
|
||||
|
||||
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
|
||||
. = ..()
|
||||
holder = null
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
taste_description = "alcohol"
|
||||
var/boozepwr = 65 //Higher numbers equal higher hardness, higher hardness equals more intense alcohol poisoning
|
||||
pH = 7.33
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/*
|
||||
Boozepwr Chart
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// DRINKS BELOW, Beer is up there though, along with cola. Cap'n Pete's Cuban Spiced Rum////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/datum/reagent/water/
|
||||
hydration = 10 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/orangejuice
|
||||
name = "Orange Juice"
|
||||
@@ -12,6 +14,7 @@
|
||||
glass_icon_state = "glass_orange"
|
||||
glass_name = "glass of orange juice"
|
||||
glass_desc = "Vitamins! Yay!"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
pH = 3.3
|
||||
|
||||
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M)
|
||||
@@ -28,6 +31,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of tomato juice"
|
||||
glass_desc = "Are you sure this is tomato juice?"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getFireLoss() && prob(20))
|
||||
@@ -44,6 +48,7 @@
|
||||
glass_name = "glass of lime juice"
|
||||
glass_desc = "A glass of sweet-sour lime juice."
|
||||
pH = 2.2
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
@@ -59,6 +64,7 @@
|
||||
glass_icon_state = "carrotjuice"
|
||||
glass_name = "glass of carrot juice"
|
||||
glass_desc = "It's just like a carrot but without crunching."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_blurriness(-1)
|
||||
@@ -80,6 +86,7 @@
|
||||
glass_icon_state = "berryjuice"
|
||||
glass_name = "glass of berry juice"
|
||||
glass_desc = "Berry juice. Or maybe it's jam. Who cares?"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/applejuice
|
||||
name = "Apple Juice"
|
||||
@@ -87,6 +94,7 @@
|
||||
color = "#ECFF56" // rgb: 236, 255, 86
|
||||
taste_description = "apples"
|
||||
pH = 3.2 // ~ 2.7 -> 3.7
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/poisonberryjuice
|
||||
name = "Poison Berry Juice"
|
||||
@@ -96,6 +104,7 @@
|
||||
glass_icon_state = "poisonberryjuice"
|
||||
glass_name = "glass of berry juice"
|
||||
glass_desc = "Berry juice. Or maybe it's poison. Who cares?"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustToxLoss(1, 0)
|
||||
@@ -110,6 +119,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of watermelon juice"
|
||||
glass_desc = "A glass of watermelon juice."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/lemonjuice
|
||||
name = "Lemon Juice"
|
||||
@@ -120,6 +130,7 @@
|
||||
glass_name = "glass of lemon juice"
|
||||
glass_desc = "Sour..."
|
||||
pH = 2
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/strawberryjuice
|
||||
name = "Strawberry Juice"
|
||||
@@ -128,6 +139,7 @@
|
||||
taste_description = "strawberry"
|
||||
glass_name = "glass of strawberry juice"
|
||||
glass_desc = "Refreshing seasonal summer drink."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/banana
|
||||
name = "Banana Juice"
|
||||
@@ -137,6 +149,7 @@
|
||||
glass_icon_state = "banana"
|
||||
glass_name = "glass of banana juice"
|
||||
glass_desc = "The raw essence of a banana. HONK."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M)
|
||||
if((ishuman(M) && M.job == "Clown") || ismonkey(M))
|
||||
@@ -200,6 +213,7 @@
|
||||
description = "The juice of a bunch of grapes. Guaranteed non-alcoholic."
|
||||
color = "#290029" // dark purple
|
||||
taste_description = "grape soda"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/milk
|
||||
name = "Milk"
|
||||
@@ -210,6 +224,7 @@
|
||||
glass_name = "milk drum"
|
||||
glass_desc = "White and nutritious goodness!"
|
||||
pH = 6.5
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M)
|
||||
if(HAS_TRAIT(M, TRAIT_CALCIUM_HEALER))
|
||||
@@ -231,6 +246,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of soy milk"
|
||||
glass_desc = "White and nutritious soy goodness!"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
@@ -247,6 +263,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of coconut milk"
|
||||
glass_desc = "White and nutritious goodness!"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/coconutmilk/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
@@ -262,6 +279,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of cream"
|
||||
glass_desc = "Ewwww..."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
@@ -279,6 +297,7 @@
|
||||
glass_icon_state = "glass_brown"
|
||||
glass_name = "glass of coffee"
|
||||
glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/coffee/overdose_process(mob/living/M)
|
||||
M.Jitter(5)
|
||||
@@ -304,6 +323,7 @@
|
||||
glass_icon_state = "teaglass"
|
||||
glass_name = "glass of tea"
|
||||
glass_desc = "Drinking it from here would not seem right."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
@@ -324,6 +344,7 @@
|
||||
glass_icon_state = "lemonpitcher"
|
||||
glass_name = "pitcher of lemonade"
|
||||
glass_desc = "This drink leaves you feeling nostalgic for some reason."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/tea/arnold_palmer
|
||||
name = "Arnold Palmer"
|
||||
@@ -335,6 +356,7 @@
|
||||
glass_icon_state = "arnold_palmer"
|
||||
glass_name = "Arnold Palmer"
|
||||
glass_desc = "You feel like taking a few golf swings after a few swigs of this."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(5))
|
||||
@@ -351,6 +373,7 @@
|
||||
glass_icon_state = "icedcoffeeglass"
|
||||
glass_name = "iced coffee"
|
||||
glass_desc = "A drink to perk you up and refresh you!"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -370,6 +393,7 @@
|
||||
glass_icon_state = "icedteaglass"
|
||||
glass_name = "iced tea"
|
||||
glass_desc = "All natural, antioxidant-rich flavour sensation."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
@@ -389,6 +413,7 @@
|
||||
glass_icon_state = "glass_brown"
|
||||
glass_name = "glass of Space Cola"
|
||||
glass_desc = "A glass of refreshing Space Cola."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M)
|
||||
M.drowsyness = max(0,M.drowsyness-5)
|
||||
@@ -404,6 +429,7 @@
|
||||
glass_icon_state = "nuka_colaglass"
|
||||
glass_name = "glass of Nuka Cola"
|
||||
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
@@ -448,6 +474,7 @@
|
||||
glass_icon_state = "dr_gibb_glass"
|
||||
glass_name = "glass of Dr. Gibb"
|
||||
glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M)
|
||||
M.drowsyness = max(0,M.drowsyness-6)
|
||||
@@ -462,7 +489,7 @@
|
||||
glass_icon_state = "space-up_glass"
|
||||
glass_name = "glass of Space-Up"
|
||||
glass_desc = "Space-up. It helps you keep your cool."
|
||||
|
||||
hydration = 5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -476,7 +503,7 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of lemon-lime"
|
||||
glass_desc = "You're pretty certain a real fruit has never actually touched this."
|
||||
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -490,6 +517,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of Pwr Game"
|
||||
glass_desc = "Goes well with a Vlad's salad."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -503,6 +531,7 @@
|
||||
glass_icon_state = "glass_red"
|
||||
glass_name = "glass of Shambler's juice"
|
||||
glass_desc = "Mmm mm, shambly."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -517,6 +546,7 @@
|
||||
glass_icon_state = "grey_bull_glass"
|
||||
glass_name = "glass of Grey Bull"
|
||||
glass_desc = "Surprisingly it isnt grey."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
@@ -542,6 +572,7 @@
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of soda water"
|
||||
glass_desc = "Soda water. Why not make a scotch and soda?"
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -557,6 +588,7 @@
|
||||
glass_icon_state = "glass_clear"
|
||||
glass_name = "glass of tonic water"
|
||||
glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
|
||||
hydration = 4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -575,6 +607,7 @@
|
||||
glass_icon_state = "iceglass"
|
||||
glass_name = "glass of ice"
|
||||
glass_desc = "Generally, you're supposed to put something else in there too..."
|
||||
hydration = 5 * REAGENTS_METABOLISM //ice is water dummy, just as good.
|
||||
|
||||
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -589,6 +622,7 @@
|
||||
glass_icon_state = "soy_latte"
|
||||
glass_name = "soy latte"
|
||||
glass_desc = "A nice and refreshing beverage while you're reading."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -610,6 +644,7 @@
|
||||
glass_icon_state = "cafe_latte"
|
||||
glass_name = "cafe latte"
|
||||
glass_desc = "A nice, strong and refreshing beverage while you're reading."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
@@ -631,6 +666,7 @@
|
||||
glass_icon_state = "doctorsdelightglass"
|
||||
glass_name = "Doctor's Delight"
|
||||
glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustBruteLoss(-0.5, 0)
|
||||
@@ -697,6 +733,7 @@
|
||||
glass_icon_state = "pumpkin_latte"
|
||||
glass_name = "pumpkin latte"
|
||||
glass_desc = "A mix of coffee and pumpkin juice."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/gibbfloats
|
||||
name = "Gibb Floats"
|
||||
@@ -708,12 +745,14 @@
|
||||
glass_icon_state = "gibbfloats"
|
||||
glass_name = "Gibbfloat"
|
||||
glass_desc = "Dr. Gibb with ice cream on top."
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/pumpkinjuice
|
||||
name = "Pumpkin Juice"
|
||||
description = "Juiced from real pumpkin."
|
||||
color = "#FFA500"
|
||||
taste_description = "pumpkin"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/blumpkinjuice
|
||||
name = "Blumpkin Juice"
|
||||
@@ -730,6 +769,7 @@
|
||||
glass_icon_state = "triplecitrus" //needs own sprite mine are trash
|
||||
glass_name = "glass of triple citrus"
|
||||
glass_desc = "A mixture of citrus juices. Tangy, yet smooth."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/grape_soda
|
||||
name = "Grape soda"
|
||||
@@ -738,6 +778,7 @@
|
||||
taste_description = "grape soda"
|
||||
glass_name = "glass of grape juice"
|
||||
glass_desc = "It's grape (soda)!"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -750,6 +791,7 @@
|
||||
color = "#7D4E29"
|
||||
quality = DRINK_NICE
|
||||
taste_description = "chocolate milk"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/menthol
|
||||
name = "Menthol"
|
||||
@@ -771,6 +813,7 @@
|
||||
taste_description = "sweet pomegranates"
|
||||
glass_name = "glass of grenadine"
|
||||
glass_desc = "Delicious flavored syrup."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/parsnipjuice
|
||||
name = "Parsnip Juice"
|
||||
@@ -778,6 +821,7 @@
|
||||
color = "#FFA500"
|
||||
taste_description = "parsnip"
|
||||
glass_name = "glass of parsnip juice"
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/pineapplejuice
|
||||
name = "Pineapple Juice"
|
||||
@@ -786,6 +830,7 @@
|
||||
taste_description = "pineapple"
|
||||
glass_name = "glass of pineapple juice"
|
||||
glass_desc = "Tart, tropical, and hotly debated."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink
|
||||
name = "Peach Juice"
|
||||
@@ -793,6 +838,7 @@
|
||||
color = "#E78108"
|
||||
taste_description = "peaches"
|
||||
glass_name = "glass of peach juice"
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/cream_soda
|
||||
name = "Cream Soda"
|
||||
@@ -803,6 +849,7 @@
|
||||
glass_icon_state = "cream_soda"
|
||||
glass_name = "Cream Soda"
|
||||
glass_desc = "A classic space-American vanilla flavored soft drink."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M)
|
||||
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
|
||||
@@ -844,6 +891,7 @@
|
||||
taste_description = "sweet strawberry and milk cream"
|
||||
glass_name = "tall glass of strawberry milk"
|
||||
glass_desc = "Delicious flavored strawberry syrup mixed with milk."
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/pinkmilk/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(15))
|
||||
@@ -860,6 +908,7 @@
|
||||
taste_description = "sweet tea with a hint of strawberry"
|
||||
glass_name = "mug of strawberry tea"
|
||||
glass_desc = "Delicious traditional tea flavored with strawberries."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/tea/pinktea/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(10))
|
||||
@@ -875,6 +924,7 @@
|
||||
glass_icon_state = "monkey_energy_glass"
|
||||
glass_name = "glass of Monkey Energy"
|
||||
glass_desc = "You can unleash the ape, but without the pop of the can?"
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M)
|
||||
M.Jitter(20)
|
||||
@@ -892,6 +942,7 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of bungo juice"
|
||||
glass_desc = "Exotic! You feel like you are on vacation already."
|
||||
hydration = 1 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/aloejuice
|
||||
name = "Aloe Juice"
|
||||
@@ -901,14 +952,14 @@
|
||||
glass_icon_state = "glass_yellow"
|
||||
glass_name = "glass of aloe juice"
|
||||
glass_desc = "A healthy and refreshing juice."
|
||||
hydration = 2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(30))
|
||||
if(prob(30))
|
||||
M.adjustToxLoss(-1, 0)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
// i googled "natural coagulant" and a couple of results came up for banana peels, so after precisely 30 more seconds of research, i now dub grinding banana peels good for your blood
|
||||
/datum/reagent/consumable/banana_peel
|
||||
name = "Pulped Banana Peel"
|
||||
description = "Okay, so you put a banana peel in a grinder... Why, exactly?"
|
||||
@@ -926,3 +977,20 @@
|
||||
taste_description = "bitter powder"
|
||||
glass_name = "glass of banana peel powder"
|
||||
description = "You took a banana peel... pulped it... baked it... Where are you going with this?"
|
||||
|
||||
/datum/reagent/consumable/wockyslush
|
||||
name = "Wocky Slush"
|
||||
description = "That thang bleedin' to the-... ya know I mean?"
|
||||
color = "#7b60c4" // rgb(123, 96, 196)
|
||||
quality = DRINK_VERYGOOD
|
||||
taste_description = "cold rainbows"
|
||||
glass_icon_state = "wockyslush"
|
||||
glass_name = "Wocky Slush"
|
||||
glass_desc = "That thang bleedin' to the-... ya know I mean?"
|
||||
hydration = 3 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/wockyslush/on_mob_life(mob/living/carbon/M)
|
||||
M.emote(pick("twitch","giggle","stare"))
|
||||
M.set_drugginess(75)
|
||||
M.apply_status_effect(/datum/status_effect/throat_soothed)
|
||||
..()
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M)
|
||||
current_cycle++
|
||||
M.nutrition += nutriment_factor
|
||||
M.thirst += hydration
|
||||
holder.remove_reagent(type, metabolization_rate)
|
||||
|
||||
/datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
|
||||
@@ -258,6 +258,12 @@
|
||||
glass_name = "glass of water"
|
||||
glass_desc = "The father of all refreshments."
|
||||
shot_glass_icon_state = "shotglassclear"
|
||||
hydration = 5 * REAGENTS_METABOLISM
|
||||
|
||||
//hydration
|
||||
/datum/reagent/water/on_mob_life(mob/living/carbon/M)
|
||||
M.thirst += hydration
|
||||
..()
|
||||
|
||||
/*
|
||||
* Water reaction to turf
|
||||
|
||||
@@ -336,6 +336,7 @@
|
||||
volume = 50
|
||||
amount_per_transfer_from_this = 10
|
||||
container_HP = 1
|
||||
price = 1
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/waterbottle/Initialize()
|
||||
beaker_weakness_bitflag |= TEMP_WEAK
|
||||
|
||||
@@ -251,7 +251,9 @@
|
||||
/obj/item/reagent_containers/pill/penis_enlargement
|
||||
name = "penis enlargement pill"
|
||||
list_reagents = list(/datum/reagent/fermi/penis_enlarger = 10)
|
||||
price = 4
|
||||
|
||||
/obj/item/reagent_containers/pill/breast_enlargement
|
||||
name = "breast enlargement pill"
|
||||
list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10)
|
||||
price = 4
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "amauri-stage"
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("shadowmutationtoxin" = 0.1)
|
||||
reagents_add = list(/datum/reagent/mutationtoxin/shadow = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/amauri
|
||||
seed = /obj/item/seeds/amauri
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("shadowmutationtoxin" = 0.1)
|
||||
juice_results = list(/datum/reagent/mutationtoxin/shadow = 0.1)
|
||||
tastes = list("shadow" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "gelthi-stage"
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("gold" = 0.1)
|
||||
reagents_add = list(/datum/reagent/gold = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/gelthi
|
||||
seed = /obj/item/seeds/gelthi
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("gold" = 0.1)
|
||||
juice_results = list(/datum/reagent/gold = 0.1)
|
||||
tastes = list("gold" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "jurlmah-stage"
|
||||
growthstages = 5
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("cryoxadone" = 0.1)
|
||||
reagents_add = list(/datum/reagent/medicine/cryoxadone = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/jurlmah
|
||||
seed = /obj/item/seeds/jurlmah
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("cryoxadone" = 0.1)
|
||||
juice_results = list(/datum/reagent/medicine/cryoxadone = 0.1)
|
||||
tastes = list("cold" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "nofruit-stage"
|
||||
growthstages = 4
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("nothing" = 0.1, "laughter" = 0.1)
|
||||
reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/consumable/laughter = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/nofruit
|
||||
seed = /obj/item/seeds/nofruit
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("nothing" = 0.1, "laughter" = 0.1)
|
||||
juice_results = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/consumable/laughter = 0.1)
|
||||
tastes = list("entertainment" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "shand-stage"
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("pax" = 0.1)
|
||||
reagents_add = list(/datum/reagent/pax = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/shand
|
||||
seed = /obj/item/seeds/shand
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("pax" = 0.1)
|
||||
juice_results = list(/datum/reagent/pax = 0.1)
|
||||
tastes = list("peace" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "surik-stage"
|
||||
growthstages = 4
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("frostoil" = 0.1)
|
||||
reagents_add = list(/datum/reagent/consumable/frostoil = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/surik
|
||||
seed = /obj/item/seeds/surik
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("frostoil" = 0.1)
|
||||
juice_results = list(/datum/reagent/consumable/frostoil = 0.1)
|
||||
tastes = list("snow" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "telriis-stage"
|
||||
growthstages = 4
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("podmutationtoxin" = 0.1)
|
||||
reagents_add = list(/datum/reagent/mutationtoxin/pod = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/telriis
|
||||
seed = /obj/item/seeds/telriis
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("podmutationtoxin" = 0.1)
|
||||
juice_results = list(/datum/reagent/mutationtoxin/pod = 0.1)
|
||||
tastes = list("plant" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "thaadra-stage"
|
||||
growthstages = 4
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("silver" = 0.1)
|
||||
reagents_add = list(/datum/reagent/silver = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/thaadra
|
||||
seed = /obj/item/seeds/thaadra
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("silver" = 0.1)
|
||||
juice_results = list(/datum/reagent/silver = 0.1)
|
||||
tastes = list("silver" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "vale-stage"
|
||||
growthstages = 4
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("slime_toxin" = 0.1)
|
||||
reagents_add = list(/datum/reagent/slime_toxin = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/vale
|
||||
seed = /obj/item/seeds/vale
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("slime_toxin" = 0.1)
|
||||
juice_results = list(/datum/reagent/slime_toxin = 0.1)
|
||||
tastes = list("slime" = 1)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
icon_grow = "vaporsac-stage"
|
||||
growthstages = 3
|
||||
genes = list(/datum/plant_gene/trait/repeated_harvest)
|
||||
reagents_add = list("nitrous_oxide" = 0.1)
|
||||
reagents_add = list(/datum/reagent/nitrous_oxide = 0.1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/vaporsac
|
||||
seed = /obj/item/seeds/vaporsac
|
||||
@@ -24,5 +24,5 @@
|
||||
filling_color = "#FF4500"
|
||||
bitesize = 100
|
||||
foodtype = FRUIT
|
||||
juice_results = list("nitrous_oxide" = 0.1)
|
||||
juice_results = list(/datum/reagent/nitrous_oxide = 0.1)
|
||||
tastes = list("sleep" = 1)
|
||||
|
||||
@@ -116,8 +116,8 @@
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper_s"
|
||||
short_desc = "You are a syndicate agent, employed in a top secret research facility developing biological weapons plants and toys."
|
||||
flavour_text = "Fortunately, Nanotrasen's activity in this sector of space is minimal. Continue your research as best you can, and try to keep a low profile."
|
||||
important_info = "The base is rigged with explosives, DO NOT abandon it or let it fall into enemy hands!"
|
||||
flavour_text = "Fortunately, Nanotrasen's activity in this sector of space is minimal. Continue your research as best you can, and try to keep a low profile from both Nanotrasen and Kinaris." //Making it more clear it's Nanotrasne AND Kinaris.
|
||||
important_info = "The base is rigged with explosives, DO NOT leave the base or let it fall into enemy hands!" //Changed 'abandon it' to 'leave the base', no more loopholes please, you know who you are.
|
||||
outfit = /datum/outfit/lavaland_syndicate
|
||||
assignedrole = "Lavaland Syndicate"
|
||||
mirrorcanloadappearance = TRUE
|
||||
@@ -147,7 +147,7 @@
|
||||
job_description = "Off-station Syndicate Comms Agent"
|
||||
short_desc = "You are a syndicate comms agent, employed in a top secret research facility developing biological weapons."
|
||||
flavour_text = "Fortunately, Nanotrasen's activity in this sector of space is minimal. Monitor enemy activity as best you can, and try to keep a low profile. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen or Kinaris off your trail. Do not let the base fall into enemy hands!"
|
||||
important_info = "The base is rigged with explosives, DO NOT abandon it or let it fall into enemy hands!"
|
||||
important_info = "The base is rigged with explosives, DO NOT leave the base or let it fall into enemy hands!" //Changed 'abandon it' to 'leave the base', no more loopholes please, you know who you are.
|
||||
outfit = /datum/outfit/lavaland_syndicate/comms
|
||||
mirrorcanloadappearance = TRUE
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
/datum/outfit/lavaland_syndicate/comms
|
||||
name = "Lavaland Syndicate Comms Agent"
|
||||
r_hand = /obj/item/melee/transforming/energy/sword/saber
|
||||
mask = /obj/item/clothing/mask/chameleon/gps
|
||||
mask = /obj/item/clothing/mask/chameleon/ //Replaced from /obj/item/clothing/mask/chameleon/gps because shouldn't it be stealthy?
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
|
||||
/obj/item/clothing/mask/chameleon/gps/Initialize()
|
||||
|
||||
@@ -341,6 +341,28 @@
|
||||
H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing))
|
||||
breath_gases[/datum/gas/stimulum]-=gas_breathed
|
||||
|
||||
// Pheromone
|
||||
if (breath_gases[/datum/gas/pheromone])
|
||||
var/pheromone_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/pheromone])
|
||||
if(pheromone_pp > MINIMUM_MOLES_DELTA_TO_MOVE)
|
||||
|
||||
// Miasma side effects
|
||||
switch(pheromone_pp)
|
||||
if(1 to 5)
|
||||
if(prob(5))
|
||||
to_chat(owner, "<span class='userlove'>There is an pleasant smell in the air.</span>")
|
||||
owner.adjustArousalLoss(1) //its weak
|
||||
if(5 to 15)
|
||||
if(prob(10))
|
||||
to_chat(owner, "<span class='userlove'>There is an arousing aroma in the air.</span>")
|
||||
owner.adjustArousalLoss(3) //its getting stronger...
|
||||
if(15 to INFINITY)
|
||||
if(prob(15))
|
||||
to_chat(owner, "<span class='userlove'>There is an overpowering arousing aroma in the air.</span>")
|
||||
owner.adjustArousalLoss(6) //its getting stronger...
|
||||
|
||||
breath_gases[/datum/gas/pheromone]-=gas_breathed
|
||||
|
||||
// Miasma
|
||||
if (breath_gases[/datum/gas/miasma])
|
||||
var/miasma_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/miasma])
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
/datum/language/slime,
|
||||
/datum/language/xenocommon,
|
||||
/datum/language/vampiric,
|
||||
/datum/language/tajara,
|
||||
/datum/language/spacerussian,
|
||||
))
|
||||
healing_factor = STANDARD_ORGAN_HEALING*5 //Fast!!
|
||||
decay_factor = STANDARD_ORGAN_DECAY/2
|
||||
|
||||
@@ -1181,7 +1181,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
|
||||
Due to budget cuts, the shoes don't provide protection against slipping."
|
||||
item = /obj/item/storage/box/syndie_kit/chameleon
|
||||
cost = 2
|
||||
exclude_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_tools/chameleon_proj
|
||||
name = "Chameleon Projector"
|
||||
|
||||
@@ -21,6 +21,8 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
var/product_path = null
|
||||
var/amount = 0
|
||||
var/max_amount = 0
|
||||
var/price = 0
|
||||
|
||||
|
||||
/obj/machinery/vending
|
||||
name = "\improper Vendomat"
|
||||
@@ -65,12 +67,20 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
var/scan_id = 1
|
||||
var/obj/item/coin/coin
|
||||
var/obj/item/stack/spacecash/bill
|
||||
|
||||
|
||||
var/global/vending_cache = list() //used for storing the icons of items being vended
|
||||
|
||||
var/dish_quants = list() //used by the snack machine's custom compartment to count dishes.
|
||||
|
||||
var/obj/item/vending_refill/refill_canister = null //The type of refill canisters used by this machine.
|
||||
var/obj/item/vending_refill/refill_canister = null //The type of refill canisters used by this machine
|
||||
|
||||
//hyper economy stuff
|
||||
var/credits = 0
|
||||
var/baseprice = 0
|
||||
var/menu = 1
|
||||
var/datum/bank_account/bankid
|
||||
var/datum/data/vending_product/buying
|
||||
var/free = FALSE //everythings free!
|
||||
|
||||
/obj/machinery/vending/Initialize()
|
||||
var/build_inv = FALSE
|
||||
@@ -153,9 +163,18 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
amount = 0
|
||||
|
||||
var/atom/temp = typepath
|
||||
var/obj/item/product = typepath
|
||||
var/datum/data/vending_product/R = new /datum/data/vending_product()
|
||||
R.name = initial(temp.name)
|
||||
R.product_path = typepath
|
||||
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
|
||||
@@ -228,6 +247,16 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
if(panel_open && is_wire_tool(I))
|
||||
wires.interact(user)
|
||||
return
|
||||
|
||||
|
||||
else if(istype(I, /obj/item/stack/credits))
|
||||
var/obj/item/stack/credits/cred = I
|
||||
to_chat(usr, "<span class='notice'>You insert [cred] into [src].</span>")
|
||||
credits = credits+cred.amount
|
||||
src.ui_interact(usr)
|
||||
del(cred)
|
||||
|
||||
/* we dont use this currency anymore!
|
||||
else if(istype(I, /obj/item/coin))
|
||||
if(coin)
|
||||
to_chat(user, "<span class='warning'>[src] already has [coin] inserted</span>")
|
||||
@@ -258,6 +287,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
bill = new S.type(src, 1)
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src].</span>")
|
||||
return
|
||||
*/
|
||||
else if(refill_canister && istype(I, refill_canister))
|
||||
if (!panel_open)
|
||||
to_chat(user, "<span class='notice'>You should probably unscrew the service panel first.</span>")
|
||||
@@ -320,44 +350,56 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
/obj/machinery/vending/ui_interact(mob/user)
|
||||
var/dat = ""
|
||||
|
||||
dat += "<h3>Select an item</h3>"
|
||||
dat += "<div class='statusDisplay'>"
|
||||
if(!product_records.len)
|
||||
dat += "<font color = 'red'>No product loaded!</font>"
|
||||
else
|
||||
var/list/display_records = product_records
|
||||
if(extended_inventory)
|
||||
display_records = product_records + hidden_records
|
||||
if(coin || bill)
|
||||
display_records = product_records + coin_records
|
||||
if((coin || bill) && extended_inventory)
|
||||
display_records = product_records + hidden_records + coin_records
|
||||
dat += "<table>"
|
||||
for (var/datum/data/vending_product/R in display_records)
|
||||
dat += "<tr><td><img src='data:image/jpeg;base64,[GetIconForProduct(R)]'/></td>"
|
||||
dat += "<td style=\"width: 100%\"><b>[sanitize(R.name)]</b></td>"
|
||||
if(R.amount > 0)
|
||||
dat += "<td><b>[R.amount] </b></td><td><a href='byond://?src=[REF(src)];vend=[REF(R)]'>Vend</a></td>"
|
||||
switch(menu)
|
||||
if(1)
|
||||
dat += "<h3>Select an item</h3><p>"
|
||||
if(!credits)
|
||||
dat += "<i>Inserted credits: $[credits] </i> <span class='linkOff'>remove</span>"
|
||||
else
|
||||
dat += "<td>0 </td><td><span class='linkOff'>Vend</span></td>"
|
||||
dat += "</tr>"
|
||||
dat += "</table>"
|
||||
dat += "</div>"
|
||||
if(premium.len > 0)
|
||||
dat += "<b>Change Return:</b> "
|
||||
if (coin || bill)
|
||||
dat += "[(coin ? coin : "")][(bill ? bill : "")] <a href='byond://?src=[REF(src)];remove_coin=1'>Remove</a>"
|
||||
else
|
||||
dat += "<i>No money</i> <span class='linkOff'>Remove</span>"
|
||||
if(istype(src, /obj/machinery/vending/snack))
|
||||
dat += "<h3>Chef's Food Selection</h3>"
|
||||
dat += "<div class='statusDisplay'>"
|
||||
for (var/O in dish_quants)
|
||||
if(dish_quants[O] > 0)
|
||||
var/N = dish_quants[O]
|
||||
dat += "<a href='byond://?src=[REF(src)];dispense=[sanitize(O)]'>Dispense</A> "
|
||||
dat += "<B>[capitalize(O)]: [N]</B><br>"
|
||||
dat += "</div>"
|
||||
dat += "<i>Inserted credits: $[credits] </i><a href='byond://?src=[REF(src)];removecredits=1'>remove</A>"
|
||||
|
||||
dat += "<div class='statusDisplay'>"
|
||||
if(!product_records.len)
|
||||
dat += "<font color = 'red'>No product loaded!</font>"
|
||||
else
|
||||
var/list/display_records = product_records
|
||||
if(extended_inventory) //hacking shows all inventory now since coins arent worth anything.
|
||||
display_records = product_records + hidden_records + coin_records
|
||||
else
|
||||
display_records = product_records + coin_records
|
||||
dat += "<table>"
|
||||
for (var/datum/data/vending_product/R in display_records)
|
||||
dat += "<tr><td><img src='data:image/jpeg;base64,[GetIconForProduct(R)]'/></td>"
|
||||
dat += "<td style=\"width: 10%\"><b>$[R.price]</b></td>"
|
||||
dat += "<td style=\"width: 100%\">[sanitize(R.name)]</td>"
|
||||
if(R.amount > 0)
|
||||
dat += "<td><b>[R.amount] </b></td><td><a href='byond://?src=[REF(src)];vend=[REF(R)]'>[!R.price ? "Vend" : "Buy"]</a></td>"
|
||||
else
|
||||
dat += "<td>0 </td><td><span class='linkOff'>Vend</span></td>"
|
||||
dat += "</tr>"
|
||||
dat += "</table>"
|
||||
dat += "</div>"
|
||||
|
||||
if(istype(src, /obj/machinery/vending/snack))
|
||||
dat += "<h3>Chef's Food Selection</h3>"
|
||||
dat += "<div class='statusDisplay'>"
|
||||
for (var/O in dish_quants)
|
||||
if(dish_quants[O] > 0)
|
||||
var/N = dish_quants[O]
|
||||
dat += "<a href='byond://?src=[REF(src)];dispense=[sanitize(O)]'>Dispense</A> "
|
||||
dat += "<B>[capitalize(O)]: [N]</B><br>"
|
||||
dat += "</div>"
|
||||
if(2) //hyper economy purchase item menu
|
||||
dat += "<center>"
|
||||
if(buying)
|
||||
dat += "<h3>Purchase [buying.name]</h3><p>"
|
||||
else
|
||||
dat += "<h3>Purchase Item</h3><p>"
|
||||
dat += "<i>Inserted credits: $[credits]</i><p>"
|
||||
dat += "Not enough credits to purchase, please insert credits or swipe your card to purchase!<p>"
|
||||
dat += "<a href='byond://?src=[REF(src)];idpay=1;vend=[REF(buying)]'>Pay-By-Card</a>"
|
||||
dat += "<a href='byond://?src=[REF(src)];return=1]'>Return</a>"
|
||||
dat += "</center>"
|
||||
|
||||
var/datum/browser/popup = new(user, "vending", (name))
|
||||
popup.set_content(dat)
|
||||
@@ -389,6 +431,12 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
to_chat(usr, "<span class='notice'>You remove [bill] from [src].</span>")
|
||||
bill = null
|
||||
|
||||
if(href_list["removecredits"])
|
||||
var/obj/item/stack/credits/C = new /obj/item/stack/credits/(loc)
|
||||
C.amount = credits
|
||||
credits = 0 //empty the machine
|
||||
if(usr.put_in_hands(C))
|
||||
to_chat(usr, "<span class='notice'>You take [C] out of the ATM.</span>")
|
||||
|
||||
usr.set_machine(src)
|
||||
|
||||
@@ -408,6 +456,22 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
if(href_list["idpay"])
|
||||
var/obj/item/card/id/I = usr.get_idcard(TRUE)
|
||||
if(I)
|
||||
if(I.registered_account)
|
||||
bankid = I.registered_account
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>The vending machine fails to read your bank account!</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>The vending machine fails to read your card!</span>")
|
||||
|
||||
if(href_list["return"])
|
||||
menu = 1
|
||||
vend_ready = 1
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
if((href_list["vend"]) && (vend_ready))
|
||||
if(panel_open)
|
||||
to_chat(usr, "<span class='notice'>The vending machine cannot dispense products while its service panel is open!</span>")
|
||||
@@ -421,42 +485,37 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
vend_ready = 0 //One thing at a time!!
|
||||
|
||||
var/datum/data/vending_product/R = locate(href_list["vend"])
|
||||
buying = R
|
||||
|
||||
if(!R || !istype(R) || !R.product_path)
|
||||
vend_ready = 1
|
||||
return
|
||||
|
||||
//check if they can afford it, if not open the next menu
|
||||
if(R.price > credits)
|
||||
menu = 2 //second menu
|
||||
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.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
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You do not have enough money in the bank account to purchase [R.name]!</span>")
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
else
|
||||
credits -= R.price
|
||||
menu = 1
|
||||
|
||||
if(R in hidden_records)
|
||||
if(!extended_inventory)
|
||||
vend_ready = 1
|
||||
return
|
||||
else if(R in coin_records)
|
||||
if(!(coin || bill))
|
||||
to_chat(usr, "<span class='warning'>You need to insert money to get this item!</span>")
|
||||
vend_ready = 1
|
||||
return
|
||||
if(coin && coin.string_attached)
|
||||
if(prob(50))
|
||||
if(usr.CanReach(src))
|
||||
if(usr.put_in_hands(coin))
|
||||
to_chat(usr, "<span class='notice'>You successfully pull [coin] out before [src] could swallow it.</span>")
|
||||
coin = null
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You couldn't pull [coin] out because your hands are full!</span>")
|
||||
QDEL_NULL(coin)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You successfully pull [coin] out of [src] to the floor.</span>")
|
||||
coin = null
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>You weren't able to pull [coin] out fast enough, the machine ate it, string and all!</span>")
|
||||
QDEL_NULL(coin)
|
||||
else
|
||||
QDEL_NULL(coin)
|
||||
QDEL_NULL(bill)
|
||||
|
||||
else if (!(R in product_records))
|
||||
vend_ready = 1
|
||||
message_admins("Vending machine exploit attempted by [ADMIN_LOOKUPFLW(usr)]!")
|
||||
return
|
||||
|
||||
if (R.amount <= 0)
|
||||
to_chat(usr, "<span class='warning'>Sold out.</span>")
|
||||
@@ -470,9 +529,11 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
last_reply = world.time
|
||||
|
||||
use_power(5)
|
||||
|
||||
if(icon_vend) //Show the vending animation if needed
|
||||
flick(icon_vend,src)
|
||||
var/vended = new R.product_path(get_turf(src))
|
||||
playsound(src, 'sound/items/vending.ogg', 50, 1, -1)
|
||||
if(usr.CanReach(src))
|
||||
if(usr.put_in_hands(vended))
|
||||
to_chat(usr, "<span class='notice'>You take [R.name] out of the slot.</span>")
|
||||
@@ -507,8 +568,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
speak(slogan)
|
||||
last_slogan = world.time
|
||||
|
||||
/* no freebies
|
||||
if(shoot_inventory && prob(shoot_inventory_chance))
|
||||
throw_item()
|
||||
*/
|
||||
|
||||
/obj/machinery/vending/proc/speak(message)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
|
||||
@@ -132,7 +132,10 @@
|
||||
/obj/item/clothing/suit/drfreeze_coat = 1,
|
||||
/obj/item/clothing/suit/gothcoat = 2,
|
||||
/obj/item/clothing/under/draculass = 1,
|
||||
/obj/item/clothing/under/drfreeze = 1) //End of Cit Changes
|
||||
/obj/item/clothing/under/drfreeze = 1, //End of Cit Changes
|
||||
/obj/item/clothing/under/wedding_dress = 1,
|
||||
/obj/item/clothing/under/tuxedo = 1,
|
||||
/obj/item/storage/belt/cummerbund = 1)
|
||||
refill_canister = /obj/item/vending_refill/autodrobe
|
||||
|
||||
/obj/machinery/vending/autodrobe/all_access
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
product_ads = "Drink up!;Booze is good for you!;Alcohol is humanity's best friend.;Quite delighted to serve you!;Care for a nice, cold beer?;Nothing cures you like booze!;Have a sip!;Have a drink!;Have a beer!;Beer is good for you!;Only the finest alcohol!;Best quality booze since 2053!;Award-winning wine!;Maximum alcohol!;Man loves beer.;A toast for progress!"
|
||||
req_access = list(ACCESS_BAR)
|
||||
refill_canister = /obj/item/vending_refill/boozeomat
|
||||
free = TRUE
|
||||
|
||||
/obj/machinery/vending/boozeomat/all_access
|
||||
desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one. This model appears to have no access restrictions."
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/obj/machinery/vending/cigarette
|
||||
name = "\improper ShadyCigs Deluxe"
|
||||
baseprice = 3
|
||||
desc = "If you want to get cancer, might as well do it in style."
|
||||
product_slogans = "Space cigs taste good like a cigarette should.;I'd rather toolbox than switch.;Smoke!;Don't believe the reports - smoke today!"
|
||||
product_ads = "Probably not bad for you!;Don't believe the scientists!;It's good for you!;Don't quit, buy more!;Smoke!;Nicotine heaven.;Best cigarettes since 2150.;Award-winning cigs."
|
||||
|
||||
@@ -146,6 +146,7 @@
|
||||
/obj/item/bluespace_thread = 3,
|
||||
/obj/item/clothing/under/lawyer/galaxy_blue = 3)
|
||||
refill_canister = /obj/item/vending_refill/clothing
|
||||
baseprice = 2
|
||||
|
||||
/obj/item/vending_refill/clothing
|
||||
machine_name = "ClothesMate"
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
/obj/item/seeds/pumpkin = 3,
|
||||
/obj/item/seeds/replicapod = 3,
|
||||
/obj/item/seeds/wheat/rice = 3,
|
||||
/obj/item/seeds/rose = 3,
|
||||
/obj/item/seeds/soya = 3,
|
||||
/obj/item/seeds/sugarcane = 3,
|
||||
/obj/item/seeds/sunflower = 3,
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
refill_canister = /obj/item/vending_refill/snack
|
||||
var/chef_compartment_access = "28" //ACCESS_KITCHEN
|
||||
baseprice = 3
|
||||
|
||||
|
||||
/obj/item/vending_refill/snack
|
||||
machine_name = "Getmore Chocolate Corp"
|
||||
@@ -103,11 +105,15 @@
|
||||
/obj/machinery/vending/snack/blue
|
||||
icon_state = "snackblue"
|
||||
|
||||
|
||||
/obj/machinery/vending/snack/orange
|
||||
icon_state = "snackorange"
|
||||
|
||||
|
||||
/obj/machinery/vending/snack/green
|
||||
icon_state = "snackgreen"
|
||||
|
||||
|
||||
/obj/machinery/vending/snack/teal
|
||||
icon_state = "snackteal"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user