Merge branch 'master' into plant-adding

This commit is contained in:
DragonTrance
2021-02-21 12:06:48 -07:00
committed by GitHub
246 changed files with 4270 additions and 3557 deletions
+1 -1
View File
@@ -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."}
+21
View File
@@ -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)
+1 -1
View File
@@ -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,
+24
View File
@@ -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)
+13
View File
@@ -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."
+1 -1
View File
@@ -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,
+12 -2
View File
@@ -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"]];'>&nbsp;&nbsp;&nbsp;</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")
+5 -1
View File
@@ -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.
+18
View File
@@ -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
+13 -1
View File
@@ -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"
+3
View File
@@ -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"
+1
View File
@@ -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
+1
View File
@@ -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))
+2 -1
View File
@@ -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
+1
View File
@@ -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
+60
View File
@@ -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
+29 -1
View File
@@ -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
+6 -6
View File
@@ -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
View File
@@ -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
+2 -1
View File
@@ -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
+64 -6
View File
@@ -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"
+3 -2
View File
@@ -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
+36
View File
@@ -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"
+1 -2
View File
@@ -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
+24 -5
View File
@@ -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
+17 -1
View File
@@ -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)
+1 -1
View File
@@ -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
-12
View File
@@ -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")
+23
View File
@@ -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"
+18
View File
@@ -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"
+1 -1
View File
@@ -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
+3 -1
View File
@@ -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))
+23 -2
View File
@@ -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
+4
View File
@@ -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
+1
View File
@@ -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
+9
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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 -16
View File
@@ -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)
+4 -4
View File
@@ -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()
+22
View File
@@ -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])
+2
View File
@@ -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
-1
View File
@@ -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"
+130 -67
View File
@@ -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]&nbsp;</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>&nbsp;&nbsp;<span class='linkOff'>remove</span>"
else
dat += "<td>0&nbsp;</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 : "")]&nbsp;&nbsp;<a href='byond://?src=[REF(src)];remove_coin=1'>Remove</a>"
else
dat += "<i>No money</i>&nbsp;&nbsp;<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]&nbsp;</b></td><td><a href='byond://?src=[REF(src)];vend=[REF(R)]'>[!R.price ? "Vend" : "Buy"]</a></td>"
else
dat += "<td>0&nbsp;</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))
+4 -1
View File
@@ -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
+1
View File
@@ -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
View File
@@ -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."
+1
View File
@@ -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"
+1
View File
@@ -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,
+6
View File
@@ -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"