diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index 39036252f0..68b313d9a1 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -13,7 +13,6 @@
#define GODMODE 0x1000
#define FAKEDEATH 0x2000 // Replaces stuff like changeling.changeling_fakedeath.
#define DISFIGURED 0x4000 // Set but never checked. Remove this sometime and replace occurences with the appropriate organ code
-#define XENO_HOST 0x8000 // Tracks whether we're gonna be a baby alien's mummy.
// Grab levels.
#define GRAB_PASSIVE 1
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index a50680ef8d..a4553403bc 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -148,9 +148,9 @@
if(reas)
reason = reas
if ("duration")
- var/dur = input("Duration (in minutes) during which pass is valid (up to 30 minutes).", "Duration") as num|null
+ var/dur = input("Duration (in minutes) during which pass is valid (up to 120 minutes).", "Duration") as num|null
if (dur)
- if (dur > 0 && dur <= 30)
+ if (dur > 0 && dur <= 120)
duration = dur
else
usr << "Invalid duration."
@@ -158,7 +158,7 @@
var/A = text2num(href_list["access"])
if (A in accesses)
accesses.Remove(A)
- else
+ else
if(A in giver.access) //Let's make sure the ID card actually has the access.
accesses.Add(A)
else
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 912bacb817..439d0199d7 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1047,3 +1047,24 @@
/obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)
//everything after the power cell had no amounts, I improvised. -Sayu
+/obj/machinery/vending/fitness
+ name = "SweatMAX"
+ desc = "Fueled by your inner inadequacy!"
+ icon_state = "fitness"
+ products = list(/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton = 8,
+ /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate = 8,
+ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake = 8,
+ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 8,
+ /obj/item/weapon/reagent_containers/pill/diet = 8)
+
+ prices = list(/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton = 3,
+ /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate = 3,
+ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake = 20,
+ /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 5,
+ /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 5,
+ /obj/item/weapon/reagent_containers/pill/diet = 25)
+
+ contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4)
diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm
index ede4ccf410..65ed711f2f 100644
--- a/code/game/mecha/medical/odysseus.dm
+++ b/code/game/mecha/medical/odysseus.dm
@@ -101,8 +101,6 @@
holder = patient.hud_list[STATUS_HUD]
if(patient.stat == 2)
holder.icon_state = "huddead"
- else if(patient.status_flags & XENO_HOST)
- holder.icon_state = "hudxeno"
else if(foundVirus)
holder.icon_state = "hudill"
else if(patient.has_brain_worms())
diff --git a/code/game/objects/effects/decals/posters/bs12.dm b/code/game/objects/effects/decals/posters/bs12.dm
index a727e2804c..091b8cb2c9 100644
--- a/code/game/objects/effects/decals/posters/bs12.dm
+++ b/code/game/objects/effects/decals/posters/bs12.dm
@@ -91,7 +91,7 @@
/datum/poster/bay_19
icon_state="bsposter19"
- name = "Respect a Unathi"
+ name = "Respect an Unathi"
desc = "This poster depicts a well dressed looking Unathi receiving a prestigious award. It appears to espouse greater co-operation and harmony between the two races."
/datum/poster/bay_20
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 34181486e4..1d171d9dbe 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -9,11 +9,15 @@
/obj/item/trash/raisins
name = "\improper 4no raisins"
- icon_state= "4no_raisins"
+ icon_state = "4no_raisins"
/obj/item/trash/candy
name = "candy"
- icon_state= "candy"
+ icon_state = "candy"
+
+/obj/item/trash/candy/proteinbar
+ name = "protein bar"
+ icon_state = "proteinbar"
/obj/item/trash/cheesie
name = "\improper Cheesie Honkers"
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 478272b8b2..c0469cd9f8 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -187,7 +187,8 @@
/obj/item/device/flash,
/obj/item/weapon/flame/lighter,
/obj/item/weapon/reagent_containers/food/snacks/donut/,
- /obj/item/ammo_magazine
+ /obj/item/ammo_magazine,
+ /obj/item/weapon/gun/projectile/colt/detective
)
/obj/item/weapon/storage/belt/soulstone
diff --git a/code/game/objects/items/weapons/towels.dm b/code/game/objects/items/weapons/towels.dm
new file mode 100644
index 0000000000..180ccf2af9
--- /dev/null
+++ b/code/game/objects/items/weapons/towels.dm
@@ -0,0 +1,14 @@
+/obj/item/weapon/towel
+ name = "towel"
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "towel"
+ slot_flags = SLOT_HEAD | SLOT_BELT | SLOT_OCLOTHING
+ force = 3.0
+ w_class = 3.0
+ attack_verb = list("whipped")
+ hitsound = "towelwhip"
+ desc = "A soft cotton towel."
+
+/obj/item/weapon/towel/attack_self(mob/living/user as mob)
+ user.visible_message(text("[] uses [] to towel themselves off.", user, src))
+ playsound(user, 'sound/weapons/towelwipe.ogg', 25, 1)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 23c5961b66..c7dc8f4ae1 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -910,7 +910,7 @@ proc/admin_notice(var/message, var/rights)
for(var/datum/antagonist/antag in ticker.mode.antag_templates)
if(antag.is_antagonist(M))
return 2
- else if(M.special_role)
+ if(M.special_role)
return 1
if(isrobot(character))
diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm
index 2b1c4bbb6b..c68037704e 100644
--- a/code/modules/client/preference_setup/loadout/loadout_general.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_general.dm
@@ -61,3 +61,11 @@
lunchboxes[initial(lunchbox.name)] = lunchbox_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(lunchboxes))
gear_tweaks += new/datum/gear_tweak/contents(lunchables_lunches(), lunchables_snacks(), lunchables_drinks())
+
+/datum/gear/towel
+ display_name = "towel"
+ path = /obj/item/weapon/towel
+
+/datum/gear/towel/New()
+ ..()
+ gear_tweaks = list(gear_tweak_free_color_choice)
\ No newline at end of file
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index a86f0e214f..01209c7329 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -143,7 +143,7 @@
/datum/gear/suit/roles/poncho/science
display_name = "poncho, science"
path = /obj/item/clothing/suit/poncho/roles/science
- allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobotanist")
+ allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
/datum/gear/suit/roles/poncho/cargo
display_name = "poncho, cargo"
@@ -218,7 +218,7 @@
/datum/gear/suit/wintercoat/science
display_name = "winter coat, science"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/science
- allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobotanist")
+ allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist")
/datum/gear/suit/wintercoat/engineering
display_name = "winter coat, engineering"
@@ -233,7 +233,7 @@
/datum/gear/suit/wintercoat/hydro
display_name = "winter coat, hydroponics"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/hydro
- allowed_roles = list("Botanist", "Xenobotanist")
+ allowed_roles = list("Botanist", "Xenobiologist")
/datum/gear/suit/wintercoat/cargo
display_name = "winter coat, cargo"
diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
index 1ef69de38a..a6665d0bb5 100644
--- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm
@@ -88,72 +88,72 @@
shorts[initial(short_type.name)] = short_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(shorts))
-/datum/gear/uniform/skirt/ce
+/datum/gear/uniform/job_skirt/ce
display_name = "skirt, ce"
path = /obj/item/clothing/under/rank/engineer/chief_engineer/skirt
allowed_roles = list("Chief Engineer")
-/datum/gear/uniform/skirt/atmos
+/datum/gear/uniform/job_skirt/atmos
display_name = "skirt, atmos"
path = /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt
allowed_roles = list("Chief Engineer","Atmospheric Technician")
-/datum/gear/uniform/skirt/eng
+/datum/gear/uniform/job_skirt/eng
display_name = "skirt, engineer"
path = /obj/item/clothing/under/rank/engineer/skirt
allowed_roles = list("Chief Engineer","Station Engineer")
-/datum/gear/uniform/skirt/roboticist
+/datum/gear/uniform/job_skirt/roboticist
display_name = "skirt, roboticist"
path = /obj/item/clothing/under/rank/roboticist/skirt
allowed_roles = list("Research Director","Roboticist")
-/datum/gear/uniform/skirt/cmo
+/datum/gear/uniform/job_skirt/cmo
display_name = "skirt, cmo"
path = /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt
allowed_roles = list("Chief Medical Officer")
-/datum/gear/uniform/skirt/chem
+/datum/gear/uniform/job_skirt/chem
display_name = "skirt, chemist"
path = /obj/item/clothing/under/rank/medical/chemist/skirt
allowed_roles = list("Chief Medical Officer","Chemist")
-/datum/gear/uniform/skirt/viro
+/datum/gear/uniform/job_skirt/viro
display_name = "skirt, virologist"
path = /obj/item/clothing/under/rank/medical/virologist/skirt
allowed_roles = list("Chief Medical Officer","Medical Doctor")
-/datum/gear/uniform/skirt/med
+/datum/gear/uniform/job_skirt/med
display_name = "skirt, medical"
path = /obj/item/clothing/under/rank/medical/skirt
allowed_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Psychiatrist","Paramedic")
-/datum/gear/uniform/skirt/sci
+/datum/gear/uniform/job_skirt/sci
display_name = "skirt, scientist"
path = /obj/item/clothing/under/rank/scientist/skirt
- allowed_roles = list("Research Director","Scientist")
+ allowed_roles = list("Research Director","Scientist", "Xenobiologist")
-/datum/gear/uniform/skirt/cargo
+/datum/gear/uniform/job_skirt/cargo
display_name = "skirt, cargo"
path = /obj/item/clothing/under/rank/cargotech/skirt
allowed_roles = list("Quartermaster","Cargo Technician")
-/datum/gear/uniform/skirt/qm
+/datum/gear/uniform/job_skirt/qm
display_name = "skirt, QM"
path = /obj/item/clothing/under/rank/cargo/skirt
allowed_roles = list("Quartermaster")
-/datum/gear/uniform/skirt/warden
+/datum/gear/uniform/job_skirt/warden
display_name = "skirt, warden"
path = /obj/item/clothing/under/rank/security/warden/skirt
allowed_roles = list("Head of Security", "Warden")
-/datum/gear/uniform/skirt/security
+/datum/gear/uniform/job_skirt/security
display_name = "skirt, security"
path = /obj/item/clothing/under/rank/security/skirt
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
-/datum/gear/uniform/skirt/head_of_security
+/datum/gear/uniform/job_skirt/head_of_security
display_name = "skirt, hos"
path = /obj/item/clothing/under/rank/security/head_of_security/skirt
allowed_roles = list("Head of Security")
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 8c6fd55c69..dd16651136 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -678,27 +678,16 @@
if (src.loc == usr)
switch(sensor_mode)
if(0)
- usr << "You disable your suit's remote sensing equipment."
+ usr.visible_message("[usr] adjusts their sensors.", "You disable your suit's remote sensing equipment.")
if(1)
- usr << "Your suit will now report whether you are live or dead."
+ usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report whether you are live or dead.")
if(2)
- usr << "Your suit will now report your vital lifesigns."
+ usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report your vital lifesigns.")
if(3)
- usr << "Your suit will now report your vital lifesigns as well as your coordinate position."
+ usr.visible_message("[usr] adjusts their sensors.", "Your suit will now report your vital lifesigns as well as your coordinate position.")
+
else if (istype(src.loc, /mob))
- switch(sensor_mode)
- if(0)
- for(var/mob/V in viewers(usr, 1))
- V.show_message("\red [usr] disables [src.loc]'s remote sensing equipment.", 1)
- if(1)
- for(var/mob/V in viewers(usr, 1))
- V.show_message("[usr] turns [src.loc]'s remote sensors to binary.", 1)
- if(2)
- for(var/mob/V in viewers(usr, 1))
- V.show_message("[usr] sets [src.loc]'s sensors to track vitals.", 1)
- if(3)
- for(var/mob/V in viewers(usr, 1))
- V.show_message("[usr] sets [src.loc]'s sensors to maximum.", 1)
+ usr.visible_message("[usr] adjusts [src.loc]'s sensors.", "You adjust [src.loc]'s sensors.")
/obj/item/clothing/under/verb/toggle()
set name = "Toggle Suit Sensors"
diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 26d7de9082..4d90082708 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -133,7 +133,6 @@
chest = new chest_type(src)
if(allowed)
chest.allowed = allowed
- chest.slowdown = offline_slowdown
verbs |= /obj/item/weapon/rig/proc/toggle_chest
for(var/obj/item/piece in list(gloves,helmet,boots,chest))
@@ -332,14 +331,14 @@
offline = 0
if(istype(wearer) && !wearer.wearing_rig)
wearer.wearing_rig = src
- chest.slowdown = initial(slowdown)
+ slowdown = initial(slowdown)
if(offline)
if(offline == 1)
for(var/obj/item/rig_module/module in installed_modules)
module.deactivate()
offline = 2
- chest.slowdown = offline_slowdown
+ slowdown = offline_slowdown
return
if(cell && cell.charge > 0 && electrified > 0)
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index bfcde568e9..b856f8a8bb 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -46,14 +46,14 @@
desc = "An armoured jacket with silver rank pips and livery."
icon_state = "warden_jacket"
item_state = "armor"
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
/obj/item/clothing/suit/armor/vest/warden/alt
name = "Warden's jacket"
desc = "An armoured jacket with silver rank pips and livery."
icon_state = "warden_alt"
item_state = "warden_alt"
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
+ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
/obj/item/clothing/suit/armor/riot
diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm
index c4b712c4c3..b04621bdfe 100644
--- a/code/modules/clothing/under/shorts.dm
+++ b/code/modules/clothing/under/shorts.dm
@@ -116,26 +116,31 @@
name = "khaki skirt"
desc = "A skirt that is a khaki color."
icon_state = "skirt_khaki"
+ worn_state = "skirt_khaki"
/obj/item/clothing/under/skirt/black
name = "short black skirt"
desc = "A skirt that is a shiny black."
icon_state = "skirt_short_black"
+ worn_state = "skirt_short_black"
/obj/item/clothing/under/skirt/blue
name = "short blue skirt"
desc = "A skirt that is a shiny blue."
icon_state = "skirt_short_blue"
+ worn_state = "skirt_short_blue"
/obj/item/clothing/under/skirt/red
name = "short red skirt"
desc = "A skirt that is a shiny red."
icon_state = "skirt_short_red"
+ worn_state = "skirt_short_red"
/obj/item/clothing/under/skirt/swept
name = "swept skirt"
desc = "A skirt that is swept to one side."
icon_state = "skirt_swept"
+ worn_state = "skirt_swept"
/obj/item/clothing/under/skirt/plaid_blue
name = "blue plaid skirt"
diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm
index 6887ef1fba..b279ab63d5 100644
--- a/code/modules/detectivework/tools/rag.dm
+++ b/code/modules/detectivework/tools/rag.dm
@@ -49,7 +49,7 @@
if(!on_fire && istype(W, /obj/item/weapon/flame))
var/obj/item/weapon/flame/F = W
if(F.lit)
- ignite()
+ src.ignite()
if(on_fire)
visible_message("\The [user] lights [src] with [W].")
else
@@ -151,7 +151,7 @@
/obj/item/weapon/reagent_containers/glass/rag/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature >= 50 + T0C)
- ignite()
+ src.ignite()
if(exposed_temperature >= 900 + T0C)
new /obj/effect/decal/cleanable/ash(get_turf(src))
qdel(src)
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index 69032cd5ce..6ac9483e2f 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -11,7 +11,7 @@ var/list/dreams = list(
"the quartermaster","a cargo technician","the botanist","a shaft miner","the psychologist","the chemist","the geneticist",
"the virologist","the roboticist","the chef","the bartender","the chaplain","the librarian","a mouse","an ert member",
"a beach","the holodeck","a smokey room","a voice","the cold","a mouse","an operating table","the bar","the rain","a skrell",
- "a unathi","a tajaran","the ai core","the mining station","the research station","a beaker of strange liquid",
+ "an unathi","a tajaran","the ai core","the mining station","the research station","a beaker of strange liquid",
)
mob/living/carbon/proc/dream()
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 9790559edf..0ecc6219ff 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -154,21 +154,6 @@
if(stat != CONSCIOUS) //Let's not worry about tourettes if you're not conscious.
return
- //Vision
- if(species.vision_organ)
- if(internal_organs_by_name[species.vision_organ]) // Vision organs cut out? Permablind.
- eye_blind = 0
- blinded = 0
- eye_blurry = 0
- else
- eye_blind = 1
- blinded = 1
- eye_blurry = 1
- else // Presumably if a species has no vision organs, they see via some other means.
- eye_blind = 0
- blinded = 0
- eye_blurry = 0
-
if (disabilities & EPILEPSY)
if ((prob(1) && paralysis < 1))
src << "\red You have a seizure!"
@@ -970,19 +955,18 @@
if(species.vision_organ)
vision = internal_organs_by_name[species.vision_organ]
- if(!vision) // Presumably if a species has no vision organs, they see via some other means.
+ if(!species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
eye_blind = 0
blinded = 0
eye_blurry = 0
- else if(vision.is_broken()) // Vision organs cut out or broken? Permablind.
+ else if(!vision || vision.is_broken()) // Vision organs cut out or broken? Permablind.
eye_blind = 1
blinded = 1
eye_blurry = 1
- else
- //blindness
- if(sdisabilities & BLIND) // Disabled-blind, doesn't get better on its own
+ else //You have the requisite organs
+ if(sdisabilities & BLIND) // Disabled-blind, doesn't get better on its own
blinded = 1
- else if(eye_blind) // Blindness, heals slowly over time
+ else if(eye_blind) // Blindness, heals slowly over time
eye_blind = max(eye_blind-1,0)
blinded = 1
else if(istype(glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) //resting your eyes with a blindfold heals blurry eyes faster
@@ -1584,9 +1568,6 @@
if(stat == DEAD)
holder.icon_state = "huddead"
holder2.icon_state = "huddead"
- else if(status_flags & XENO_HOST)
- holder.icon_state = "hudxeno"
- holder2.icon_state = "hudxeno"
else if(foundVirus)
holder.icon_state = "hudill"
else if(has_brain_worms())
diff --git a/code/modules/projectiles/targeting/targeting_overlay.dm b/code/modules/projectiles/targeting/targeting_overlay.dm
index b0577bdf5f..8c87751de7 100644
--- a/code/modules/projectiles/targeting/targeting_overlay.dm
+++ b/code/modules/projectiles/targeting/targeting_overlay.dm
@@ -23,7 +23,6 @@
owner = newowner
loc = null
verbs.Cut()
- toggle_permission(TARGET_CAN_RADIO)
/obj/aiming_overlay/proc/toggle_permission(var/perm)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index be96e6665a..469c34a1c1 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -548,6 +548,20 @@
cup_name = "cup of milk"
cup_desc = "White and nutritious goodness!"
+/datum/reagent/drink/milk/chocolate
+ name = "Chocolate Milk"
+ id = "chocolate_milk"
+ description = "A delicious mixture of perfectly healthy mix and terrible chocolate."
+ color = "#74533b"
+
+ glass_icon_state = "glass_brown"
+ glass_name = "glass of chocolate milk"
+ glass_desc = "Delciously fattening!"
+
+ cup_icon_state = "cup_brown"
+ cup_name = "cup of chocolate milk"
+ cup_desc = "Deliciously fattening!"
+
/datum/reagent/drink/milk/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_DIONA)
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index c934343e77..3b78dc7326 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -123,6 +123,23 @@
..()
reagents.add_reagent("soymilk", 50)
+/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton
+ name = "Small Carton of Milk"
+ volume = 30
+ icon_state = "mini-milk"
+/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/New()
+ ..()
+ reagents.add_reagent("milk", 30)
+
+/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate
+ name = "Small Carton of Chocolate Milk"
+ desc = "It's milk! This one is in delicious chocolate flavour."
+
+/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate/New()
+ ..()
+ reagents.add_reagent("chocolate_milk", 30)
+
+
/obj/item/weapon/reagent_containers/food/drinks/coffee
name = "Robust Coffee"
desc = "Careful, the beverage you're about to enjoy is extremely hot."
diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
index a9e55b26fe..712772a54b 100644
--- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm
@@ -40,7 +40,7 @@
if(!isGlass || !smash_duration)
return 0
- var/list/chance_table = list(90, 90, 85, 85, 60, 35, 15) //starting from distance 0
+ var/list/chance_table = list(100, 95, 90, 85, 75, 55, 35) //starting from distance 0
var/idx = max(distance + 1, 1) //since list indices start at 1
if(idx > chance_table.len)
return 0
diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm
index cdf495405f..b10feb2b59 100644
--- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm
@@ -133,3 +133,46 @@
name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future.
else
name = "shot glass"
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask
+ name = "fitness shaker"
+ desc = "Big enough to contain enough protein to get perfectly swole. Don't mind the bits."
+ icon_state = "fitness-cup_black"
+ volume = 100
+ matter = list("plastic" = 2000)
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/New()
+ ..()
+ icon_state = pick("fitness-cup_black", "fitness-cup_red", "fitness-cup_black")
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/on_reagent_change()
+ overlays.Cut()
+
+ if(reagents.total_volume)
+ var/image/filling = image('icons/obj/reagentfillings.dmi', src, "fitness-cup10")
+
+ switch(reagents.total_volume)
+ if(0 to 10) filling.icon_state = "fitness-cup10"
+ if(11 to 20) filling.icon_state = "fitness-cup20"
+ if(21 to 29) filling.icon_state = "fitness-cup30"
+ if(30 to 39) filling.icon_state = "fitness-cup40"
+ if(40 to 49) filling.icon_state = "fitness-cup50"
+ if(50 to 59) filling.icon_state = "fitness-cup60"
+ if(60 to 69) filling.icon_state = "fitness-cup70"
+ if(70 to 79) filling.icon_state = "fitness-cup80"
+ if(80 to 89) filling.icon_state = "fitness-cup90"
+ if(90 to INFINITY) filling.icon_state = "fitness-cup100"
+
+ filling.color += reagents.get_color()
+ overlays += filling
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake
+ name = "protein shake"
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/New()
+ ..()
+ reagents.add_reagent("nutriment", 30)
+ reagents.add_reagent("iron", 10)
+ reagents.add_reagent("protein", 15)
+ reagents.add_reagent("water", 45)
+ on_reagent_change()
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 98ce8751aa..854e6b7281 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -273,6 +273,19 @@
reagents.add_reagent("sugar", 3)
bitesize = 2
+/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar
+ name = "protein bar"
+ desc = "SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident."
+ icon_state = "proteinbar"
+ trash = /obj/item/trash/candy/proteinbar
+
+/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New()
+ ..()
+ reagents.add_reagent("nutriment", 9)
+ reagents.add_reagent("protein", 4)
+ reagents.add_reagent("sugar", 4)
+ bitesize = 6
+
/obj/item/weapon/reagent_containers/food/snacks/candy/donor
name = "Donor Candy"
desc = "A little treat for blood donors."
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 89598898f8..9e22362872 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -294,3 +294,12 @@
/obj/item/weapon/reagent_containers/pill/spaceacillin/New()
..()
reagents.add_reagent("spaceacillin", 15)
+
+/obj/item/weapon/reagent_containers/pill/diet
+ name = "diet pill"
+ desc = "Guaranteed to get you slim!"
+ icon_state = "pill9"
+
+/obj/item/weapon/reagent_containers/pill/diet/New()
+ ..()
+ reagents.add_reagent("lipozine", 2)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 7c291f1906..3c51df071e 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -344,3 +344,12 @@
reagents.add_reagent("chloralhydrate", 50)
mode = SYRINGE_INJECT
update_icon()
+
+/obj/item/weapon/reagent_containers/syringe/steroid
+ name = "Syringe (anabolic steroids)"
+ desc = "Contains drugs for muscle growth."
+
+/obj/item/weapon/reagent_containers/syringe/steroid/New()
+ ..()
+ reagents.add_reagent("adrenaline",5)
+ reagents.add_reagent("hyperzine",10)
diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm
index 822bc8da7c..b54b243609 100644
--- a/code/modules/spells/spellbook.dm
+++ b/code/modules/spells/spellbook.dm
@@ -42,8 +42,6 @@
This spell temporarly blinds a single person and does not require wizard garb.
Subjugation (30)
This spell temporarily subjugates a target's mind and does not require wizard garb.
- Mind Transfer (60)
- This spell allows the user to switch bodies with a target. Careful to not lose your memory in the process.
Forcewall (10)
This spell creates an unbreakable wall that lasts for 30 seconds and does not need wizard garb.
Blink (2)
@@ -56,8 +54,6 @@
This spell creates your ethereal form, temporarily making you invisible and able to pass through walls.
Knock (10)
This spell opens nearby doors and does not require wizard garb.
- Curse of the Horseman (15)
- This spell will curse a person to wear an unremovable horse mask (it has glue on the inside) and speak like a horse. It does not require wizard garb.
Remove Clothes Requirement Warning: this takes away 2 spell choices.