diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index 1590325df0e..15a969e7a47 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -365,7 +365,7 @@ "aha" = (/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahb" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahc" = (/obj/machinery/computer/secure_data,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) -"ahd" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/computer/med_data/laptop,/obj/item/weapon/storage/secure/safe/HoS{pixel_x = 36; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) +"ahd" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/computer/med_data/laptop,/obj/item/weapon/storage/secure/safe{pixel_x = 36; pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/hos) "ahe" = (/turf/simulated/wall,/area/security/range) "ahf" = (/obj/machinery/alarm{pixel_y = 28},/obj/structure/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/clothing/suit/armor/laserproof,/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden) "ahg" = (/obj/machinery/door/airlock/external{name = "Escape Pod Three"},/turf/simulated/floor/plating,/area/crew_quarters/fitness{name = "\improper Recreation Area"}) diff --git a/_maps/map_files/RandomZLevels/spacehotel.dmm b/_maps/map_files/RandomZLevels/spacehotel.dmm index 6a368e05b16..c09808a51f8 100644 --- a/_maps/map_files/RandomZLevels/spacehotel.dmm +++ b/_maps/map_files/RandomZLevels/spacehotel.dmm @@ -523,7 +523,7 @@ "kc" = (/obj/machinery/door/airlock{name = "Supply Closet"},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "kd" = (/obj/machinery/door/airlock/glass{name = "Gateway"},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "ke" = (/obj/item/weapon/melee/cultblade,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel) -"kf" = (/obj/item/weapon/kitchen/knife/butcher{blood_DNA = 1e+009},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel) +"kf" = (/obj/item/weapon/kitchen/knife/butcher{blood_DNA = list("1e+009" = "O-")},/obj/effect/decal/cleanable/blood/old,/turf/unsimulated/floor{name = "engraved floor"; icon_state = "cult"},/area/awaymission/spacehotel) "kg" = (/obj/machinery/light{dir = 8},/obj/structure/stool/bed/chair/sofa/left{icon_state = "sofaend_left"; dir = 4},/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "kh" = (/obj/effect/hotel_controller,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel) "ki" = (/obj/item/weapon/pen,/obj/structure/table/reinforced,/turf/unsimulated/floor/carpet,/area/awaymission/spacehotel/reception) diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm index 8ce7b1ce0ba..b6c5d55e5a9 100644 --- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm +++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm @@ -2,77 +2,84 @@ //node2, air2, network2 correspond to output /obj/machinery/atmospherics/binary/circulator name = "circulator/heat exchanger" - desc = "A gas circulator pump and heat exchanger." - icon = 'icons/obj/pipes.dmi' - icon_state = "circ-off" - anchored = 0 - density = 1 + desc = "A gas circulator pump and heat exchanger. Its input port is on the south side, and its output port is on the north side." + icon = 'icons/obj/atmospherics/circulator.dmi' + icon_state = "circ1-off" + + var/side = CIRC_LEFT + + var/global/const/CIRC_LEFT = WEST + var/global/const/CIRC_RIGHT = EAST - var/recent_moles_transferred = 0 - var/last_heat_capacity = 0 - var/last_temperature = 0 var/last_pressure_delta = 0 - var/last_worldtime_transfer = 0 + + var/obj/machinery/power/generator/generator -/obj/machinery/atmospherics/binary/circulator/New() - ..() - desc = initial(desc) + " Its outlet port is to the [dir2text(dir)]." + layer = 2.45 // Just above wires + + anchored = 1 + density = 1 + + can_unwrench = 1 + +// Creating a custom circulator pipe subtype to be delivered through cargo +/obj/item/pipe/circulator + name = "circulator/heat exchanger fitting" + +/obj/item/pipe/circulator/New(loc) + var/obj/machinery/atmospherics/binary/circulator/C = new /obj/machinery/atmospherics/binary/circulator(null) + ..(loc, make_from = C) + +/obj/machinery/atmospherics/binary/circulator/Destroy() + if(generator && generator.cold_circ == src) + generator.cold_circ = null + else if(generator && generator.hot_circ == src) + generator.hot_circ = null + return ..() /obj/machinery/atmospherics/binary/circulator/proc/return_transfer_air() - var/datum/gas_mixture/removed - if(anchored && !(stat & BROKEN)) - var/input_starting_pressure = air1.return_pressure() - var/output_starting_pressure = air2.return_pressure() - last_pressure_delta = max(input_starting_pressure - output_starting_pressure + 10, 0) + var/output_starting_pressure = air1.return_pressure() + var/input_starting_pressure = air2.return_pressure() - //only circulate air if there is a pressure difference (plus 10 kPa to represent friction in the machine) - if(air1.temperature > 0 && last_pressure_delta > 0) + if(output_starting_pressure >= input_starting_pressure - 10) + //Need at least 10 KPa difference to overcome friction in the mechanism + last_pressure_delta = 0 + return null - //Calculate necessary moles to transfer using PV = nRT - recent_moles_transferred = last_pressure_delta*air2.volume/(air1.temperature * R_IDEAL_GAS_EQUATION) + //Calculate necessary moles to transfer using PV = nRT + if(air2.temperature > 0) + var/pressure_delta = (input_starting_pressure - output_starting_pressure) / 2 - //Actually transfer the gas - removed = air1.remove(recent_moles_transferred) - if(removed) - last_heat_capacity = removed.heat_capacity() - last_temperature = removed.temperature + var/transfer_moles = pressure_delta * air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION) - //Update the gas networks. - parent1.update = 1 + last_pressure_delta = pressure_delta - last_worldtime_transfer = world.time - else - recent_moles_transferred = 0 + //log_debug("pressure_delta = [pressure_delta]; transfer_moles = [transfer_moles];") + + //Actually transfer the gas + var/datum/gas_mixture/removed = air2.remove(transfer_moles) + + parent1.update = 1 + parent2.update = 1 - update_icon() return removed + else + last_pressure_delta = 0 + /obj/machinery/atmospherics/binary/circulator/process() - if(!..()) - return 0 - if(last_worldtime_transfer < world.time - 50) - recent_moles_transferred = 0 - update_icon() + ..() + update_icon() /obj/machinery/atmospherics/binary/circulator/update_icon() - if(stat & (BROKEN|NOPOWER) || !anchored) - icon_state = "circ-p" - else if(last_pressure_delta > 0 && recent_moles_transferred > 0) - if(last_pressure_delta > 5*ONE_ATMOSPHERE) - icon_state = "circ-run" + if(stat & (BROKEN|NOPOWER)) + icon_state = "circ[side]-p" + else if(last_pressure_delta > 0) + if(last_pressure_delta > ONE_ATMOSPHERE) + icon_state = "circ[side]-run" else - icon_state = "circ-slow" + icon_state = "circ[side]-slow" else - icon_state = "circ-off" + icon_state = "circ[side]-off" - return 1 - -/obj/machinery/atmospherics/binary/circulator/attackby(var/obj/item/W as obj, var/mob/user as mob, params) - if(istype(W, /obj/item/weapon/wrench)) - var/turf/T = get_turf(src) - if(!istype(T, /turf/simulated)) - return ..() - anchored = !anchored - to_chat(user, "You [(anchored) ? "fasten" : "loosen"] \the [src] to the floor") - playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) - else return ..() + return 1 \ No newline at end of file diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 114588009ed..986cbac0bd3 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -85,3 +85,18 @@ var/gaussian_next gaussian_next = R2 * working return (mean + stddev * R1) #undef ACCURACY + + + +// oof, what a mouthful +// Used in status_procs' "adjust" to let them modify a status effect by a given +// amount, without inadverdently increasing it in the wrong direction +/proc/directional_bounded_sum(orig_val, modifier, bound_lower, bound_upper) + var/new_val = orig_val + modifier + if(modifier > 0) + if(new_val > bound_upper) + new_val = max(orig_val, bound_upper) + else if(modifier < 0) + if(new_val < bound_lower) + new_val = min(orig_val, bound_lower) + return new_val diff --git a/code/_globalvars/mapping.dm b/code/_globalvars/mapping.dm index 44b678a8f67..ae26485208b 100644 --- a/code/_globalvars/mapping.dm +++ b/code/_globalvars/mapping.dm @@ -18,7 +18,6 @@ var/global/list/global_map = null //3 - AI satellite //5 - empty space -var/list/monkeystart = list() var/list/wizardstart = list() var/list/newplayer_start = list() var/list/latejoin = list() @@ -26,10 +25,9 @@ var/list/latejoin_gateway = list() var/list/latejoin_cryo = list() var/list/latejoin_cyborg = list() var/list/prisonwarp = list() //prisoners go to these -var/list/holdingfacility = list() //captured people go here var/list/xeno_spawn = list()//Aliens spawn at these. var/list/ertdirector = list() -// list/mazewarp = list() +var/list/emergencyresponseteamspawn = list() var/list/tdome1 = list() var/list/tdome2 = list() var/list/team_alpha = list() diff --git a/code/_globalvars/unused.dm b/code/_globalvars/unused.dm index d3945b68eab..e55794c3dc9 100644 --- a/code/_globalvars/unused.dm +++ b/code/_globalvars/unused.dm @@ -31,10 +31,4 @@ var/endicon = null var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null var/going = 1.0 var/datum/engine_eject/engine_eject_control = null -// list/traitors = list() //traitor list -// list/traitobj = list( ) -var/airtunnel_start = 68 // default -var/airtunnel_stop = 68 // default -var/airtunnel_bottom = 72 // default -// reverse_dir[dir] = reverse of dir diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index a476fbc78d5..66377ec3fcd 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -62,7 +62,7 @@ CtrlClickOn(A) return - if(stat || paralysis || stunned || weakened) + if(incapacitated(ignore_restraints = 1, ignore_grab = 1, ignore_lying = 1)) return face_atom(A) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 1f60c26f885..a15176af87c 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -39,7 +39,7 @@ CtrlClickOn(A) return - if(stat || lockcharge || weakened || stunned || paralysis) + if(incapacitated()) return if(next_move >= world.time) diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm index 8f388c45edc..9e806b24f41 100644 --- a/code/datums/diseases/advance/symptoms/confusion.dm +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -35,6 +35,6 @@ Bonus to_chat(M, "[pick("Your head hurts.", "Your mind blanks for a moment.")]") else to_chat(M, "You can't think straight!") - M.confused = min(100, M.confused + 8) + M.AdjustConfused(8, bound_lower = 0, bound_upper = 100) return diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm index 6c65e330fa8..1a9bba6961e 100644 --- a/code/datums/diseases/advance/symptoms/deafness.dm +++ b/code/datums/diseases/advance/symptoms/deafness.dm @@ -33,11 +33,11 @@ Bonus if(3, 4) to_chat(M, "[pick("You hear a ringing in your ear.", "Your ears pop.")]") if(5) - if(!(M.ear_deaf)) + if(!(M.disabilities & DEAF)) to_chat(M, "Your ears pop and begin ringing loudly!") - M.setEarDamage(-1,INFINITY) //Shall be enough + M.BecomeDeaf() spawn(200) if(M) to_chat(M, "The ringing in your ears fades...") - M.setEarDamage(-1,0) - return \ No newline at end of file + M.CureDeaf() + return diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm index cac8b4d2e03..e117dbf51f8 100644 --- a/code/datums/diseases/advance/symptoms/hallucigen.dm +++ b/code/datums/diseases/advance/symptoms/hallucigen.dm @@ -36,6 +36,6 @@ Bonus to_chat(M, "[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]") else to_chat(M, "[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]") - M.hallucination += 5 + M.AdjustHallucinate(5) return diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm index 150b7483aaa..4d9716e44da 100644 --- a/code/datums/diseases/anxiety.dm +++ b/code/datums/diseases/anxiety.dm @@ -24,18 +24,18 @@ to_chat(affected_mob, "You feel panicky.") if(prob(2)) to_chat(affected_mob, "You're overtaken with panic!") - affected_mob.confused += (rand(2,3)) + affected_mob.AdjustConfused(rand(2,3)) if(4) if(prob(10)) to_chat(affected_mob, "You feel butterflies in your stomach.") if(prob(5)) affected_mob.visible_message("[affected_mob] stumbles around in a panic.", \ "You have a panic attack!") - affected_mob.confused += (rand(6,8)) - affected_mob.jitteriness += (rand(6,8)) + affected_mob.AdjustConfused(rand(6,8)) + affected_mob.AdjustJitter(rand(6,8)) if(prob(2)) affected_mob.visible_message("[affected_mob] coughs up butterflies!", \ "You cough up butterflies!") new /mob/living/simple_animal/butterfly(affected_mob.loc) new /mob/living/simple_animal/butterfly(affected_mob.loc) - return \ No newline at end of file + return diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 7f04eb5fc56..e3482955865 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -106,7 +106,7 @@ if(3) if(prob(4)) to_chat(affected_mob, "You feel a stabbing pain in your head.") - affected_mob.confused += 10 + affected_mob.AdjustConfused(10) if(4) if(prob(3)) affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh.")) @@ -241,4 +241,4 @@ stage3 = list("Your appendages are melting away.", "Your limbs begin to lose their shape.") stage4 = list("You're ravenous.") stage5 = list("You have become a morph.") - new_form = /mob/living/simple_animal/hostile/morph \ No newline at end of file + new_form = /mob/living/simple_animal/hostile/morph diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 11c06e386c5..4cd027a7d7d 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -44,7 +44,7 @@ affected_mob.AdjustSleeping(5) if(prob(2)) to_chat(affected_mob, "You feel your mind relax and your thoughts drift!") - affected_mob.confused = min(100, affected_mob.confused + 8) + affected_mob.AdjustConfused(8, bound_lower = 0, bound_upper = 100) if(prob(10)) affected_mob.vomit(20) if(prob(3)) @@ -55,4 +55,3 @@ to_chat(affected_mob, "[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]") affected_mob.bodytemperature += 40 return - diff --git a/code/datums/diseases/vampire.dm b/code/datums/diseases/vampire.dm index dbcc9bbb3c0..16706087673 100644 --- a/code/datums/diseases/vampire.dm +++ b/code/datums/diseases/vampire.dm @@ -20,15 +20,15 @@ if(prob(10)) affected_mob.emote(pick("cough","groan", "gasp")) - affected_mob.losebreath++ + affected_mob.AdjustLoseBreath(1) if(prob(15)) if(prob(33)) to_chat(affected_mob, "You feel sickly and weak.") - affected_mob.slowed += 3 + affected_mob.AdjustSlowed(3) affected_mob.adjustToxLoss(toxdamage) if(prob(5)) to_chat(affected_mob, "Your joints ache horribly!") affected_mob.Weaken(stuntime) - affected_mob.Stun(stuntime) \ No newline at end of file + affected_mob.Stun(stuntime) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 645af5e8aea..2e953f3ec91 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -42,7 +42,7 @@ var/byproduct // example: = /obj/item/weapon/kitchen/mould // byproduct to return, such as a mould or trash -/datum/recipe/proc/check_reagents(var/datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous +/datum/recipe/proc/check_reagents(datum/reagents/avail_reagents) //1=precisely, 0=insufficiently, -1=superfluous . = 1 for(var/r_r in reagents) var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r) @@ -55,7 +55,7 @@ return -1 return . -/datum/recipe/proc/check_fruit(var/obj/container) +/datum/recipe/proc/check_fruit(obj/container) . = 1 if(fruit && fruit.len) var/list/checklist = list() @@ -74,7 +74,7 @@ break return . -/datum/recipe/proc/check_items(var/obj/container as obj) +/datum/recipe/proc/check_items(obj/container) . = 1 if(items && items.len) var/list/checklist = list() @@ -96,7 +96,7 @@ return . //general version -/datum/recipe/proc/make(var/obj/container as obj) +/datum/recipe/proc/make(obj/container) var/obj/result_obj = new result(container) for(var/obj/O in (container.contents-result_obj)) O.reagents.trans_to(result_obj, O.reagents.total_volume) @@ -106,7 +106,7 @@ return result_obj // food-related -/datum/recipe/proc/make_food(var/obj/container as obj) +/datum/recipe/proc/make_food(obj/container) var/obj/result_obj = new result(container) for(var/obj/O in (container.contents-result_obj)) if(O.reagents) @@ -118,7 +118,7 @@ score_meals++ return result_obj -/proc/select_recipe(var/list/datum/recipe/avaiable_recipes, var/obj/obj as obj, var/exact = 1 as num) +/proc/select_recipe(list/datum/recipe/avaiable_recipes, obj/obj, exact = 1) if(!exact) exact = -1 var/list/datum/recipe/possible_recipes = new diff --git a/code/datums/spells/cluwne.dm b/code/datums/spells/cluwne.dm index d4d3b383f9d..fe0e02bda6d 100644 --- a/code/datums/spells/cluwne.dm +++ b/code/datums/spells/cluwne.dm @@ -16,7 +16,7 @@ adjustBrainLoss(80) nutrition = 9000 overeatduration = 9000 - confused = 30 + Confused(30) if(mind) mind.assigned_role = "Cluwne" @@ -44,8 +44,8 @@ adjustBrainLoss(-120) nutrition = NUTRITION_LEVEL_STARVING overeatduration = 0 - confused = 0 - jitteriness = 0 + SetConfused(0) + SetJitter(0) if(mind) mind.assigned_role = "Lawyer" diff --git a/code/datums/spells/inflict_handler.dm b/code/datums/spells/inflict_handler.dm index 9ddac0b0920..1eed65bbed4 100644 --- a/code/datums/spells/inflict_handler.dm +++ b/code/datums/spells/inflict_handler.dm @@ -50,8 +50,8 @@ target.Paralyse(amt_paralysis) target.Stun(amt_stunned) - target.eye_blind += amt_eye_blind - target.eye_blurry += amt_eye_blurry + target.AdjustEyeBlind(amt_eye_blind) + target.AdjustEyeBlurry(amt_eye_blurry) //summoning if(summon_type) - new summon_type(target.loc, target) \ No newline at end of file + new summon_type(target.loc, target) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 73c653369eb..7a8f05e08fc 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -581,7 +581,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/head/helmet/space, /obj/item/clothing/head/helmet/space, /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath,) + /obj/item/clothing/mask/breath) cost = 30 containertype = /obj/structure/closet/crate/secure containername = "space suit crate" @@ -607,9 +607,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "Thermo-Electric Generator Crate" contains = list( /obj/machinery/power/generator, - /obj/machinery/atmospherics/binary/circulator, - /obj/machinery/atmospherics/binary/circulator - ) + /obj/item/pipe/circulator, + /obj/item/pipe/circulator) cost = 25 containertype = /obj/structure/closet/crate/secure containername = "thermo-electric generator crate" diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 31e5903c247..b22718006e4 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -96,7 +96,7 @@ for(var/obj/item/device/radio/R in global_radios) receivers |= R.send_announcement() for(var/mob/M in receivers) - if(!istype(M) || !M.client || M.stat || isdeaf(M)) + if(!istype(M) || !M.client || M.stat || !M.can_hear()) receivers -= M continue if(!M.say_understands(null, message_language)) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 40814a72c78..63c42687b67 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -144,7 +144,7 @@ if(usr.stat != 0) return - if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other + if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other return if(!ishuman(usr)) //Make sure they're a mob that has dna to_chat(usr, "Try as you might, you can not climb up into the [src].") @@ -169,7 +169,7 @@ return if(O.loc == user) //no you can't pull things out of your ass return - if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other + if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other return if(O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source return @@ -973,4 +973,4 @@ return 1 -/////////////////////////// DNA MACHINES \ No newline at end of file +/////////////////////////// DNA MACHINES diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm index a30d160fd92..4cfa6f45750 100644 --- a/code/game/dna/genes/disabilities.dm +++ b/code/game/dna/genes/disabilities.dm @@ -24,7 +24,7 @@ /datum/dna/gene/disability/can_activate(var/mob/M,var/flags) return 1 // Always set! -/datum/dna/gene/disability/activate(var/mob/M, var/connected, var/flags) +/datum/dna/gene/disability/activate(var/mob/living/M, var/connected, var/flags) ..() if(mutation && !(mutation in M.mutations)) M.mutations.Add(mutation) @@ -35,7 +35,7 @@ else testing("[name] has no activation message.") -/datum/dna/gene/disability/deactivate(var/mob/M, var/connected, var/flags) +/datum/dna/gene/disability/deactivate(var/mob/living/M, var/connected, var/flags) ..() if(mutation && (mutation in M.mutations)) M.mutations.Remove(mutation) @@ -127,7 +127,7 @@ /datum/dna/gene/disability/deaf/activate(var/mob/M, var/connected, var/flags) ..(M,connected,flags) - M.ear_deaf = 1 + M.EarDeaf(1) /datum/dna/gene/disability/nearsighted name="Nearsightedness" diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headcrab.dm index 07ae44d9a9a..4adbc39e7fc 100644 --- a/code/game/gamemodes/changeling/powers/headcrab.dm +++ b/code/game/gamemodes/changeling/powers/headcrab.dm @@ -17,11 +17,11 @@ for(var/mob/living/carbon/human/H in range(2,user)) to_chat(H, "You are blinded by a shower of blood!") H.Stun(1) - H.eye_blurry = max(20, H.eye_blurry) + H.EyeBlurry(20) var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) if(istype(E)) E.damage = max(E.damage+5, 0) - H.confused += 3 + H.AdjustConfused(3) for(var/mob/living/silicon/S in range(2,user)) to_chat(S, "Your sensors are disabled by a shower of blood!") S.Weaken(3) @@ -37,4 +37,4 @@ to_chat(crab, "You burst out of the remains of your former body in a shower of gore!") user.gib() feedback_add_details("changeling_powers","LR") - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index b6692817650..2585287528c 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -17,10 +17,14 @@ user.SetStunned(0) user.SetWeakened(0) user.radiation = 0 - user.eye_blind = 0 - user.eye_blurry = 0 - user.setEarDamage(0,0) + user.SetEyeBlind(0) + user.SetEyeBlurry(0) + user.SetEarDamage(0) + user.SetEarDeaf(0) user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss()) + user.CureBlind() + user.CureDeaf() + user.CureNearsighted() user.reagents.clear_reagents() user.germ_level = 0 user.next_pain_time = 0 diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 7babc2a5a62..5185b61e508 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/game/gamemodes/changeling/powers/shriek.dm @@ -11,8 +11,8 @@ for(var/mob/living/M in get_mobs_in_view(4, user)) if(iscarbon(M)) if(!M.mind || !M.mind.changeling) - M.adjustEarDamage(0, 30) - M.confused += 20 + M.AdjustEarDeaf(30) + M.AdjustConfused(20) M.Jitter(50) else M << sound('sound/effects/screech.ogg') @@ -41,5 +41,3 @@ L.broken() empulse(get_turf(user), 2, 4, 1) return 1 - - diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index f4aa6f3d8f2..0df371009a8 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -153,7 +153,7 @@ obj/effect/proc_holder/changeling/sting/mute /obj/effect/proc_holder/changeling/sting/mute/sting_action(var/mob/user, var/mob/living/carbon/target) add_logs(user, target, "stung", object="mute sting") - target.silent += 30 + target.AdjustSilence(30) feedback_add_details("changeling_powers","MS") return 1 @@ -165,12 +165,12 @@ obj/effect/proc_holder/changeling/sting/blind chemical_cost = 25 dna_cost = 1 -/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/user, var/mob/target) +/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/living/user, var/mob/living/target) add_logs(user, target, "stung", object="blind sting") to_chat(target, "Your eyes burn horrifically!") - target.disabilities |= NEARSIGHTED - target.eye_blind = 20 - target.eye_blurry = 40 + target.BecomeNearsighted() + target.EyeBlind(20) + target.EyeBlurry(40) feedback_add_details("changeling_powers","BS") return 1 @@ -186,7 +186,7 @@ obj/effect/proc_holder/changeling/sting/LSD add_logs(user, target, "stung", object="LSD sting") spawn(rand(300,600)) if(target) - target.hallucination = max(400, target.hallucination) + target.Hallucinate(400) feedback_add_details("changeling_powers","HS") return 1 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index ca96b4f869f..20133d972c8 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -840,7 +840,7 @@ var/list/sacrificed = list() var/obj/item/weapon/nullrod/N = locate() in C if(N) continue - C.adjustEarDamage(0,50) + C.AdjustEarDeaf(50) C.show_message("\red The world around you suddenly becomes quiet.", 3) affected++ if(prob(1)) @@ -859,7 +859,7 @@ var/list/sacrificed = list() var/obj/item/weapon/nullrod/N = locate() in C if(N) continue - C.adjustEarDamage(0,30) + C.AdjustEarDeaf(30) //talismans is weaker. C.show_message("\red The world around you suddenly becomes quiet.", 3) affected++ @@ -880,12 +880,12 @@ var/list/sacrificed = list() var/obj/item/weapon/nullrod/N = locate() in C if(N) continue - C.eye_blurry += 50 - C.eye_blind += 20 + C.AdjustEyeBlurry(50) + C.AdjustEyeBlind(20) if(prob(5)) - C.disabilities |= NEARSIGHTED + C.BecomeNearsighted() if(prob(10)) - C.disabilities |= BLIND + C.BecomeBlind() C.show_message("\red Suddenly you see red flash that blinds you.", 3) affected++ if(affected) @@ -902,8 +902,8 @@ var/list/sacrificed = list() var/obj/item/weapon/nullrod/N = locate() in C if(N) continue - C.eye_blurry += 30 - C.eye_blind += 10 + C.AdjustEyeBlurry(30) + C.AdjustEyeBlind(10) //talismans is weaker. affected++ C.show_message("\red You feel a sharp pain in your eyes, and the world disappears into darkness..", 3) @@ -1016,7 +1016,7 @@ var/list/sacrificed = list() var/mob/living/carbon/C = T C.flash_eyes() if(!(HULK in C.mutations)) - C.silent += 15 + C.AdjustSilence(15) C.Weaken(10) C.Stun(10) return diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 4d98876ccd6..29f217b44bc 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -466,7 +466,7 @@ Congratulations! You are now trained for xenobiology research!"} L.Sleeping(60) add_logs(user, L, "put to sleep") else - L.drowsyness += 1 + L.AdjustDrowsy(1) to_chat(user, "Sleep inducement works fully only on stunned specimens! ") L.visible_message("[user] tried to induce sleep in [L] with [src]!", \ "You suddenly feel drowsy!") diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 8a3fbd8ff60..b59f1fd8454 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -98,7 +98,7 @@ if(H == owner) continue to_chat(H, "You hear a buzz in your head.") - H.confused += 20 + H.AdjustConfused(20) /obj/item/organ/internal/gland/pop origin_tech = "materials=4;biotech=6;abductor=3" diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index 26fb00b42a8..0f9173c31ea 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -253,7 +253,7 @@ to_chat(human, "You suddenly feel [pick("sick and tired", "tired and confused", "nauseated", "dizzy")].") human.adjustStaminaLoss(stamdamage) human.adjustToxLoss(toxdamage) - human.confused = min(human.confused+confusion, maxconfusion) + human.AdjustConfused(confusion, bound_lower = 0, bound_upper = maxconfusion) new/obj/effect/overlay/temp/revenant(human.loc) if(!istype(T, /turf/simulated/shuttle) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15)) new/obj/effect/overlay/temp/revenant(T) @@ -317,4 +317,4 @@ playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) new/obj/effect/overlay/temp/revenant(S.loc) S.spark_system.start() - S.emp_act(1) \ No newline at end of file + S.emp_act(1) diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 25ad0d234da..43892b6c474 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -150,16 +150,6 @@ proc/issyndicate(mob/living/M as mob) var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black - var/hair_style = "Bald" - var/facial_hair_style = "Shaved" - if(M.gender == MALE) - hair_style = pick(hair_styles_male_list) - facial_hair_style = pick(facial_hair_styles_list) - else - hair_style = pick(hair_styles_female_list) - if(prob(5)) - facial_hair_style = pick(facial_hair_styles_list) - head_organ.r_facial = color2R(hair_c) head_organ.g_facial = color2G(hair_c) head_organ.b_facial = color2B(hair_c) @@ -168,9 +158,11 @@ proc/issyndicate(mob/living/M as mob) head_organ.b_hair = color2B(hair_c) M.change_eye_color(color2R(eye_c), color2G(eye_c), color2B(eye_c)) M.s_tone = skin_tone - head_organ.h_style = hair_style - head_organ.f_style = facial_hair_style + head_organ.h_style = random_hair_style(M.gender, head_organ.species.name) + head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name) M.body_accessory = null + M.regenerate_icons() + M.update_body() /datum/game_mode/proc/prepare_syndicate_leader(var/datum/mind/synd_mind, var/nuke_code) var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 83846818091..461fe0e4ca7 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -241,7 +241,7 @@ revolutionaries += rev_mind if(iscarbon(rev_mind.current)) var/mob/living/carbon/carbon_mob = rev_mind.current - carbon_mob.silent = max(carbon_mob.silent, 5) + carbon_mob.Silence(5) carbon_mob.flash_eyes(1, 1) rev_mind.current.Stun(5) to_chat(rev_mind.current, " You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!") diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 32ac14916d0..8c67e8a807d 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -46,7 +46,7 @@ else //Only alludes to the shadowling if the target is close by to_chat(target, "Red lights suddenly dance in your vision, and you are mesmerized by the heavenly lights...") target.Stun(10) - M.silent += 10 + M.AdjustSilence(10) /obj/effect/proc_holder/spell/targeted/lesser_glare @@ -79,7 +79,7 @@ else to_chat(target, "Red lights suddenly dance in your vision, and you are mesmerized by their heavenly beauty...") target.Stun(3) //Roughly 30% as long as the normal one - M.silent += 3 + M.AdjustSilence(3) /obj/effect/proc_holder/spell/aoe_turf/veil @@ -519,7 +519,7 @@ /datum/reagent/shadowling_blindness_smoke/on_mob_life(mob/living/M) if(!is_shadow_or_thrall(M)) to_chat(M, "You breathe in the black smoke, and your eyes burn horribly!") - M.eye_blind = 5 + M.EyeBlind(5) if(prob(25)) M.visible_message("[M] claws at their eyes!") M.Stun(3) @@ -556,8 +556,8 @@ if(iscarbon(target)) var/mob/living/carbon/M = target to_chat(M, "A spike of pain drives into your head and scrambles your thoughts!") - M.confused += 10 - M.setEarDamage(M.ear_damage + 3) + M.AdjustConfused(10) + M.AdjustEarDamage(3) else if(issilicon(target)) var/mob/living/silicon/S = target to_chat(S, "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#") diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index f8e1575efc1..92a1a3dfa19 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -259,8 +259,8 @@ continue to_chat(C, "You hear a ear piercing shriek and your senses dull!") C.Weaken(4) - C.adjustEarDamage(0,20) - C.stuttering = 20 + C.AdjustEarDeaf(20) + C.Stuttering(20) C.Stun(4) C.Jitter(150) for(var/obj/structure/window/W in view(4)) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 34886dde2e0..689fb350b0d 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -782,7 +782,7 @@ var/global/list/multiverse = list() else if(istype(I,/obj/item/weapon/bikehorn)) to_chat(target, "HONK") target << 'sound/items/AirHorn.ogg' - target.adjustEarDamage(0,3) + target.AdjustEarDeaf(3) GiveHint(target) cooldown = world.time +cooldown_time return diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 08a580923f4..4c06f84d7cd 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -747,7 +747,7 @@ /obj/item/weapon/spellbook/oneuse/blind/recoil(mob/user as mob) ..() to_chat(user, "You go blind!") - user.eye_blind = 10 + user.EyeBlind(10) /obj/item/weapon/spellbook/oneuse/mindswap spell = /obj/effect/proc_holder/spell/targeted/mind_transfer diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 60e650691e5..fb49e6a5970 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -546,7 +546,7 @@ if(panel_open) to_chat(usr, "Close the maintenance panel first.") return - if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other + if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other return for(var/mob/living/carbon/slime/M in range(1,usr)) if(M.Victim == usr) @@ -590,4 +590,4 @@ component_parts += new /obj/item/stack/cable_coil(null, 1) RefreshParts() -#undef ADDICTION_SPEEDUP_TIME \ No newline at end of file +#undef ADDICTION_SPEEDUP_TIME diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 65a1730bacd..5be99b2ab1c 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -448,7 +448,7 @@ if(ORION_TRAIL_RAIDERS) if(prob(50)) to_chat(usr, "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?") - M.hallucination += 30 + M.AdjustHallucinate(30) else to_chat(usr, "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...") M.take_organ_damage(30) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 0a84ee81821..f1d7149f9fa 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -20,7 +20,7 @@ jump_action.Grant(user) /obj/machinery/computer/camera_advanced/check_eye(mob/user) - if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || user.eye_blind || user.incapacitated()) + if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || !user.can_see() || user.incapacitated()) user.unset_machine() return 0 return 1 @@ -167,4 +167,4 @@ var/camera = input("Choose which camera you want to view", "Cameras") as null|anything in T var/obj/machinery/camera/final = T[camera] if(final) - remote_eye.setLoc(get_turf(final)) \ No newline at end of file + remote_eye.setLoc(get_turf(final)) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 6dd6182c930..a46f6a97b50 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -80,10 +80,10 @@ beaker = null return ..() -/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) +/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob) if(O.loc == user) //no you can't pull things out of your ass return - if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other + if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other return if(get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source return @@ -371,7 +371,7 @@ occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature)*current_heat_capacity/(current_heat_capacity + air_contents.heat_capacity()) occupant.bodytemperature = max(occupant.bodytemperature, air_contents.temperature) // this is so ugly i'm sorry for doing it i'll fix it later i promise if(occupant.bodytemperature < T0C) - occupant.sleeping = max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency) + occupant.Sleeping(max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency)) occupant.Paralyse(max(5/efficiency, (1/occupant.bodytemperature)*3000/efficiency)) if(air_contents.oxygen > 2) if(occupant.getOxyLoss()) occupant.adjustOxyLoss(-1) @@ -469,9 +469,9 @@ if(M.Victim == usr) to_chat(usr, "You're too busy getting your life sucked out of you.") return - if(usr.stat != 0 || stat & (NOPOWER|BROKEN)) + if(usr.stat != CONSCIOUS || stat & (NOPOWER|BROKEN)) return - if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other + if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other return put_mob(usr) return diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 9ffec3cb02c..4c462b5a05c 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -485,7 +485,7 @@ if(O.loc == user) //no you can't pull things out of your ass return - if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other + if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other return if(get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source return diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index afe79ca48e3..bf2eedeaf23 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -37,6 +37,7 @@ #define PIPE_DP_VENT 36 #define PIPE_PASV_VENT 37 #define PIPE_DTVALVE 38 +#define PIPE_CIRCULATOR 39 /obj/item/pipe name = "pipe" @@ -150,10 +151,16 @@ src.pipe_type = PIPE_OMNI_MIXER else if(istype(make_from, /obj/machinery/atmospherics/omni/filter)) src.pipe_type = PIPE_OMNI_FILTER + else if(istype(make_from, /obj/machinery/atmospherics/binary/circulator)) + src.pipe_type = PIPE_CIRCULATOR var/obj/machinery/atmospherics/trinary/triP = make_from if(istype(triP) && triP.flipped) src.flipped = 1 + + var/obj/machinery/atmospherics/binary/circulator/circP = make_from + if(istype(circP) && circP.side == circP.CIRC_RIGHT) + src.flipped = 1 else src.pipe_type = pipe_type @@ -214,6 +221,7 @@ "dual-port vent", \ "passive vent", \ "digital t-valve", \ + "circulator/heat exchanger", \ ) name = nlist[pipe_type+1] + " fitting" var/list/islist = list( \ @@ -256,11 +264,15 @@ "dual-port vent", \ "passive vent", \ "dtvalve", \ + "circ", \ ) icon_state = islist[pipe_type + 1] var/obj/machinery/atmospherics/trinary/triP = make_from if(istype(triP) && triP.flipped) icon_state = "m_[icon_state]" + var/obj/machinery/atmospherics/binary/circulator/circP = make_from + if(istype(circP) && circP.side == circP.CIRC_RIGHT) + icon_state = "m_[icon_state]" // called by turf to know if should treat as bent or not on placement /obj/item/pipe/proc/is_bent_pipe() @@ -280,6 +292,10 @@ if( usr.stat || usr.restrained() ) return + + if(pipe_type == PIPE_CIRCULATOR) + flip() + return src.dir = turn(src.dir, -90) @@ -295,7 +311,7 @@ if(usr.stat || usr.restrained()) return - if(pipe_type in list(PIPE_GAS_FILTER, PIPE_GAS_MIXER, PIPE_TVALVE, PIPE_DTVALVE)) + if(pipe_type in list(PIPE_GAS_FILTER, PIPE_GAS_MIXER, PIPE_TVALVE, PIPE_DTVALVE, PIPE_CIRCULATOR)) if(flipped) icon_state = copytext(icon_state,3) else @@ -529,6 +545,14 @@ if(pipename) P.name = pipename P.construction(unflip(dir), pipe_dir, color) + + if(PIPE_CIRCULATOR) //circulator + var/obj/machinery/atmospherics/binary/circulator/C = new(src.loc) + if(flipped) + C.side = C.CIRC_RIGHT + if(pipename) + C.name = pipename + C.construction(C.dir, C.initialize_directions, color) if(PIPE_SCRUBBER) //scrubber var/obj/machinery/atmospherics/unary/vent_scrubber/S = new(src.loc) @@ -682,3 +706,4 @@ #undef PIPE_DP_VENT #undef PIPE_PASV_VENT #undef PIPE_DTVALVE +#undef PIPE_CIRCULATOR diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index d8f23599f74..452408ccdaa 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -104,11 +104,11 @@ return if(drownee.stat) //Mob is in critical. - drownee.losebreath -= 3 //You're gonna die here. + drownee.AdjustLoseBreath(3, bound_lower = 0, bound_upper = 20) add_logs(src, drownee, "drowned", null, null, 0) //log it to their VV, but don't spam the admins' chats with the logs drownee.visible_message("\The [drownee] appears to be drowning!","You're quickly drowning!") //inform them that they are fucked. else - drownee.losebreath -= 2 //For every time you drown, you miss 2 breath attempts. Hope you catch on quick! + drownee.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 20) //For every time you drown, you miss 2 breath attempts. Hope you catch on quick! add_logs(src, drownee, "drowned", null, null, 0) //log it to their VV, but don't spam the admins' chats with the logs if(prob(35)) //35% chance to tell them what is going on. They should probably figure it out before then. drownee.visible_message("\The [drownee] flails, almost like they are drowning!","You're lacking air!") //*gasp* *gasp* *gasp* *gasp* *gasp* diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 68b2c83059e..fedb792c37d 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -164,9 +164,9 @@ if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs)) continue to_chat(M, "HONK") - M.sleeping = 0 - M.stuttering = 20 - M.adjustEarDamage(0,30) + M.SetSleeping(0) + M.Stuttering(20) + M.AdjustEarDeaf(30) M.Weaken(3) if(prob(30)) M.Stun(10) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 47b6c1bf57b..90e4c47b276 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -583,7 +583,7 @@ steam.start() -- spawns the effect // if(M.wear_suit, /obj/item/clothing/suit/wizrobe && (M.hat, /obj/item/clothing/head/wizard) && (M.shoes, /obj/item/clothing/shoes/sandal)) // I'll work on it later else M.drop_item() - M:sleeping += 5 + M.AdjustSleeping(5) if(M.coughedtime != 1) M.coughedtime = 1 M.emote("cough") @@ -600,7 +600,7 @@ steam.start() -- spawns the effect return else M.drop_item() - M:sleeping += 5 + M.AdjustSleeping(5) if(M.coughedtime != 1) M.coughedtime = 1 M.emote("cough") diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index ecb8590c103..43fd8ad3dc7 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -12,22 +12,6 @@ invisibility = 101 switch(name) //some of these are probably obsolete - if("shuttle") - log_runtime(EXCEPTION("Obsolete landmark '[name]' at ([x],[y],[z])"), src) - qdel(src) - - if("airtunnel_stop") - airtunnel_stop = x - - if("airtunnel_start") - airtunnel_start = x - - if("airtunnel_bottom") - airtunnel_bottom = y - - if("monkey") - monkeystart += loc - qdel(src) if("start") newplayer_start += loc qdel(src) @@ -52,29 +36,28 @@ latejoin_cyborg += loc qdel(src) - //prisoners if("prisonwarp") prisonwarp += loc qdel(src) - // if("mazewarp") - // mazewarp += loc - if("Holding Facility") - holdingfacility += loc - if("tdome1") - tdome1 += loc - if("tdome2") - tdome2 += loc - if("tdomeadmin") - tdomeadmin += loc - if("tdomeobserve") - tdomeobserve += loc - if("aroomwarp") - aroomwarp += loc - - //not prisoners + if("prisonsecuritywarp") prisonsecuritywarp += loc qdel(src) + + if("tdome1") + tdome1 += loc + + if("tdome2") + tdome2 += loc + + if("tdomeadmin") + tdomeadmin += loc + + if("tdomeobserve") + tdomeobserve += loc + + if("aroomwarp") + aroomwarp += loc if("blobstart") blobstart += loc @@ -96,6 +79,11 @@ if("ERT Director") ertdirector += loc + qdel(src) + + if("Response Team") + emergencyresponseteamspawn += loc + qdel(src) landmarks_list += src return 1 diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 79b09f48835..9d1fb75d25e 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -215,6 +215,7 @@ desc = "Green squishy mess." icon = 'icons/effects/effects.dmi' icon_state = "greenshatter" + anchored = 1 /obj/effect/spider/cocoon name = "cocoon" diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 32bf9a2fea5..9e36faae088 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -57,10 +57,11 @@ var/close = range(world.view+round(devastation_range,1), epicenter) // to all distanced mobs play a different sound - for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close)) - // check if the mob can hear - if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space)) - M << 'sound/effects/explosionfar.ogg' + for(var/mob/M in world) + if(M.z == epicenter.z && !(M in close)) + // check if the mob can hear + if(M.can_hear() && !istype(M.loc,/turf/space)) + M << 'sound/effects/explosionfar.ogg' if(heavy_impact_range > 1) var/datum/effect/system/explosion/E = new/datum/effect/system/explosion() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6ea2906c072..b34cc09ca89 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -474,10 +474,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d if(!(eyes.status & ORGAN_ROBOT) || !(eyes.status & ORGAN_ASSISTED)) //robot eyes bleeding might be a bit silly to_chat(M, "Your eyes start to bleed profusely!") if(prob(50)) - if(M.stat != 2) + if(M.stat != DEAD) to_chat(M, "You drop what you're holding and clutch at your eyes!") M.drop_item() - M.eye_blurry += 10 + M.AdjustEyeBlurry(10) M.Paralyse(1) M.Weaken(2) if(eyes.damage >= eyes.min_broken_damage) @@ -488,7 +488,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d H.UpdateDamageIcon() else M.take_organ_damage(7) - M.eye_blurry += rand(3,4) + M.AdjustEyeBlurry(rand(3,4)) return /obj/item/clean_blood() diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index a91c4e2ebe3..065392a9222 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -236,10 +236,10 @@ var/mob/living/carbon/human/C = target user.visible_message(" [user] sprays [src] into the face of [target]!") if(C.client) - C.eye_blurry = max(C.eye_blurry, 3) - C.eye_blind = max(C.eye_blind, 1) + C.EyeBlurry(3) + C.EyeBlind(1) if(C.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS. - C.confused = max(C.confused, 3) + C.Confused(3) C.Weaken(3) C.lip_style = "spray_face" C.lip_color = colour @@ -251,4 +251,4 @@ overlays.Cut() var/image/I = image('icons/obj/crayons.dmi',icon_state = "[capped ? "spraycan_cap_colors" : "spraycan_colors"]") I.color = colour - overlays += I \ No newline at end of file + overlays += I diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 7f2afb179e4..fb617133d83 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -55,7 +55,7 @@ interact(user) /obj/item/device/camera_bug/check_eye(var/mob/user as mob) - if(user.stat || loc != user || !user.canmove || user.eye_blind || !current) + if(user.stat || loc != user || !user.canmove || !user.can_see() || !current) user.reset_view(null) user.unset_machine() return null diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index cec1c106e48..52a9a343e6b 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -81,7 +81,7 @@ if(M.weakeyes) M.Weaken(3) //quick weaken bypasses eye protection but has no eye flash if(M.flash_eyes(1, 1)) - M.confused += power + M.AdjustConfused(power) terrible_conversion_proc(M, user) M.Stun(1) visible_message("[user] blinds [M] with the flash!") @@ -96,7 +96,7 @@ to_chat(M, "[user] fails to blind you with the flash!") else if(M.flash_eyes()) - M.confused += power + M.AdjustConfused(power) /obj/item/device/flash/attack(mob/living/M, mob/user) if(!try_use_flash(user)) diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm index e6b0ff92c32..22b589c7517 100644 --- a/code/game/objects/items/weapons/garrote.dm +++ b/code/game/objects/items/weapons/garrote.dm @@ -91,7 +91,7 @@ G.state = GRAB_NECK G.hud.icon_state = "kill" G.hud.name = "kill" - M.silent += 1 + M.AdjustSilence(1) garrote_time = world.time + 10 processing_objects.Add(src) @@ -152,11 +152,11 @@ return - strangling.silent = max(strangling.silent, 3) // Non-improvised effects + strangling.Silence(3) // Non-improvised effects strangling.apply_damage(4, OXY, "head") /obj/item/weapon/twohanded/garrote/suicide_act(mob/user) user.visible_message("[user] is wrapping the [src] around \his neck and pulling the handles! It looks like \he's trying to commit suicide.") playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1) - return (OXYLOSS) \ No newline at end of file + return (OXYLOSS) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 9562f9442c7..4241c9c5c0c 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -51,12 +51,13 @@ if(!ear_safety) M.Stun(max(10/distance, 3)) M.Weaken(max(10/distance, 3)) - M.setEarDamage(M.ear_damage + rand(0, 5), max(M.ear_deaf,15)) + M.EarDeaf(15) + M.AdjustEarDamage(rand(0, 5)) if(M.ear_damage >= 15) to_chat(M, "Your ears start to ring badly!") - if(prob(M.ear_damage - 10 + 5)) + if(prob(M.ear_damage - 5)) to_chat(M, "You can't hear anything!") - M.disabilities |= DEAF + M.BecomeDeaf() else if(M.ear_damage >= 5) to_chat(M, "Your ears start to ring!") diff --git a/code/game/objects/items/weapons/scissors.dm b/code/game/objects/items/weapons/scissors.dm index 05a50200e7d..e966f5500e5 100644 --- a/code/game/objects/items/weapons/scissors.dm +++ b/code/game/objects/items/weapons/scissors.dm @@ -115,7 +115,7 @@ if(do_after(user, 50, target = H)) playsound(loc, "sound/weapons/bladeslice.ogg", 50, 1, -1) user.visible_message("[user] abruptly stops cutting [M]'s hair and slices their throat!", "You stop cutting [M]'s hair and slice their throat!") //Just a little off the top. - H.losebreath += 10 //30 Oxy damage over time + H.AdjustLoseBreath(10) //30 Oxy damage over time H.apply_damage(18, BRUTE, "head", sharp =1, edge =1, used_weapon = "scissors") var/turf/location = get_turf(H) if(istype(location, /turf/simulated)) diff --git a/code/game/objects/items/weapons/storage/artistic_toolbox.dm b/code/game/objects/items/weapons/storage/artistic_toolbox.dm index 81ba661115a..470c273bd69 100644 --- a/code/game/objects/items/weapons/storage/artistic_toolbox.dm +++ b/code/game/objects/items/weapons/storage/artistic_toolbox.dm @@ -138,8 +138,8 @@ affected_mob.setStaminaLoss(0) var/status = CANSTUN | CANWEAKEN | CANPARALYSE affected_mob.status_flags &= ~status - affected_mob.dizziness = max(0, affected_mob.dizziness-10) - affected_mob.drowsyness = max(0, affected_mob.drowsyness-10) + affected_mob.AdjustDizzy(-10) + affected_mob.AdjustDrowsy(-10) affected_mob.SetSleeping(0) stage = 1 switch(progenitor.hunger) @@ -181,4 +181,4 @@ affected_mob.adjustBruteLoss(5) if(ismob(progenitor.loc)) - progenitor.hunger++ \ No newline at end of file + progenitor.hunger++ diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 937cc3214a3..ef0cdfc329b 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -116,7 +116,7 @@ if(H.get_item_by_slot(slot_head) == src) if(H.internal) return - H.losebreath += 1 + H.AdjustLoseBreath(1) else storage_slots = 7 processing_objects.Remove(src) diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 460498a874b..e848eec1aca 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -27,131 +27,132 @@ max_w_class = 2 max_combined_w_class = 14 - examine(mob/user) - if(..(user, 1)) - to_chat(user, text("The service panel is [src.open ? "open" : "closed"].")) +/obj/item/weapon/storage/secure/examine(mob/user) + if(..(user, 1)) + to_chat(user, text("The service panel is [open ? "open" : "closed"].")) - attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(locked) - if((istype(W, /obj/item/weapon/melee/energy/blade)) && (!src.emagged)) - emag_act(user, W) +/obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + if(locked) + if((istype(W, /obj/item/weapon/melee/energy/blade)) && (!emagged)) + emag_act(user, W) - if(istype(W, /obj/item/weapon/screwdriver)) - if(do_after(user, 20, target = src)) - src.open =! src.open - user.show_message(text("\blue You [] the service panel.", (src.open ? "open" : "close"))) - return - if((istype(W, /obj/item/device/multitool)) && (src.open == 1)&& (!src.l_hacking)) - user.show_message(text("\red Now attempting to reset internal memory, please hold."), 1) - src.l_hacking = 1 - if(do_after(usr, 100, target = src)) - if(prob(40)) - src.l_setshort = 1 - src.l_set = 0 - user.show_message(text("\red Internal memory reset. Please give it a few seconds to reinitialize."), 1) - sleep(80) - src.l_setshort = 0 - src.l_hacking = 0 - else - user.show_message(text("\red Unable to reset internal memory."), 1) - src.l_hacking = 0 - else src.l_hacking = 0 - return - //At this point you have exhausted all the special things to do when locked - // ... but it's still locked. + if(istype(W, /obj/item/weapon/screwdriver)) + if(do_after(user, 20, target = src)) + open = !open + user.show_message("You [open ? "open" : "close"] the service panel.", 1) return - // -> storage/attackby() what with handle insertion, etc - ..() - - emag_act(user as mob, weapon as obj) - if(!emagged) - emagged = 1 - src.overlays += image('icons/obj/storage.dmi', icon_sparking) - sleep(6) - src.overlays = null - overlays += image('icons/obj/storage.dmi', icon_locking) - locked = 0 - if(istype(weapon, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - to_chat(user, "You slice through the lock on [src].") - else - to_chat(user, "You short out the lock on [src].") - return - - - MouseDrop(over_object, src_location, over_location) - if(locked) - src.add_fingerprint(usr) - return - ..() - - - attack_self(mob/user as mob) - user.set_machine(src) - var/dat = text("[]
\n\nLock Status: []",src, (src.locked ? "LOCKED" : "UNLOCKED")) - var/message = "Code" - if((src.l_set == 0) && (!src.emagged) && (!src.l_setshort)) - dat += text("

\n5-DIGIT PASSCODE NOT SET.
ENTER NEW PASSCODE.
") - if(src.emagged) - dat += text("

\nLOCKING SYSTEM ERROR - 1701") - if(src.l_setshort) - dat += text("

\nALERT: MEMORY SYSTEM ERROR - 6040 201") - message = text("[]", src.code) - if(!src.locked) - message = "*****" - dat += {"


\n>[message]
\n - 1- - 2- - 3
\n - 4- - 5- - 6
\n - 7- - 8- - 9
\n - R- - 0- - E
\n
"} - user << browse(dat, "window=caselock;size=300x280") - - Topic(href, href_list) - ..() - if((usr.stat || usr.restrained()) || (get_dist(src, usr) > 1)) - return - if(href_list["type"]) - if(href_list["type"] == "E") - if((src.l_set == 0) && (length(src.code) == 5) && (!src.l_setshort) && (src.code != "ERROR")) - src.l_code = src.code - src.l_set = 1 - else if((src.code == src.l_code) && (src.emagged == 0) && (src.l_set == 1)) - src.locked = 0 - src.overlays = null - overlays += image('icons/obj/storage.dmi', icon_opened) - src.code = null + if((istype(W, /obj/item/device/multitool)) && (open == 1) && (!l_hacking)) + user.show_message("Now attempting to reset internal memory, please hold.", 1) + l_hacking = 1 + if(do_after(usr, 100, target = src)) + if(prob(40)) + l_setshort = 1 + l_set = 0 + user.show_message("Internal memory reset. Please give it a few seconds to reinitialize.", 1) + sleep(80) + l_setshort = 0 + l_hacking = 0 else - src.code = "ERROR" - else - if((href_list["type"] == "R") && (src.emagged == 0) && (!src.l_setshort)) - src.locked = 1 - src.overlays = null - src.code = null - src.close(usr) - else - src.code += text("[]", href_list["type"]) - if(length(src.code) > 5) - src.code = "ERROR" - src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src.loc)) - if((M.client && M.machine == src)) - src.attack_self(M) - return + user.show_message("Unable to reset internal memory.", 1) + l_hacking = 0 + else + l_hacking = 0 + return + //At this point you have exhausted all the special things to do when locked + // ... but it's still locked. return + return ..() + +/obj/item/weapon/storage/secure/emag_act(user as mob, weapon as obj) + if(!emagged) + emagged = 1 + overlays += image('icons/obj/storage.dmi', icon_sparking) + sleep(6) + overlays = null + overlays += image('icons/obj/storage.dmi', icon_locking) + locked = 0 + if(istype(weapon, /obj/item/weapon/melee/energy/blade)) + var/datum/effect/system/spark_spread/spark_system = new /datum/effect/system/spark_spread() + spark_system.set_up(5, 0, src.loc) + spark_system.start() + playsound(loc, 'sound/weapons/blade1.ogg', 50, 1) + playsound(loc, "sparks", 50, 1) + to_chat(user, "You slice through the lock on [src].") + else + to_chat(user, "You short out the lock on [src].") + return + + +/obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location) + if(locked) + add_fingerprint(usr) + to_chat(usr, "It's locked!") + return 0 + ..() + +/obj/item/weapon/storage/secure/attack_self(mob/user as mob) + user.set_machine(src) + var/dat = text("[]
\n\nLock Status: []", src, (locked ? "LOCKED" : "UNLOCKED")) + var/message = "Code" + if((l_set == 0) && (!emagged) && (!l_setshort)) + dat += text("

\n5-DIGIT PASSCODE NOT SET.
ENTER NEW PASSCODE.
") + if(emagged) + dat += text("

\nLOCKING SYSTEM ERROR - 1701") + if(l_setshort) + dat += text("

\nALERT: MEMORY SYSTEM ERROR - 6040 201") + message = text("[]", code) + if(!locked) + message = "*****" + dat += {"


\n>[message]
\n + 1- + 2- + 3
\n + 4- + 5- + 6
\n + 7- + 8- + 9
\n + R- + 0- + E
\n
"} + user << browse(dat, "window=caselock;size=300x280") + +/obj/item/weapon/storage/secure/Topic(href, href_list) + ..() + if(usr.incapacitated() || (get_dist(src, usr) > 1)) + return + if(href_list["type"]) + if(href_list["type"] == "E") + if((l_set == 0) && (length(code) == 5) && (!l_setshort) && (code != "ERROR")) + l_code = code + l_set = 1 + else if((code == l_code) && (emagged == 0) && (l_set == 1)) + locked = 0 + overlays = null + overlays += image('icons/obj/storage.dmi', icon_opened) + code = null + else + code = "ERROR" + else + if((href_list["type"] == "R") && (emagged == 0) && (!l_setshort)) + locked = 1 + overlays = null + code = null + close(usr) + else + code += text("[]", href_list["type"]) + if(length(code) > 5) + code = "ERROR" + add_fingerprint(usr) + for(var/mob/M in viewers(1, loc)) + if((M.client && M.machine == src)) + attack_self(M) + return + return + /obj/item/weapon/storage/secure/can_be_inserted(obj/item/W as obj, stop_messages = 0) if(!locked) return ..() @@ -160,8 +161,10 @@ return 0 /obj/item/weapon/storage/secure/hear_talk(mob/living/M as mob, msg) + return /obj/item/weapon/storage/secure/hear_message(mob/living/M as mob, msg) + return // ----------------------------- // Secure Briefcase @@ -174,7 +177,7 @@ item_state = "sec-case" flags = CONDUCT hitsound = "swing_hit" - force = 8.0 + force = 8 throw_speed = 2 throw_range = 4 w_class = 4 @@ -182,36 +185,36 @@ max_combined_w_class = 21 attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") - New() - ..() - new /obj/item/weapon/paper(src) - new /obj/item/weapon/pen(src) +/obj/item/weapon/storage/secure/briefcase/New() + ..() + handle_item_insertion(new /obj/item/weapon/paper, 1) + handle_item_insertion(new /obj/item/weapon/pen, 1) - attack_hand(mob/user as mob) - if((src.loc == user) && (src.locked == 1)) - to_chat(usr, "\red [src] is locked and cannot be opened!") - else if((src.loc == user) && (!src.locked)) - playsound(src.loc, "rustle", 50, 1, -5) - if(user.s_active) - user.s_active.close(user) //Close and re-open - src.show_to(user) - else - ..() - for(var/mob/M in range(1)) - if(M.s_active == src) - src.close(M) - src.orient2hud(user) - src.add_fingerprint(user) - return +/obj/item/weapon/storage/secure/briefcase/attack_hand(mob/user as mob) + if((loc == user) && (locked == 1)) + to_chat(usr, "[src] is locked and cannot be opened!") + else if((loc == user) && !locked) + playsound(loc, "rustle", 50, 1, -5) + if(user.s_active) + user.s_active.close(user) //Close and re-open + show_to(user) + else + ..() + for(var/mob/M in range(1)) + if(M.s_active == src) + close(M) + orient2hud(user) + add_fingerprint(user) + return //Syndie variant of Secure Briefcase. Contains space cash, slightly more robust. /obj/item/weapon/storage/secure/briefcase/syndie - force = 15.0 + force = 15 /obj/item/weapon/storage/secure/briefcase/syndie/New() + ..() for(var/i = 0, i < storage_slots - 2, i++) - new /obj/item/weapon/spacecash/c1000(src) - return ..() + handle_item_insertion(new /obj/item/weapon/spacecash/c1000, 1) // ----------------------------- // Secure Safe @@ -224,30 +227,17 @@ icon_opened = "safe0" icon_locking = "safeb" icon_sparking = "safespark" - force = 8.0 + force = 8 w_class = 5 max_w_class = 8 - anchored = 1.0 + anchored = 1 density = 0 cant_hold = list("/obj/item/weapon/storage/secure/briefcase") - New() - ..() - new /obj/item/weapon/paper(src) - new /obj/item/weapon/pen(src) - - attack_hand(mob/user as mob) - return attack_self(user) - -// Clown planet WMD storage -/obj/item/weapon/storage/secure/safe/clown - name="WMD Storage" - -/obj/item/weapon/storage/secure/safe/clown/New() - for(var/i=0;i<10;i++) - new /obj/item/weapon/reagent_containers/food/snacks/pie(src) - - -/obj/item/weapon/storage/secure/safe/HoS/New() +/obj/item/weapon/storage/secure/safe/New() ..() - //new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool) \ No newline at end of file + handle_item_insertion(new /obj/item/weapon/paper, 1) + handle_item_insertion(new /obj/item/weapon/pen, 1) + +/obj/item/weapon/storage/secure/safe/attack_hand(mob/user as mob) + return attack_self(user) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index b27d3f6e4f8..bbbecf6695d 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -420,8 +420,7 @@ H.lip_style = null //Washes off lipstick H.lip_color = initial(H.lip_color) H.regenerate_icons() - user.drowsyness -= rand(2,3) //Washing your face wakes you up if you're falling asleep - user.drowsyness = Clamp(user.drowsyness, 0, INFINITY) + user.AdjustDrowsy(-rand(2,3)) //Washing your face wakes you up if you're falling asleep else user.clean_blood() @@ -459,4 +458,3 @@ icon_state = "puddle-splash" ..() icon_state = "puddle" - diff --git a/code/game/response_team.dm b/code/game/response_team.dm index a5b92b17e95..6cf81f70180 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -73,7 +73,6 @@ var/ert_request_answered = 0 return 0 /mob/dead/observer/proc/JoinResponseTeam() - if(!send_emergency_team) to_chat(src, "No emergency response team is currently being sent.") return 0 @@ -82,35 +81,23 @@ var/ert_request_answered = 0 to_chat(src, "You are jobbanned from the emergency reponse team!") return 0 - var/player_age_check = check_client_age(src.client, responseteam_age) + var/player_age_check = check_client_age(client, responseteam_age) if(player_age_check && config.use_age_restriction_for_antags) to_chat(src, "This role is not yet available to you. You need to wait another [player_age_check] days.") return 0 - if(src.has_enabled_antagHUD == 1 && config.antag_hud_restricted) + if(has_enabled_antagHUD == 1 && config.antag_hud_restricted) to_chat(src, "Upon using the antagHUD you forfeited the ability to join the round.") return 0 if(response_team_members.len > 6) to_chat(src, "The emergency response team is already full!") return 0 - - for(var/obj/effect/landmark/L in landmarks_list) - if(L.name == "Response Team") - L.name = null - if(!src.client) - return - spawn(-1) - var/client/C = src.client - var/mob/living/carbon/human/new_commando = C.create_response_team(L.loc) - qdel(L) - new_commando.mind.key = src.key - new_commando.key = src.key - new_commando.update_icons() - return 1 + + return 1 /proc/trigger_armed_response_team(var/datum/response_team/response_team_type) - + response_team_members = list() active_team = response_team_type send_emergency_team = 1 @@ -118,24 +105,41 @@ var/ert_request_answered = 0 if(!ert_candidates.len) active_team.cannot_send_team() send_emergency_team = 0 - return - var/teamsize = 0 + return 0 + // Respawnable players get first dibs - for(var/mob/dead/observer/M in (ert_candidates & respawnable_list)) - teamsize += M.JoinResponseTeam() + for(var/mob/dead/observer/M in ert_candidates) + if((M in respawnable_list) && M.JoinResponseTeam()) + response_team_members |= M // If there's still open slots, non-respawnable players can fill them for(var/mob/dead/observer/M in (ert_candidates - respawnable_list)) - teamsize += M.JoinResponseTeam() - send_emergency_team = 0 - if (!teamsize) + if(M.JoinResponseTeam()) + response_team_members |= M + + if(!response_team_members.len) active_team.cannot_send_team() - return - active_team.announce_team() + send_emergency_team = 0 + return 0 -/client/proc/create_response_team(obj/spawn_location) + var/index = 1 + for(var/mob/M in response_team_members) + if(index > emergencyresponseteamspawn.len) + index = 1 + + var/client/C = M.client + var/mob/living/carbon/human/new_commando = C.create_response_team(emergencyresponseteamspawn[index]) + new_commando.mind.key = M.key + new_commando.key = M.key + new_commando.update_icons() + index++ + + send_emergency_team = 0 + active_team.announce_team() + return 1 + +/client/proc/create_response_team(var/turf/spawn_location) var/mob/living/carbon/human/M = new(null) var/obj/item/organ/external/head/head_organ = M.get_organ("head") - response_team_members |= M var/new_gender = alert(src, "Please select your gender.", "ERT Character Generation", "Male", "Female") @@ -157,15 +161,6 @@ var/ert_request_answered = 0 var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue var/skin_tone = pick(-50, -30, -10, 0, 0, 0, 10) // Caucasian/black - var/hair_style = "Bald" - var/facial_hair_style = "Shaved" - if(M.gender == MALE) - hair_style = pick(hair_styles_male_list) - facial_hair_style = pick(facial_hair_styles_list) - else - hair_style = pick(hair_styles_female_list) - if(prob(5)) - facial_hair_style = pick(facial_hair_styles_list) head_organ.r_facial = color2R(hair_c) head_organ.g_facial = color2G(hair_c) @@ -175,12 +170,14 @@ var/ert_request_answered = 0 head_organ.b_hair = color2B(hair_c) M.change_eye_color(color2R(eye_c), color2G(eye_c), color2B(eye_c)) M.s_tone = skin_tone - head_organ.h_style = hair_style - head_organ.f_style = facial_hair_style + head_organ.h_style = random_hair_style(M.gender, head_organ.species.name) + head_organ.f_style = random_facial_hair_style(M.gender, head_organ.species.name) M.real_name = "[pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant First Class", "Master Sergeant", "Sergeant Major")] [pick(last_names)]" M.name = M.real_name M.age = rand(23,35) + M.regenerate_icons() + M.update_body() //Creates mind stuff. M.mind = new @@ -190,7 +187,7 @@ var/ert_request_answered = 0 M.mind.special_role = SPECIAL_ROLE_ERT if(!(M.mind in ticker.minds)) ticker.minds += M.mind //Adds them to regular mind list. - M.loc = spawn_location + M.forceMove(spawn_location) active_team.equip_officer(class, M) diff --git a/code/game/sound.dm b/code/game/sound.dm index fe5e361f16a..ed5f0d15b4c 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -40,7 +40,7 @@ var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effect M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, is_global, S) /mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, is_global, sound/S) - if(!src.client || ear_deaf > 0) + if(!src.client || !can_hear()) return if(!S) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 37ff565f4a3..862eed1b986 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -934,11 +934,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that for(var/obj/item/briefcase_item in sec_briefcase) qdel(briefcase_item) for(var/i=3, i>0, i--) - sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 - sec_briefcase.contents += new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow - sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba - sec_briefcase.contents += new /obj/item/ammo_box/a357 - sec_briefcase.contents += new /obj/item/weapon/grenade/plastic/c4 + sec_briefcase.handle_item_insertion(new /obj/item/weapon/spacecash/c1000, 1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, 1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba, 1) + sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357, 1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/grenade/plastic/c4, 1) // briefcase must be unlocked by setting the code. M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) var/obj/item/weapon/implant/dust/DUST = new /obj/item/weapon/implant/dust(M) diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index fb93cd3512d..920b24297ad 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -36,7 +36,7 @@ var/global/list/frozen_mob_list = list() anchored = 1 frozen = AO admin_prev_sleeping = sleeping - sleeping += 20000 + AdjustSleeping(20000) if(!(src in frozen_mob_list)) frozen_mob_list += src @@ -49,7 +49,7 @@ var/global/list/frozen_mob_list = list() anchored = 0 overlays -= frozen frozen = null - sleeping = admin_prev_sleeping + SetSleeping(admin_prev_sleeping) admin_prev_sleeping = null if(src in frozen_mob_list) frozen_mob_list -= src diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 9945079b1a5..4ae3e230762 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -411,11 +411,12 @@ var/mob/living/carbon/human/M = src.loc to_chat(M, "\red The Optical Thermal Scanner overloads and blinds you!") if(M.glasses == src) - M.eye_blind = 3 - M.eye_blurry = 5 - M.disabilities |= NEARSIGHTED - spawn(100) - M.disabilities &= ~NEARSIGHTED + M.EyeBlind(3) + M.EyeBlurry(5) + if(!(M.disabilities & NEARSIGHTED)) + M.BecomeNearsighted() + spawn(100) + M.CureNearsighted() ..() /obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 6fad0961ab4..1c8bd73c47f 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -189,15 +189,11 @@ to_chat(H, "You deploy your hardsuit helmet, sealing you off from the world.") H.update_inv_head() -/obj/item/clothing/suit/space/rig/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/clothing/suit/space/rig/attackby(obj/item/W, mob/user, params) if(!isliving(user)) return - if(istype(src.loc,/mob/living)) - to_chat(user, "How do you propose to modify a hardsuit while it is being worn?") - return - - if(istype(W,/obj/item/weapon/screwdriver)) + if(istype(W,/obj/item/weapon/screwdriver) && can_modify(user)) if(!helmet) to_chat(user, "\The [src] does not have a helmet installed.") else @@ -213,7 +209,7 @@ boots = null return - else if(istype(W,/obj/item/clothing/head/helmet/space)) + else if(istype(W,/obj/item/clothing/head/helmet/space) && can_modify(user)) if(!attached_helmet) to_chat(user, "\The [src] does not have a helmet mount.") return @@ -226,7 +222,7 @@ src.helmet = W return - else if(istype(W,/obj/item/clothing/shoes/magboots)) + else if(istype(W,/obj/item/clothing/shoes/magboots) && can_modify(user)) if(!attached_boots) to_chat(user, "\The [src] does not have boot mounts.") return @@ -242,6 +238,13 @@ return ..() ..() + +/obj/item/clothing/suit/space/rig/proc/can_modify(mob/living/user) + if(isliving(loc)) + to_chat(user, "You can not modify the hardsuit while it is being worn.") + return 0 + + return 1 //Engineering rig /obj/item/clothing/head/helmet/space/rig/engineering diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index c7126795143..18a0ffc9729 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -336,7 +336,7 @@ if(ishuman(loc)) var/mob/living/carbon/human/H = loc if(H.head == src) - H.slurring = max(3, H.slurring) //always slur + H.Slur(3) //always slur /obj/item/clothing/head/beret/fluff/linda //Epic_Charger: Linda Clark name = "Green beret" @@ -433,6 +433,15 @@ item_state = "castile_dress" item_color = "castile_dress" +/obj/item/clothing/under/fluff/elishirt // FlattestGuitar9: Eli Randolph + name = "casual dress shirt" + desc = "A soft, white dress shirt paired up with black suit pants. The set looks comfortable." + icon = 'icons/obj/custom_items.dmi' + icon_state = "elishirt" + item_state = "elishirt" + item_color = "elishirt" + displays_id = 0 + /obj/item/clothing/under/psysuit/fluff/isaca_sirius_1 // Xilia: Isaca Sirius name = "Isaca's suit" desc = "Black, comfortable and nicely fitting suit. Made not to hinder the wearer in any way. Made of some exotic fabric. And some strange glowing jewel at the waist. Name labels says; Property of Isaca Sirius; The Seeder." diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index c00a81428e4..500350a037c 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -6,7 +6,7 @@ var/armor = H.getarmor(type = "rad") if((H.species.flags & RADIMMUNE) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected continue - H.hallucination += rand(50, 100) + H.AdjustHallucinate(rand(50, 100)) /datum/event/mass_hallucination/announce() - event_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage") \ No newline at end of file + event_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage") diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index ffc4882a055..4c120db79e0 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -279,11 +279,11 @@ Gunshots/explosions/opening doors/less rare audio (done) /obj/effect/hallucination/simple/singularity/proc/Eat(atom/OldLoc, Dir) var/target_dist = get_dist(src,target) if(target_dist<=3) //"Eaten" - target.sleeping = 20 + target.Sleeping(20) target.hal_crit = 1 target.hal_screwyhud = 1 spawn(rand(50,100)) - target.sleeping = 0 + target.SetSleeping(0) target.hal_crit = 0 target.hal_screwyhud = 0 @@ -480,7 +480,7 @@ Gunshots/explosions/opening doors/less rare audio (done) my_target.show_message("[src.name] has attacked [my_target] with [weapon_name]!", 1) my_target.staminaloss += 30 if(prob(20)) - my_target.eye_blurry += 3 + my_target.AdjustEyeBlurry(3) if(prob(33)) if(!locate(/obj/effect/overlay) in my_target.loc) fake_blood(my_target) @@ -752,11 +752,11 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite halimage = null if("death") //Fake death - src.sleeping = 20 + Sleeping(20) hal_crit = 1 hal_screwyhud = 1 spawn(rand(50,100)) - src.sleeping = 0 + SetSleeping(0) hal_crit = 0 hal_screwyhud = 0 if("husks") diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 15ce27b7d5c..0814bf988f4 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -81,7 +81,7 @@ refill = reagents.get_master_reagent_id() refillName = reagents.get_master_reagent_name() - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + var/trans = reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, " You transfer [trans] units of the solution to [target].") if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell @@ -102,22 +102,22 @@ if(istype(I, /obj/item/clothing/mask/cigarette)) //ciggies are weird return if(is_hot(I)) - if(src.reagents) - src.reagents.chem_temp += 15 + if(reagents) + reagents.chem_temp += 15 to_chat(user, "You heat [src] with [I].") - src.reagents.handle_reactions() + reagents.handle_reactions() /obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) if(!..(user, 1)) return - if(!reagents || reagents.total_volume==0) + if(!reagents || reagents.total_volume == 0) to_chat(user, " \The [src] is empty!") - else if(reagents.total_volume<=src.volume/4) + else if(reagents.total_volume <= volume/4) to_chat(user, " \The [src] is almost empty!") - else if(reagents.total_volume<=src.volume*0.66) + else if(reagents.total_volume <= volume*0.66) to_chat(user, " \The [src] is half full!")// We're all optimistic, right?! - else if(reagents.total_volume<=src.volume*0.90) + else if(reagents.total_volume <= volume*0.90) to_chat(user, " \The [src] is almost full!") else to_chat(user, " \The [src] is full!") diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 8928c5e8c57..7ee7509d8f1 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -22,9 +22,9 @@ else user.drop_item() user.put_in_active_hand(B) - B.icon_state = src.icon_state + B.icon_state = icon_state - var/icon/I = new('icons/obj/drinks.dmi', src.icon_state) + var/icon/I = new('icons/obj/drinks.dmi', icon_state) I.Blend(B.broken_outline, ICON_OVERLAY, rand(5), 1) I.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0)) B.icon = I @@ -99,11 +99,11 @@ //Display an attack message. if(target != user) - target.visible_message("[user] has hit [target][head_attack_message] with a bottle of [src.name]!", \ - "[user] has hit [target][head_attack_message] with a bottle of [src.name]!") + target.visible_message("[user] has hit [target][head_attack_message] with a bottle of [name]!", \ + "[user] has hit [target][head_attack_message] with a bottle of [name]!") else - user.visible_message("[target] hits \himself with a bottle of [src.name][head_attack_message]!", \ - "[target] hits \himself with a bottle of [src.name][head_attack_message]!") + user.visible_message("[target] hits \himself with a bottle of [name][head_attack_message]!", \ + "[target] hits \himself with a bottle of [name][head_attack_message]!") //Attack logs add_logs(user, target, "attacked", src) diff --git a/code/modules/food_and_drinks/drinks/drinks/cans.dm b/code/modules/food_and_drinks/drinks/drinks/cans.dm index 6d72ec2221c..89deed5dedd 100644 --- a/code/modules/food_and_drinks/drinks/drinks/cans.dm +++ b/code/modules/food_and_drinks/drinks/drinks/cans.dm @@ -9,7 +9,7 @@ /obj/item/weapon/reagent_containers/food/drinks/cans/attack_self(mob/user) if(canopened == 0) - playsound(src.loc,'sound/effects/canopen.ogg', rand(10,50), 1) + playsound(loc,'sound/effects/canopen.ogg', rand(10,50), 1) to_chat(user, "You open the drink with an audible pop!") canopened = 1 flags |= OPENCONTAINER @@ -32,7 +32,7 @@ if(canopened == 0) to_chat(user, "You need to open the drink!") return - else if(M == user && !src.reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head") + else if(M == user && !reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head") user.visible_message("[user] crushes ["\the [src]"] on \his forehead!", "You crush \the [src] on your forehead.") crush(user) return diff --git a/code/modules/food_and_drinks/food/candy.dm b/code/modules/food_and_drinks/food/candy.dm index d13eb7ec145..32a4a584a88 100644 --- a/code/modules/food_and_drinks/food/candy.dm +++ b/code/modules/food_and_drinks/food/candy.dm @@ -13,9 +13,6 @@ icon = 'icons/obj/food/candy.dmi' icon_state = "candy" -/obj/item/weapon/reagent_containers/food/snacks/candy/New() - ..() - // *********************************************************** // Candy Ingredients / Flavorings / Byproduct // *********************************************************** @@ -25,76 +22,53 @@ desc = "Such sweet, fattening food." icon_state = "chocolatebar" filling_color = "#7D5F46" - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("chocolate",4) bitesize = 2 + list_reagents = list("nutriment" = 2, "chocolate" = 4) /obj/item/weapon/reagent_containers/food/snacks/candy/caramel name = "Caramel" desc = "Chewy and dense, yet it practically melts in your mouth!" icon_state = "caramel" filling_color = "#DB944D" - -/obj/item/weapon/reagent_containers/food/snacks/candy/caramel/New() - ..() - reagents.add_reagent("cream", 2) - reagents.add_reagent("sugar", 2) bitesize = 2 + list_reagents = list("cream" = 2, "sugar" = 2) + /obj/item/weapon/reagent_containers/food/snacks/candy/toffee name = "Toffee" desc = "A hard, brittle candy with a distinctive taste." icon_state = "toffee" filling_color = "#7D5F46" - -/obj/item/weapon/reagent_containers/food/snacks/candy/toffee/New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sugar", 3) bitesize = 2 + list_reagents = list("nutriment" = 3, "sugar" = 3) /obj/item/weapon/reagent_containers/food/snacks/candy/nougat name = "Nougat" desc = "A soft, chewy candy commonly found in candybars." icon_state = "nougat" filling_color = "#7D5F46" - -/obj/item/weapon/reagent_containers/food/snacks/candy/nougat/New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sugar", 3) - spawn(1) - reagents.del_reagent("egg") - reagents.update_total() bitesize = 2 + list_reagents = list("nutriment" = 3, "sugar" = 3) /obj/item/weapon/reagent_containers/food/snacks/candy/taffy name = "Saltwater Taffy" desc = "Old fashioned saltwater taffy. Chewy!" icon_state = "candy1" filling_color = "#7D5F46" + bitesize = 2 + list_reagents = list("nutriment" = 3, "sugar" = 3) /obj/item/weapon/reagent_containers/food/snacks/candy/taffy/New() ..() icon_state = pick("candy1", "candy2", "candy3", "candy4", "candy5") - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sugar", 3) - bitesize = 2 /obj/item/weapon/reagent_containers/food/snacks/candy/fudge name = "Fudge" desc = "Chocolate fudge, a timeless classic treat." icon_state = "fudge" filling_color = "#7D5F46" - -/obj/item/weapon/reagent_containers/food/snacks/candy/fudge/New() - ..() - reagents.add_reagent("cream", 3) - reagents.add_reagent("chocolate",6) bitesize = 3 + list_reagents = list("cream" = 3, "chocolate" = 6) /obj/item/weapon/reagent_containers/food/snacks/candy/fudge/peanut name = "Peanut Fudge" @@ -113,10 +87,7 @@ desc = "An extra creamy fudge with bits of real chocolate cookie mixed in. Crunchy!" icon_state = "fudge_cookies_n_cream" filling_color = "#7D5F46" - -/obj/item/weapon/reagent_containers/food/snacks/candy/fudge/cookies_n_cream/New() - ..() - reagents.add_reagent("cream", 3) + list_reagents = list("cream" = 6, "chocolate" = 6) /obj/item/weapon/reagent_containers/food/snacks/candy/fudge/turtle name = "Turtle Fudge" @@ -132,24 +103,16 @@ name = "Donor Candy" desc = "A little treat for blood donors." trash = /obj/item/trash/candy - -/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New() - ..() - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("sugar", 3) bitesize = 5 + list_reagents = list("nutriment" = 10, "sugar" = 3) /obj/item/weapon/reagent_containers/food/snacks/candy/candy_corn name = "candy corn" desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." icon_state = "candycorn" filling_color = "#FFFCB0" - -/obj/item/weapon/reagent_containers/food/snacks/candy/candy_corn/New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("sugar", 2) bitesize = 2 + list_reagents = list("nutriment" = 4, "sugar" = 2) // *********************************************************** // Candy Products (plain / unflavored) @@ -161,11 +124,8 @@ icon_state = "cottoncandy_plain" trash = /obj/item/weapon/c_tube filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/New() - ..() - reagents.add_reagent("sugar", 15) - bitesize = 3 + bitesize = 4 + list_reagents = list("sugar" = 15) /obj/item/weapon/reagent_containers/food/snacks/candy/candybar name = "candy" @@ -173,92 +133,64 @@ icon_state = "candy" trash = /obj/item/trash/candy filling_color = "#7D5F46" - -/obj/item/weapon/reagent_containers/food/snacks/candy/candybar/New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("chocolate",5) bitesize = 3 + list_reagents = list("nutriment" = 2, "chocolate" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/candycane name = "candy cane" desc = "A festive mint candy cane." icon_state = "candycane" filling_color = "#F2F2F2" - -/obj/item/weapon/reagent_containers/food/snacks/candy/candycane/New() - ..() - reagents.add_reagent("minttoxin", 1) - reagents.add_reagent("sugar", 5) bitesize = 2 + list_reagents = list("minttoxin" = 1, "sugar" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear name = "gummy bear" desc = "A small edible bear. It's squishy and chewy!" icon_state = "gbear" filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/New() - ..() - reagents.add_reagent("sugar", 10) bitesize = 3 + list_reagents = list("sugar" = 10) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm name = "gummy worm" desc = "An edible worm, made from gelatin." icon_state = "gworm" filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/New() - ..() - reagents.add_reagent("sugar", 10) bitesize = 3 + list_reagents = list("sugar" = 10) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas." icon_state = "jbean" filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/New() - ..() - reagents.add_reagent("sugar", 10) bitesize = 3 + list_reagents = list("sugar" = 10) /obj/item/weapon/reagent_containers/food/snacks/candy/jawbreaker name = "jawbreaker" desc = "An unbelievably hard candy. The name is fitting." icon_state = "jawbreaker" filling_color = "#ED0758" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jawbreaker/New() - ..() - reagents.add_reagent("sugar", 10) bitesize = 0.1 //this is gonna take a while, you'll be working at this all shift. + list_reagents = list("sugar" = 10) /obj/item/weapon/reagent_containers/food/snacks/candy/cash name = "candy cash" desc = "Not legal tender. Tasty though." icon_state = "candy_cash" filling_color = "#302000" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cash/New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("chocolate", 4) bitesize = 2 + list_reagents = list("nutriment" = 2, "chocolate" = 4) /obj/item/weapon/reagent_containers/food/snacks/candy/coin name = "chocolate coin" desc = "Probably won't work in the vending machines." icon_state = "choc_coin" filling_color = "#302000" - -/obj/item/weapon/reagent_containers/food/snacks/candy/coin/New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("chocolate",4) bitesize = 3 + list_reagents = list("nutriment" = 2, "chocolate" = 4) /obj/item/weapon/reagent_containers/food/snacks/candy/gum name = "bubblegum" @@ -266,22 +198,15 @@ icon_state = "bubblegum" trash = /obj/item/trash/gum filling_color = "#FF7495" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gum/New() - ..() - reagents.add_reagent("sugar", 5) bitesize = 0.2 + list_reagents = list("sugar" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/sucker name = "sucker" desc = "For being such a good sport!" icon_state = "sucker" filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/candy/sucker/New() - ..() - reagents.add_reagent("sugar", 10) - bitesize = 1 + list_reagents = list("sugar" = 10) // *********************************************************** // Gummy Bear Flavors @@ -292,91 +217,56 @@ desc = "A small edible bear. It's red!" icon_state = "gbear_red" filling_color = "#801E28" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/red/New() - ..() - reagents.add_reagent("cherryjelly", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "cherryjelly" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/blue name = "gummy bear" desc = "A small edible bear. It's blue!" icon_state = "gbear_blue" filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/blue/New() - ..() - reagents.add_reagent("berryjuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "berryjuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/poison name = "gummy bear" desc = "A small edible bear. It's blue!" icon_state = "gbear_blue" filling_color = "#863353" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/poison/New() - ..() - reagents.add_reagent("poisonberryjuice", 12) - spawn(1) - reagents.del_reagent("sugar") - reagents.update_total() - bitesize = 3 + list_reagents = list("poisonberryjuice" = 12) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/green name = "gummy bear" desc = "A small edible bear. It's green!" icon_state = "gbear_green" filling_color = "#365E30" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/green/New() - ..() - reagents.add_reagent("limejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "limejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/yellow name = "gummy bear" desc = "A small edible bear. It's yellow!" icon_state = "gbear_yellow" filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/yellow/New() - ..() - reagents.add_reagent("lemonjuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "lemonjuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/orange name = "gummy bear" desc = "A small edible bear. It's orange!" icon_state = "gbear_orange" filling_color = "#E78108" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/orange/New() - ..() - reagents.add_reagent("orangejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "orangejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/purple name = "gummy bear" desc = "A small edible bear. It's purple!" icon_state = "gbear_purple" filling_color = "#993399" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/purple/New() - ..() - reagents.add_reagent("grapejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "grapejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/wtf name = "gummy bear" desc = "A small bear. Wait... what?" icon_state = "gbear_wtf" filling_color = "#60A584" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummybear/wtf/New() - ..() - reagents.add_reagent("space_drugs", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "space_drugs" = 2) // *********************************************************** // Gummy Worm Flavors @@ -387,91 +277,56 @@ desc = "An edible worm, made from gelatin. It's red!" icon_state = "gworm_red" filling_color = "#801E28" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/red/New() - ..() - reagents.add_reagent("cherryjelly", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "cherryjelly" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/blue name = "gummy worm" desc = "An edible worm, made from gelatin. It's blue!" icon_state = "gworm_blue" filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/blue/New() - ..() - reagents.add_reagent("berryjuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "berryjuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/poison name = "gummy worm" desc = "An edible worm, made from gelatin. It's blue!" icon_state = "gworm_blue" filling_color = "#863353" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/poison/New() - ..() - reagents.add_reagent("poisonberryjuice", 12) - spawn(1) - reagents.del_reagent("sugar") - reagents.update_total() - bitesize = 3 + list_reagents = list("poisonberryjuice" = 12) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/green name = "gummy worm" desc = "An edible worm, made from gelatin. It's green!" icon_state = "gworm_green" filling_color = "#365E30" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/green/New() - ..() - reagents.add_reagent("limejuice", 10) - bitesize = 3 + list_reagents = list("sugar" = 10, "limejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/yellow name = "gummy worm" desc = "An edible worm, made from gelatin. It's yellow!" icon_state = "gworm_yellow" filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/yellow/New() - ..() - reagents.add_reagent("lemonjuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "lemonjuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/orange name = "gummy worm" desc = "An edible worm, made from gelatin. It's orange!" icon_state = "gworm_orange" filling_color = "#E78108" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/orange/New() - ..() - reagents.add_reagent("orangejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "orangejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/purple name = "gummy worm" desc = "An edible worm, made from gelatin. It's purple!" icon_state = "gworm_purple" filling_color = "#993399" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/purple/New() - ..() - reagents.add_reagent("grapejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "grapejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/wtf name = "gummy worm" desc = "An edible worm. Did it just move?" icon_state = "gworm_wtf" filling_color = "#60A584" - -/obj/item/weapon/reagent_containers/food/snacks/candy/gummyworm/wtf/New() - ..() - reagents.add_reagent("space_drugs", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "space_drugs" = 2) // *********************************************************** // Jelly Bean Flavors @@ -482,146 +337,91 @@ desc = "A candy bean, guarenteed to not give you gas. It's red!" icon_state = "jbean_red" filling_color = "#801E28" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/red/New() - ..() - reagents.add_reagent("cherryjelly", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "cherryjelly" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/blue name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's blue!" icon_state = "jbean_blue" filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/blue/New() - ..() - reagents.add_reagent("berryjuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "berryjuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/poison name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's blue!" icon_state = "jbean_blue" filling_color = "#863353" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/poison/New() - ..() - reagents.add_reagent("poisonberryjuice", 12) - spawn(1) - reagents.del_reagent("sugar") - reagents.update_total() - bitesize = 3 + list_reagents = list("poisonberryjuice" = 12) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/green name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's green!" icon_state = "jbean_green" filling_color = "#365E30" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/green/New() - ..() - reagents.add_reagent("limejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "limejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/yellow name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's yellow!" icon_state = "jbean_yellow" filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/yellow/New() - ..() - reagents.add_reagent("lemonjuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "lemonjuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/orange name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's orange!" icon_state = "jbean_orange" filling_color = "#E78108" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/orange/New() - ..() - reagents.add_reagent("orangejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "orangejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/purple name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's purple!" icon_state = "jbean_purple" filling_color = "#993399" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/purple/New() - ..() - reagents.add_reagent("grapejuice", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "grapejuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/chocolate name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's chocolate!" icon_state = "jbean_choc" filling_color = "#302000" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/chocolate/New() - ..() - reagents.add_reagent("chocolate",2) - bitesize = 3 + list_reagents = list("sugar" = 10, "chocolate" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/popcorn name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's popcorn flavored!" icon_state = "jbean_popcorn" filling_color = "#664330" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/popcorn/New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/cola name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's Cola flavored!" icon_state = "jbean_cola" filling_color = "#102000" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/cola/New() - ..() - reagents.add_reagent("cola", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "cola" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/drgibb name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's Dr. Gibb flavored!" icon_state = "jbean_cola" filling_color = "#102000" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/drgibb/New() - ..() - reagents.add_reagent("dr_gibb", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "dr_gibb" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/coffee name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. It's Coffee flavored!" icon_state = "jbean_choc" filling_color = "#482000" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/coffee/New() - ..() - reagents.add_reagent("coffee", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "coffee" = 2) /obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/wtf name = "jelly bean" desc = "A candy bean, guarenteed to not give you gas. You aren't sure what color it is." icon_state = "jbean_wtf" filling_color = "#60A584" - -/obj/item/weapon/reagent_containers/food/snacks/candy/jellybean/wtf/New() - ..() - reagents.add_reagent("space_drugs", 2) - bitesize = 3 + list_reagents = list("sugar" = 10, "space_drugs" = 2) // *********************************************************** // Cotton Candy Flavors @@ -633,11 +433,7 @@ icon_state = "cottoncandy_red" trash = /obj/item/weapon/c_tube filling_color = "#801E28" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/red/New() - ..() - reagents.add_reagent("cherryjelly", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "cherryjelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/blue name = "cotton candy" @@ -645,11 +441,7 @@ icon_state = "cottoncandy_blue" trash = /obj/item/weapon/c_tube filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/blue/New() - ..() - reagents.add_reagent("berryjuice", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "berryjuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/poison name = "cotton candy" @@ -657,14 +449,7 @@ icon_state = "cottoncandy_blue" trash = /obj/item/weapon/c_tube filling_color = "#863353" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/poison/New() - ..() - reagents.add_reagent("poisonberryjuice", 20) - spawn(1) - reagents.del_reagent("sugar") - reagents.update_total() - bitesize = 4 + list_reagents = list("poisonberryjuice" = 20) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/green name = "cotton candy" @@ -672,11 +457,7 @@ icon_state = "cottoncandy_green" trash = /obj/item/weapon/c_tube filling_color = "#365E30" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/green/New() - ..() - reagents.add_reagent("limejuice", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "limejuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/yellow name = "cotton candy" @@ -684,11 +465,7 @@ icon_state = "cottoncandy_yellow" trash = /obj/item/weapon/c_tube filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/yellow/New() - ..() - reagents.add_reagent("lemonjuice", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "lemonjuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/orange name = "cotton candy" @@ -696,11 +473,7 @@ icon_state = "cottoncandy_orange" trash = /obj/item/weapon/c_tube filling_color = "#E78108" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/orange/New() - ..() - reagents.add_reagent("orangejuice", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "orangejuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/purple name = "cotton candy" @@ -708,11 +481,7 @@ icon_state = "cottoncandy_purple" trash = /obj/item/weapon/c_tube filling_color = "#993399" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/purple/New() - ..() - reagents.add_reagent("grapejuice", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "grapejuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/pink name = "cotton candy" @@ -720,11 +489,7 @@ icon_state = "cottoncandy_pink" trash = /obj/item/weapon/c_tube filling_color = "#863333" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/pink/New() - ..() - reagents.add_reagent("watermelonjuice", 5) - bitesize = 4 + list_reagents = list("sugar" = 15, "watermelonjuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/rainbow name = "cotton candy" @@ -732,14 +497,7 @@ icon_state = "cottoncandy_rainbow" trash = /obj/item/weapon/c_tube filling_color = "#C8A5DC" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/rainbow/New() - ..() - reagents.add_reagent("omnizine", 20) - spawn(1) - reagents.del_reagent("sugar") - reagents.update_total() - bitesize = 4 + list_reagents = list("omnizine" = 20) /obj/item/weapon/reagent_containers/food/snacks/candy/cotton/bad_rainbow name = "cotton candy" @@ -747,14 +505,7 @@ icon_state = "cottoncandy_rainbow" trash = /obj/item/weapon/c_tube filling_color = "#32127A" - -/obj/item/weapon/reagent_containers/food/snacks/candy/cotton/bad_rainbow/New() - ..() - reagents.add_reagent("sulfonal", 20) - spawn(1) - reagents.del_reagent("sugar") - reagents.update_total() - bitesize = 4 + list_reagents = list("sulfonal" = 20) // *********************************************************** // Candybar Flavors diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 931e84b892b..d7ffca96843 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -82,7 +82,7 @@ if(target.reagents.total_volume >= target.reagents.maximum_volume) to_chat(user, "you can't add anymore to [target]!") return - var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) + var/trans = reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, "You transfer [trans] units of the condiment to [target].") /obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() @@ -223,7 +223,7 @@ return else to_chat(user, "You tear open [src] above [target] and the condiments drip onto it.") - src.reagents.trans_to(target, amount_per_transfer_from_this) + reagents.trans_to(target, amount_per_transfer_from_this) qdel(src) /obj/item/weapon/reagent_containers/food/condiment/pack/on_reagent_change() diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 78651f97b0c..77e3f22a1e8 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich/S = new(get_turf(user)) S.attackby(W,user, params) @@ -6,13 +6,13 @@ else ..() -/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/burger/S = new(get_turf(user)) S.attackby(W,user, params) qdel(src) -/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza/S = new(get_turf(user)) S.attackby(W,user, params) @@ -21,7 +21,7 @@ ..() -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta/S = new(get_turf(user)) S.attackby(W,user, params) @@ -30,7 +30,7 @@ ..() -/obj/item/trash/plate/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/trash/plate/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom/S = new(get_turf(user)) S.attackby(W,user, params) @@ -44,7 +44,7 @@ icon = 'icons/obj/food/food.dmi' icon_state = "soup" -/obj/item/trash/bowl/attackby(obj/item/W as obj, mob/user as mob, params) +/obj/item/trash/bowl/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/weapon/reagent_containers/food/snacks) && !(W.flags & NODROP)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/soup/S = new(get_turf(user)) @@ -54,7 +54,6 @@ ..() /obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich - /obj/item/weapon/reagent_containers/food/snacks/customizable name = "sandwich" desc = "A sandwich! A timeless classic." icon_state = "breadslice" @@ -79,12 +78,7 @@ trash = /obj/item/trash/plate bitesize = 2 var/list/ingredients = list() - - New() - ..() - - reagents.add_reagent("nutriment", 8) - + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/customizable/pizza name = "personal pizza" @@ -323,7 +317,7 @@ toptype = new /obj/item/weapon/reagent_containers/food/snacks/bun() /obj/item/weapon/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user, params) - if(src.contents.len > sandwich_limit) + if(contents.len > sandwich_limit) to_chat(user, "If you put anything else in or on [src] it's going to make a mess.") return if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks)) @@ -351,7 +345,7 @@ for(var/obj/item/O in ingredients) i++ if(!fullycustom) - var/image/I = new(src.icon, "[baseicon]_filling") + var/image/I = new(icon, "[baseicon]_filling") if(istype(O, /obj/item/weapon/reagent_containers/food/snacks)) var/obj/item/weapon/reagent_containers/food/snacks/food = O if(!food.filling_color == "#FFFFFF") @@ -372,7 +366,7 @@ overlays += O.overlays if(top) - var/image/T = new(src.icon, "[baseicon]_top") + var/image/T = new(icon, "[baseicon]_top") T.pixel_x = pick(list(-1,0,1)) T.pixel_y = (ingredients.len * 2)+1 overlays += T @@ -388,24 +382,6 @@ to_chat(user, " You think you can see [whatsinside] in there.") -/* -/obj/item/weapon/reagent_containers/food/snacks/customizable/attack(mob/M as mob, mob/user as mob, def_zone) //SNOOOOOOOWFLAAAAAAAAAAAAAAAAAKES - - var/obj/item/shard - for(var/obj/item/O in contents) - if(istype(O,/obj/item/weapon/shard)) - shard = O - break - - var/mob/living/H - if(istype(M,/mob/living)) - H = M - - if(H && shard && M == user) //This needs a check for feeding the food to other people, but that could be abusable. - to_chat(H, "\red You lacerate your mouth on a [shard.name] in the sandwich!") - H.adjustBruteLoss(5) //TODO: Target head if human. - ..() -*/ /obj/item/weapon/reagent_containers/food/snacks/customizable/proc/newname() var/unsorteditems[0] @@ -487,7 +463,7 @@ sendback = "[pick(list("absurd","colossal","enormous","ridiculous","massive","oversized","cardiac-arresting","pipe-clogging","edible but sickening","sickening","gargantuan","mega","belly-burster","chest-burster"))] [basename]" return sendback -/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/sortlist(var/list/unsorted, var/highest) +/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/sortlist(list/unsorted, highest) var/sorted[0] for(var/i = 1, i<= highest, i++) for(var/it in unsorted) diff --git a/code/modules/food_and_drinks/food/meat.dm b/code/modules/food_and_drinks/food/meat.dm index 76de76530ea..4635f6eb9b1 100644 --- a/code/modules/food_and_drinks/food/meat.dm +++ b/code/modules/food_and_drinks/food/meat.dm @@ -4,16 +4,11 @@ icon_state = "meat" health = 180 filling_color = "#FF1C1C" - New() - ..() - reagents.add_reagent("protein", 3) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 3) -/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if( \ - istype(W, /obj/item/weapon/kitchen/knife) || \ - istype(W, /obj/item/weapon/scalpel) \ - ) +/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/kitchen/knife) || istype(W, /obj/item/weapon/scalpel)) new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) @@ -49,6 +44,4 @@ /obj/item/weapon/reagent_containers/food/snacks/meat/ham name = "Ham" desc = "Taste like bacon." - New() - ..() - reagents.add_reagent("porktonium", 10) + list_reagents = list("protein" = 3, "porktonium" = 10) \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/seafood.dm b/code/modules/food_and_drinks/food/seafood.dm index 410c225247c..c0a95d39315 100644 --- a/code/modules/food_and_drinks/food/seafood.dm +++ b/code/modules/food_and_drinks/food/seafood.dm @@ -5,12 +5,8 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfillet" filling_color = "#FFDEFE" - - New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - src.bitesize = 6 + bitesize = 6 + list_reagents = list("protein" = 3, "carpotoxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/salmonmeat name = "raw salmon" @@ -18,11 +14,8 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfillet" filling_color = "#FFDEFE" - - New() - ..() - reagents.add_reagent("protein", 3) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 3) /obj/item/weapon/reagent_containers/food/snacks/salmonsteak name = "Salmon steak" @@ -31,14 +24,8 @@ icon_state = "salmonsteak" trash = /obj/item/trash/plate filling_color = "#7A3D11" - - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 3 - + bitesize = 3 + list_reagents = list("nutriment" = 4, "sodiumchloride" = 1, "blackpepper" = 1) /obj/item/weapon/reagent_containers/food/snacks/catfishmeat name = "raw catfish" @@ -46,11 +33,8 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfillet" filling_color = "#FFDEFE" - - New() - ..() - reagents.add_reagent("protein", 3) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 3) /obj/item/weapon/reagent_containers/food/snacks/fishfingers name = "Fish Fingers" @@ -58,15 +42,8 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "fishfingers" filling_color = "#FFDEFE" - - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("carpotoxin", 3) - spawn(1) - reagents.del_reagent("egg") - reagents.update_total() - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 4, "carpotoxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/fishburger name = "Fillet -o- Carp Sandwich" @@ -74,12 +51,8 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "fishburger" filling_color = "#FFDEFE" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "carpotoxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/cubancarp name = "Cuban Carp" @@ -88,13 +61,8 @@ icon_state = "cubancarp" trash = /obj/item/trash/plate filling_color = "#E9ADFF" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("carpotoxin", 3) - reagents.add_reagent("capsaicin", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "carpotoxin" = 3, "capsaicin" = 3) /obj/item/weapon/reagent_containers/food/snacks/fishandchips name = "Fish and Chips" @@ -102,168 +70,117 @@ icon = 'icons/obj/food/seafood.dmi' icon_state = "fishandchips" filling_color = "#E3D796" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "carpotoxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/sashimi name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon = 'icons/obj/food/seafood.dmi' icon_state = "sashimi" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("toxin", 5) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "toxin" = 5) /obj/item/weapon/reagent_containers/food/snacks/fried_shrimp name = "fried shrimp" desc = "Just one of the many things you can do with shrimp!" icon = 'icons/obj/food/seafood.dmi' icon_state = "shrimp_fried" - - New() - ..() - reagents.add_reagent("nutriment", 2) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/boiled_shrimp name = "boiled shrimp" desc = "Just one of the many things you can do with shrimp!" icon = 'icons/obj/food/seafood.dmi' icon_state = "shrimp_cooked" - - New() - ..() - reagents.add_reagent("nutriment", 2) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_Ebi name = "Ebi Sushi" desc = "A simple sushi consisting of cooked shrimp and rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Ebi" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_Ikura name = "Ikura Sushi" desc = "A simple sushi consisting of salmon roe." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Ikura" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("protein", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2, "protein" = 1) /obj/item/weapon/reagent_containers/food/snacks/sushi_Sake name = "Sake Sushi" desc = "A simple sushi consisting of raw salmon and rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Sake" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_SmokedSalmon name = "Smoked Salmon Sushi" desc = "A simple sushi consisting of cooked salmon and rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_SmokedSalmon" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_Tamago name = "Tamago Sushi" desc = "A simple sushi consisting of egg and rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Tamago" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_Inari name = "Inari Sushi" desc = "A piece of fried tofu stuffed with rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Inari" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_Masago name = "Masago Sushi" desc = "A simple sushi consisting of goldfish roe." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Masago" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("protein", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2, "protein" = 1) /obj/item/weapon/reagent_containers/food/snacks/sushi_Tobiko name = "Tobiko Sushi" desc = "A simple sushi consisting of shark roe." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Masago" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("protein", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2, "protein" = 1) /obj/item/weapon/reagent_containers/food/snacks/sushi_TobikoEgg name = "Tobiko and Egg Sushi" desc = "A sushi consisting of shark roe and an egg." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_TobikoEgg" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("protein", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2, "protein" = 1) /obj/item/weapon/reagent_containers/food/snacks/sushi_Tai name = "Tai Sushi" desc = "A simple sushi consisting of catfish and rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Tai" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/sushi_Unagi name = "Unagi Sushi" desc = "A simple sushi consisting of eel and rice." icon = 'icons/obj/food/seafood.dmi' icon_state = "sushi_Hokki" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 \ No newline at end of file + bitesize = 3 + list_reagents = list("nutriment" = 2) \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index d403b4aae4b..49cd0c1fa3b 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -4,7 +4,6 @@ desc = "yummy" icon = 'icons/obj/food/food.dmi' icon_state = null - bitesize = 1 var/bitecount = 0 var/trash = null var/slice_path @@ -38,10 +37,10 @@ /obj/item/weapon/reagent_containers/food/snacks/proc/Post_Consume(mob/living/M) return -/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) +/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user) return -/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) +/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M, mob/user, def_zone) if(reagents && !reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it. to_chat(user, "None of [src] left, oh no!") M.unEquip(src) //so icons update :[ @@ -64,11 +63,11 @@ if(bitecount==0) return else if(bitecount==1) - to_chat(user, "\blue \The [src] was bitten by someone!") + to_chat(user, "[src] was bitten by someone!") else if(bitecount<=3) - to_chat(user, "\blue \The [src] was bitten [bitecount] times!") + to_chat(user, "[src] was bitten [bitecount] times!") else - to_chat(user, "\blue \The [src] was bitten multiple times!") + to_chat(user, "[src] was bitten multiple times!") /obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W, mob/user, params) @@ -93,10 +92,10 @@ "You scoop up some [src] with \the [U]!" \ ) - src.bitecount++ + bitecount++ U.overlays.Cut() var/image/I = new(U.icon, "loadedfood") - I.color = src.filling_color + I.color = filling_color U.overlays += I var/obj/item/weapon/reagent_containers/food/snacks/collected = new type @@ -136,7 +135,7 @@ else if(W.w_class <= 2 && istype(src,/obj/item/weapon/reagent_containers/food/snacks/sliceable)) if(!iscarbon(user)) return 1 - to_chat(user, "\red You slip [W] inside [src].") + to_chat(user, "You slip [W] inside [src].") user.unEquip(W) if((user.client && user.s_active != src)) user.client.screen -= W @@ -147,28 +146,28 @@ else return 1 if( \ - !isturf(src.loc) || \ - !(locate(/obj/structure/table) in src.loc) && \ - !(locate(/obj/machinery/optable) in src.loc) && \ - !(locate(/obj/item/weapon/storage/bag/tray) in src.loc) \ + !isturf(loc) || \ + !(locate(/obj/structure/table) in loc) && \ + !(locate(/obj/machinery/optable) in loc) && \ + !(locate(/obj/item/weapon/storage/bag/tray) in loc) \ ) - to_chat(user, "\red You cannot slice [src] here! You need a table or at least a tray to do it.") + to_chat(user, "You cannot slice [src] here! You need a table or at least a tray to do it.") return 1 var/slices_lost = 0 if(!inaccurate) user.visible_message( \ - "\blue [user] slices \the [src]!", \ - "\blue You slice \the [src]!" \ + "[user] slices [src]!", \ + "You slice [src]!" \ ) else user.visible_message( \ - "\blue [user] crudely slices \the [src] with [W]!", \ - "\blue You crudely slice \the [src] with your [W]!" \ + "[user] crudely slices [src] with [W]!", \ + "You crudely slice [src] with your [W]!" \ ) slices_lost = rand(1,min(1,round(slices_num/2))) var/reagents_per_slice = reagents.total_volume/slices_num for(var/i=1 to (slices_num-slices_lost)) - var/obj/slice = new slice_path (src.loc) + var/obj/slice = new slice_path (loc) reagents.trans_to(slice,reagents_per_slice) qdel(src) @@ -185,19 +184,19 @@ M.changeNext_move(CLICK_CD_MELEE) if(iscorgi(M)) if(bitecount >= 4) - M.visible_message("[M] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where \the [src] was")].","You swallow up the last part of \the [src].") - playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + M.visible_message("[M] [pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was")].","You swallow up the last part of [src].") + playsound(loc,'sound/items/eatfood.ogg', rand(10,50), 1) var/mob/living/simple_animal/pet/corgi/C = M C.adjustBruteLoss(-5) C.adjustFireLoss(-5) qdel(src) else - M.visible_message("[M] takes a bite of \the [src].","You take a bite of \the [src].") - playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + M.visible_message("[M] takes a bite of [src].","You take a bite of [src].") + playsound(loc,'sound/items/eatfood.ogg', rand(10,50), 1) bitecount++ else if(ismouse(M)) var/mob/living/simple_animal/mouse/N = M - to_chat(N, text("\blue You nibble away at [src].")) + to_chat(N, text("You nibble away at [src].")) if(prob(50)) N.visible_message("[N] nibbles away at [src].", "") //N.emote("nibbles away at the [src]") @@ -255,49 +254,8 @@ icon_state = "aesirsalad" trash = /obj/item/trash/snack_bowl filling_color = "#468C00" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("omnizine", 8) - bitesize = 3 - -/* -/obj/item/weapon/reagent_containers/food/snacks/candy - name = "candy" - desc = "Nougat, love it or hate it." - icon_state = "candy" - trash = /obj/item/trash/candy - filling_color = "#7D5F46" - - New() - ..() - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("sugar", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/candy/donor - name = "Donor Candy" - desc = "A little treat for blood donors." - trash = /obj/item/trash/candy - New() - ..() - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("sugar", 3) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/candy_corn - name = "candy corn" - desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." - icon_state = "candy_corn" - filling_color = "#FFFCB0" - - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("sugar", 2) - bitesize = 2 -*/ + bitesize = 3 + list_reagents = list("nutriment" = 8, "omnizine" = 8) /obj/item/weapon/reagent_containers/food/snacks/chips name = "chips" @@ -305,12 +263,7 @@ icon_state = "chips" trash = /obj/item/trash/chips filling_color = "#E8C31E" - - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 1 + list_reagents = list("nutriment" = 3, "sodiumchloride" = 1) /obj/item/weapon/reagent_containers/food/snacks/cornchips name = "corn chips" @@ -318,123 +271,79 @@ icon_state = "chips" trash = /obj/item/trash/chips filling_color = "#E8C31E" - - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 1 + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/cookie name = "cookie" desc = "COOKIE!!!" icon_state = "COOKIE!!!" filling_color = "#DBC94F" - - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 1 + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/chocolatebar name = "Chocolate Bar" desc = "Such sweet, fattening food." icon_state = "chocolatebar" filling_color = "#7D5F46" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("chocolate",4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2, "chocolate" = 4) /obj/item/weapon/reagent_containers/food/snacks/choc_pile //for reagent chocolate being spilled on turfs name = "Pile of Chocolate" desc = "A pile of pure chocolate pieces." icon_state = "cocoa" filling_color = "#7D5F46" - - New() - ..() - reagents.add_reagent("chocolate",5) //no longer can be used to generate the reagent infinitely - bitesize = 2 + bitesize = 2 + list_reagents = list("chocolate" = 5) /obj/item/weapon/reagent_containers/food/snacks/chocolateegg name = "Chocolate Egg" desc = "Such sweet, fattening food." icon_state = "chocolateegg" filling_color = "#7D5F46" - - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("chocolate",4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 3, "chocolate" = 4) /obj/item/weapon/reagent_containers/food/snacks/donut name = "donut" desc = "Goes great with Robust Coffee." icon_state = "donut1" filling_color = "#D9C386" + bitesize = 3 /obj/item/weapon/reagent_containers/food/snacks/donut/normal name = "donut" desc = "Goes great with Robust Coffee." icon_state = "donut1" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - src.bitesize = 3 - if(prob(30)) - src.icon_state = "donut2" - src.name = "frosted donut" - reagents.add_reagent("sprinkles", 2) + list_reagents = list("nutriment" = 3, "sprinkles" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New() + ..() + if(prob(30)) + icon_state = "donut2" + name = "frosted donut" + reagents.add_reagent("sprinkles", 2) /obj/item/weapon/reagent_containers/food/snacks/donut/sprinkles name = "frosted donut" icon_state = "donut2" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 3) + list_reagents = list("nutriment" = 3, "sprinkles" = 3) /obj/item/weapon/reagent_containers/food/snacks/donut/chaos name = "Chaos Donut" desc = "Like life, it never quite tastes the same." icon_state = "donut1" filling_color = "#ED11E6" + bitesize = 10 - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("sprinkles", 1) - bitesize = 10 - var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10) - switch(chaosselect) - if(1) - reagents.add_reagent("nutriment", 3) - if(2) - reagents.add_reagent("capsaicin", 3) - if(3) - reagents.add_reagent("frostoil", 3) - if(4) - reagents.add_reagent("sprinkles", 3) - if(5) - reagents.add_reagent("plasma", 3) - if(6) - reagents.add_reagent("chocolate", 3) - if(7) - reagents.add_reagent("slimejelly", 3) - if(8) - reagents.add_reagent("banana", 3) - if(9) - reagents.add_reagent("berryjuice", 3) - if(10) - reagents.add_reagent("omnizine", 3) - if(prob(30)) - src.icon_state = "donut2" - src.name = "Frosted Chaos Donut" - reagents.add_reagent("sprinkles", 2) +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New() + ..() + var/extra_reagent = pick("nutriment", "capsaicin", "frostoil", "sprinkles", "plasma", "chocolate", "slimejelly", "banana", "berryjuice", "omnizine") + reagents.add_reagent("[extra_reagent]", 3) + if(prob(30)) + icon_state = "donut2" + name = "Frosted Chaos Donut" + reagents.add_reagent("sprinkles", 2) /obj/item/weapon/reagent_containers/food/snacks/donut/jelly @@ -442,85 +351,75 @@ desc = "You jelly?" icon_state = "jdonut1" filling_color = "#ED1169" + bitesize = 5 + list_reagents = list("nutriment" = 3, "sprinkles" = 1, "berryjuice" = 5) - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("berryjuice", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) +/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New() + ..() + if(prob(30)) + icon_state = "jdonut2" + name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) /obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly name = "Jelly Donut" desc = "You jelly?" icon_state = "jdonut1" filling_color = "#ED1169" + bitesize = 5 + list_reagents = list("nutriment" = 3, "sprinkles" = 1, "slimejelly" = 5) - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("slimejelly", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) +/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New() + ..() + if(prob(30)) + icon_state = "jdonut2" + name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) /obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly name = "Jelly Donut" desc = "You jelly?" icon_state = "jdonut1" filling_color = "#ED1169" + bitesize = 5 + list_reagents = list("nutriment" = 3, "sprinkles" = 1, "cherryjelly" = 5) - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("cherryjelly", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) +/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New() + ..() + if(prob(30)) + icon_state = "jdonut2" + name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) /obj/item/weapon/reagent_containers/food/snacks/egg name = "egg" desc = "An egg!" icon_state = "egg" filling_color = "#FDFFD1" + list_reagents = list("protein" = 1, "egg" = 5) - New() +/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) + ..() + var/turf/T = get_turf(hit_atom) + new/obj/effect/decal/cleanable/egg_smudge(T) + if(reagents) + reagents.reaction(hit_atom, TOUCH) + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W, mob/user, params) + if(istype( W, /obj/item/toy/crayon )) + var/obj/item/toy/crayon/C = W + var/clr = C.colourName + + if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) + to_chat(usr, "The egg refuses to take on this color!") + return + + to_chat(usr, "You color \the [src] [clr]") + icon_state = "egg-[clr]" + item_color = clr + else ..() - reagents.add_reagent("protein", 1) - reagents.add_reagent("egg", 5) - - throw_impact(atom/hit_atom) - ..() - var/turf/T = get_turf(hit_atom) - new/obj/effect/decal/cleanable/egg_smudge(T) - if(reagents) - reagents.reaction(hit_atom, TOUCH) - qdel(src) - - attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype( W, /obj/item/toy/crayon )) - var/obj/item/toy/crayon/C = W - var/clr = C.colourName - - if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) - to_chat(usr, "\blue The egg refuses to take on this color!") - return - - to_chat(usr, "\blue You color \the [src] [clr]") - icon_state = "egg-[clr]" - item_color = clr - else - ..() /obj/item/weapon/reagent_containers/food/snacks/egg/blue icon_state = "egg-blue" @@ -559,25 +458,14 @@ desc = "A fried egg, with a touch of salt and pepper." icon_state = "friedegg" filling_color = "#FFDF78" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("egg", 5) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 1 + list_reagents = list("nutriment" = 2, "egg" = 5, "sodiumchloride" = 1, "blackpepper" = 1) /obj/item/weapon/reagent_containers/food/snacks/boiledegg name = "Boiled egg" desc = "A hard boiled egg." icon_state = "egg" filling_color = "#FFFFFF" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("egg", 5) + list_reagents = list("nutriment" = 2, "egg" = 5) /obj/item/weapon/reagent_containers/food/snacks/organ @@ -586,11 +474,8 @@ icon = 'icons/obj/surgery.dmi' icon_state = "appendix" filling_color = "#E00D34" - - New() - ..() - reagents.add_reagent("protein", 4) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 4) /obj/item/weapon/reagent_containers/food/snacks/appendix //yes, this is the same as meat. I might do something different in future @@ -599,11 +484,8 @@ icon = 'icons/obj/surgery.dmi' icon_state = "appendix" filling_color = "#E00D34" - - New() - ..() - reagents.add_reagent("protein", 3) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 3) /obj/item/weapon/reagent_containers/food/snacks/appendix/inflamed name = "inflamed appendix" @@ -616,179 +498,125 @@ icon_state = "tofu" desc = "We all love tofu." filling_color = "#FFFEE0" - - New() - ..() - reagents.add_reagent("plantmatter", 3) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("plantmatter" = 3) /obj/item/weapon/reagent_containers/food/snacks/fried_tofu name = "Fried Tofu" icon_state = "tofu" desc = "Proof that even vegetarians crave unhealthy foods." filling_color = "#FFFEE0" - - New() - ..() - reagents.add_reagent("nutriment", 3) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/tofurkey name = "Tofurkey" desc = "A fake turkey made from tofu." icon_state = "tofurkey" filling_color = "#FFFEE0" - - New() - ..() - reagents.add_reagent("nutriment", 12) - reagents.add_reagent("ether", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 12, "ether" = 3) /obj/item/weapon/reagent_containers/food/snacks/stuffing name = "Stuffing" desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" icon_state = "stuffing" filling_color = "#C9AC83" - - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 1 + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice name = "huge mushroom slice" desc = "A slice from a huge mushroom." icon_state = "hugemushroomslice" filling_color = "#E0D7C5" - - New() - ..() - reagents.add_reagent("plantmatter", 3) - reagents.add_reagent("psilocybin", 3) - src.bitesize = 6 + bitesize = 6 + list_reagents = list("plantmatter" = 3, "psilocybin" = 3) /obj/item/weapon/reagent_containers/food/snacks/tomatomeat name = "tomato slice" desc = "A slice from a huge tomato" icon_state = "tomatomeat" filling_color = "#DB0000" - - New() - ..() - reagents.add_reagent("protein", 3) - src.bitesize = 6 + bitesize = 6 + list_reagents = list("protein" = 3) /obj/item/weapon/reagent_containers/food/snacks/bearmeat name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" filling_color = "#DB0000" - - New() - ..() - reagents.add_reagent("protein", 12) - reagents.add_reagent("methamphetamine", 5) - src.bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 12, "methamphetamine" = 5) /obj/item/weapon/reagent_containers/food/snacks/xenomeat name = "meat" desc = "A slab of meat" icon_state = "xenomeat" filling_color = "#43DE18" - - New() - ..() - reagents.add_reagent("protein", 3) - src.bitesize = 6 + bitesize = 6 + list_reagents = list("protein" = 3) /obj/item/weapon/reagent_containers/food/snacks/spidermeat name = "spider meat" desc = "A slab of spider meat." icon_state = "spidermeat" - New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("toxin", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 3, "toxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/lizardmeat name = "mutant lizard meat" desc = "Seems to be a slab of meat from some mutant lizard thing?" icon_state = "xenomeat" filling_color = "#43DE18" - - New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("toxin", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("protein" = 3, "toxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/spiderleg name = "spider leg" desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?" icon_state = "spiderleg" - New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("toxin", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 2, "toxin" = 2) /obj/item/weapon/reagent_containers/food/snacks/meatball name = "Meatball" desc = "A great meal all round." icon_state = "meatball" filling_color = "#DB0000" - New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 3) /obj/item/weapon/reagent_containers/food/snacks/sausage name = "Sausage" desc = "A piece of mixed, long meat." icon_state = "sausage" filling_color = "#DB0000" - - New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("porktonium", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 6, "porktonium" = 10) /obj/item/weapon/reagent_containers/food/snacks/donkpocket name = "Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" filling_color = "#DEDEAB" - - New() - ..() - reagents.add_reagent("nutriment", 4) + list_reagents = list("nutriment" = 4) /obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket name = "Warm Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" filling_color = "#DEDEAB" + list_reagents = list("nutriment" = 4) - New() - ..() - reagents.add_reagent("nutriment", 4) - - Post_Consume(mob/living/M) - M.reagents.add_reagent("omnizine", 15) +/obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket/Post_Consume(mob/living/M) + M.reagents.add_reagent("omnizine", 15) /obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket_weak name = "Lightly Warm Donk-pocket" desc = "The food of choice for the seasoned traitor. This one is lukewarm." icon_state = "donkpocket" filling_color = "#DEDEAB" - -/obj/item/weapon/reagent_containers/food/snacks/warmdonkpocket_weak/New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("weak_omnizine", 3) + list_reagents = list("nutriment" = 4, "weak_omnizine" = 3) /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket name = "Donk-pocket" @@ -796,42 +624,31 @@ icon_state = "donkpocket" filling_color = "#DEDEAB" bitesize = 100 //nom the whole thing at once. + list_reagents = list("nutriment" = 1) - New() - ..() - reagents.add_reagent("nutriment", 1) - - Post_Consume(mob/living/M) - M.reagents.add_reagent("omnizine", 15) - M.reagents.add_reagent("teporone", 15) - M.reagents.add_reagent("synaptizine", 15) - M.reagents.add_reagent("salglu_solution", 15) - M.reagents.add_reagent("salbutamol", 15) - M.reagents.add_reagent("methamphetamine", 15) +/obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket/Post_Consume(mob/living/M) + M.reagents.add_reagent("omnizine", 15) + M.reagents.add_reagent("teporone", 15) + M.reagents.add_reagent("synaptizine", 15) + M.reagents.add_reagent("salglu_solution", 15) + M.reagents.add_reagent("salbutamol", 15) + M.reagents.add_reagent("methamphetamine", 15) /obj/item/weapon/reagent_containers/food/snacks/brainburger name = "brainburger" desc = "A strange looking burger. It looks almost sentient." icon_state = "brainburger" filling_color = "#F2B6EA" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("prions", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6, "prions" = 10) /obj/item/weapon/reagent_containers/food/snacks/ghostburger name = "Ghost Burger" desc = "Spooky! It doesn't look very filling." icon_state = "ghostburger" filling_color = "#FFF2FF" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 - + bitesize = 2 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/human var/hname = "" @@ -842,52 +659,38 @@ name = "-burger" desc = "A bloody burger." icon_state = "hburger" - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/cheeseburger name = "cheeseburger" desc = "The cheese adds a good flavor." icon_state = "cheeseburger" - New() - ..() - reagents.add_reagent("nutriment", 2) + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/monkeyburger name = "burger" desc = "The cornerstone of every nutritious breakfast." icon_state = "hburger" filling_color = "#D63C3C" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/tofuburger name = "Tofu Burger" desc = "What.. is that meat?" icon_state = "tofuburger" filling_color = "#FFFEE0" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/roburger name = "roburger" desc = "The lettuce is the only organic component. Beep." icon_state = "roburger" filling_color = "#CCCCCC" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("nanomachines", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2, "nanomachines" = 10) /obj/item/weapon/reagent_containers/food/snacks/roburgerbig name = "roburger" @@ -895,49 +698,32 @@ icon_state = "roburger" filling_color = "#CCCCCC" volume = 100 - - New() - ..() - reagents.add_reagent("nanomachines", 100) - bitesize = 0.1 + bitesize = 0.1 + list_reagents = list("nanomachines" = 100) /obj/item/weapon/reagent_containers/food/snacks/xenoburger name = "xenoburger" desc = "Smells caustic. Tastes like heresy." icon_state = "xburger" filling_color = "#43DE18" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/clownburger name = "Clown Burger" desc = "This tastes funny..." icon_state = "clownburger" filling_color = "#FF00FF" - - New() - ..() -/* - var/datum/disease/F = new /datum/disease/pierrot_throat(0) - var/list/data = list("viruses"= list(F)) - reagents.add_reagent("blood", 4, data) -*/ - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/mimeburger name = "Mime Burger" desc = "Its taste defies language." icon_state = "mimeburger" filling_color = "#FFFFFF" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/omelette name = "Omelette Du Fromage" @@ -945,23 +731,15 @@ icon_state = "omelette" trash = /obj/item/trash/plate filling_color = "#FFF9A8" - - //var/herp = 0 - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 1 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/muffin name = "Muffin" desc = "A delicious and spongy little cake" icon_state = "muffin" filling_color = "#E0CF9B" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/pie name = "Banana Cream Pie" @@ -969,17 +747,13 @@ icon_state = "pie" trash = /obj/item/trash/plate filling_color = "#FBFFB8" - -/obj/item/weapon/reagent_containers/food/snacks/pie/New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("banana",5) bitesize = 3 + list_reagents = list("nutriment" = 4, "banana" = 5) /obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) ..() - new/obj/effect/decal/cleanable/pie_smudge(src.loc) - src.visible_message("\red [src.name] splats.","\red You hear a splat.") + new/obj/effect/decal/cleanable/pie_smudge(loc) + visible_message("[src] splats.","You hear a splat.") qdel(src) /obj/item/weapon/reagent_containers/food/snacks/berryclafoutis @@ -987,11 +761,8 @@ desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" trash = /obj/item/trash/plate - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("berryjuice", 5) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 4, "berryjuice" = 5) /obj/item/weapon/reagent_containers/food/snacks/waffles name = "waffles" @@ -999,11 +770,8 @@ icon_state = "waffles" trash = /obj/item/trash/waffles filling_color = "#E6DEB5" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/eggplantparm name = "Eggplant Parmigiana" @@ -1011,11 +779,8 @@ icon_state = "eggplantparm" trash = /obj/item/trash/plate filling_color = "#4D2F5E" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/soylentgreen name = "Soylent Green" @@ -1023,11 +788,8 @@ icon_state = "soylent_green" trash = /obj/item/trash/waffles filling_color = "#B8E6B5" - - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/soylenviridians name = "Soylen Virdians" @@ -1035,12 +797,8 @@ icon_state = "soylent_yellow" trash = /obj/item/trash/waffles filling_color = "#E6FA61" - - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 - + bitesize = 2 + list_reagents = list("nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/meatpie name = "Meat-pie" @@ -1048,11 +806,8 @@ desc = "An old barber recipe, very delicious!" trash = /obj/item/trash/plate filling_color = "#948051" - - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/tofupie name = "Tofu-pie" @@ -1060,42 +815,31 @@ desc = "A delicious tofu pie." trash = /obj/item/trash/plate filling_color = "#FFFEE0" - - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/amanita_pie name = "amanita pie" desc = "Sweet and tasty poison pie." icon_state = "amanita_pie" filling_color = "#FFCCCC" - - New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("amanitin", 3) - reagents.add_reagent("psilocybin", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 5, "amanitin" = 3, "psilocybin" = 1) /obj/item/weapon/reagent_containers/food/snacks/plump_pie name = "plump pie" desc = "I bet you love stuff made out of plump helmets!" icon_state = "plump_pie" filling_color = "#B8279B" + bitesize = 2 + list_reagents = list("nutriment" = 8) - New() - ..() - if(prob(10)) - name = "exceptional plump pie" - desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("omnizine", 5) - bitesize = 2 - else - reagents.add_reagent("nutriment", 8) - bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() + ..() + if(prob(10)) + name = "exceptional plump pie" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" // What + reagents.add_reagent("omnizine", 5) /obj/item/weapon/reagent_containers/food/snacks/xemeatpie name = "Xeno-pie" @@ -1103,11 +847,8 @@ desc = "A delicious meatpie. Probably heretical." trash = /obj/item/trash/plate filling_color = "#43DE18" - - New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/wingfangchu name = "Wing Fang Chu" @@ -1115,12 +856,8 @@ icon_state = "wingfangchu" trash = /obj/item/trash/snack_bowl filling_color = "#43DE18" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/human/kabob name = "-kabob" @@ -1128,11 +865,8 @@ desc = "A human meat, on a stick." trash = /obj/item/stack/rods filling_color = "#A85340" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/monkeykabob name = "Meat-kabob" @@ -1140,11 +874,8 @@ desc = "Delicious meat, on a stick." trash = /obj/item/stack/rods filling_color = "#A85340" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/tofukabob name = "Tofu-kabob" @@ -1152,11 +883,8 @@ desc = "Vegan meat, on a stick." trash = /obj/item/stack/rods filling_color = "#FFFEE0" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/popcorn name = "Popcorn" @@ -1165,18 +893,18 @@ trash = /obj/item/trash/popcorn var/unpopped = 0 filling_color = "#FFFAD4" + bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 + list_reagents = list("nutriment" = 2) - New() - ..() - unpopped = rand(1,10) - reagents.add_reagent("nutriment", 2) - bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 - On_Consume(mob/M, mob/user) - if(prob(unpopped)) //lol ...what's the point? - to_chat(user, "\red You bite down on an un-popped kernel!") - unpopped = max(0, unpopped-1) - ..() +/obj/item/weapon/reagent_containers/food/snacks/popcorn/New() + ..() + unpopped = rand(1,10) +/obj/item/weapon/reagent_containers/food/snacks/popcorn/On_Consume(mob/M, mob/user) + if(prob(unpopped)) //lol ...what's the point? + to_chat(user, "You bite down on an un-popped kernel!") + unpopped = max(0, unpopped-1) + ..() /obj/item/weapon/reagent_containers/food/snacks/sosjerky name = "Scaredy's Private Reserve Beef Jerky" @@ -1184,11 +912,8 @@ desc = "Beef jerky made from the finest space cows." trash = /obj/item/trash/sosjerky filling_color = "#631212" - - New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 4) /obj/item/weapon/reagent_containers/food/snacks/pistachios name = "Pistachios" @@ -1196,11 +921,7 @@ desc = "A snack of deliciously salted pistachios. A perfectly valid choice..." trash = /obj/item/trash/pistachios filling_color = "#BAD145" - - New() - ..() - reagents.add_reagent("plantmatter", 6) - reagents.add_reagent("sodiumchloride", 1) + list_reagents = list("plantmatter" = 6, "sodiumchloride" = 1) /obj/item/weapon/reagent_containers/food/snacks/no_raisin name = "4no Raisins" @@ -1208,21 +929,15 @@ desc = "Best raisins in the universe. Not sure why." trash = /obj/item/trash/raisins filling_color = "#343834" - - New() - ..() - reagents.add_reagent("plantmatter", 6) + list_reagents = list("plantmatter" = 6) /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie name = "Space Twinkie" icon_state = "space_twinkie" desc = "Guaranteed to survive longer then you will." filling_color = "#FFE591" - - New() - ..() - reagents.add_reagent("sugar", 4) - bitesize = 2 + bitesize = 2 + list_reagents = list("sugar" = 4) /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers name = "Cheesie Honkers" @@ -1230,79 +945,53 @@ desc = "Bite sized cheesie snacks that will honk all over your mouth" trash = /obj/item/trash/cheesie filling_color = "#FFA305" - - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("fake_cheese", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 4, "fake_cheese" = 2) /obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein name = "chow mein" desc = "What is in this anyways?" icon_state = "chinese1" - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("beans", 3) - reagents.add_reagent("msg",4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6, "beans" = 3, "msg" = 4) /obj/item/weapon/reagent_containers/food/snacks/chinese/tao name = "Admiral Yamamoto carp" desc = "Tastes like chicken." icon_state = "chinese2" - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("protein", 2) - reagents.add_reagent("msg",4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 4, "protein" = 2, "msg" = 4) /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles name = "chinese newdles" desc = "Made fresh, weekly!" icon_state = "chinese3" - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("msg",4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6, "msg" = 4) /obj/item/weapon/reagent_containers/food/snacks/chinese/rice name = "fried rice" desc = "A timeless classic." icon_state = "chinese4" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("rice", 3) - reagents.add_reagent("msg",4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 3, "rice" = 3, "msg" = 4) /obj/item/weapon/reagent_containers/food/snacks/syndicake name = "Syndi-Cakes" icon_state = "syndi_cakes" desc = "An extremely moist snack cake that tastes just as good after being nuked." filling_color = "#FF5D05" - trash = /obj/item/trash/syndi_cakes - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("salglu_solution", 5) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 4, "salglu_solution" = 5) /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato name = "Loaded Baked Potato" desc = "Totally baked." icon_state = "loadedbakedpotato" filling_color = "#9C7A68" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/fries name = "Space Fries" @@ -1310,11 +999,8 @@ icon_state = "fries" trash = /obj/item/trash/plate filling_color = "#EDDD00" - - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 4) /obj/item/weapon/reagent_containers/food/snacks/soydope name = "Soy Dope" @@ -1322,22 +1008,15 @@ icon_state = "soydope" trash = /obj/item/trash/plate filling_color = "#C4BF76" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/spagetti name = "Spagetti" desc = "A bundle of raw spaghetti." icon_state = "spagetti" filling_color = "#EDDD00" - - New() - ..() - reagents.add_reagent("nutriment", 1) - bitesize = 1 + list_reagents = list("nutriment" = 1) /obj/item/weapon/reagent_containers/food/snacks/cheesyfries name = "Cheesy Fries" @@ -1345,38 +1024,30 @@ icon_state = "cheesyfries" trash = /obj/item/trash/plate filling_color = "#EDDD00" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/fortunecookie name = "Fortune cookie" desc = "A true prophecy in each cookie!" icon_state = "fortune_cookie" filling_color = "#E8E79E" - - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/badrecipe name = "Burned mess" desc = "Someone should be demoted from chef for this." icon_state = "badrecipe" filling_color = "#211F02" + bitesize = 2 + list_reagents = list("????" = 5, "carbon" = 3) - New() - ..() - reagents.add_reagent("????", 5) - reagents.add_reagent("carbon", 3) - bitesize = 2 - - // it's burned! it should start off being classed as any cooktype that burns - cooktype["grilled"] = 1 - cooktype["deep fried"] = 1 +/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New() + ..() + // it's burned! it should start off being classed as any cooktype that burns + cooktype["grilled"] = 1 + cooktype["deep fried"] = 1 /obj/item/weapon/reagent_containers/food/snacks/meatsteak name = "Meat steak" @@ -1384,13 +1055,8 @@ icon_state = "meatstake" trash = /obj/item/trash/plate filling_color = "#7A3D11" - - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 4, "sodiumchloride" = 1, "blackpepper" = 1) /obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff name = "Spacy Liberty Duff" @@ -1398,12 +1064,8 @@ icon_state = "spacylibertyduff" trash = /obj/item/trash/snack_bowl filling_color = "#42B873" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("psilocybin", 6) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "psilocybin" = 6) /obj/item/weapon/reagent_containers/food/snacks/amanitajelly name = "Amanita Jelly" @@ -1411,13 +1073,8 @@ icon_state = "amanitajelly" trash = /obj/item/trash/snack_bowl filling_color = "#ED0758" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("amanitin", 6) - reagents.add_reagent("psilocybin", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "amanitin" = 6, "psilocybin" = 3) /obj/item/weapon/reagent_containers/food/snacks/poppypretzel name = "Poppy pretzel" @@ -1425,12 +1082,7 @@ icon_state = "poppypretzel" bitesize = 2 filling_color = "#916E36" - - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 2 - + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/meatballsoup name = "Meatball soup" @@ -1438,50 +1090,32 @@ icon_state = "meatballsoup" trash = /obj/item/trash/snack_bowl filling_color = "#785210" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("water", 5) - bitesize = 5 + bitesize = 5 + list_reagents = list("nutriment" = 8, "water" = 5) /obj/item/weapon/reagent_containers/food/snacks/slimesoup name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" filling_color = "#C4DBA0" - - New() - ..() - reagents.add_reagent("slimejelly", 5) - reagents.add_reagent("water", 10) - bitesize = 5 + bitesize = 5 + list_reagents = list("slimejelly" = 5, "water" = 10) /obj/item/weapon/reagent_containers/food/snacks/bloodsoup name = "Tomato soup" desc = "Smells like copper" icon_state = "tomatosoup" filling_color = "#FF0000" - - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("blood", 10) - reagents.add_reagent("water", 5) - bitesize = 5 + bitesize = 5 + list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5) /obj/item/weapon/reagent_containers/food/snacks/clownstears name = "Clown's Tears" desc = "Not very funny." icon_state = "clownstears" filling_color = "#C4FBFF" - - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("banana", 5) - reagents.add_reagent("water", 10) - bitesize = 5 + bitesize = 5 + list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 10) /obj/item/weapon/reagent_containers/food/snacks/vegetablesoup name = "Vegetable soup" @@ -1489,12 +1123,8 @@ icon_state = "vegetablesoup" trash = /obj/item/trash/snack_bowl filling_color = "#AFC4B5" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("water", 5) - bitesize = 5 + bitesize = 5 + list_reagents = list("nutriment" = 8, "water" = 5) /obj/item/weapon/reagent_containers/food/snacks/nettlesoup name = "Nettle soup" @@ -1502,13 +1132,8 @@ icon_state = "nettlesoup" trash = /obj/item/trash/snack_bowl filling_color = "#AFC4B5" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("water", 5) - reagents.add_reagent("omnizine", 5) - bitesize = 5 + bitesize = 5 + list_reagents = list("nutriment" = 8, "water" = 5, "omnizine" = 5) /obj/item/weapon/reagent_containers/food/snacks/mysterysoup name = "Mystery soup" @@ -1516,46 +1141,46 @@ icon_state = "mysterysoup" trash = /obj/item/trash/snack_bowl filling_color = "#F082FF" + bitesize = 5 - New() - ..() - var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) - switch(mysteryselect) - if(1) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 3) - reagents.add_reagent("tomatojuice", 2) - if(2) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("frostoil", 3) - reagents.add_reagent("tomatojuice", 2) - if(3) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("water", 5) - reagents.add_reagent("omnizine", 5) - if(4) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("water", 10) - if(5) - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("banana", 10) - if(6) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("blood", 10) - if(7) - reagents.add_reagent("slimejelly", 10) - reagents.add_reagent("water", 10) - if(8) - reagents.add_reagent("carbon", 10) - reagents.add_reagent("toxin", 10) - if(9) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("tomatojuice", 10) - if(10) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("tomatojuice", 5) - reagents.add_reagent("oculine", 5) - bitesize = 5 +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New() + ..() + var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) + switch(mysteryselect) + if(1) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 3) + reagents.add_reagent("tomatojuice", 2) + if(2) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("frostoil", 3) + reagents.add_reagent("tomatojuice", 2) + if(3) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("water", 5) + reagents.add_reagent("omnizine", 5) + if(4) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("water", 10) + if(5) + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("banana", 10) + if(6) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("blood", 10) + if(7) + reagents.add_reagent("slimejelly", 10) + reagents.add_reagent("water", 10) + if(8) + reagents.add_reagent("carbon", 10) + reagents.add_reagent("toxin", 10) + if(9) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("tomatojuice", 10) + if(10) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("tomatojuice", 5) + reagents.add_reagent("oculine", 5) /obj/item/weapon/reagent_containers/food/snacks/wishsoup name = "Wish Soup" @@ -1563,14 +1188,14 @@ icon_state = "wishsoup" trash = /obj/item/trash/snack_bowl filling_color = "#D1F4FF" + bitesize = 5 + list_reagents = list("water" = 10) - New() - ..() - reagents.add_reagent("water", 10) - bitesize = 5 - if(prob(25)) - src.desc = "A wish come true!" - reagents.add_reagent("nutriment", 8) +/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New() + ..() + if(prob(25)) + desc = "A wish come true!" // hue + reagents.add_reagent("nutriment", 8) /obj/item/weapon/reagent_containers/food/snacks/hotchili name = "Hot Chili" @@ -1578,50 +1203,31 @@ icon_state = "hotchili" trash = /obj/item/trash/snack_bowl filling_color = "#FF3C00" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 3) - reagents.add_reagent("tomatojuice", 2) - bitesize = 5 - + bitesize = 5 + list_reagents = list("nutriment" = 6, "capsaicin" = 3, "tomatojuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/coldchili name = "Cold Chili" desc = "This slush is barely a liquid!" icon_state = "coldchili" filling_color = "#2B00FF" - trash = /obj/item/trash/snack_bowl - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("frostoil", 3) - reagents.add_reagent("tomatojuice", 2) - bitesize = 5 + bitesize = 5 + list_reagents = list("nutriment" = 6, "frostoil" = 3, "tomatojuice" = 2) /obj/item/weapon/reagent_containers/food/snacks/raw_bacon name = "raw bacon" desc = "It's fleshy and pink!" icon_state = "raw_bacon" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("porktonium", 10) + list_reagents = list("nutriment" = 1, "porktonium" = 10) /obj/item/weapon/reagent_containers/food/snacks/bacon name = "bacon" desc = "It looks juicy and tastes amazing!" icon_state = "bacon2" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("porktonium", 10) - reagents.add_reagent("msg", 4) - + list_reagents = list("nutriment" = 4, "porktonium" = 10, "msg" = 4) /obj/item/weapon/reagent_containers/food/snacks/telebacon name = "Tele Bacon" @@ -1629,15 +1235,16 @@ icon_state = "bacon" var/obj/item/device/radio/beacon/bacon/baconbeacon bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("porktonium", 10) - baconbeacon = new /obj/item/device/radio/beacon/bacon(src) - On_Consume(mob/M, mob/user) - if(!reagents.total_volume) - baconbeacon.loc = user - baconbeacon.digest_delay() + list_reagents = list("nutriment" = 4, "porktonium" = 10) + +/obj/item/weapon/reagent_containers/food/snacks/telebacon/New() + ..() + baconbeacon = new /obj/item/device/radio/beacon/bacon(src) + +/obj/item/weapon/reagent_containers/food/snacks/telebacon/On_Consume(mob/M, mob/user) + if(!reagents.total_volume) + baconbeacon.loc = user + baconbeacon.digest_delay() /obj/item/weapon/reagent_containers/food/snacks/monkeycube @@ -1647,13 +1254,11 @@ bitesize = 12 filling_color = "#ADAC7F" var/monkey_type = "Monkey" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() - ..() - reagents.add_reagent("protein",10) + list_reagents = list("protein" = 10) /obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O, mob/user, proximity) - if(!proximity) return + if(!proximity) + return if(istype(O,/obj/structure/sink) && !wrapped) to_chat(user, "You place [src] under a stream of water...") user.drop_item() @@ -1737,22 +1342,16 @@ desc = "This is absolutely Ei Nath." icon_state = "spellburger" filling_color = "#D505FF" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/bigbiteburger name = "Big Bite Burger" desc = "Forget the Big Mac. THIS is the future!" icon_state = "bigbiteburger" filling_color = "#E3D681" - - New() - ..() - reagents.add_reagent("nutriment", 14) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 14) /obj/item/weapon/reagent_containers/food/snacks/enchiladas name = "Enchiladas" @@ -1760,12 +1359,8 @@ icon_state = "enchiladas" trash = /obj/item/trash/tray filling_color = "#A36A1F" - - New() - ..() - reagents.add_reagent("nutriment",8) - reagents.add_reagent("capsaicin", 6) - bitesize = 4 + bitesize = 4 + list_reagents = list("nutriment" = 8, "capsaicin" = 6) /obj/item/weapon/reagent_containers/food/snacks/burrito name = "Burrito" @@ -1773,10 +1368,7 @@ icon_state = "burrito" trash = /obj/item/trash/plate filling_color = "#A36A1F" - -/obj/item/weapon/reagent_containers/food/snacks/burrito/New() - ..() - reagents.add_reagent("nutriment", 5) + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/chimichanga name = "Chimichanga" @@ -1784,11 +1376,7 @@ icon_state = "chimichanga" trash = /obj/item/trash/plate filling_color = "#A36A1F" - -/obj/item/weapon/reagent_containers/food/snacks/chimichanga/New() - ..() - reagents.add_reagent("omnizine", 4) //Deadpool reference. Deal with it. - reagents.add_reagent("cheese", 2) + list_reagents = list("omnizine" = 4, "cheese" = 2) //Deadpool reference. Deal with it. /obj/item/weapon/reagent_containers/food/snacks/monkeysdelight name = "monkey's Delight" @@ -1796,27 +1384,16 @@ icon_state = "monkeysdelight" trash = /obj/item/trash/tray filling_color = "#5C3C11" - - New() - ..() - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("banana", 5) - reagents.add_reagent("blackpepper", 1) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 6 + bitesize = 6 + list_reagents = list("nutriment" = 10, "banana" = 5, "blackpepper" = 1, "sodiumchloride" = 1) /obj/item/weapon/reagent_containers/food/snacks/baguette name = "Baguette" desc = "Bon appetit!" icon_state = "baguette" filling_color = "#E3D796" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("blackpepper", 1) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 6, "blackpepper" = 1, "sodiumchloride" = 1) /obj/item/weapon/reagent_containers/food/snacks/sandwich name = "Sandwich" @@ -1824,11 +1401,8 @@ icon_state = "sandwich" trash = /obj/item/trash/plate filling_color = "#D9BE29" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/toastedsandwich name = "Toasted Sandwich" @@ -1836,12 +1410,8 @@ icon_state = "toastedsandwich" trash = /obj/item/trash/plate filling_color = "#D9BE29" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("carbon", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6, "carbon" = 2) /obj/item/weapon/reagent_containers/food/snacks/grilledcheese name = "Grilled Cheese Sandwich" @@ -1849,11 +1419,8 @@ icon_state = "toastedsandwich" trash = /obj/item/trash/plate filling_color = "#D9BE29" - - New() - ..() - reagents.add_reagent("nutriment", 7) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 7) //why make a regualr sandwhich when you can make grilled cheese, with this nutriment value? /obj/item/weapon/reagent_containers/food/snacks/tomatosoup name = "Tomato Soup" @@ -1861,12 +1428,8 @@ icon_state = "tomatosoup" trash = /obj/item/trash/snack_bowl filling_color = "#D92929" - - New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("tomatojuice", 10) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 5, "tomatojuice" = 10) /obj/item/weapon/reagent_containers/food/snacks/rofflewaffles name = "Roffle Waffles" @@ -1874,26 +1437,16 @@ icon_state = "rofflewaffles" trash = /obj/item/trash/waffles filling_color = "#FF00F7" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("psilocybin", 8) - bitesize = 4 + bitesize = 4 + list_reagents = list("nutriment" = 8, "psilocybin" = 8) /obj/item/weapon/reagent_containers/food/snacks/stew name = "Stew" desc = "A nice and warm stew. Healthy and strong." icon_state = "stew" filling_color = "#9E673A" - - New() - ..() - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("tomatojuice", 5) - reagents.add_reagent("oculine", 5) - reagents.add_reagent("water", 5) - bitesize = 10 + bitesize = 10 + list_reagents = list("nutriment" = 10, "tomatojuice" = 5, "oculine" = 5, "water" = 5) /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast name = "Jellied Toast" @@ -1901,63 +1454,44 @@ icon_state = "jellytoast" trash = /obj/item/trash/plate filling_color = "#B572AB" - - New() - ..() - reagents.add_reagent("nutriment", 1) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 1) /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry - New() - ..() - reagents.add_reagent("cherryjelly", 5) + list_reagents = list("nutriment" = 1, "cherryjelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime - New() - ..() - reagents.add_reagent("slimejelly", 5) + list_reagents = list("nutriment" = 1, "slimejelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/jellyburger name = "Jelly Burger" desc = "Culinary delight..?" icon_state = "jellyburger" filling_color = "#B572AB" - - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime - New() - ..() - reagents.add_reagent("slimejelly", 5) + list_reagents = list("nutriment" = 5, "slimejelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry - New() - ..() - reagents.add_reagent("cherryjelly", 5) + list_reagents = list("nutriment" = 5, "cherryjelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/milosoup name = "Milosoup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" trash = /obj/item/trash/snack_bowl - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("water", 5) - bitesize = 4 + bitesize = 4 + list_reagents = list("nutriment" = 8, "water" = 5) /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat name = "Stewed Soy Meat" desc = "Even non-vegetarians will LOVE this!" icon_state = "stewedsoymeat" trash = /obj/item/trash/plate - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/boiledspagetti name = "Boiled Spagetti" @@ -1965,11 +1499,8 @@ icon_state = "spagettiboiled" trash = /obj/item/trash/plate filling_color = "#FCEE81" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/boiledrice name = "Boiled Rice" @@ -1977,11 +1508,8 @@ icon_state = "boiledrice" trash = /obj/item/trash/snack_bowl filling_color = "#FFFBDB" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/ricepudding name = "Rice Pudding" @@ -1989,11 +1517,8 @@ icon_state = "rpudding" trash = /obj/item/trash/snack_bowl filling_color = "#FFFBDB" - - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 4) /obj/item/weapon/reagent_containers/food/snacks/pastatomato name = "Spagetti" @@ -2001,12 +1526,8 @@ icon_state = "pastatomato" trash = /obj/item/trash/plate filling_color = "#DE4545" - - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("tomatojuice", 10) - bitesize = 4 + bitesize = 4 + list_reagents = list("nutriment" = 6, "tomatojuice" = 10) /obj/item/weapon/reagent_containers/food/snacks/meatballspagetti name = "Spagetti & Meatballs" @@ -2014,35 +1535,24 @@ icon_state = "meatballspagetti" trash = /obj/item/trash/plate filling_color = "#DE4545" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("synaptizine", 5) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8, "synaptizine" = 5) /obj/item/weapon/reagent_containers/food/snacks/spesslaw name = "Spesslaw" desc = "A lawyers favourite" icon_state = "spesslaw" filling_color = "#DE4545" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("synaptizine", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 8, "synaptizine" = 10) /obj/item/weapon/reagent_containers/food/snacks/poppypretzel name = "Poppy Pretzel" desc = "A large soft pretzel full of POP!" icon_state = "poppypretzel" filling_color = "#AB7D2E" - - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/carrotfries name = "Carrot Fries" @@ -2050,68 +1560,48 @@ icon_state = "carrotfries" trash = /obj/item/trash/plate filling_color = "#FAA005" - - New() - ..() - reagents.add_reagent("plantmatter", 3) - reagents.add_reagent("oculine", 3) - bitesize = 2 + bitesize = 2 + list_reagents = list("plantmatter" = 3, "oculine" = 3) /obj/item/weapon/reagent_containers/food/snacks/superbiteburger name = "Super Bite Burger" desc = "This is a mountain of a burger. FOOD!" icon_state = "superbiteburger" filling_color = "#CCA26A" - - New() - ..() - reagents.add_reagent("nutriment", 50) - bitesize = 10 + bitesize = 10 + list_reagents = list("nutriment" = 50) /obj/item/weapon/reagent_containers/food/snacks/candiedapple name = "Candied Apple" desc = "An apple coated in sugary sweetness." icon_state = "candiedapple" filling_color = "#F21873" - - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 3) // A candy apple without sugar... /obj/item/weapon/reagent_containers/food/snacks/applepie name = "Apple Pie" desc = "A pie containing sweet sweet love... or apple." icon_state = "applepie" filling_color = "#E0EDC5" - - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 3 - + bitesize = 3 + list_reagents = list("nutriment" = 4) /obj/item/weapon/reagent_containers/food/snacks/cherrypie name = "Cherry Pie" desc = "Taste so good, make a grown man cry." icon_state = "cherrypie" filling_color = "#FF525A" - - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 4) /obj/item/weapon/reagent_containers/food/snacks/twobread name = "Two Bread" desc = "It is very bitter and winy." icon_state = "twobread" filling_color = "#DBCC9A" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/jellysandwich name = "Jelly Sandwich" @@ -2119,41 +1609,28 @@ icon_state = "jellysandwich" trash = /obj/item/trash/plate filling_color = "#9E3A78" - - New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 2) /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime - New() - ..() - reagents.add_reagent("slimejelly", 5) + list_reagents = list("nutriment" = 2, "slimejelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry - New() - ..() - reagents.add_reagent("cherryjelly", 5) + list_reagents = list("nutriment" = 2, "cherryjelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/boiledslimecore name = "Boiled Slime Core" desc = "A boiled red thing." icon_state = "boiledrorocore" - New() - ..() - reagents.add_reagent("slimejelly", 5) - bitesize = 3 + bitesize = 3 + list_reagents = list("slimejelly" = 5) /obj/item/weapon/reagent_containers/food/snacks/mint name = "mint" desc = "it is only wafer thin." icon_state = "mint" filling_color = "#F2F2F2" - - New() - ..() - reagents.add_reagent("minttoxin", 1) - bitesize = 1 + list_reagents = list("minttoxin" = 2) /obj/item/weapon/reagent_containers/food/snacks/mushroomsoup name = "chantrelle soup" @@ -2161,29 +1638,24 @@ icon_state = "mushroomsoup" trash = /obj/item/trash/snack_bowl filling_color = "#E386BF" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit name = "plump helmet biscuit" desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." icon_state = "phelmbiscuit" filling_color = "#CFB4C4" + bitesize = 2 + list_reagents = list("nutriment" = 5) - New() - ..() - if(prob(10)) - name = "exceptional plump helmet biscuit" - desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("omnizine", 5) - bitesize = 2 - else - reagents.add_reagent("nutriment", 5) - bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() + ..() + if(prob(10)) + name = "exceptional plump helmet biscuit" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" // Is this a reference? + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("omnizine", 5) /obj/item/weapon/reagent_containers/food/snacks/chawanmushi name = "chawanmushi" @@ -2191,11 +1663,7 @@ icon_state = "chawanmushi" trash = /obj/item/trash/snack_bowl filling_color = "#F0F2E4" - - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 1 + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/beetsoup name = "beet soup" @@ -2203,24 +1671,24 @@ icon_state = "beetsoup" trash = /obj/item/trash/snack_bowl filling_color = "#FAC9FF" + bitesize = 2 + list_reagents = list("nutriment" = 8) - New() - ..() - switch(rand(1,6)) - if(1) - name = "borsch" - if(2) - name = "bortsch" - if(3) - name = "borstch" - if(4) - name = "borsh" - if(5) - name = "borshch" - if(6) - name = "borscht" - reagents.add_reagent("nutriment", 8) - bitesize = 2 +/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New() + ..() + switch(rand(1,6)) + if(1) + name = "borsch" + if(2) + name = "bortsch" + if(3) + name = "borstch" + if(4) + name = "borsh" + if(5) + name = "borshch" + if(6) + name = "borscht" /obj/item/weapon/reagent_containers/food/snacks/herbsalad name = "herb salad" @@ -2228,11 +1696,8 @@ icon_state = "herbsalad" trash = /obj/item/trash/snack_bowl filling_color = "#76B87F" - - New() - ..() - reagents.add_reagent("nutriment", 8) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 8) /obj/item/weapon/reagent_containers/food/snacks/validsalad name = "valid salad" @@ -2240,12 +1705,8 @@ icon_state = "validsalad" trash = /obj/item/trash/snack_bowl filling_color = "#76B87F" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("omnizine", 5) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 8, "omnizine" = 5) /obj/item/weapon/reagent_containers/food/snacks/appletart name = "golden apple streusel tart" @@ -2253,33 +1714,24 @@ icon_state = "gappletart" trash = /obj/item/trash/plate filling_color = "#FFFF00" - - New() - ..() - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("gold", 5) - spawn(1) - reagents.del_reagent("egg") - reagents.update_total() - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 8, "gold" = 5) /obj/item/weapon/reagent_containers/food/snacks/dough_ball name = "ball of raw dough" desc = "A ball of raw dough, ready to be molded into new recipes." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "dough" - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 1 - attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/kitchen/rollingpin)) - user.visible_message( \ - "[user] flattens the dough with the rolling pin!", \ - "\blue You flatten the dough with your rolling pin!" \ - ) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src.loc) - qdel(src) + list_reagents = list("nutriment" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/dough_ball/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W,/obj/item/weapon/kitchen/rollingpin)) + user.visible_message( \ + "[user] flattens the dough with the rolling pin!", \ + "You flatten the dough with your rolling pin!" \ + ) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(loc) + qdel(src) /////////////////////////////////////////////////Sliceable//////////////////////////////////////// // All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels @@ -2293,10 +1745,7 @@ icon_state = "flatdough" slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice slices_num = 3 - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 1 + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/doughslice name = "slice of dough" @@ -2312,11 +1761,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice slices_num = 5 filling_color = "#FF7575" - New() - ..() - reagents.add_reagent("protein", 20) - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 20, "nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice name = "meatbread slice" @@ -2333,11 +1779,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice slices_num = 5 filling_color = "#8AFF75" - New() - ..() - reagents.add_reagent("protein", 20) - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 20, "nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice name = "xenomeatbread slice" @@ -2353,12 +1796,8 @@ icon_state = "spidermeatbread" slice_path = /obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice slices_num = 5 - New() - ..() - reagents.add_reagent("protein", 20) - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("toxin", 15) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 20, "nutriment" = 10, "toxin" = 15) /obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice name = "spider meat bread slice" @@ -2366,9 +1805,7 @@ icon_state = "xenobreadslice" trash = /obj/item/trash/plate bitesize = 2 - New() - ..() - reagents.add_reagent("toxin", 2) + list_reagents = list("toxin" = 2) /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread name = "Banana-nut bread" @@ -2377,11 +1814,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice slices_num = 5 filling_color = "#EDE5AD" - New() - ..() - reagents.add_reagent("banana", 20) - reagents.add_reagent("nutriment", 20) - bitesize = 2 + bitesize = 2 + list_reagents = list("banana" = 20, "nutriment" = 20) /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice name = "Banana-nut bread slice" @@ -2398,10 +1832,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice slices_num = 5 filling_color = "#F7FFE0" - New() - ..() - reagents.add_reagent("nutriment", 30) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 30) /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice name = "Tofubread slice" @@ -2411,7 +1843,6 @@ filling_color = "#F7FFE0" bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake name = "Carrot Cake" desc = "A favorite desert of a certain wascally wabbit. Not a lie." @@ -2419,11 +1850,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice slices_num = 5 filling_color = "#FFD675" - New() - ..() - reagents.add_reagent("nutriment", 25) - reagents.add_reagent("oculine", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 25, "oculine" = 10) /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice name = "Carrot Cake slice" @@ -2440,12 +1868,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice slices_num = 5 filling_color = "#E6AEDB" - New() - ..() - reagents.add_reagent("protein", 15) - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("mannitol", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 15, "nutriment" = 10, "mannitol" = 10) /obj/item/weapon/reagent_containers/food/snacks/braincakeslice name = "Brain Cake slice" @@ -2462,10 +1886,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice slices_num = 5 filling_color = "#FAF7AF" - New() - ..() - reagents.add_reagent("nutriment", 25) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 25) /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice name = "Cheese Cake slice" @@ -2482,9 +1904,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice slices_num = 5 filling_color = "#F7EDD5" - New() - ..() - reagents.add_reagent("nutriment", 20) + list_reagents = list("nutriment" = 20) /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice name = "Vanilla Cake slice" @@ -2501,9 +1921,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice slices_num = 5 filling_color = "#FADA8E" - New() - ..() - reagents.add_reagent("nutriment", 20) + list_reagents = list("nutriment" = 20) /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice name = "Orange Cake slice" @@ -2520,9 +1938,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/limecakeslice slices_num = 5 filling_color = "#CBFA8E" - New() - ..() - reagents.add_reagent("nutriment", 20) + list_reagents = list("nutriment" = 20) /obj/item/weapon/reagent_containers/food/snacks/limecakeslice name = "Lime Cake slice" @@ -2539,9 +1955,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice slices_num = 5 filling_color = "#FAFA8E" - New() - ..() - reagents.add_reagent("nutriment", 20) + list_reagents = list("nutriment" = 20) /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice name = "Lemon Cake slice" @@ -2558,10 +1972,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice slices_num = 5 filling_color = "#805930" - New() - ..() - reagents.add_reagent("nutriment", 20) - reagents.add_reagent("chocolate",20) + list_reagents = list("nutriment" = 20, "chocolate" = 20) /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice name = "Chocolate Cake slice" @@ -2578,11 +1989,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge slices_num = 5 filling_color = "#FFF700" - New() - ..() - reagents.add_reagent("nutriment", 20) - reagents.add_reagent("cheese", 20) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 20, "cheese" = 20) /obj/item/weapon/reagent_containers/food/snacks/cheesewedge name = "Cheese wedge" @@ -2597,12 +2005,7 @@ icon_state = "weirdcheesewedge" filling_color = "#00FF33" bitesize = 2 - New() - ..() - reagents.add_reagent("mercury", 5) - reagents.add_reagent("lsd", 5) - reagents.add_reagent("ethanol", 5) - reagents.add_reagent("weird_cheese", 5) + list_reagents = list("mercury" = 5, "lsd" = 5, "ethanol" = 5, "weird_cheese" = 5) /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake name = "Birthday Cake" @@ -2611,11 +2014,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice slices_num = 5 filling_color = "#FFD6D6" - New() - ..() - reagents.add_reagent("nutriment", 20) - reagents.add_reagent("sprinkles", 10) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 20, "sprinkles" = 10) /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice name = "Birthday Cake slice" @@ -2632,14 +2032,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice slices_num = 6 filling_color = "#FFE396" - - New() - ..() - reagents.add_reagent("nutriment", 6) - spawn(1) - reagents.del_reagent("egg") - reagents.update_total() - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/breadslice name = "Bread slice" @@ -2648,10 +2042,7 @@ trash = /obj/item/trash/plate filling_color = "#D27332" bitesize = 2 - - New() - ..() - reagents.add_reagent("bread", 5) + list_reagents = list("bread" = 5) /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread name = "Cream Cheese Bread" @@ -2660,10 +2051,8 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice slices_num = 5 filling_color = "#FFF896" - New() - ..() - reagents.add_reagent("nutriment", 20) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 20) /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice name = "Cream Cheese Bread slice" @@ -2673,7 +2062,6 @@ filling_color = "#FFF896" bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/watermelonslice name = "Watermelon Slice" desc = "A slice of watery goodness." @@ -2681,7 +2069,6 @@ filling_color = "#FF3867" bitesize = 2 - /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake name = "Apple Cake" desc = "A cake centred with Apple" @@ -2689,9 +2076,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice slices_num = 5 filling_color = "#EBF5B8" - New() - ..() - reagents.add_reagent("nutriment", 15) + list_reagents = list("nutriment" = 15) /obj/item/weapon/reagent_containers/food/snacks/applecakeslice name = "Apple Cake slice" @@ -2708,10 +2093,7 @@ slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice slices_num = 5 filling_color = "#F5B951" - - New() - ..() - reagents.add_reagent("nutriment", 15) + list_reagents = list("nutriment" = 15) /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice name = "Pumpkin Pie slice" @@ -2726,10 +2108,7 @@ desc = "It's a salted cracker." icon_state = "cracker" filling_color = "#F5DEB8" - - New() - ..() - reagents.add_reagent("nutriment", 1) + list_reagents = list("nutriment" = 1) /obj/item/weapon/reagent_containers/food/snacks/rawcutlet name = "raw cutlet" @@ -2737,17 +2116,16 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "rawcutlet" bitesize = 1 - New() - ..() - reagents.add_reagent("protein", 1) - attackby(obj/item/weapon/W, mob/user, params) - if(istype(W,/obj/item/weapon/kitchen/knife)) - user.visible_message( \ - "[user] cuts the raw cutlet with the knife!", \ - "You cut the raw cutlet with your knife!" \ - ) - new /obj/item/weapon/reagent_containers/food/snacks/raw_bacon(src.loc) - qdel(src) + list_reagents = list("protein" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W,/obj/item/weapon/kitchen/knife)) + user.visible_message( \ + "[user] cuts the raw cutlet with the knife!", \ + "You cut the raw cutlet with your knife!" \ + ) + new /obj/item/weapon/reagent_containers/food/snacks/raw_bacon(loc) + qdel(src) /////////////////////////////////////////////////PIZZA//////////////////////////////////////// @@ -2762,11 +2140,8 @@ icon_state = "pizzamargherita" slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice slices_num = 6 - New() - ..() - reagents.add_reagent("nutriment", 40) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 40, "tomatojuice" = 6) /obj/item/weapon/reagent_containers/food/snacks/margheritaslice name = "Margherita slice" @@ -2781,12 +2156,8 @@ icon_state = "meatpizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice slices_num = 6 - New() - ..() - reagents.add_reagent("protein", 30) - reagents.add_reagent("nutriment", 20) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 30, "nutriment" = 20, "tomatojuice" = 6) /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice name = "Meatpizza slice" @@ -2801,11 +2172,8 @@ icon_state = "mushroompizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice slices_num = 6 - New() - ..() - reagents.add_reagent("plantmatter", 25) - reagents.add_reagent("nutriment", 10) - bitesize = 2 + bitesize = 2 + list_reagents = list("plantmatter" = 25, "nutriment" = 10) /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice name = "Mushroompizza slice" @@ -2820,13 +2188,8 @@ icon_state = "vegetablepizza" slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice slices_num = 6 - New() - ..() - reagents.add_reagent("plantmatter", 20) - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("tomatojuice", 6) - reagents.add_reagent("oculine", 12) - bitesize = 2 + bitesize = 2 + list_reagents = list("plantmatter" = 20, "nutriment" = 10, "tomatojuice" = 6, "oculine" = 12) /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice name = "Vegetable pizza slice" @@ -2898,18 +2261,16 @@ icon_state = "pizzabox[boxes.len+1]" -/obj/item/pizzabox/attack_hand( mob/user as mob ) - - if( open && pizza ) - user.put_in_hands( pizza ) - - to_chat(user, "\red You take the [src.pizza] out of the [src].") - src.pizza = null +/obj/item/pizzabox/attack_hand(mob/user) + if(open && pizza) + user.put_in_hands(pizza) + to_chat(user, "You take the [pizza] out of the [src].") + pizza = null update_icon() return - if( boxes.len > 0 ) - if( user.get_inactive_hand() != src ) + if(boxes.len > 0) + if(user.get_inactive_hand() != src) ..() return @@ -2917,15 +2278,14 @@ boxes -= box user.put_in_hands( box ) - to_chat(user, "\red You remove the topmost [src] from your hand.") + to_chat(user, "You remove the topmost [src] from your hand.") box.update_icon() update_icon() return ..() -/obj/item/pizzabox/attack_self( mob/user as mob ) - - if( boxes.len > 0 ) +/obj/item/pizzabox/attack_self(mob/user) + if(boxes.len > 0) return open = !open @@ -2935,11 +2295,11 @@ update_icon() -/obj/item/pizzabox/attackby( obj/item/I as obj, mob/user as mob , params) - if( istype(I, /obj/item/pizzabox/) ) +/obj/item/pizzabox/attackby( obj/item/I, mob/user, params) + if(istype(I, /obj/item/pizzabox/)) var/obj/item/pizzabox/box = I - if( !box.open && !src.open ) + if(!box.open && !open) // Make a list of all boxes to be added var/list/boxestoadd = list() boxestoadd += box @@ -2951,36 +2311,36 @@ box.loc = src box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit - src.boxes.Add( boxestoadd ) + boxes.Add( boxestoadd ) box.update_icon() update_icon() - to_chat(user, "\red You put the [box] ontop of the [src]!") + to_chat(user, "You put the [box] ontop of the [src]!") else - to_chat(user, "\red The stack is too high!") + to_chat(user, "The stack is too high!") else - to_chat(user, "\red Close the [box] first!") + to_chat(user, "Close the [box] first!") return - if( istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/) ) // Long ass fucking object name + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/)) // Long ass fucking object name - if( src.open ) + if(open) user.drop_item() I.loc = src - src.pizza = I + pizza = I update_icon() - to_chat(user, "\red You put the [I] in the [src]!") + to_chat(user, "You put the [I] in the [src]!") else - to_chat(user, "\red You try to push the [I] through the lid but it doesn't work!") + to_chat(user, "You try to push the [I] through the lid but it doesn't work!") return - if( istype(I, /obj/item/weapon/pen/) ) + if(istype(I, /obj/item/weapon/pen/)) - if( src.open ) + if(open) return var/t = input("Enter what you want to add to the tag:", "Write", null, null) as text @@ -3017,110 +2377,63 @@ name = "egg wrap" desc = "The precursor to Pigs in a Blanket." icon_state = "wrap" - New() - ..() - reagents.add_reagent("nutriment", 5) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 5) /obj/item/weapon/reagent_containers/food/snacks/beans name = "tin of beans" desc = "Musical fruit in a slightly less musical container." icon_state = "beans" - New() - ..() - reagents.add_reagent("nutriment", 10) - reagents.add_reagent("beans",10) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 10, "beans" = 10) /obj/item/weapon/reagent_containers/food/snacks/benedict name = "eggs benedict" desc = "There is only one egg on this, how rude." icon_state = "benedict" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("egg", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 3, "egg" = 3) /obj/item/weapon/reagent_containers/food/snacks/hotdog name = "hotdog" desc = "Fresh footlong ready to go down on." icon_state = "hotdog" - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("ketchup", 3) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 3, "ketchup" = 3) /obj/item/weapon/reagent_containers/food/snacks/meatbun name = "meat bun" desc = "Has the potential to not be Dog." icon_state = "meatbun" - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 6 + bitesize = 6 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich name = "icecream sandwich" desc = "Portable Ice-cream in it's own packaging." icon_state = "icecreamsandwich" - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("ice", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2, "ice" = 2) /obj/item/weapon/reagent_containers/food/snacks/notasandwich name = "not-a-sandwich" desc = "Something seems to be wrong with this, you can't quite figure what. Maybe it's his moustache." icon_state = "notasandwich" - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) /obj/item/weapon/reagent_containers/food/snacks/sugarcookie name = "sugar cookie" desc = "Just like your little sister used to make." icon_state = "sugarcookie" - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("sugar", 5) - spawn(1) - reagents.del_reagent("egg") - reagents.update_total() - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 2, "sugar" = 5) /obj/item/weapon/reagent_containers/food/snacks/friedbanana name = "Fried Banana" desc = "Goreng Pisang, also known as fried bananas." icon_state = "friedbanana" - New() - ..() - reagents.add_reagent("sugar", 5) - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("cornoil", 4) - -/obj/item/weapon/reagent_containers/food/snacks/tofurkey - name = "Tofurkey" - desc = "A fake turkey made from tofu." - icon_state = "tofurkey" - New() - ..() - reagents.add_reagent("nutriment", 12) - reagents.add_reagent("ether", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/stuffing - name = "Stuffing" - desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" - icon_state = "stuffing" - New() - ..() - reagents.add_reagent("nutriment", 3) - bitesize = 1 + list_reagents = list("sugar" = 5, "nutriment" = 8, "cornoil" = 4) /obj/item/weapon/reagent_containers/food/snacks/dionaroast name = "roast diona" @@ -3128,46 +2441,31 @@ icon_state = "dionaroast" trash = /obj/item/trash/plate filling_color = "#75754B" - - New() - ..() - reagents.add_reagent("plantmatter", 4) - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("radium", 2) - bitesize = 2 + bitesize = 2 + list_reagents = list("plantmatter" = 4, "nutriment" = 2, "radium" = 2) /obj/item/weapon/reagent_containers/food/snacks/boiledspiderleg name = "boiled spider leg" desc = "A giant spider's leg that's still twitching after being cooked. Gross!" icon_state = "spiderlegcooked" trash = /obj/item/trash/plate - New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("toxin", 2) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 3, "toxin" = 2) /obj/item/weapon/reagent_containers/food/snacks/spidereggs name = "spider eggs" desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health." icon_state = "spidereggs" - New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("toxin", 3) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 2, "toxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/spidereggsham name = "green eggs and ham" desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?" icon_state = "spidereggsham" trash = /obj/item/trash/plate - New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("toxin", 3) - bitesize = 4 + bitesize = 4 + list_reagents = list("nutriment" = 6, "sodiumchloride" = 1, "toxin" = 3) /obj/item/weapon/reagent_containers/food/snacks/sliceable/turkey name = "Turkey" @@ -3175,11 +2473,8 @@ icon_state = "turkey" slice_path = /obj/item/weapon/reagent_containers/food/snacks/turkeyslice slices_num = 6 - New() - ..() - reagents.add_reagent("protein", 24) - reagents.add_reagent("nutriment", 18) - bitesize = 2 + bitesize = 2 + list_reagents = list("protein" = 24, "nutriment" = 18) /obj/item/weapon/reagent_containers/food/snacks/turkeyslice name = "turkey serving" @@ -3196,56 +2491,41 @@ trash = /obj/item/trash/plate filling_color = "#D6D9C1" bitesize = 2 - - New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("gravy", 5) - reagents.add_reagent("mashedpotatoes", 10) - bitesize = 2 + list_reagents = list("nutriment" = 5, "gravy" = 5, "mashedpotatoes" = 10) ////////////////////////////////ICE CREAM/////////////////////////////////// /obj/item/weapon/reagent_containers/food/snacks/icecream - name = "ice cream" - desc = "Delicious ice cream." - icon = 'icons/obj/kitchen.dmi' - icon_state = "icecream_cone" - New() - ..() - reagents.add_reagent("nutriment", 1) - reagents.add_reagent("sugar",1) - bitesize = 1 - update_icon() + name = "ice cream" + desc = "Delicious ice cream." + icon = 'icons/obj/kitchen.dmi' + icon_state = "icecream_cone" + list_reagents = list("nutriment" = 1, "sugar" = 1) - update_icon() - overlays.Cut() - var/image/filling = image('icons/obj/kitchen.dmi', src, "icecream_color") - filling.icon += mix_color_from_reagents(reagents.reagent_list) - overlays += filling +/obj/item/weapon/reagent_containers/food/snacks/icecream/New() + ..() + update_icon() + +/obj/item/weapon/reagent_containers/food/snacks/icecream/update_icon() + overlays.Cut() + var/image/filling = image('icons/obj/kitchen.dmi', src, "icecream_color") + filling.icon += mix_color_from_reagents(reagents.reagent_list) + overlays += filling /obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcone - name = "ice cream cone" - desc = "Delicious ice cream." - icon_state = "icecream_cone" - volume = 50 - New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("sugar",6) - reagents.add_reagent("ice",2) - bitesize = 3 + name = "ice cream cone" + desc = "Delicious ice cream." + icon_state = "icecream_cone" + volume = 50 + bitesize = 3 + list_reagents = list("nutriment" = 3, "sugar" = 7, "ice" = 2) /obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcup - name = "chocolate ice cream cone" - desc = "Delicious ice cream." - icon_state = "icecream_cup" - volume = 50 - New() - ..() - reagents.add_reagent("nutriment", 4) - reagents.add_reagent("chocolate",8) - reagents.add_reagent("ice",2) - bitesize = 6 + name = "chocolate ice cream cone" + desc = "Delicious ice cream." + icon_state = "icecream_cup" + volume = 50 + bitesize = 6 + list_reagents = list("nutriment" = 5, "chocolate" = 8, "ice" = 2) /obj/item/weapon/reagent_containers/food/snacks/cereal name = "box of cereal" @@ -3253,18 +2533,15 @@ icon = 'icons/obj/food/food.dmi' icon_state = "cereal_box" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 3) + list_reagents = list("nutriment" = 3) + /obj/item/weapon/reagent_containers/food/snacks/deepfryholder name = "Deep Fried Foods Holder Obj" desc = "If you can see this description the code for the deep fryer fucked up." icon = 'icons/obj/food/food.dmi' icon_state = "deepfried_holder_icon" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 3) + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/dough name = "dough" @@ -3272,9 +2549,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "dough" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 3) + list_reagents = list("nutriment" = 3) // Dough + rolling pin = flat dough /obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/I, mob/user, params) @@ -3296,9 +2571,7 @@ icon_state = "flat dough" slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice slices_num = 3 - New() - ..() - reagents.add_reagent("nutriment", 3) + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/doughslice name = "dough slice" @@ -3306,29 +2579,22 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "doughslice" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 1) + list_reagents = list("nutriment" = 1) /obj/item/weapon/reagent_containers/food/snacks/bun name = "bun" desc = "The base for any self-respecting burger." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "bun" - bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 4) - bitesize = 3 + bitesize = 3 + list_reagents = list("nutriment" = 4) /obj/item/weapon/reagent_containers/food/snacks/taco name = "taco" desc = "Take a bite!" icon_state = "taco" bitesize = 3 - New() - ..() - reagents.add_reagent("nutriment", 7) + list_reagents = list("nutriment" = 7) /obj/item/weapon/reagent_containers/food/snacks/cutlet name = "cutlet" @@ -3336,9 +2602,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "cutlet" bitesize = 2 - New() - ..() - reagents.add_reagent("protein", 2) + list_reagents = list("protein" = 2) /obj/item/weapon/reagent_containers/food/snacks/rawmeatball name = "raw meatball" @@ -3346,18 +2610,14 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "rawmeatball" bitesize = 2 - New() - ..() - reagents.add_reagent("protein", 2) + list_reagents = list("protein" = 2) /obj/item/weapon/reagent_containers/food/snacks/hotdog name = "hotdog" desc = "Unrelated to dogs, maybe." icon_state = "hotdog" bitesize = 2 - New() - ..() - reagents.add_reagent("protein", 6) + list_reagents = list("protein" = 6) /obj/item/weapon/reagent_containers/food/snacks/flatbread name = "flatbread" @@ -3365,9 +2625,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "flatbread" bitesize = 2 - New() - ..() - reagents.add_reagent("nutriment", 3) + list_reagents = list("nutriment" = 3) /obj/item/weapon/reagent_containers/food/snacks/rawsticks name = "raw potato sticks" @@ -3375,18 +2633,14 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "rawsticks" bitesize = 2 - New() - ..() - reagents.add_reagent("plantmatter", 3) + list_reagents = list("plantmatter" = 3) /obj/item/weapon/reagent_containers/food/snacks/ectoplasm name = "ectoplasm" desc = "A luminescent blob of what scientists refer to as 'ghost goo'." icon = 'icons/obj/wizard.dmi' icon_state = "ectoplasm" - New() - ..() - reagents.add_reagent("ectoplasm", 10) + list_reagents = list("ectoplasm" = 10) /obj/item/weapon/reagent_containers/food/snacks/liquidfood name = "\improper LiquidFood Ration" @@ -3394,12 +2648,8 @@ icon_state = "liquidfood" trash = /obj/item/trash/liquidfood filling_color = "#A8A8A8" - - New() - ..() - reagents.add_reagent("nutriment", 20) - reagents.add_reagent("iron", 3) - bitesize = 4 + bitesize = 4 + list_reagents = list("nutriment" = 20, "iron" = 3) /obj/item/weapon/reagent_containers/food/snacks/tastybread @@ -3408,8 +2658,5 @@ icon_state = "tastybread" trash = /obj/item/trash/tastybread filling_color = "#A66829" - - New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 + bitesize = 2 + list_reagents = list("nutriment" = 6) \ No newline at end of file diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index b71bb0be2d4..fafa983cf1d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -52,13 +52,13 @@ else overlays += image('icons/obj/kitchen.dmi', "gridle") -/obj/machinery/gibber/relaymove(mob/user as mob) +/obj/machinery/gibber/relaymove(mob/user) if(locked) return go_out() -/obj/machinery/gibber/attack_hand(mob/user as mob) +/obj/machinery/gibber/attack_hand(mob/user) if(stat & (NOPOWER|BROKEN)) return @@ -73,7 +73,7 @@ else startgibbing(user) -/obj/machinery/gibber/attackby(obj/item/P as obj, mob/user as mob, params) +/obj/machinery/gibber/attackby(obj/item/P, mob/user, params) if(istype(P, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = P if(G.state < 2) @@ -126,7 +126,7 @@ return user.visible_message("[user] starts to put [victim] into the gibber!") - src.add_fingerprint(user) + add_fingerprint(user) if(do_after(user, 30, target = victim) && user.Adjacent(src) && victim.Adjacent(user) && !occupant) user.visible_message("[user] stuffs [victim] into the gibber!") @@ -155,7 +155,7 @@ return for(var/obj/O in src) - O.loc = src.loc + O.loc = loc occupant.forceMove(get_turf(src)) occupant = null @@ -212,11 +212,11 @@ /obj/machinery/gibber/proc/startgibbing(var/mob/user, var/UserOverride=0) if(!istype(user) && !UserOverride) - log_debug("Some shit just went down with the gibber at X[x], Y[y], Z[z] with an invalid user. (JMP)") + log_debug("Some shit just went down with the gibber at X[x], Y[y], Z[z] with an invalid user. (JMP)") return if(UserOverride) - msg_admin_attack("[key_name_admin(occupant)] was gibbed by an autogibber (\the [src]) (JMP)") + msg_admin_attack("[key_name_admin(occupant)] was gibbed by an autogibber (\the [src]) (JMP)") if(operating) return @@ -236,7 +236,7 @@ var/slab_name = occupant.name var/slab_count = 3 var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human //gibber can only gib humans on paracode, no need to check meat type - var/slab_nutrition = src.occupant.nutrition / 15 + var/slab_nutrition = occupant.nutrition / 15 slab_nutrition /= slab_count @@ -352,7 +352,7 @@ feedinTopanim() return 1 -/obj/machinery/gibber/autogibber/proc/ejectclothes(var/mob/living/carbon/human/H) +/obj/machinery/gibber/autogibber/proc/ejectclothes(mob/living/carbon/human/H) if(!istype(H)) return 0 if(H != occupant) return 0 //only using H as a shortcut to typecast for(var/obj/O in H) @@ -367,7 +367,7 @@ if(O.flags & NODROP) qdel(O) //they are already dead by now H.unEquip(O) - O.loc = src.loc + O.loc = loc O.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) sleep(1) @@ -375,7 +375,7 @@ if(C.flags & NODROP) qdel(C) H.unEquip(C) - C.loc = src.loc + C.loc = loc C.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) sleep(1) @@ -385,7 +385,7 @@ var/spats = 0 //keeps track of how many items get spit out. Don't show a message if none are found. for(var/obj/O in src) if(istype(O)) - O.loc = src.loc + O.loc = loc O.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(1,5),15) spats++ sleep(1) diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm index f0fb01efad2..19da4fb85ac 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat_2.dm @@ -63,11 +63,11 @@ var/list/ingredients_source = list( while(ingredients.len < 11) ingredients.Add(5) -/obj/machinery/icecream_vat/attack_hand(mob/user as mob) +/obj/machinery/icecream_vat/attack_hand(mob/user) user.set_machine(src) interact(user) -/obj/machinery/icecream_vat/interact(mob/user as mob) +/obj/machinery/icecream_vat/interact(mob/user) var/dat dat += "Dispense vanilla icecream There is [ingredients[ICECREAM_VANILLA]] scoops of vanilla icecream left (made from milk and ice).
" dat += "Dispense strawberry icecream There is [ingredients[FLAVOUR_STRAWBERRY]] dollops of strawberry flavouring left (obtained from berry juice.
" @@ -91,7 +91,7 @@ var/list/ingredients_source = list( popup.set_content(dat) popup.open(0) -/obj/machinery/icecream_vat/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/obj/machinery/icecream_vat/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/weapon/reagent_containers)) if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/icecream)) var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O @@ -99,7 +99,7 @@ var/list/ingredients_source = list( if(ingredients[ICECREAM_VANILLA] > 0) var/flavour_name = get_icecream_flavour_string(dispense_flavour) if(dispense_flavour < 11 && ingredients[dispense_flavour] > 0) - src.visible_message("[bicon(src)] [user] scoops delicious [flavour_name] flavoured icecream into [I].") + visible_message("[bicon(src)] [user] scoops delicious [flavour_name] flavoured icecream into [I].") ingredients[dispense_flavour] -= 1 ingredients[ICECREAM_VANILLA] -= 1 @@ -127,7 +127,7 @@ var/list/ingredients_source = list( else var/obj/item/weapon/reagent_containers/R = O if(R.reagents) - src.visible_message("[user] has emptied all of [R] into [src].") + visible_message("[user] has emptied all of [R] into [src].") for(var/datum/reagent/current_reagent in R.reagents.reagent_list) if(ingredients_source[current_reagent.id]) add(ingredients_source[current_reagent.id], current_reagent.volume / 2) @@ -151,7 +151,7 @@ var/list/ingredients_source = list( ingredients[INGR_FLOUR] -= amount ingredients[INGR_SUGAR] -= amount ingredients[CONE_WAFFLE] += amount - src.visible_message("[user] cooks up some waffle cones.") + visible_message("[user] cooks up some waffle cones.") else to_chat(user, "You require sugar and flour to make waffle cones.") if(CONE_CHOC) @@ -160,7 +160,7 @@ var/list/ingredients_source = list( ingredients[CONE_WAFFLE] -= amount ingredients[FLAVOUR_CHOCOLATE] -= amount ingredients[CONE_CHOC] += amount - src.visible_message("[user] cooks up some chocolate cones.") + visible_message("[user] cooks up some chocolate cones.") else to_chat(user, "You require waffle cones and chocolate flavouring to make chocolate cones.") if(ICECREAM_VANILLA) @@ -169,7 +169,7 @@ var/list/ingredients_source = list( ingredients[INGR_ICE] -= amount ingredients[INGR_MILK] -= amount ingredients[ICECREAM_VANILLA] += amount - src.visible_message("[user] whips up some vanilla icecream.") + visible_message("[user] whips up some vanilla icecream.") else to_chat(user, "You require milk and ice to make vanilla icecream.") updateDialog() @@ -179,7 +179,7 @@ var/list/ingredients_source = list( return if(href_list["dispense"]) dispense_flavour = text2num(href_list["dispense"]) - src.visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") + visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") if(href_list["cone"]) var/dispense_cone = text2num(href_list["cone"]) @@ -187,11 +187,11 @@ var/list/ingredients_source = list( var/cone_name = get_icecream_flavour_string(dispense_cone) if(ingredients[dispense_cone] >= 1) ingredients[dispense_cone] -= 1 - var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc) + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(loc) I.cone_type = cone_name I.icon_state = "icecream_cone_[cone_name]" I.desc = "Delicious [cone_name] cone, but no ice cream." - src.visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") + visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") else to_chat(usr, "There are no [cone_name] cones left!") updateDialog() @@ -202,7 +202,7 @@ var/list/ingredients_source = list( if(href_list["eject"]) if(held_container) - held_container.forceMove(src.loc) + held_container.forceMove(loc) held_container = null updateDialog() @@ -231,7 +231,7 @@ var/list/ingredients_source = list( /obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour) var/flavour_name = get_icecream_flavour_string(flavour) name = "[flavour_name] icecream" - src.overlays += "icecream_[flavour_name]" + overlays += "icecream_[flavour_name]" desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." ice_creamed = 1 diff --git a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm index e1cb054690f..03ceb5c0034 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/juicer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/juicer.dm @@ -35,7 +35,7 @@ return -/obj/machinery/juicer/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/obj/machinery/juicer/attackby(obj/item/O, mob/user, params) if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass)) if(beaker) @@ -46,9 +46,9 @@ return 0 O.forceMove(src) beaker = O - src.verbs += /obj/machinery/juicer/verb/detach + verbs += /obj/machinery/juicer/verb/detach update_icon() - src.updateUsrDialog() + updateUsrDialog() return 0 if(!is_type_in_list(O, allowed_items)) to_chat(user, "It doesn't look like that contains any juice.") @@ -57,24 +57,24 @@ to_chat(user, "\the [O] is stuck to your hand, you cannot put it in \the [src]") return 0 O.forceMove(src) - src.updateUsrDialog() + updateUsrDialog() return 0 -/obj/machinery/juicer/attack_ai(mob/user as mob) +/obj/machinery/juicer/attack_ai(mob/user) return 0 -/obj/machinery/juicer/attack_hand(mob/user as mob) +/obj/machinery/juicer/attack_hand(mob/user) user.set_machine(src) interact(user) -/obj/machinery/juicer/interact(mob/user as mob) // The microwave Menu +/obj/machinery/juicer/interact(mob/user) // The microwave Menu var/is_chamber_empty = 0 var/is_beaker_ready = 0 var/processing_chamber = "" var/beaker_contents = "" for(var/i in allowed_items) - for(var/obj/item/O in src.contents) + for(var/obj/item/O in contents) if(!istype(O,i)) continue processing_chamber+= "some [O]
" @@ -119,7 +119,7 @@ if("detach") detach() - src.updateUsrDialog() + updateUsrDialog() return /obj/machinery/juicer/verb/detach() @@ -130,8 +130,8 @@ return if(!beaker) return - src.verbs -= /obj/machinery/juicer/verb/detach - beaker.forceMove(src.loc) + verbs -= /obj/machinery/juicer/verb/detach + beaker.forceMove(loc) beaker = null update_icon() @@ -159,8 +159,8 @@ return if(!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume) return - playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) - for(var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents) + playsound(loc, 'sound/machines/juicer.ogg', 50, 1) + for(var/obj/item/weapon/reagent_containers/food/snacks/O in contents) var/r_id = get_juice_id(O) beaker.reagents.add_reagent(r_id,get_juice_amount(O)) qdel(O) diff --git a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm index 648f228bb54..15458648513 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm @@ -56,7 +56,7 @@ * Item Adding ********************/ -/obj/machinery/kitchen_machine/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/obj/machinery/kitchen_machine/attackby(obj/item/O, mob/user, params) if(operating) return if(!broken && dirty < 100) @@ -77,8 +77,8 @@ default_deconstruction_crowbar(O) - if(src.broken > 0) - if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver + if(broken > 0) + if(broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver user.visible_message( \ "[user] starts to fix part of \the [src].", \ "You start to fix part of \the [src]." \ @@ -88,8 +88,8 @@ "[user] fixes part of \the [src].", \ "You have fixed part of \the [src]." \ ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench + broken = 1 // Fix it a bit + else if(broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench user.visible_message( \ "[user] starts to fix part of \the [src].", \ "You start to fix part of \the [src]." \ @@ -99,14 +99,14 @@ "[user] fixes \the [src].", \ "You have fixed \the [src]." \ ) - src.icon_state = off_icon - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER + icon_state = off_icon + broken = 0 // Fix it! + dirty = 0 // just to be sure + flags = OPENCONTAINER else to_chat(user, "It's broken!") return 1 - else if(src.dirty==100) // The machine is all dirty so can't be used! + else if(dirty==100) // The machine is all dirty so can't be used! if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them user.visible_message( \ "[user] starts to clean \the [src].", \ @@ -117,10 +117,10 @@ "[user] has cleaned \the [src].", \ "You have cleaned \the [src]." \ ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = off_icon - src.flags = OPENCONTAINER + dirty = 0 // It's clean! + broken = 0 // just to be sure + icon_state = off_icon + flags = OPENCONTAINER else //Otherwise bad luck!! to_chat(user, "It's dirty!") return 1 @@ -161,12 +161,12 @@ else to_chat(user, "You have no idea what you can cook with this [O].") return 1 - src.updateUsrDialog() + updateUsrDialog() -/obj/machinery/kitchen_machine/attack_ai(mob/user as mob) +/obj/machinery/kitchen_machine/attack_ai(mob/user) return 0 -/obj/machinery/kitchen_machine/attack_hand(mob/user as mob) +/obj/machinery/kitchen_machine/attack_hand(mob/user) user.set_machine(src) interact(user) @@ -174,15 +174,15 @@ * Machine Menu * ********************/ -/obj/machinery/kitchen_machine/interact(mob/user as mob) // The microwave Menu +/obj/machinery/kitchen_machine/interact(mob/user) // The microwave Menu if(panel_open || !anchored) return var/dat = "" - if(src.broken > 0) + if(broken > 0) dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"[pick(src.cook_verbs)] in progress!
Please wait...!
"} - else if(src.dirty==100) + else if(operating) + dat = {"[pick(cook_verbs)] in progress!
Please wait...!
"} + else if(dirty==100) dat = {"This [src] is dirty!
Please clean it before use!
"} else var/list/items_counts = new @@ -237,7 +237,7 @@ var/datum/browser/popup = new(user, name, name, 400, 400) popup.set_content(dat) popup.open(0) - onclose(user, "[src.name]") + onclose(user, "[name]") return @@ -298,14 +298,14 @@ byproduct = recipe.get_byproduct() stop() if(cooked) - cooked.forceMove(src.loc) + cooked.forceMove(loc) for(var/i=1,i\The [src] turns on.
", "You hear \a [src].") - src.operating = 1 - src.icon_state = on_icon - src.updateUsrDialog() + visible_message("\The [src] turns on.", "You hear \a [src].") + operating = 1 + icon_state = on_icon + updateUsrDialog() /obj/machinery/kitchen_machine/proc/abort() - src.operating = 0 // Turn it off again aferwards - src.icon_state = off_icon - src.updateUsrDialog() + operating = 0 // Turn it off again aferwards + icon_state = off_icon + updateUsrDialog() /obj/machinery/kitchen_machine/proc/stop() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.operating = 0 // Turn it off again aferwards - src.icon_state = off_icon - src.updateUsrDialog() + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + operating = 0 // Turn it off again aferwards + icon_state = off_icon + updateUsrDialog() /obj/machinery/kitchen_machine/proc/dispose() for(var/obj/O in contents) - O.forceMove(src.loc) - if(src.reagents.total_volume) - src.dirty++ - src.reagents.clear_reagents() + O.forceMove(loc) + if(reagents.total_volume) + dirty++ + reagents.clear_reagents() to_chat(usr, "You dispose of \the [src]'s contents.") - src.updateUsrDialog() + updateUsrDialog() /obj/machinery/kitchen_machine/proc/muck_start() - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound - src.icon_state = dirty_icon // Make it look dirty!! + playsound(loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound + icon_state = dirty_icon // Make it look dirty!! /obj/machinery/kitchen_machine/proc/muck_finish() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.visible_message("\The [src] gets covered in muck!") - src.dirty = 100 // Make it dirty so it can't be used util cleaned - src.flags = null //So you can't add condiments - src.icon_state = dirty_icon // Make it look dirty too - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + visible_message("\The [src] gets covered in muck!") + dirty = 100 // Make it dirty so it can't be used util cleaned + flags = null //So you can't add condiments + icon_state = dirty_icon // Make it look dirty too + operating = 0 // Turn it off again aferwards + updateUsrDialog() /obj/machinery/kitchen_machine/proc/broke() var/datum/effect/system/spark_spread/s = new s.set_up(2, 1, src) s.start() - src.icon_state = broken_icon // Make it look all busted up and shit - src.visible_message("The [src] breaks!") //Let them know they're stupid - src.broken = 2 // Make it broken so it can't be used util fixed - src.flags = null //So you can't add condiments - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() + icon_state = broken_icon // Make it look all busted up and shit + visible_message("The [src] breaks!") //Let them know they're stupid + broken = 2 // Make it broken so it can't be used util fixed + flags = null //So you can't add condiments + operating = 0 // Turn it off again aferwards + updateUsrDialog() /obj/machinery/kitchen_machine/proc/fail() var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) @@ -382,7 +382,7 @@ if(id) amount+=O.reagents.get_reagent_amount(id) qdel(O) - src.reagents.clear_reagents() + reagents.clear_reagents() ffuu.reagents.add_reagent("carbon", amount) ffuu.reagents.add_reagent("????", amount/10) ffuu.forceMove(get_turf(src)) @@ -392,8 +392,8 @@ return usr.set_machine(src) - if(src.operating) - src.updateUsrDialog() + if(operating) + updateUsrDialog() return switch(href_list["action"]) diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index dc283e65d6c..e70ac59209e 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -33,7 +33,7 @@ cube_production = cubes_made required_grind = req_grind -/obj/machinery/monkey_recycler/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O)) return @@ -62,7 +62,7 @@ cycle_through = 0 to_chat(user, "You change the monkeycube type to [initial(cube_type.name)].") - if(src.stat != 0) //NOPOWER etc + if(stat != 0) //NOPOWER etc return if(istype(O, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = O @@ -76,11 +76,11 @@ user.drop_item() qdel(target) to_chat(user, "You stuff the monkey in the machine.") - playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) + playsound(loc, 'sound/machines/juicer.ogg', 50, 1) var/offset = prob(50) ? -2 : 2 animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking use_power(500) - src.grinded++ + grinded++ sleep(50) pixel_x = initial(pixel_x) to_chat(user, "The machine now has [grinded] monkey\s worth of material stored.") @@ -90,15 +90,15 @@ to_chat(user, "The machine only accepts monkeys!") return -/obj/machinery/monkey_recycler/attack_hand(var/mob/user as mob) - if(src.stat != 0) //NOPOWER etc +/obj/machinery/monkey_recycler/attack_hand(mob/user) + if(stat != 0) //NOPOWER etc return if(grinded >= required_grind) to_chat(user, "The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube.") - playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) + playsound(loc, 'sound/machines/hiss.ogg', 50, 1) grinded -= required_grind for(var/i = 0, i < cube_production, i++) // Forgot to fix this bit the first time through - new cube_type(src.loc) + new cube_type(loc) to_chat(user, "The machine's display flashes that it has [grinded] monkey\s worth of material left.") else // I'm not sure if the \s macro works with a word in between; I'll play it safe to_chat(user, "The machine needs at least [required_grind] monkey\s worth of material to compress [cube_production] monkey\s. It only has [grinded].") diff --git a/code/modules/food_and_drinks/kitchen_machinery/oven.dm b/code/modules/food_and_drinks/kitchen_machinery/oven.dm index 796e8c4bd4b..6a47eb94ff5 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/oven.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/oven.dm @@ -60,7 +60,7 @@ food_choices.Remove(U) for(var/U in subtypesof(/obj/item/weapon/reagent_containers/food/snacks/customizable/cook)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/V = new U - src.food_choices += V + food_choices += V return /obj/machinery/cooking/candy @@ -75,5 +75,5 @@ food_choices.Remove(U) for(var/U in subtypesof(/obj/item/weapon/reagent_containers/food/snacks/customizable/candy)) var/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/V = new U - src.food_choices += V + food_choices += V return diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index d2b810dc7bb..5183fe6a4fa 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -58,9 +58,9 @@ var/time = 40 /datum/food_processor_process/proc/process_food(loc, what, obj/machinery/processor/processor) - if(src.output && loc && processor) + if(output && loc && processor) for(var/i = 0, i < processor.rating_amount, i++) - new src.output(loc) + new output(loc) if(what) qdel(what) @@ -154,9 +154,9 @@ return P return 0 -/obj/machinery/processor/attackby(var/obj/item/O as obj, var/mob/user as mob, params) +/obj/machinery/processor/attackby(obj/item/O, mob/user, params) - if(src.processing) + if(processing) to_chat(user, "\the [src] is already processing something!") return 1 @@ -191,25 +191,25 @@ what.loc = src return -/obj/machinery/processor/attack_hand(var/mob/user as mob) +/obj/machinery/processor/attack_hand(mob/user) if(stat & (NOPOWER|BROKEN)) //no power or broken return - if(src.processing) + if(processing) to_chat(user, "\the [src] is already processing something!") return 1 - if(src.contents.len == 0) + if(contents.len == 0) to_chat(user, "\the [src] is empty.") return 1 - src.processing = 1 + processing = 1 user.visible_message("[user] turns on [src].", \ "You turn on [src].", \ "You hear a food processor.") - playsound(src.loc, 'sound/machines/blender.ogg', 50, 1) + playsound(loc, 'sound/machines/blender.ogg', 50, 1) use_power(500) var/total_time = 0 - for(var/O in src.contents) + for(var/O in contents) var/datum/food_processor_process/P = select_recipe(O) if(!P) log_debug("The [O] in processor([src]) does not have a suitable recipe, but it was somehow put inside of the processor anyways.") @@ -217,14 +217,14 @@ total_time += P.time sleep(total_time / rating_speed) - for(var/O in src.contents) + for(var/O in contents) var/datum/food_processor_process/P = select_recipe(O) if(!P) log_debug("The [O] in processor([src]) does not have a suitable recipe, but it was somehow put inside of the processor anyways.") continue - P.process_food(src.loc, O, src) - src.processing = 0 + P.process_food(loc, O, src) + processing = 0 - src.visible_message("\the [src] has finished processing.", \ + visible_message("\the [src] has finished processing.", \ "\the [src] has finished processing.", \ "You hear a food processor stopping.") diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index c6f7e54a003..2446b74ad22 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -53,7 +53,7 @@ A.forceMove(loc) return ..() -/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/proc/accept_check(obj/item/O) if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) return 1 return 0 @@ -66,7 +66,7 @@ icon_on = "seeds" icon_off = "seeds-off" -/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/seeds/accept_check(obj/item/O) if(istype(O,/obj/item/seeds/)) return 1 return 0 @@ -77,7 +77,7 @@ icon_state = "smartfridge" //To fix the icon in the map editor. icon_on = "smartfridge_chem" -/obj/machinery/smartfridge/medbay/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/medbay/accept_check(obj/item/O) if(istype(O,/obj/item/weapon/reagent_containers/glass/)) return 1 if(istype(O,/obj/item/weapon/storage/pill_bottle/)) @@ -91,7 +91,7 @@ desc = "A refrigerated storage unit for slime extracts" req_access_txt = "47" -/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/secure/extract/accept_check(obj/item/O) if(istype(O,/obj/item/slime_extract)) return 1 return 0 @@ -103,7 +103,7 @@ icon_on = "smartfridge_chem" req_one_access_txt = "5;33" -/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/secure/medbay/accept_check(obj/item/O) if(istype(O,/obj/item/weapon/reagent_containers/glass/)) return 1 if(istype(O,/obj/item/weapon/storage/pill_bottle/)) @@ -134,7 +134,7 @@ nanomanager.update_uis(src) amount-- -/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/chemistry/accept_check(obj/item/O) if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers)) return 1 return 0 @@ -154,7 +154,7 @@ /obj/item/weapon/reagent_containers/glass/bottle/plasma = 1, /obj/item/weapon/reagent_containers/glass/bottle/diphenhydramine = 1) -/obj/machinery/smartfridge/secure/chemistry/virology/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/secure/chemistry/virology/accept_check(obj/item/O) if(istype(O, /obj/item/weapon/reagent_containers/syringe) || istype(O, /obj/item/weapon/reagent_containers/glass/bottle) || istype(O, /obj/item/weapon/reagent_containers/glass/beaker)) return 1 return 0 @@ -163,17 +163,17 @@ name = "\improper Drink Showcase" desc = "A refrigerated storage unit for tasty tasty alcohol." -/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/drinks/accept_check(obj/item/O) if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) return 1 /obj/machinery/smartfridge/process() if(stat & (BROKEN|NOPOWER)) return - if(src.seconds_electrified > 0) - src.seconds_electrified-- - if(src.shoot_inventory && prob(2)) - src.throw_item() + if(seconds_electrified > 0) + seconds_electrified-- + if(shoot_inventory && prob(2)) + throw_item() /obj/machinery/smartfridge/power_change() var/old_stat = stat @@ -192,9 +192,9 @@ * Item Adding ********************/ -/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) +/obj/machinery/smartfridge/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/weapon/screwdriver) && anchored) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) panel_open = !panel_open to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.") overlays.Cut() @@ -271,20 +271,20 @@ return 1 return 0 -/obj/machinery/smartfridge/attack_ai(mob/user as mob) +/obj/machinery/smartfridge/attack_ai(mob/user) return 0 -/obj/machinery/smartfridge/attack_ghost(mob/user as mob) - return src.attack_hand(user) +/obj/machinery/smartfridge/attack_ghost(mob/user) + return attack_hand(user) -/obj/machinery/smartfridge/attack_hand(mob/user as mob) +/obj/machinery/smartfridge/attack_hand(mob/user) if(stat & (NOPOWER|BROKEN)) return wires.Interact(user) ui_interact(user) //Drag pill bottle to fridge to empty it into the fridge -/obj/machinery/smartfridge/MouseDrop_T(obj/over_object as obj, mob/user as mob) +/obj/machinery/smartfridge/MouseDrop_T(obj/over_object, mob/user) if(!istype(over_object, /obj/item/weapon/storage/pill_bottle)) //Only pill bottles, please return @@ -305,7 +305,7 @@ to_chat(user, "Some items are refused.") nanomanager.update_uis(src) -/obj/machinery/smartfridge/secure/emag_act(user as mob) +/obj/machinery/smartfridge/secure/emag_act(user) emagged = 1 locked = -1 to_chat(user, "You short out the product lock on [src].") @@ -314,7 +314,7 @@ * SmartFridge Menu ********************/ -/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) +/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1) user.set_machine(src) var/data[0] @@ -336,7 +336,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) + ui = new(user, src, ui_key, "smartfridge.tmpl", name, 400, 500) ui.set_initial_data(data) ui.open() @@ -346,7 +346,7 @@ var/mob/user = usr var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main") - src.add_fingerprint(user) + add_fingerprint(user) if(href_list["close"]) user.unset_machine() @@ -387,7 +387,7 @@ item_quants[O]-- for(var/obj/T in contents) if(T.name == O) - T.forceMove(src.loc) + T.forceMove(loc) throw_item = T break break @@ -395,7 +395,7 @@ return 0 spawn(0) throw_item.throw_at(target,16,3,src) - src.visible_message("[src] launches [throw_item.name] at [target.name]!") + visible_message("[src] launches [throw_item.name] at [target.name]!") return 1 /************************ diff --git a/code/modules/food_and_drinks/recipes/recipes_candy.dm b/code/modules/food_and_drinks/recipes/recipes_candy.dm index 2ab54fc0e27..98f969a17ec 100644 --- a/code/modules/food_and_drinks/recipes/recipes_candy.dm +++ b/code/modules/food_and_drinks/recipes/recipes_candy.dm @@ -78,6 +78,11 @@ items = list(/obj/item/weapon/reagent_containers/food/snacks/egg) result = /obj/item/weapon/reagent_containers/food/snacks/candy/nougat +/datum/recipe/candy/nougat/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/candy/nougat/being_cooked = ..() + being_cooked.reagents.del_reagent("egg") + return being_cooked + // *********************************************************** // Base Candy Recipes (unflavored / plain) // *********************************************************** diff --git a/code/modules/food_and_drinks/recipes/recipes_grill.dm b/code/modules/food_and_drinks/recipes/recipes_grill.dm index 4c459b737ff..5845e860c9d 100644 --- a/code/modules/food_and_drinks/recipes/recipes_grill.dm +++ b/code/modules/food_and_drinks/recipes/recipes_grill.dm @@ -89,6 +89,11 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers +/datum/recipe/grill/fishfingers/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/fishfingers/being_cooked = ..() + being_cooked.reagents.del_reagent("egg") + return being_cooked + /datum/recipe/grill/cutlet items = list( /obj/item/weapon/reagent_containers/food/snacks/rawcutlet diff --git a/code/modules/food_and_drinks/recipes/recipes_microwave.dm b/code/modules/food_and_drinks/recipes/recipes_microwave.dm index 0f58955a2bf..5903e191b4e 100644 --- a/code/modules/food_and_drinks/recipes/recipes_microwave.dm +++ b/code/modules/food_and_drinks/recipes/recipes_microwave.dm @@ -205,10 +205,11 @@ reagents = list("water" = 5, "vodka" = 5) fruit = list("amanita" = 3) result = /obj/item/weapon/reagent_containers/food/snacks/amanitajelly - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..(container) - being_cooked.reagents.del_reagent("amanitin") - return being_cooked + +/datum/recipe/microwave/amanitajelly/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/being_cooked = ..() + being_cooked.reagents.del_reagent("amanitin") + return being_cooked /datum/recipe/microwave/meatballsoup reagents = list("water" = 10) @@ -538,10 +539,11 @@ datum/recipe/microwave/slimesandwich /datum/recipe/microwave/herbsalad fruit = list("ambrosia" = 3, "apple" = 1) result = /obj/item/weapon/reagent_containers/food/snacks/herbsalad - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..(container) - being_cooked.reagents.del_reagent("toxin") - return being_cooked + +/datum/recipe/microwave/herbsalad/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/herbsalad/being_cooked = ..() + being_cooked.reagents.del_reagent("toxin") + return being_cooked /datum/recipe/microwave/aesirsalad fruit = list("ambrosiadeus" = 3, "goldapple" = 1) @@ -553,10 +555,11 @@ datum/recipe/microwave/slimesandwich /obj/item/weapon/reagent_containers/food/snacks/meatball, ) result = /obj/item/weapon/reagent_containers/food/snacks/validsalad - make_food(var/obj/container as obj) - var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..(container) - being_cooked.reagents.del_reagent("toxin") - return being_cooked + +/datum/recipe/microwave/validsalad/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/validsalad/being_cooked = ..() + being_cooked.reagents.del_reagent("toxin") + return being_cooked ////////////////////////////FOOD ADDITTIONS/////////////////////////////// diff --git a/code/modules/food_and_drinks/recipes/recipes_oven.dm b/code/modules/food_and_drinks/recipes/recipes_oven.dm index 9ee3ff3343e..d20c06e260f 100644 --- a/code/modules/food_and_drinks/recipes/recipes_oven.dm +++ b/code/modules/food_and_drinks/recipes/recipes_oven.dm @@ -176,20 +176,22 @@ /obj/item/weapon/paper, ) result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie - make_food(var/obj/container as obj) + +/datum/recipe/oven/fortunecookie/make_food(obj/container) + var/obj/item/weapon/paper/paper = locate() in container + paper.loc = null //prevent deletion + var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..() + paper.loc = being_cooked + being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn + return being_cooked + +/datum/recipe/oven/fortunecookie/check_items(obj/container) + . = ..() + if(.) var/obj/item/weapon/paper/paper = locate() in container - paper.loc = null //prevent deletion - var/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/being_cooked = ..(container) - paper.loc = being_cooked - being_cooked.trash = paper //so the paper is left behind as trash without special-snowflake(TM Nodrak) code ~carn - return being_cooked - check_items(var/obj/container as obj) - . = ..() - if(.) - var/obj/item/weapon/paper/paper = locate() in container - if(!paper || !paper.info) - return -1 - return . + if(!paper || !paper.info) + return -1 + return . /datum/recipe/oven/pizzamargherita fruit = list("tomato" = 1) @@ -293,6 +295,11 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread +/datum/recipe/oven/bread/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread/being_cooked = ..() + being_cooked.reagents.del_reagent("egg") + return being_cooked + /datum/recipe/oven/applepie fruit = list("apple" = 1) items = list( @@ -377,6 +384,11 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/appletart +/datum/recipe/oven/appletart/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/appletart/being_cooked = ..() + being_cooked.reagents.del_reagent("egg") + return being_cooked + /datum/recipe/oven/cracker reagents = list("sodiumchloride" = 1) items = list( @@ -392,6 +404,11 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie +/datum/recipe/oven/sugarcookie/make_food(obj/container) + var/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/being_cooked = ..() + being_cooked.reagents.del_reagent("egg") + return being_cooked + /datum/recipe/oven/flatbread items = list( /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index bc6692d72b1..0e557ea1d31 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -98,7 +98,7 @@ to_chat(M, "You are stunned by the powerful acid of the Deathnettle!") add_logs(user, M, "attacked", src) - M.eye_blurry += force/7 + M.AdjustEyeBlurry(force/7) if(prob(20)) M.Paralyse(force / 6) M.Weaken(force / 15) diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index 2f41c6cdb5c..4086403c6e0 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -13,19 +13,23 @@ origin_tech = "magnets=1;biotech=1" var/form_title var/last_data + var/print_cooldown = 0 + var/cooldown_length = 50 // Five seconds /obj/item/device/analyzer/plant_analyzer/proc/print_report_verb() set name = "Print Plant Report" set category = "Object" set src = usr - if(usr.stat || usr.restrained() || usr.lying) + if(usr.incapacitated()) return + print_report(usr) /obj/item/device/analyzer/plant_analyzer/Topic(href, href_list) if(..()) - return + return 1 + if(href_list["print"]) print_report(usr) @@ -33,6 +37,11 @@ if(!last_data) to_chat(user, "There is no scan data to print.") return + if(print_cooldown > world.time) + to_chat(user, "The printer is still cooling down.") + return + print_cooldown = world.time + cooldown_length + playsound(loc, "sound/goonstation/machines/printer_thermal.ogg", 50, 1) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src)) P.name = "paper - [form_title]" diff --git a/code/modules/martial_arts/krav_maga.dm b/code/modules/martial_arts/krav_maga.dm index 9b589878475..e1a577e24fa 100644 --- a/code/modules/martial_arts/krav_maga.dm +++ b/code/modules/martial_arts/krav_maga.dm @@ -88,7 +88,7 @@ D.visible_message("[A] pounds [D] on the chest!", \ "[A] slams your chest! You can't breathe!") playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) - D.losebreath += 5 + D.AdjustLoseBreath(5) D.adjustOxyLoss(10) return 1 @@ -97,7 +97,7 @@ "[A] karate chops your neck, rendering you unable to speak for a short time!") playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) - D.silent += 10 + D.AdjustSilence(10) return 1 datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) @@ -170,4 +170,4 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi name = "krav maga gloves" desc = "These gloves can teach you to perform Krav Maga using nanochips." icon_state = "fightgloves" - item_state = "fightgloves" \ No newline at end of file + item_state = "fightgloves" diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm index bc4e15eb598..960844a063a 100644 --- a/code/modules/martial_arts/sleeping_carp.dm +++ b/code/modules/martial_arts/sleeping_carp.dm @@ -66,7 +66,7 @@ D.visible_message("[A] knees [D] in the stomach!", \ "[A] winds you with a knee in the stomach!") D.audible_message("[D] gags!") - D.losebreath += 3 + D.AdjustLoseBreath(3) D.Stun(2) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) if(prob(80)) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 50a9527326a..3a813b0a557 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -28,7 +28,7 @@ //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. if(language && (language.flags & NONVERBAL)) - if(disabilities & BLIND || blinded) //blind people can't see dumbass + if(!can_see()) //blind people can't see dumbass message = stars(message) if(!speaker || !(speaker in view(src))) @@ -65,7 +65,7 @@ if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src)) message = "[message]" - if(disabilities & DEAF || ear_deaf) + if(!can_hear()) if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set if(speaker == src) to_chat(src, "You cannot hear yourself speak!") @@ -95,7 +95,7 @@ //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. if(language && (language.flags & NONVERBAL)) - if(disabilities & BLIND || blinded) //blind people can't see dumbass + if(!can_see()) //blind people can't see dumbass message = stars(message) if(!speaker || !(speaker in view(src))) @@ -182,7 +182,7 @@ formatted = language.format_message_radio(message, verb) else formatted = "[verb], \"[message]\"" - if(disabilities & DEAF || ear_deaf) + if(!can_hear()) if(prob(20)) to_chat(src, "You feel your headset vibrate but can hear nothing from it!") else if(track) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 81b54bcc3a6..c9e410d9e9b 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -605,7 +605,7 @@ return ..() // Can we speak this language, as opposed to just understanding it? -/mob/proc/can_speak(datum/language/speaking) +/mob/proc/can_speak_language(datum/language/speaking) return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in src.languages) diff --git a/code/modules/mob/living/carbon/alien/alien_defenses.dm b/code/modules/mob/living/carbon/alien/alien_defenses.dm index 3949948b0f3..c6e2bcc510d 100644 --- a/code/modules/mob/living/carbon/alien/alien_defenses.dm +++ b/code/modules/mob/living/carbon/alien/alien_defenses.dm @@ -16,7 +16,7 @@ In all, this is a lot like the monkey code. /N switch(M.a_intent) if(I_HELP) - sleeping = max(0,sleeping-5) + AdjustSleeping(-5) resting = 0 AdjustParalysis(-3) AdjustStunned(-3) diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 876cae4b312..c5cee9d3db4 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -96,13 +96,15 @@ f_loss += 60 - adjustEarDamage(30, 120) + AdjustEarDamage(30) + AdjustEarDeaf(120) if(3.0) b_loss += 30 if(prob(50) && !shielded) Paralyse(1) - adjustEarDamage(15,60) + AdjustEarDamage(15) + AdjustEarDeaf(60) adjustBruteLoss(b_loss) adjustFireLoss(f_loss) @@ -298,4 +300,4 @@ return initial(pixel_x) /mob/living/carbon/alien/humanoid/get_permeability_protection() - return 0.8 \ No newline at end of file + return 0.8 diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 4cccb6e57ed..da93e43c13f 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -57,13 +57,12 @@ if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP blinded = 1 - silent = 0 + SetSilence(0) else //ALIVE. LIGHTS ARE ON if(health < config.health_threshold_dead || !get_int_organ(/obj/item/organ/internal/brain)) death() blinded = 1 - stat = DEAD - silent = 0 + SetSilence(0) return 1 //UNCONSCIOUS. NO-ONE IS HOME @@ -80,7 +79,7 @@ blinded = 1 stat = UNCONSCIOUS else if(sleeping) - sleeping = max(sleeping-1, 0) + AdjustSleeping(-1) blinded = 1 stat = UNCONSCIOUS if( prob(10) && health ) @@ -98,18 +97,18 @@ if(disabilities & BLIND) //disabled-blind, doesn't get better on its own blinded = 1 else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) + AdjustEyeBlind(-1) blinded = 1 else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) + AdjustEyeBlurry(-1) //Ears if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) + EarDeaf(1) else if(ear_deaf) //deafness, heals slowly over time - adjustEarDamage(0,-1) + AdjustEarDeaf(-1) else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs - adjustEarDamage(-0.05, 0) + AdjustEarDamage(-0.05) //Other if(stunned) @@ -123,11 +122,11 @@ update_icons() if(stuttering) - stuttering = max(stuttering-1, 0) + AdjustStuttering(-1) if(silent) - silent = max(silent-1, 0) + AdjustSilence(-1) if(druggy) - druggy = max(druggy-1, 0) - return 1 \ No newline at end of file + AdjustDruggy(-1) + return 1 diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 8e9e0dea576..04a460ec710 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -88,13 +88,15 @@ f_loss += 60 - adjustEarDamage(30,120) + AdjustEarDamage(30) + AdjustEarDeaf(120) if(3.0) b_loss += 30 if(prob(50)) Paralyse(1) - adjustEarDamage(15,60) + AdjustEarDamage(15) + AdjustEarDeaf(60) adjustBruteLoss(b_loss) adjustFireLoss(f_loss) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 76ceef6ad2e..03cb2096963 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -17,12 +17,12 @@ if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP blinded = 1 - silent = 0 + SetSilence(0) else //ALIVE. LIGHTS ARE ON if(health < -25 || !get_int_organ(/obj/item/organ/internal/brain)) death() blinded = 1 - silent = 0 + SetSilence(0) return 1 //UNCONSCIOUS. NO-ONE IS HOME @@ -39,7 +39,7 @@ blinded = 1 stat = UNCONSCIOUS else if(sleeping) - sleeping = max(sleeping-1, 0) + AdjustSleeping(-1) blinded = 1 stat = UNCONSCIOUS if( prob(10) && health ) @@ -57,32 +57,32 @@ if(disabilities & BLIND) //disabled-blind, doesn't get better on its own blinded = 1 else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) + AdjustEyeBlind(-1) blinded = 1 else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) + AdjustEyeBlurry(-1) //Ears if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) + EarDeaf(1) else if(ear_deaf) //deafness, heals slowly over time - adjustEarDamage(0,-1) + AdjustEarDeaf(-1) else if(ear_damage < 25) //ear damage heals slowly under this threshold. - adjustEarDamage(-0.05,0) + AdjustEarDamage(-0.05) //Other if(stunned) AdjustStunned(-1) if(weakened) - weakened = max(weakened-1,0) + AdjustWeakened(-1) if(stuttering) - stuttering = max(stuttering-1, 0) + AdjustStuttering(-1) if(silent) - silent = max(silent-1, 0) + AdjustSilence(-1) if(druggy) - druggy = max(druggy-1, 0) - return 1 \ No newline at end of file + AdjustDruggy(-1) + return 1 diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index 996687ee4b0..7809e1fb947 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -100,8 +100,8 @@ I'm using this for Stat to give it a more nifty interface to work with /mob/living/carbon/brain/can_safely_leave_loc() return 0 //You're not supposed to be ethereal jaunting, brains -/mob/living/carbon/brain/adjustEarDamage() +/mob/living/carbon/brain/SetEarDamage() // no ears to damage or heal return -/mob/living/carbon/brain/setEarDamage() // no ears to damage or heal - return \ No newline at end of file +/mob/living/carbon/brain/SetEarDeaf() + return diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index fa466759bcc..e3ffe2074a7 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -21,7 +21,8 @@ /obj/item/organ/internal/brain/surgeryize() if(!owner) return - owner.setEarDamage(0,0) //Yeah, didn't you...hear? The ears are totally inside the brain. + owner.SetEarDeaf(0) + owner.SetEarDamage(0) //Yeah, didn't you...hear? The ears are totally inside the brain. /obj/item/organ/internal/brain/xeno name = "xenomorph brain" diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 40273bf66ad..74d096d9518 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -52,12 +52,12 @@ if(stat == DEAD) blinded = 1 - silent = 0 + SetSilence(0) else if(!container && (health < config.health_threshold_dead || ((world.time - timeofhostdeath) > config.revival_brain_life))) death() - blinded =1 - silent = 0 + blinded = 1 + SetSilence(0) return 1 . = 1 diff --git a/code/modules/mob/living/carbon/brain/login.dm b/code/modules/mob/living/carbon/brain/login.dm index e90297dfe5b..622ae74656a 100644 --- a/code/modules/mob/living/carbon/brain/login.dm +++ b/code/modules/mob/living/carbon/brain/login.dm @@ -1,3 +1,3 @@ /mob/living/carbon/brain/Login() ..() - sleeping = 0 \ No newline at end of file + SetSleeping(0) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 4f76dce16bd..3b5b415964d 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -185,7 +185,7 @@ src.brainmob.loc = src src.brainmob.container = src src.brainmob.stat = 0 - src.brainmob.silent = 0 + src.brainmob.SetSilence(0) dead_mob_list -= src.brainmob ..() diff --git a/code/modules/mob/living/carbon/brain/update_status.dm b/code/modules/mob/living/carbon/brain/update_status.dm new file mode 100644 index 00000000000..2532edfe37d --- /dev/null +++ b/code/modules/mob/living/carbon/brain/update_status.dm @@ -0,0 +1,8 @@ +/mob/living/carbon/brain/update_stat() + if(status_flags & GODMODE) + return + // if(health <= min_health) + if(health <= config.health_threshold_dead) + if(stat != DEAD) + death() + // Put brain(organ) damaging code here diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 688508c4bf3..256aa562f72 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -158,13 +158,13 @@ "You feel a powerful shock coursing through your body!", \ "You hear a heavy electrical crack." \ ) - jitteriness += 1000 //High numbers for violent convulsions + AdjustJitter(1000) //High numbers for violent convulsions do_jitter_animation(jitteriness) - stuttering += 2 + AdjustStuttering(2) if(!tesla_shock || (tesla_shock && siemens_coeff > 0.5)) Stun(2) spawn(20) - jitteriness = max(jitteriness - 990, 10) //Still jittery, but vastly less + AdjustJitter(-1000, bound_lower = 10) //Still jittery, but vastly less if(!tesla_shock || (tesla_shock && siemens_coeff > 0.5)) Stun(3) Weaken(3) @@ -268,7 +268,7 @@ if(istype(src,/mob/living/carbon/human) && src:w_uniform) var/mob/living/carbon/human/H = src H.w_uniform.add_fingerprint(M) - src.sleeping = max(0,src.sleeping-5) + AdjustSleeping(-5) if(src.sleeping == 0) src.resting = 0 AdjustParalysis(-3) @@ -327,8 +327,8 @@ E.damage += rand(12, 16) if(E.damage > E.min_bruised_damage) - eye_blind += damage - eye_blurry += damage * rand(3, 6) + AdjustEyeBlind(damage) + AdjustEyeBlurry(damage * rand(3, 6)) if(E.damage > (E.min_bruised_damage + E.min_broken_damage) / 2) if(!(E.status & ORGAN_ROBOT)) diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index b0ccdc8381d..f8a9b38d098 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -1,9 +1,9 @@ /mob/living/carbon/death(gibbed) - losebreath = 0 + SetLoseBreath(0) med_hud_set_health() med_hud_set_status() if(reagents) reagents.death_metabolize(src) - ..(gibbed) \ No newline at end of file + ..(gibbed) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 4e8ab049927..89c35870cad 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -97,8 +97,8 @@ emote("deathgasp") //let the world KNOW WE ARE DEAD stat = DEAD - dizziness = 0 - jitteriness = 0 + SetDizzy(0) + SetJitter(0) heart_attack = 0 //Handle species-specific deaths. diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 0746cb30b2c..bd0c3538462 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -10,7 +10,7 @@ act = copytext(act, 1, t1) var/muzzled = is_muzzled() - if(disabilities & MUTE || silent) + if(!can_speak()) muzzled = 1 //var/m_type = 1 @@ -313,7 +313,7 @@ M = null if(M) - if(lying || weakened) + if(lying) message = "[src] flops and flails around on the floor." else message = "[src] flips in [M]'s general direction." @@ -378,7 +378,7 @@ message = "[src] faints." if(src.sleeping) return //Can't faint while asleep - src.sleeping += 1 + AdjustSleeping(1) m_type = 1 if("cough", "coughs") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 561e60a3522..0bf23e3cae6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -352,7 +352,8 @@ else valid_limbs -= processing_dismember if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) - adjustEarDamage(30, 120) + AdjustEarDamage(30) + AdjustEarDeaf(120) if(prob(70) && !shielded) Paralyse(10) @@ -376,7 +377,8 @@ else valid_limbs -= processing_dismember if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) - adjustEarDamage(15,60) + AdjustEarDamage(15) + AdjustEarDeaf(60) if(prob(50) && !shielded) Paralyse(10) @@ -491,8 +493,7 @@ O.show_message(text("The [M.name] has shocked []!", src), 1) Weaken(power) - if(stuttering < power) - stuttering = power + Stuttering(power) Stun(power) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread @@ -1739,7 +1740,7 @@ if(last_special > world.time) return - if(stat || paralysis || stunned || weakened || lying || restrained() || buckled) + if(!canmove) to_chat(src, "You cannot leap in your current state.") return @@ -1793,7 +1794,7 @@ if(last_special > world.time) return - if(stat || paralysis || stunned || weakened || lying) + if(!canmove) to_chat(src, "\red You cannot do that in your current state.") return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 16d940dd439..0ceabc84bfe 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -254,7 +254,7 @@ emp_act visible_message("[src] has been knocked down!", \ "[src] has been knocked down!") apply_effect(5, WEAKEN, armor) - confused += 15 + AdjustConfused(15) if(prob(I.force + ((100 - health)/2)) && src != user && I.damtype == BRUTE) ticker.mode.remove_revolutionary(mind) diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index 1862062e4cf..2dfc4f8d24e 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -167,7 +167,7 @@ /client/proc/customiseSNPC(mob/living/carbon/human/interactive/T in npc_master.botPool_l) set name = "Customize SNPC" - set desc = "Customise the SNPC" + set desc = "Customize the SNPC" set category = "Debug" if(!holder) @@ -403,7 +403,7 @@ if(!hud_used) hud_used = new /datum/hud/human(src) -/mob/living/carbon/human/interactive/New() +/mob/living/carbon/human/interactive/New(var/new_loc, var/new_species = null) ..() snpc_list += src @@ -916,7 +916,7 @@ TARGET = null return 1 - if(!(get_turf(src) in validHome)) + if(!(get_turf(src) in validHome) && validHome.len) tryWalk(pick(get_area_turfs(job2area(myjob)))) return 1 return 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 78e9098f434..471cb6bbf69 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -86,8 +86,8 @@ // If we have the gene for being crazy, have random events. if(dna.GetSEState(HALLUCINATIONBLOCK)) - if(prob(1) && hallucination < 1) - hallucination += 20 + if(prob(1)) + Hallucinate(20) if(disabilities & COUGHING) if((prob(5) && paralysis <= 1)) @@ -111,9 +111,9 @@ if(disabilities & NERVOUS) speech_problem_flag = 1 if(prob(10)) - stuttering = max(10, stuttering) + Stuttering(10) - if(getBrainLoss() >= 60 && stat != 2) + if(getBrainLoss() >= 60 && stat != DEAD) speech_problem_flag = 1 if(prob(3)) var/list/s1 = list("IM A PONY NEEEEEEIIIIIIIIIGH", @@ -152,8 +152,8 @@ if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox Weaken(20) - losebreath += 10 - silent += 2 + AdjustLoseBreath(10) + AdjustSilence(2) if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox visible_message("[src] goes limp, their facial expression utterly blank.") @@ -281,10 +281,10 @@ var/datum/gas_mixture/breath if(health <= config.health_threshold_crit) - losebreath++ + AdjustLoseBreath(1) if(losebreath > 0) - losebreath-- + AdjustLoseBreath(-1) if(prob(10)) spawn emote("gasp") if(istype(loc, /obj/)) @@ -696,20 +696,20 @@ overeatduration -= 2 if(drowsyness) - drowsyness-- - eye_blurry = max(2, eye_blurry) + AdjustDrowsy(-1) + EyeBlurry(2) if(prob(5)) - sleeping += 1 + AdjustSleeping(1) Paralyse(5) - confused = max(0, confused - 1) + AdjustConfused(-1) // decrement dizziness counter, clamped to 0 if(resting) - dizziness = max(0, dizziness - 15) - jitteriness = max(0, jitteriness - 15) + AdjustDizzy(-15) + AdjustJitter(-15) else - dizziness = max(0, dizziness - 3) - jitteriness = max(0, jitteriness - 3) + AdjustDizzy(-3) + AdjustJitter(-3) if(species && species.flags & NO_INTORGANS) return @@ -744,8 +744,7 @@ alcohol_strength *= 5 if(alcohol_strength >= slur_start) //slurring - if(!slurring) slurring = 1 - slurring = drunk + Slur(drunk) if(alcohol_strength >= brawl_start) //the drunken martial art if(!istype(martial_art, /datum/martial_art/drunk_brawling)) var/datum/martial_art/drunk_brawling/F = new @@ -754,18 +753,17 @@ if(istype(martial_art, /datum/martial_art/drunk_brawling)) martial_art.remove(src) if(alcohol_strength >= confused_start && prob(33)) //confused walking - if(!confused) confused = 1 - confused = max(confused+(3/sober_str),0) + if(!confused) Confused(1) + AdjustConfused(3/sober_str) if(alcohol_strength >= blur_start) //blurry eyes - eye_blurry = max(eye_blurry, 10/sober_str) - drowsyness = max(drowsyness, 0) + EyeBlurry(10/sober_str) if(!isSynthetic()) //stuff only for non-synthetics if(alcohol_strength >= vomit_start) //vomiting if(prob(8)) fakevomit() if(alcohol_strength >= pass_out) - Paralyse(5 / sober_str) - drowsyness = max(drowsyness, 30/sober_str) + Paralyse(5/sober_str) + Drowsy(30/sober_str) if(L) L.take_damage(0.1, 1) adjustToxLoss(0.1) @@ -837,14 +835,14 @@ vision = get_int_organ(species.vision_organ) if(!species.vision_organ) // Presumably if a species has no vision organs, they see via some other means. - eye_blind = 0 + SetEyeBlind(0) blinded = 0 - eye_blurry = 0 + SetEyeBlurry(0) else if(!vision || vision.is_broken()) // Vision organs cut out or broken? Permablind. - eye_blind = 1 + EyeBlind(1) blinded = 1 - eye_blurry = 1 + EyeBlurry(1) else //blindness @@ -852,34 +850,34 @@ blinded = 1 else if(eye_blind) // Blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) + AdjustEyeBlind(-1) blinded = 1 else if(istype(glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) //resting your eyes with a blindfold heals blurry eyes faster - eye_blurry = max(eye_blurry-3, 0) + AdjustEyeBlurry(-3) blinded = 1 //blurry sight if(vision.is_bruised()) // Vision organs impaired? Permablurry. - eye_blurry = 1 + EyeBlurry(1) if(eye_blurry) // Blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) + AdjustEyeBlurry(-1) //Ears if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) + EarDeaf(1) else if(ear_deaf) //deafness, heals slowly over time - adjustEarDamage(0,-1) + AdjustEarDeaf(-1) else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster - adjustEarDamage(-0.15,0) - setEarDamage(-1, max(ear_deaf, 1)) + AdjustEarDamage(-0.15) + EarDeaf(1) else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs - adjustEarDamage(-0.05,0) + AdjustEarDamage(-0.05) if(flying) animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) @@ -896,7 +894,7 @@ else //dead blinded = 1 - silent = 0 + SetSilence(0) /mob/living/carbon/human/handle_vision() @@ -995,8 +993,8 @@ if(shock_stage >= 30) if(shock_stage == 30) custom_emote(1,"is having trouble keeping their eyes open.") - eye_blurry = max(2, eye_blurry) - stuttering = max(stuttering, 5) + EyeBlurry(2) + Stuttering(5) if(shock_stage == 40) to_chat(src, ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")) @@ -1183,8 +1181,7 @@ if(!heart_attack) return else - if(losebreath < 3) - losebreath += 2 + AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3) adjustOxyLoss(5) adjustBruteLoss(1) diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index d8434a87223..49d6d7fe245 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -189,7 +189,7 @@ if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit H.Paralyse(3) // 3 gives them one second to wake up and run away a bit! if(SA_pp > SA_sleep_min) // Enough to make us sleep as well - H.sleeping = min(H.sleeping+2, 10) + H.AdjustSleeping(2, bound_lower = 0, bound_upper = 10) else if(SA_pp > 0.15) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) spawn(0) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 9884ef74354..7b91d51261c 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -332,7 +332,7 @@ if(SA_pp > atmos_requirements["sa_para"]) // Enough to make us paralysed for a bit H.Paralyse(3) // 3 gives them one second to wake up and run away a bit! if(SA_pp > atmos_requirements["sa_sleep"]) // Enough to make us sleep as well - H.sleeping = max(H.sleeping + 2, 10) + H.AdjustSleeping(2, bound_lower = 0, bound_upper = 10) else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) spawn(0) @@ -509,7 +509,7 @@ if(tinted_weldhelh) H.overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2) if(H.tinttotal >= TINT_BLIND) - H.eye_blind = max(H.eye_blind, 1) + H.EyeBlind(1) else H.clear_fullscreen("tint") diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 985047a8284..5e0841168e0 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -49,10 +49,10 @@ var/datum/gas_mixture/breath if(health <= config.health_threshold_crit) - losebreath++ + AdjustLoseBreath(1) if(losebreath > 0) - losebreath-- + AdjustLoseBreath(-1) if(prob(10)) spawn emote("gasp") if(istype(loc, /obj/)) @@ -165,7 +165,7 @@ if(SA_partialpressure > SA_para_min) Paralyse(3) if(SA_partialpressure > SA_sleep_min) - sleeping = max(sleeping+2, 10) + AdjustSleeping(2, bound_lower = 0, bound_upper = 10) else if(SA_partialpressure > 0.01) if(prob(20)) spawn(0) emote(pick("giggle","laugh")) @@ -319,30 +319,27 @@ C.pixel_x -= pixel_x_diff C.pixel_y -= pixel_y_diff src = oldsrc - dizziness = max(dizziness - restingpwr, 0) + AdjustDizzy(-restingpwr) if(drowsyness) - drowsyness = max(drowsyness - restingpwr, 0) - eye_blurry = max(2, eye_blurry) + AdjustDrowsy(-restingpwr) + EyeBlurry(2) if(prob(5)) - sleeping += 1 + AdjustSleeping(1) Paralyse(5) if(confused) - confused = max(0, confused - 1) + AdjustConfused(-1) //Jitteryness if(jitteriness) do_jitter_animation(jitteriness) - jitteriness = max(jitteriness - restingpwr, 0) + AdjustJitter(-restingpwr) if(hallucination) spawn handle_hallucinations() - if(hallucination<=2) - hallucination = 0 - else - hallucination -= 2 + AdjustHallucinate(-2) /mob/living/carbon/handle_sleeping() if(..()) @@ -352,8 +349,8 @@ spawn(0) emote("snore") // Keep SSD people asleep - if(player_logged && sleeping < 2) - sleeping = 2 + if(player_logged) + Sleeping(2) return sleeping diff --git a/code/modules/mob/living/carbon/slime/life.dm b/code/modules/mob/living/carbon/slime/life.dm index b51e0084ee3..6e3221c19fa 100644 --- a/code/modules/mob/living/carbon/slime/life.dm +++ b/code/modules/mob/living/carbon/slime/life.dm @@ -208,25 +208,25 @@ if(src.stuttering) src.stuttering = 0 if(src.eye_blind) - src.eye_blind = 0 + src.SetEyeBlind(0) src.blinded = 1 - if(src.ear_deaf > 0) src.ear_deaf = 0 + if(src.ear_deaf > 0) SetEarDeaf(0) if(src.ear_damage < 25) - src.ear_damage = 0 + SetEarDamage(0) src.density = !( src.lying ) if(src.disabilities & BLIND) src.blinded = 1 if(src.disabilities & DEAF) - src.ear_deaf = 1 + EarDeaf(1) if(src.eye_blurry > 0) - src.eye_blurry = 0 + SetEyeBlurry(0) if(src.druggy > 0) - src.druggy = 0 + SetDruggy(0) return 1 diff --git a/code/modules/mob/living/carbon/update_status.dm b/code/modules/mob/living/carbon/update_status.dm new file mode 100644 index 00000000000..3b0d3a045fc --- /dev/null +++ b/code/modules/mob/living/carbon/update_status.dm @@ -0,0 +1,17 @@ +/mob/living/carbon/update_stat() + if(status_flags & GODMODE) + return + if(stat != DEAD) +// if(health <= min_health) + if(health <= config.health_threshold_dead) + death() + return +// if(paralysis || sleeping || getOxyLoss() > low_oxy_ko || (status_flags & FAKEDEATH) || health <= crit_health) + if(paralysis || sleeping || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= config.health_threshold_crit) + if(stat == CONSCIOUS) + KnockOut() + else + if(stat == UNCONSCIOUS) + // updating=FALSE because `WakeUp` will handle canmove up for us + StopResting(updating=FALSE) + WakeUp() diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 921080c989a..ffd1fb9cd60 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -57,17 +57,16 @@ rad_damage = max(effect * ((100-run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm."))/100),0) radiation += rad_damage if(SLUR) - slurring = max(slurring,(effect * blocked)) + Slur(effect * blocked) if(STUTTER) - if(status_flags & CANSTUN) // stun is usually associated with stutter - stuttering = max(stuttering,(effect * blocked)) + Stuttering(effect * blocked) if(EYE_BLUR) - eye_blurry = max(eye_blurry,(effect * blocked)) + EyeBlurry(effect * blocked) if(DROWSY) - drowsyness = max(drowsyness,(effect * blocked)) + Drowsy(effect * blocked) if(JITTER) if(status_flags & CANSTUN) - jitteriness = max(jitteriness,(effect * blocked)) + Jitter(effect * blocked) updatehealth() return 1 diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index a151a062bce..308025e0204 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -136,17 +136,17 @@ /mob/living/proc/handle_silent() if(silent) - silent = max(silent-1, 0) + AdjustSilence(-1) return silent /mob/living/proc/handle_drugged() if(druggy) - druggy = max(druggy-1, 0) + AdjustDruggy(-1) return druggy /mob/living/proc/handle_slurring() if(slurring) - slurring = max(slurring-1, 0) + AdjustSlur(-1) return slurring /mob/living/proc/handle_paralysed() @@ -164,7 +164,7 @@ /mob/living/proc/handle_slowed() if(slowed) - slowed = max(slowed-1, 0) + AdjustSlowed(-1) return slowed /mob/living/proc/handle_drunk() @@ -175,19 +175,20 @@ /mob/living/proc/handle_disabilities() //Eyes if(disabilities & BLIND || stat) //blindness from disability or unconsciousness doesn't get better on its own - eye_blind = max(eye_blind, 1) + EyeBlind(1) else if(eye_blind) //blindness, heals slowly over time - eye_blind = max(eye_blind-1,0) + AdjustEyeBlind(-1) else if(eye_blurry) //blurry eyes heal slowly - eye_blurry = max(eye_blurry-1, 0) + AdjustEyeBlurry(-1) //Ears if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own - setEarDamage(-1, max(ear_deaf, 1)) + EarDeaf(1) else // deafness heals slowly over time, unless ear_damage is over 100 if(ear_damage < 100) - adjustEarDamage(-0.05,-1) + AdjustEarDamage(-0.05) + AdjustEarDeaf(-1) //this handles hud updates. Calls update_vision() and handle_hud_icons() /mob/living/proc/handle_regular_hud_updates() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 72cc4789779..dd9e9f7cbd6 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -261,19 +261,6 @@ var/obj/item/organ/external/def_zone = ran_zone(t) return def_zone - -//damage/heal the mob ears and adjust the deaf amount -/mob/living/adjustEarDamage(damage, deaf) - ear_damage = max(0, ear_damage + damage) - ear_deaf = max(0, ear_deaf + deaf) - -//pass a negative argument to skip one of the variable -/mob/living/setEarDamage(damage, deaf) - if(damage >= 0) - ear_damage = damage - if(deaf >= 0) - ear_deaf = deaf - // heal ONE external organ, organ gets randomly selected from damaged ones. /mob/living/proc/heal_organ_damage(var/brute, var/burn) adjustBruteLoss(-brute) @@ -323,14 +310,6 @@ C.reagents.clear_reagents() C.reagents.addiction_list.Cut() -/mob/living/proc/update_revive() // handles revival through other means than cloning or adminbus (defib, IPC repair) - stat = CONSCIOUS - dead_mob_list -= src - living_mob_list |= src - mob_list |= src - setEarDamage(-1,0) - timeofdeath = 0 - /mob/living/proc/rejuvenate() var/mob/living/carbon/human/human_mob = null //Get this declared for use later. @@ -344,22 +323,30 @@ SetParalysis(0) SetStunned(0) SetWeakened(0) - slowed = 0 - losebreath = 0 - dizziness = 0 - jitteriness = 0 - confused = 0 - drowsyness = 0 + SetSlowed(0) + SetLoseBreath(0) + SetDizzy(0) + SetJitter(0) + SetConfused(0) + SetDrowsy(0) radiation = 0 - druggy = 0 - hallucination = 0 + SetDruggy(0) + SetHallucinate(0) + blinded = 0 nutrition = 400 bodytemperature = 310 - disabilities = 0 - blinded = 0 - eye_blind = 0 - eye_blurry = 0 - setEarDamage(0,0) + CureBlind() + CureNearsighted() + CureMute() + CureDeaf() + CureTourettes() + CureEpilepsy() + CureCoughing() + CureNervous() + SetEyeBlind(0) + SetEyeBlurry(0) + SetEarDamage(0) + SetEarDeaf(0) heal_overall_damage(1000, 1000) ExtinguishMob() fire_stacks = 0 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c142c8d28d1..c3dab651906 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -15,8 +15,6 @@ var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot. var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are stunned if it gets too high. Holodeck and hallucinations deal this. - var/hallucination = 0 //Directly affects how long a mob will hallucinate for - var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. @@ -32,7 +30,6 @@ var/update_slimes = 1 var/implanting = 0 //Used for the mind-slave implant - var/silent = 0 //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU. var/floating = 0 var/mob_size = MOB_SIZE_HUMAN var/nightvision = 0 diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index 71e26e60858..10ba19b4302 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -4,6 +4,6 @@ if(!key) //key and mind have become seperated. I believe this is for when a staff member aghosts. mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. //This causes instant sleep and tags a player as SSD. See life.dm for furthering SSD. - if(sleeping < 2 && mind.active) - sleeping = 2 - player_logged = 1 \ No newline at end of file + if(mind.active) + Sleeping(2) + player_logged = 1 diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index 8cf6863eafb..2a3b39c1c9b 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -82,7 +82,7 @@ var/const/VOX_PATH = "sound/vox_fem/" for(var/mob/M in player_list) if(M.client) var/turf/T = get_turf(M) - if(T && T.z == z_level && !isdeaf(M)) + if(T && T.z == z_level && M.can_hear()) M << voice else only_listener << voice diff --git a/code/modules/mob/living/silicon/ai/update_status.dm b/code/modules/mob/living/silicon/ai/update_status.dm new file mode 100644 index 00000000000..4fa060abf39 --- /dev/null +++ b/code/modules/mob/living/silicon/ai/update_status.dm @@ -0,0 +1,10 @@ +/mob/living/silicon/ai/update_stat() + if(status_flags & GODMODE) + return + if(stat != DEAD) + if(health <= config.health_threshold_dead) + death() + return + else if(stat == UNCONSCIOUS) + WakeUp() + //diag_hud_set_status() diff --git a/code/modules/mob/living/silicon/login.dm b/code/modules/mob/living/silicon/login.dm index bd93fd6c3c4..01240adf942 100644 --- a/code/modules/mob/living/silicon/login.dm +++ b/code/modules/mob/living/silicon/login.dm @@ -1,5 +1,5 @@ /mob/living/silicon/Login() - sleeping = 0 + SetSleeping(0) if(mind && ticker && ticker.mode) ticker.mode.remove_revolutionary(mind, 1) ticker.mode.remove_cultist(mind, 1) @@ -9,4 +9,4 @@ ticker.mode.remove_thrall(mind, 0) ticker.mode.remove_shadowling(mind) ticker.mode.remove_abductor(mind) - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/silicon/pai/update_status.dm b/code/modules/mob/living/silicon/pai/update_status.dm new file mode 100644 index 00000000000..155ecc84a28 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/update_status.dm @@ -0,0 +1,3 @@ +/mob/living/silicon/pai/update_stat() + if(health <= 0) + death(gibbed = 0) diff --git a/code/modules/mob/living/silicon/robot/drone/update_status.dm b/code/modules/mob/living/silicon/robot/drone/update_status.dm new file mode 100644 index 00000000000..97d2214c2e2 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/drone/update_status.dm @@ -0,0 +1,10 @@ +//Easiest to check this here, then check again in the robot proc. +//Standard robots use config for crit, which is somewhat excessive for these guys. +//Drones killed by damage will gib. +/mob/living/silicon/robot/drone/update_stat() + if(status_flags & GODMODE) + return + if(health <= -35 && stat != DEAD) + gib() + return + return ..() diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index b2c8857f040..ca480d987f8 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -62,7 +62,7 @@ if(sleeping) Paralyse(3) - sleeping-- + AdjustSleeping(-1) if(resting) Weaken(5) @@ -90,7 +90,7 @@ stat = UNCONSCIOUS if(!paralysis > 0) - eye_blind = 0 + SetEyeBlind(0) else stat = CONSCIOUS @@ -98,7 +98,7 @@ diag_hud_set_health() diag_hud_set_status() else //dead - eye_blind = 1 + SetEyeBlind(0) //update the state of modules and components here if(stat != CONSCIOUS) diff --git a/code/modules/mob/living/silicon/robot/update_status.dm b/code/modules/mob/living/silicon/robot/update_status.dm new file mode 100644 index 00000000000..a28aae28278 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/update_status.dm @@ -0,0 +1,21 @@ +// No args for restraints because robots don't have those +/mob/living/silicon/robot/incapacitated() + if(stat || lockcharge || weakened || stunned || paralysis || !is_component_functioning("actuator")) + return 1 + +/mob/living/silicon/robot/update_stat() + if(status_flags & GODMODE) + return + if(stat != DEAD) + if(health <= -maxHealth) //die only once + death() + return + if(!is_component_functioning("actuator") || paralysis || sleeping || stunned || weakened || getOxyLoss() > maxHealth * 0.5) + if(stat == CONSCIOUS) + KnockOut() + else + if(stat == UNCONSCIOUS) + WakeUp() + // diag_hud_set_status() + // diag_hud_set_health() + // update_health_hud() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 75bbec89a1b..469b6e86574 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -152,7 +152,7 @@ //Silicon mob language procs -/mob/living/silicon/can_speak(datum/language/speaking) +/mob/living/silicon/can_speak_language(datum/language/speaking) return universal_speak || (speaking in src.speech_synthesizer_langs) //need speech synthesizer support to vocalize a language /mob/living/silicon/add_language(var/language, var/can_speak=1) @@ -355,8 +355,8 @@ /////////////////////////////////// EAR DAMAGE //////////////////////////////////// -/mob/living/silicon/adjustEarDamage() +/mob/living/silicon/SetEarDamage() return -/mob/living/silicon/setEarDamage() - return \ No newline at end of file +/mob/living/silicon/SetEarDeaf() + return diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 4c974c46c16..47c243e970e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -466,6 +466,9 @@ return if(istype(target, /obj/mecha/working/ripley)) var/obj/mecha/D = target + if(D.icon_state != "ripley-open") + to_chat(user, "You can't add armour onto the mech while someone is inside!") + return var/list/damage_absorption = D.damage_absorption if(damage_absorption["brute"] > 0.3) damage_absorption["brute"] = max(damage_absorption["brute"] - 0.1, 0.3) @@ -474,17 +477,11 @@ damage_absorption["laser"] = damage_absorption["laser"] - 0.025 to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") qdel(src) - if(D.icon_state == "ripley-open") - D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-open") - D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates." - else - to_chat(user, "You can't add armour onto the mech while someone is inside!") + D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-open") + D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates." if(damage_absorption.["brute"] == 0.3) - if(D.icon_state == "ripley-open") - D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-full-open") - D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - the pilot must be an experienced monster hunter." - else - to_chat(user, "You can't add armour onto the mech while someone is inside!") + D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-full-open") + D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - the pilot must be an experienced monster hunter." else to_chat(user, "You can't improve [D] any further!") return diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index cb48c63b66f..d0e8e0e4bad 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -118,11 +118,11 @@ for(var/atom/check in check_list) for(var/mob/living/M in viewers(world.view + 1, check) - src) if(M.client && CanAttack(M) && !M.has_unlimited_silicon_privilege) - if(!M.eye_blind) + if(M.can_see()) return M for(var/obj/mecha/M in view(world.view + 1, check)) //assuming if you can see them they can see you if(M.occupant && M.occupant.client) - if(!M.occupant.eye_blind) + if(M.occupant.can_see()) return M.occupant return null @@ -185,7 +185,7 @@ continue var/turf/T = get_turf(L.loc) if(T && T in targets) - L.eye_blind = max(L.eye_blind, 4) + L.EyeBlind(4) return //Toggle Night Vision diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 06160dca1fd..cc5b319c84f 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -706,8 +706,8 @@ /mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion return -/mob/living/simple_animal/adjustEarDamage() +/mob/living/simple_animal/SetEarDamage() return -/mob/living/simple_animal/setEarDamage() - return \ No newline at end of file +/mob/living/simple_animal/SetEarDeaf() + return diff --git a/code/modules/mob/living/stat_states.dm b/code/modules/mob/living/stat_states.dm new file mode 100644 index 00000000000..49c91a10d99 --- /dev/null +++ b/code/modules/mob/living/stat_states.dm @@ -0,0 +1,50 @@ +// There, now `stat` is a proper state-machine + +/mob/living/proc/KnockOut(updating = 1) + if(stat == DEAD) + log_runtime(EXCEPTION("KnockOut called on a dead mob."), src) + return 0 + else if(stat == UNCONSCIOUS) + return 0 + add_logs(src, null, "fallen unconscious at [atom_loc_line(get_turf(src))]", admin=0) + stat = UNCONSCIOUS + if(updating) + // update_blind_effects() + update_canmove() + return 1 + +/mob/living/proc/WakeUp(updating = 1) + if(stat == DEAD) + log_runtime(EXCEPTION("WakeUp called on a dead mob."), src) + return 0 + else if(stat == CONSCIOUS) + return 0 + add_logs(src, null, "woken up at [atom_loc_line(get_turf(src))]", admin=0) + stat = CONSCIOUS + if(updating) + // update_blind_effects() + update_canmove() + return 1 + +/mob/living/proc/can_be_revived() + . = TRUE + // if(health <= min_health) + if(health <= config.health_threshold_dead) + return FALSE + +// death() is used to make a mob die + +// handles revival through other means than cloning or adminbus (defib, IPC repair) +/mob/living/proc/update_revive() + if(stat != DEAD) + return + if(!can_be_revived()) + return + add_logs(src, null, "came back to life at [atom_loc_line(get_turf(src))]", admin=0) + stat = CONSCIOUS + dead_mob_list -= src + living_mob_list += src + timeofdeath = null + update_canmove() + // update_blind_effects() + updatehealth() diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm new file mode 100644 index 00000000000..bc12dfdeb87 --- /dev/null +++ b/code/modules/mob/living/status_procs.dm @@ -0,0 +1,513 @@ +//Here are the procs used to modify status effects of a mob. + +// We use these to automatically apply their effects when they are changed, as +// opposed to setting them manually and having to either wait for the next `Life` +// or update by hand + +// The `updating` argument is only available on effects that cause a visual/physical effect on the mob itself +// when applied, such as Stun, Weaken, and Jitter - stuff like Blindness, which has a client-side effect, +// lacks this argument. + +// Ideally, code should only read the vars in this file, and not ever directly +// modify them + +// If you want a mob type to ignore a given status effect, just override the corresponding +// `SetSTATE` proc - since all of the other procs are wrappers around that, +// calling them will have no effect + +// BOOLEAN STATES + +/* + * EyesBlocked + Your eyes are covered somehow + * EarsBlocked + Your ears are covered somehow + * Resting + You are lying down of your own volition + * Flying + For some reason or another you can move while not touching the ground +*/ + + +// STATUS EFFECTS +// All of these decrement over time - at a rate of 1 per life cycle unless otherwise noted +// Status effects sorted alphabetically: +/* + * Confused * + Movement is scrambled + * Dizzy * + The screen goes all warped + * Drowsy + You begin to yawn, and have a chance of incrementing "Paralysis" + * Druggy * + A trippy overlay appears. + * Drunk * + Essentially what your "BAC" is - the higher it is, the more alcohol you have in you + * EarDamage * + Doesn't do much, but if it's 25+, you go deaf. Heals much slower than other statuses - 0.05 normally + * EarDeaf * + You cannot hear. Prevents EarDamage from healing naturally. + * EyeBlind * + You cannot see. Prevents EyeBlurry from healing naturally. + * EyeBlurry * + A hazy overlay appears on your screen. + * Hallucination * + Your character will imagine various effects happening to them, vividly. + * Jitter * + Your character will visibly twitch. Higher values amplify the effect. + * LoseBreath * + Your character is unable to breathe. + * Paralysis * + Your character is knocked out. + * Silent * + Your character is unable to speak. + * Sleeping * + Your character is asleep. + * Slowed * + Your character moves slower. + * Slurring * + Your character cannot enunciate clearly. + * Stunned * + Your character is unable to move, and drops stuff in their hands. They keep standing, though. + * Stuttering * + Your character stutters parts of their messages. + * Weakened * + Your character collapses, but is still conscious. +*/ + +// DISABILITIES +// These are more permanent than the above. +// Disabilities sorted alphabetically +/* + * Blind (32) + Can't see. EyeBlind does not heal when this is active. + * Coughing (4) + Cough occasionally, causing you to drop your items + * Deaf (128) + Can't hear. EarDeaf does not heal when this is active + * Epilepsy (2) + Occasionally go "Epileptic", causing you to become very twitchy, drop all items, and fall to the floor + * Mute (64) + Cannot talk. + * Nearsighted (1) + My glasses! I can't see without my glasses! (Nearsighted overlay when not wearing prescription eyewear) + * Nervous (16) + Occasionally begin to stutter. + * Tourettes (8) + SHIT (say bad words, and drop stuff occasionally) +*/ + +/mob/living + + // Booleans + var/resting = FALSE + + /* + STATUS EFFECTS + */ + +/mob // On `/mob` for now, to support legacy code + var/confused = 0 + var/dizziness = 0 + var/drowsyness = 0 + var/druggy = 0 + var/drunk = 0 + var/ear_damage = 0 + var/ear_deaf = 0 + var/eye_blind = 0 + var/eye_blurry = 0 + var/hallucination = 0 + var/jitteriness = 0 + var/losebreath = 0 + var/paralysis = 0 + var/silent = 0 + var/sleeping = 0 + var/slowed = 0 + var/slurring = 0 + var/stunned = 0 + var/stuttering = 0 + var/weakened = 0 + +/mob/living + // Bitfields + var/disabilities = 0 + +// RESTING + +/mob/living/proc/StartResting(updating = 1) + var/val_change = !resting + resting = TRUE + if(updating && val_change) + update_canmove() + +/mob/living/proc/StopResting(updating = 1) + var/val_change = !!resting + resting = FALSE + if(updating && val_change) + update_canmove() + +/mob/living/proc/StartFlying() + var/val_change = !flying + flying = TRUE + if(val_change) + update_animations() + +/mob/living/proc/StopFlying() + var/val_change = !!flying + flying = FALSE + if(val_change) + update_animations() + + +// SCALAR STATUS EFFECTS + +// CONFUSED + +/mob/living/Confused(amount) + SetConfused(max(confused, amount)) + +/mob/living/SetConfused(amount) + confused = max(amount, 0) + +/mob/living/AdjustConfused(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(confused, amount, bound_lower, bound_upper) + SetConfused(new_value) + +// DIZZY + +/mob/living/Dizzy(amount) + SetDizzy(max(dizziness, amount)) + +/mob/living/SetDizzy(amount) + dizziness = max(amount, 0) + +/mob/living/AdjustDizzy(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(dizziness, amount, bound_lower, bound_upper) + SetDizzy(new_value) + +// DROWSY + +/mob/living/Drowsy(amount) + SetDrowsy(max(drowsyness, amount)) + +/mob/living/SetDrowsy(amount) + drowsyness = max(amount, 0) + +/mob/living/AdjustDrowsy(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(drowsyness, amount, bound_lower, bound_upper) + SetDrowsy(new_value) + +// DRUNK + +/mob/living/Drunk(amount) + SetDrunk(max(drunk, amount)) + +/mob/living/SetDrunk(amount) + drunk = max(amount, 0) + +/mob/living/AdjustDrunk(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(drunk, amount, bound_lower, bound_upper) + SetDrunk(new_value) + +// DRUGGY + +/mob/living/Druggy(amount) + SetDruggy(max(druggy, amount)) + +/mob/living/SetDruggy(amount) + var/old_val = druggy + druggy = max(amount, 0) + // We transitioned to/from 0, so update the druggy overlays + if((old_val == 0 || druggy == 0) && (old_val != druggy)) + update_druggy_effects() + +/mob/living/AdjustDruggy(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(druggy, amount, bound_lower, bound_upper) + SetDruggy(new_value) + +// EAR_DAMAGE + +/mob/living/EarDamage(amount) + SetEarDamage(max(ear_damage, amount)) + +/mob/living/SetEarDamage(amount) + ear_damage = max(amount, 0) + +/mob/living/AdjustEarDamage(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(ear_damage, amount, bound_lower, bound_upper) + SetEarDamage(new_value) + +// EAR_DEAF + +/mob/living/EarDeaf(amount) + SetEarDeaf(max(ear_deaf, amount)) + +/mob/living/SetEarDeaf(amount) + ear_deaf = max(amount, 0) + +/mob/living/AdjustEarDeaf(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(ear_deaf, amount, bound_lower, bound_upper) + SetEarDeaf(new_value) + +// EYE_BLIND + +/mob/living/EyeBlind(amount) + SetEyeBlind(max(eye_blind, amount)) + +/mob/living/SetEyeBlind(amount) + var/old_val = eye_blind + eye_blind = max(amount, 0) + // We transitioned to/from 0, so update the eye blind overlays + if((old_val == 0 || eye_blind == 0) && (old_val != eye_blind)) + update_blind_effects() + +/mob/living/AdjustEyeBlind(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(eye_blind, amount, bound_lower, bound_upper) + SetEyeBlind(new_value) + +// EYE_BLURRY + +/mob/living/EyeBlurry(amount) + SetEyeBlurry(max(eye_blurry, amount)) + +/mob/living/SetEyeBlurry(amount) + var/old_val = eye_blurry + eye_blurry = max(amount, 0) + // We transitioned to/from 0, so update the eye blur overlays + if((old_val == 0 || eye_blurry == 0) && (old_val != eye_blurry)) + update_blurry_effects() + +/mob/living/AdjustEyeBlurry(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(eye_blurry, amount, bound_lower, bound_upper) + SetEyeBlurry(new_value) + +// HALLUCINATION + +/mob/living/Hallucinate(amount) + SetHallucinate(max(hallucination, amount)) + +/mob/living/SetHallucinate(amount) + hallucination = max(amount, 0) + +/mob/living/AdjustHallucinate(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(hallucination, amount, bound_lower, bound_upper) + SetHallucinate(new_value) + +// JITTER + +/mob/living/Jitter(amount, force = 0) + SetJitter(max(jitteriness, amount), force) + +/mob/living/SetJitter(amount, force = 0) + // Jitter is also associated with stun + if(status_flags & CANSTUN || force) + jitteriness = max(amount, 0) + +/mob/living/AdjustJitter(amount, bound_lower = 0, bound_upper = INFINITY, force = 0) + var/new_value = directional_bounded_sum(jitteriness, amount, bound_lower, bound_upper) + SetJitter(new_value, force) + +// LOSE_BREATH + +/mob/living/LoseBreath(amount) + SetLoseBreath(max(losebreath, amount)) + +/mob/living/SetLoseBreath(amount) + losebreath = max(amount, 0) + +/mob/living/AdjustLoseBreath(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(losebreath, amount, bound_lower, bound_upper) + SetLoseBreath(new_value) + +// PARALYSE + +/mob/living/Paralyse(amount, updating = 1, force = 0) + SetParalysis(max(paralysis, amount), updating, force) + +/mob/living/SetParalysis(amount, updating = 1, force = 0) + if(status_flags & CANPARALYSE || force) + paralysis = max(amount, 0) + if(updating) + update_canmove() + update_stat() + +/mob/living/AdjustParalysis(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0) + var/new_value = directional_bounded_sum(paralysis, amount, bound_lower, bound_upper) + SetParalysis(new_value, updating, force) + +// SILENT + +/mob/living/Silence(amount) + SetSilence(max(silent, amount)) + +/mob/living/SetSilence(amount) + silent = max(amount, 0) + +/mob/living/AdjustSilence(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(silent, amount, bound_lower, bound_upper) + SetSilence(new_value) + +// SLEEPING + +/mob/living/Sleeping(amount, updating = 1) + SetSleeping(max(sleeping, amount), updating) + +/mob/living/SetSleeping(amount, updating = 1) + sleeping = max(amount, 0) + update_sleeping_effects() + if(updating) + update_stat() + update_canmove() + +/mob/living/AdjustSleeping(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1) + var/new_value = directional_bounded_sum(sleeping, amount, bound_lower, bound_upper) + SetSleeping(new_value, updating) + +// SLOWED + +/mob/living/Slowed(amount, updating = 1) + SetSlowed(max(slowed, amount), updating) + +/mob/living/SetSlowed(amount, updating = 1) + slowed = max(amount, 0) + +/mob/living/AdjustSlowed(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1) + var/new_value = directional_bounded_sum(slowed, amount, bound_lower, bound_upper) + SetSlowed(new_value, updating) + +// SLURRING + +/mob/living/Slur(amount) + SetSlur(max(slurring, amount)) + +/mob/living/SetSlur(amount) + slurring = max(amount, 0) + +/mob/living/AdjustSlur(amount, bound_lower = 0, bound_upper = INFINITY) + var/new_value = directional_bounded_sum(slurring, amount, bound_lower, bound_upper) + SetSlur(new_value) + +// STUN + +/mob/living/Stun(amount, updating = 1, force = 0) + SetStunned(max(stunned, amount), updating, force) + +/mob/living/SetStunned(amount, updating = 1, force = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN || force) + stunned = max(amount, 0) + if(updating) + update_canmove() + +/mob/living/AdjustStunned(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0) + var/new_value = directional_bounded_sum(stunned, amount, bound_lower, bound_upper) + SetStunned(new_value, updating, force) + +// STUTTERING + + +/mob/living/Stuttering(amount, force = 0) + SetStuttering(max(stuttering, amount), force) + +/mob/living/SetStuttering(amount, force = 0) + //From mob/living/apply_effect: "Stuttering is often associated with Stun" + if(status_flags & CANSTUN || force) + stuttering = max(stuttering, 0) + +/mob/living/AdjustStuttering(amount, bound_lower = 0, bound_upper = INFINITY, force = 0) + var/new_value = directional_bounded_sum(stuttering, amount, bound_lower, bound_upper) + SetStuttering(new_value, force) + +// WEAKEN + +/mob/living/Weaken(amount, updating = 1, force = 0) + SetWeakened(max(weakened, amount), updating, force) + +/mob/living/SetWeakened(amount, updating = 1, force = 0) + if(status_flags & CANWEAKEN || force) + weakened = max(amount, 0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/mob/living/AdjustWeakened(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0) + var/new_value = directional_bounded_sum(weakened, amount, bound_lower, bound_upper) + SetWeakened(new_value, updating, force) + +// +// DISABILITIES +// + +// Blind + +/mob/living/proc/BecomeBlind() + var/val_change = !(disabilities & BLIND) + disabilities |= BLIND + if(val_change) + update_blind_effects() + +/mob/living/proc/CureBlind() + var/val_change = !!(disabilities & BLIND) + disabilities &= ~BLIND + if(val_change) + update_blind_effects() + +// Coughing + +/mob/living/proc/BecomeCoughing() + disabilities |= COUGHING + +/mob/living/proc/CureCoughing() + disabilities &= ~COUGHING + +// Deaf + +/mob/living/proc/BecomeDeaf() + disabilities |= DEAF + +/mob/living/proc/CureDeaf() + disabilities &= ~DEAF + +// Epilepsy + +/mob/living/proc/BecomeEpilepsy() + disabilities |= EPILEPSY + +/mob/living/proc/CureEpilepsy() + disabilities &= ~EPILEPSY + +// Mute + +/mob/living/proc/BecomeMute() + disabilities |= MUTE + +/mob/living/proc/CureMute() + disabilities &= ~MUTE + +// Nearsighted + +/mob/living/proc/BecomeNearsighted() + var/val_change = !(disabilities & NEARSIGHTED) + disabilities |= NEARSIGHTED + if(val_change) + update_nearsighted_effects() + +/mob/living/proc/CureNearsighted() + var/val_change = !!(disabilities & NEARSIGHTED) + disabilities &= ~NEARSIGHTED + if(val_change) + update_nearsighted_effects() + +// Nervous + +/mob/living/proc/BecomeNervous() + disabilities |= NERVOUS + +/mob/living/proc/CureNervous() + disabilities &= ~NERVOUS + +// Tourettes + +/mob/living/proc/BecomeTourettes() + disabilities |= TOURETTES + +/mob/living/proc/CureTourettes() + disabilities &= ~TOURETTES diff --git a/code/modules/mob/living/update_status.dm b/code/modules/mob/living/update_status.dm new file mode 100644 index 00000000000..5cbf7cae450 --- /dev/null +++ b/code/modules/mob/living/update_status.dm @@ -0,0 +1,97 @@ +/mob/living/update_blind_effects() + if(!can_see()) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + throw_alert("blind", /obj/screen/alert/blind) + return 1 + else + clear_fullscreen("blind") + clear_alert("blind") + return 0 + +/mob/living/update_blurry_effects() + if(eyes_blurred()) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + return 1 + else + clear_fullscreen("blurry") + return 0 + +/mob/living/update_druggy_effects() + if(druggy) + overlay_fullscreen("high", /obj/screen/fullscreen/high) + throw_alert("high", /obj/screen/alert/high) + else + clear_fullscreen("high") + clear_alert("high") + +/mob/living/update_nearsighted_effects() + if(disabilities & NEARSIGHTED) + overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) + else + clear_fullscreen("nearsighted") + +/mob/living/update_sleeping_effects() + if(sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + else + clear_alert("asleep") + +// Querying status of the mob + +// Whether the mob can hear things +/mob/living/can_hear() + return !(ear_deaf || (disabilities & DEAF)) + +// Whether the mob is able to see +/mob/living/can_see() + return !(eye_blind || (disabilities & BLIND) || stat) + +// Whether the mob is capable of talking +/mob/living/can_speak() + return !(silent || (disabilities & MUTE) || is_muzzled()) + +// Whether the mob is capable of standing or not +/mob/living/proc/can_stand() + return !(weakened || paralysis || stat || (status_flags & FAKEDEATH)) + +// Whether the mob is capable of actions or not +/mob/living/incapacitated(ignore_restraints = 0, ignore_grab = 0, ignore_lying = 0) + if(stat || paralysis || stunned || (weakened && lying) || (!ignore_restraints && restrained()) || (!ignore_lying && lying)) + return 1 + +// wonderful proc names, I know - used to check whether the blur overlay +// should show or not +/mob/living/proc/eyes_blurred() + return eye_blurry + +//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. +/mob/living/update_canmove(delay_action_updates = 0) + var/fall_over = !can_stand() + var/buckle_lying = !(buckled && !buckled.buckle_lying) + if(fall_over || resting || stunned) + drop_r_hand() + drop_l_hand() + else + lying = 0 + canmove = 1 + if(buckled) + lying = 90 * buckle_lying + else if((fall_over || resting) && !lying) + fall(fall_over) + + canmove = !(fall_over || resting || stunned || buckled) + density = !lying + if(lying) + if(layer == initial(layer)) + layer = MOB_LAYER - 0.2 + else + if(layer == MOB_LAYER - 0.2) + layer = initial(layer) + + update_transform() + if(!delay_action_updates) + update_action_buttons_icon() + return canmove + +/mob/living/proc/update_stamina() + return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4a292328fb6..e312ff9556b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -62,22 +62,22 @@ if(!client) return if(type) - if(type & 1 && (disabilities & BLIND || blinded || paralysis) )//Vision related + if(type & 1 && !can_see())//Vision related if(!( alt )) return else msg = alt type = alt_type - if(type & 2 && (disabilities & DEAF || ear_deaf))//Hearing related + if(type & 2 && !can_hear())//Hearing related if(!( alt )) return else msg = alt type = alt_type - if((type & 1 && disabilities & BLIND)) + if(type & 1 && !can_see()) return // Added voice muffling for Issue 41. - if(stat == UNCONSCIOUS || (sleeping > 0 && stat != 2)) + if(stat == UNCONSCIOUS || (sleeping > 0 && stat != DEAD)) to_chat(src, "... You can almost hear someone talking ...") else to_chat(src, msg) @@ -163,13 +163,6 @@ // handle_typing_indicator() return - -/mob/proc/restrained() - return - -/mob/proc/incapacitated() - return - //This proc is called whenever someone clicks an inventory ui slot. /mob/proc/attack_ui(slot) var/obj/item/W = get_active_hand() @@ -1031,36 +1024,6 @@ var/list/slot_equipment_priority = list( \ if(restrained()) return 0 return 1 -//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. -/mob/proc/update_canmove(delay_action_updates = 0) - var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH) - var/buckle_lying = !(buckled && !buckled.buckle_lying) - if(ko || resting || stunned) - drop_r_hand() - drop_l_hand() - else - lying = 0 - canmove = 1 - if(buckled) - lying = 90 * buckle_lying - else - if((ko || resting) && !lying) - fall(ko) - - canmove = !(ko || resting || stunned || buckled) - density = !lying - if(lying) - if(layer == initial(layer)) - layer = MOB_LAYER - 0.2 - else - if(layer == MOB_LAYER - 0.2) - layer = initial(layer) - - update_transform() - if(!delay_action_updates) - update_action_buttons_icon() - return canmove - /mob/proc/fall(var/forced) drop_l_hand() drop_r_hand() @@ -1101,77 +1064,6 @@ var/list/slot_equipment_priority = list( \ /mob/proc/activate_hand(selhand) return -/mob/proc/Jitter(amount) - jitteriness = max(jitteriness, amount, 0) - -/mob/proc/Dizzy(amount) - dizziness = max(dizziness, amount, 0) - -/mob/proc/AdjustDrunk(amount) - drunk = max(drunk + amount, 0) - -/mob/proc/Stun(amount) - SetStunned(max(stunned, amount)) - -/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount, 0) - update_canmove() - else if(stunned) - stunned = 0 - update_canmove() - -/mob/proc/AdjustStunned(amount) - SetStunned(stunned + amount) - -/mob/proc/Weaken(amount) - SetWeakened(max(weakened, amount)) - -/mob/proc/SetWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(amount, 0) - update_canmove() //updates lying, canmove and icons - else if(weakened) - weakened = 0 - update_canmove() - -/mob/proc/AdjustWeakened(amount) - SetWeakened(weakened + amount) - -/mob/proc/Paralyse(amount) - SetParalysis(max(paralysis, amount)) - -/mob/proc/SetParalysis(amount) - if(status_flags & CANPARALYSE) - paralysis = max(amount, 0) - update_canmove() - else if(paralysis) - paralysis = 0 - update_canmove() - -/mob/proc/AdjustParalysis(amount) - SetParalysis(paralysis + amount) - -/mob/proc/Sleeping(amount) - SetSleeping(max(sleeping, amount)) - -/mob/proc/SetSleeping(amount) - sleeping = max(amount, 0) - update_canmove() - -/mob/proc/AdjustSleeping(amount) - SetSleeping(sleeping + amount) - -/mob/proc/Resting(amount) - SetResting(max(resting, amount)) - -/mob/proc/SetResting(amount) - resting = max(amount, 0) - update_canmove() - -/mob/proc/AdjustResting(amount) - SetResting(resting + amount) - /mob/proc/get_species() return "" @@ -1365,13 +1257,6 @@ mob/proc/yank_out_object() location.add_vomit_floor(src, 1) playsound(location, 'sound/effects/splat.ogg', 50, 1) - -/mob/proc/adjustEarDamage() - return - -/mob/proc/setEarDamage() - return - /mob/proc/AddSpell(obj/effect/proc_holder/spell/S) mob_spell_list += S S.action.Grant(src) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f7bd04906ea..6cb582e94c1 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -33,18 +33,11 @@ var/obj/machinery/machine = null var/other_mobs = null var/memory = "" - var/disabilities = 0 //Carbon var/atom/movable/pulling = null var/next_move = null var/notransform = null //Carbon var/other = 0.0 var/hand = null - var/eye_blind = 0 //Carbon - var/eye_blurry = 0 //Carbon - var/ear_deaf = 0 //Carbon - var/ear_damage = 0 //Carbon - var/stuttering = 0 //Carbon - var/slurring = 0 //Carbon var/real_name = null var/flavor_text = "" var/med_record = "" @@ -53,11 +46,6 @@ var/blinded = null var/bhunger = 0 //Carbon var/ajourn = 0 - var/druggy = 0 //Carbon - var/confused = 0 //Carbon - var/drunk = 0 - var/sleeping = 0 //Carbon - var/resting = 0 //Carbon var/lying = 0 var/lying_prev = 0 var/canmove = 1 @@ -77,19 +65,11 @@ var/bodytemperature = 310.055 //98.7 F - var/drowsyness = 0.0//Carbon - var/dizziness = 0//Carbon - var/jitteriness = 0//Carbon var/flying = 0 var/charges = 0.0 var/nutrition = 400.0//Carbon var/overeatduration = 0 // How long this guy is overeating //Carbon - var/paralysis = 0 - var/stunned = 0 - var/weakened = 0 - var/slowed = 0 - var/losebreath = 0 //Carbon var/intent = null//Living var/shakecamera = 0 var/a_intent = I_HELP//Living diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 90f84b7fc74..a22d9bf3c6b 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -175,9 +175,9 @@ if(state >= GRAB_KILL) //affecting.apply_effect(STUTTER, 5) //would do this, but affecting isn't declared as mob/living for some stupid reason. - affecting.stuttering = max(affecting.stuttering, 5) //It will hamper your voice, being choked and all. + affecting.Stuttering(5) //It will hamper your voice, being choked and all. affecting.Weaken(5) //Should keep you down unless you get help. - affecting.losebreath = max(affecting.losebreath + 2, 3) + affecting.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3) adjust_position() @@ -290,7 +290,7 @@ msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]") assailant.next_move = world.time + 10 - affecting.losebreath += 1 + affecting.AdjustLoseBreath(1) affecting.set_dir(WEST) adjust_position() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index aa59991a6cb..b03b9562949 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -75,12 +75,6 @@ proc/iscuffed(A) return 1 return 0 -proc/isdeaf(A) - if(istype(A, /mob)) - var/mob/M = A - return (M.disabilities & DEAF) || M.ear_deaf - return 0 - proc/hassensorlevel(A, var/level) var/mob/living/carbon/human/H = A if(istype(H) && istype(H.w_uniform, /obj/item/clothing/under)) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index dd48c1ce1a4..f8a73364264 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -565,3 +565,7 @@ /mob/new_player/is_ready() return ready && ..() + +// No hearing announcements +/mob/new_player/can_hear() + return 0 diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index f280bec0ce1..d010bdfa135 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -142,7 +142,7 @@ if(length(message) >= 2) var/language_prefix = trim_right(lowertext(copytext(message, 1 ,4))) var/datum/language/L = language_keys[language_prefix] - if(can_speak(L)) + if(can_speak_language(L)) return L return null diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm new file mode 100644 index 00000000000..7358486deee --- /dev/null +++ b/code/modules/mob/status_procs.dm @@ -0,0 +1,202 @@ +// A bunch of empty procs for all the status procs in living/status_procs.dm, because +// I can't be bothered to deal with all the merge conflicts it would cause to +// typecast every mob in the codebase correctly + +/mob/proc/Confused() + return + +/mob/proc/SetConfused() + return + +/mob/proc/AdjustConfused() + return + + +/mob/proc/Dizzy() + return + +/mob/proc/SetDizzy() + return + +/mob/proc/AdjustDizzy() + return + + +/mob/proc/Drowsy() + return + +/mob/proc/SetDrowsy() + return + +/mob/proc/AdjustDrowsy() + return + + +/mob/proc/Drunk() + return + +/mob/proc/SetDrunk() + return + +/mob/proc/AdjustDrunk() + return + + +/mob/proc/Druggy() + return + +/mob/proc/SetDruggy() + return + +/mob/proc/AdjustDruggy() + return + + +/mob/proc/EarDamage() + return + +/mob/proc/SetEarDamage() + return + +/mob/proc/AdjustEarDamage() + return + + +/mob/proc/EarDeaf() + return + +/mob/proc/SetEarDeaf() + return + +/mob/proc/AdjustEarDeaf() + return + + +/mob/proc/EyeBlind() + return + +/mob/proc/SetEyeBlind() + return + +/mob/proc/AdjustEyeBlind() + return + + +/mob/proc/EyeBlurry() + return + +/mob/proc/SetEyeBlurry() + return + +/mob/proc/AdjustEyeBlurry() + return + + +/mob/proc/Hallucinate() + return + +/mob/proc/SetHallucinate() + return + +/mob/proc/AdjustHallucinate() + return + + +/mob/proc/Jitter() + return + +/mob/proc/SetJitter() + return + +/mob/proc/AdjustJitter() + return + + +/mob/proc/LoseBreath() + return + +/mob/proc/SetLoseBreath() + return + +/mob/proc/AdjustLoseBreath() + return + + +/mob/proc/Paralyse() + return + +/mob/proc/SetParalysis() + return + +/mob/proc/AdjustParalysis() + return + + +/mob/proc/Silence() + return + +/mob/proc/SetSilence() + return + +/mob/proc/AdjustSilence() + return + + +/mob/proc/Sleeping() + return + +/mob/proc/SetSleeping() + return + +/mob/proc/AdjustSleeping() + return + + +/mob/proc/Slowed() + return + +/mob/proc/SetSlowed() + return + +/mob/proc/AdjustSlowed() + return + + +/mob/proc/Slur() + return + +/mob/proc/SetSlur() + return + +/mob/proc/AdjustSlur() + return + + +/mob/proc/Stun() + return + +/mob/proc/SetStunned() + return + +/mob/proc/AdjustStunned() + return + + +/mob/proc/Stuttering() + return + +/mob/proc/SetStuttering() + return + +/mob/proc/AdjustStuttering() + return + + +/mob/proc/Weaken() + return + +/mob/proc/SetWeakened() + return + +/mob/proc/AdjustWeakened() + return diff --git a/code/modules/mob/update_status.dm b/code/modules/mob/update_status.dm new file mode 100644 index 00000000000..3893085edb3 --- /dev/null +++ b/code/modules/mob/update_status.dm @@ -0,0 +1,65 @@ +// These are procs that cause immediate updates to features of the mob - prefixed with `update_` +// Procs that have a stacking effect depending on how many times they are called +// do not belong in this file - those go in `life.dm` instead, with the prefix `handle_` + +// OVERLAY/SIGHT PROCS + +// These return 0 if they are not applying an overlay, and 1 if they are + +// Call this to immediately apply blindness effects, instead of +// waiting for the next `Life` tick +/mob/proc/update_blind_effects() + // No handling for this on the mob level + return 0 + +/mob/proc/update_blurry_effects() + // No handling for this on the mob level + return 0 + +/mob/proc/update_druggy_effects() + // No handling for this on the mob level + return 0 + +/mob/proc/update_nearsighted_effects() + // No handling for this on the mob level + return 0 + +/mob/proc/update_sleeping_effects() + // No handling for this on the mob level + return 0 + +/mob/proc/update_tint_effects() + // No handling for this on the mob level + return 0 + +// Procs that give information about the status of the mob + +/mob/proc/can_hear() + return 1 + +/mob/proc/can_see() + return 1 + +/mob/proc/can_speak() + return 1 + +/mob/proc/incapacitated(ignore_restraints, ignore_grab) + return 0 + +/mob/proc/restrained(ignore_grab) + // All are created free + return 0 + +// Procs that update other things about the mob + +// Does various animations - Jitter, Flying, Spinning +/mob/proc/update_animations() + if(flying) + animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING) + animate(pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING) + +/mob/proc/update_stat() + return + +/mob/proc/update_canmove() + return 1 diff --git a/code/modules/nano/interaction/base.dm b/code/modules/nano/interaction/base.dm index 113c9e2878b..e4e5dd1a33b 100644 --- a/code/modules/nano/interaction/base.dm +++ b/code/modules/nano/interaction/base.dm @@ -14,10 +14,10 @@ /mob/proc/shared_nano_interaction() if(stat || !client) return STATUS_CLOSE // no updates, close the interface - else if(restrained() || lying || stunned || weakened) + else if(incapacitated()) return STATUS_UPDATE // update only (orange visibility) return STATUS_INTERACTIVE - + /mob/dead/observer/shared_nano_interaction() if(check_rights(R_ADMIN, 0, src)) return STATUS_INTERACTIVE // Admins are more equal diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index f86b17eaab7..0ff6289ea66 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -1,211 +1,241 @@ - /obj/machinery/power/generator name = "thermoelectric generator" desc = "It's a high efficiency thermoelectric generator." icon_state = "teg" - density = 1 anchored = 0 + density = 1 + use_power = 0 - use_power = 1 - idle_power_usage = 100 //Watts, I hope. Just enough to do the computer and display things. - - var/obj/machinery/atmospherics/binary/circulator/circ1 - var/obj/machinery/atmospherics/binary/circulator/circ2 + var/obj/machinery/atmospherics/binary/circulator/cold_circ + var/obj/machinery/atmospherics/binary/circulator/hot_circ + var/cold_dir = WEST + var/hot_dir = EAST + var/lastgen = 0 var/lastgenlev = -1 - - var/image/overlay_image - - var/power_multiplier = 1 // This is so admins can tweak how good it is to find a good balance for effort -> power - var/powercap = 500000 //Not a hard cap, but outputs above this have a 10% chance to cause the TeG to lose half it's power. - + var/lastcirc = "00" + /obj/machinery/power/generator/New() ..() + update_desc() + +/obj/machinery/power/generator/proc/update_desc() + desc = initial(desc) + " Its cold circulator is located on the [dir2text(cold_dir)] side, and its heat circulator is located on the [dir2text(hot_dir)] side." + +/obj/machinery/power/generator/Destroy() + disconnect() + return ..() + +/obj/machinery/power/generator/proc/disconnect() + if(cold_circ) + cold_circ.generator = null + if(hot_circ) + hot_circ.generator = null + if(powernet) + disconnect_from_network() - spawn(1) - reconnect() +/obj/machinery/power/generator/initialize() + ..() + connect() + +/obj/machinery/power/generator/proc/connect() + connect_to_network() + + var/obj/machinery/atmospherics/binary/circulator/circpath = /obj/machinery/atmospherics/binary/circulator + cold_circ = locate(circpath) in get_step(src, cold_dir) + hot_circ = locate(circpath) in get_step(src, hot_dir) -//generators connect in dir and reverse_dir(dir) directions -//mnemonic to determine circulator/generator directions: the cirulators orbit clockwise around the generator -//so a circulator to the NORTH of the generator connects first to the EAST, then to the WEST -//and a circulator to the WEST of the generator connects first to the NORTH, then to the SOUTH -//note that the circulator's outlet dir is it's always facing dir, and it's inlet is always the reverse -/obj/machinery/power/generator/proc/reconnect() - circ1 = null - circ2 = null - if(src.loc && anchored) - if(src.dir & (EAST|WEST)) - circ1 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,EAST) - circ2 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,WEST) + if(cold_circ && cold_circ.side == cold_dir) + cold_circ.generator = src + cold_circ.update_icon() + else + cold_circ = null - if(circ1 && circ2) - if(circ1.dir != SOUTH || circ2.dir != NORTH) - circ1 = null - circ2 = null + if(hot_circ && hot_circ.side == hot_dir) + hot_circ.generator = src + hot_circ.update_icon() + else + hot_circ = null - else if(src.dir & (NORTH|SOUTH)) - circ1 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,NORTH) - circ2 = locate(/obj/machinery/atmospherics/binary/circulator) in get_step(src,SOUTH) - - if(circ1 && circ2 && (circ1.dir != EAST || circ2.dir != WEST)) - circ1 = null - circ2 = null - -/obj/machinery/power/generator/proc/updateicon() - if(isnull(src.overlay_image)) - src.overlay_image = image('icons/obj/power.dmi') - - overlays.Cut() - if(!(stat & (NOPOWER|BROKEN))) + power_change() + update_icon() + updateDialog() + +/obj/machinery/power/generator/power_change() + if(!anchored) + stat |= NOPOWER + else + ..() + +/obj/machinery/power/generator/update_icon() + if(stat & (NOPOWER|BROKEN)) + overlays.Cut() + else + overlays.Cut() if(lastgenlev != 0) - src.overlay_image.icon_state = "teg-op[lastgenlev]" - overlays += src.overlay_image + overlays += image('icons/obj/power.dmi', "teg-op[lastgenlev]") -/obj/machinery/power/generator/process() - if(!circ1 || !circ2 || !anchored || stat & (BROKEN|NOPOWER)) + overlays += image('icons/obj/power.dmi', "teg-oc[lastcirc]") + +/obj/machinery/power/generator/process() + if(stat & (NOPOWER|BROKEN)) return + if(!cold_circ || !hot_circ) + return + + lastgen = 0 + + if(powernet) + + //log_debug("cold_circ and hot_circ pass") + + var/datum/gas_mixture/cold_air = cold_circ.return_transfer_air() + var/datum/gas_mixture/hot_air = hot_circ.return_transfer_air() + + //log_debug("hot_air = [hot_air]; cold_air = [cold_air];") + + if(cold_air && hot_air) + + //log_debug("hot_air = [hot_air] temperature = [hot_air.temperature]; cold_air = [cold_air] temperature = [hot_air.temperature];") + + //log_debug("coldair and hotair pass") + var/cold_air_heat_capacity = cold_air.heat_capacity() + var/hot_air_heat_capacity = hot_air.heat_capacity() + + var/delta_temperature = hot_air.temperature - cold_air.temperature + + //log_debug("delta_temperature = [delta_temperature]; cold_air_heat_capacity = [cold_air_heat_capacity]; hot_air_heat_capacity = [hot_air_heat_capacity]") + + if(delta_temperature > 0 && cold_air_heat_capacity > 0 && hot_air_heat_capacity > 0) + var/efficiency = 0.65 + + var/energy_transfer = delta_temperature * hot_air_heat_capacity * cold_air_heat_capacity / (hot_air_heat_capacity + cold_air_heat_capacity) + + var/heat = energy_transfer * (1 - efficiency) + lastgen = energy_transfer * efficiency + + //log_debug("lastgen = [lastgen]; heat = [heat]; delta_temperature = [delta_temperature]; hot_air_heat_capacity = [hot_air_heat_capacity]; cold_air_heat_capacity = [cold_air_heat_capacity];") + + hot_air.temperature = hot_air.temperature - energy_transfer / hot_air_heat_capacity + cold_air.temperature = cold_air.temperature + heat / cold_air_heat_capacity + + //log_debug("POWER: [lastgen] W generated at [efficiency * 100]% efficiency and sinks sizes [cold_air_heat_capacity], [hot_air_heat_capacity]") + + add_avail(lastgen) + // update icon overlays only if displayed level has changed + + if(hot_air) + var/datum/gas_mixture/hot_circ_air1 = hot_circ.air1 + hot_circ_air1.merge(hot_air) + + if(cold_air) + var/datum/gas_mixture/cold_circ_air1 = cold_circ.air1 + cold_circ_air1.merge(cold_air) + + var/genlev = max(0, min( round(11 * lastgen / 100000), 11)) + var/circ = "[cold_circ && cold_circ.last_pressure_delta > 0 ? "1" : "0"][hot_circ && hot_circ.last_pressure_delta > 0 ? "1" : "0"]" + if((genlev != lastgenlev) || (circ != lastcirc)) + lastgenlev = genlev + lastcirc = circ + update_icon() + updateDialog() - var/datum/gas_mixture/air1 = circ1.return_transfer_air() - var/datum/gas_mixture/air2 = circ2.return_transfer_air() - lastgen = 0 - - if(air1 && air2) - var/air1_heat_capacity = air1.heat_capacity() - var/air2_heat_capacity = air2.heat_capacity() - var/delta_temperature = abs(air2.temperature - air1.temperature) - - if(delta_temperature > 0 && air1_heat_capacity > 0 && air2_heat_capacity > 0) - var/efficiency = 0.65 - var/energy_transfer = delta_temperature*air2_heat_capacity*air1_heat_capacity/(air2_heat_capacity+air1_heat_capacity) - var/heat = energy_transfer*(1-efficiency) - lastgen = energy_transfer*efficiency*0.05*power_multiplier - - if(air2.temperature > air1.temperature) - air2.temperature = air2.temperature - energy_transfer/air2_heat_capacity - air1.temperature = air1.temperature + heat/air1_heat_capacity - else - air2.temperature = air2.temperature + heat/air2_heat_capacity - air1.temperature = air1.temperature - energy_transfer/air1_heat_capacity - - //Transfer the air - if(air1) - circ1.air2.merge(air1) - if(air2) - circ2.air2.merge(air2) - - //Update the gas networks - if(circ1.parent2) - circ1.parent2.update = 1 - if(circ2.parent2) - circ2.parent2.update = 1 - - // update icon overlays and power usage only if displayed level has changed - if(lastgen > powercap && prob(10)) - var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread - s.set_up(3, 1, src) - s.start() - lastgen *= 0.5 - var/genlev = max(0, min( round(11*lastgen / powercap), 11)) - if(lastgen > 100 && genlev == 0) - genlev = 1 - if(genlev != lastgenlev) - lastgenlev = genlev - updateicon() - add_avail(lastgen) - /obj/machinery/power/generator/attack_ai(mob/user) - if(stat & (BROKEN|NOPOWER)) return + return attack_hand(user) + +/obj/machinery/power/generator/attack_ghost(mob/user) + if(stat & (NOPOWER|BROKEN)) + return + interact(user) + +/obj/machinery/power/generator/attack_hand(mob/user) + if(..()) + user << browse(null, "window=teg") + return interact(user) /obj/machinery/power/generator/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/wrench)) anchored = !anchored - to_chat(user, "\blue You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor.") - use_power = anchored - reconnect() + if(!anchored) + disconnect() + power_change() + else + connect() + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + to_chat(user, "You [anchored ? "secure" : "unsecure"] the bolts holding [src] to the floor.") + else if(istype(W, /obj/item/device/multitool)) + if(cold_dir == WEST) + cold_dir = EAST + hot_dir = WEST + else + cold_dir = WEST + hot_dir = EAST + connect() + to_chat(user, "You reverse the generator's circulator settings. The cold circulator is now on the [dir2text(cold_dir)] side, and the heat circulator is now on the [dir2text(hot_dir)] side.") + update_desc() else - ..() + ..() + +/obj/machinery/power/generator/proc/get_menu(include_link = 1) + var/t = "" + if(!powernet) + t += "Unable to connect to the power network!" + t += "
Retry" + else if(cold_circ && hot_circ) + var/datum/gas_mixture/cold_circ_air1 = cold_circ.air1 + var/datum/gas_mixture/cold_circ_air2 = cold_circ.air2 + var/datum/gas_mixture/hot_circ_air1 = hot_circ.air1 + var/datum/gas_mixture/hot_circ_air2 = hot_circ.air2 -/obj/machinery/power/generator/attack_hand(mob/user) - add_fingerprint(user) - if(stat & (BROKEN|NOPOWER) || !anchored) return - interact(user) + t += "
" + t += "Output: [round(lastgen)] W" + + t += "
" + + t += "Cold loop
" + t += "Temperature Inlet: [round(cold_circ_air2.temperature, 0.1)] K / Outlet: [round(cold_circ_air1.temperature, 0.1)] K
" + t += "Pressure Inlet: [round(cold_circ_air2.return_pressure(), 0.1)] kPa / Outlet: [round(cold_circ_air1.return_pressure(), 0.1)] kPa
" + + t += "Hot loop
" + t += "Temperature Inlet: [round(hot_circ_air2.temperature, 0.1)] K / Outlet: [round(hot_circ_air1.temperature, 0.1)] K
" + t += "Pressure Inlet: [round(hot_circ_air2.return_pressure(), 0.1)] kPa / Outlet: [round(hot_circ_air1.return_pressure(), 0.1)] kPa
" + + t += "
" + else + t += "Unable to locate all parts!" + t += "
Retry" + if(include_link) + t += "
Close" + + return t /obj/machinery/power/generator/interact(mob/user) - if( (get_dist(src, user) > 1 ) && (!istype(user, /mob/living/silicon/ai))) - user.unset_machine() - user << browse(null, "window=teg") - return - user.set_machine(src) - var/t = "
Thermo-Electric Generator
" - - if(circ1 && circ2) - t += "Output : [round(lastgen)] W

" - - t += "Primary Circulator (top or right)
" - t += "Inlet Pressure: [round(circ1.air1.return_pressure(), 0.1)] kPa
" - t += "Inlet Temperature: [round(circ1.air1.temperature, 0.1)] K
" - t += "Outlet Pressure: [round(circ1.air2.return_pressure(), 0.1)] kPa
" - t += "Outlet Temperature: [round(circ1.air2.temperature, 0.1)] K
" - - t += "Secondary Circulator (bottom or left)
" - t += "Inlet Pressure: [round(circ2.air1.return_pressure(), 0.1)] kPa
" - t += "Inlet Temperature: [round(circ2.air1.temperature, 0.1)] K
" - t += "Outlet Pressure: [round(circ2.air2.return_pressure(), 0.1)] kPa
" - t += "Outlet Temperature: [round(circ2.air2.temperature, 0.1)] K
" - - else - t += "Unable to connect to circulators.
" - t += "Ensure both are in position and wrenched into place." - - t += "
" - t += "
" - t += "Refresh Close" - - user << browse(t, "window=teg;size=460x300") - onclose(user, "teg") + var/datum/browser/popup = new(user, "teg", "Thermo-Electric Generator", 460, 300) + popup.set_content(get_menu()) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() return 1 - /obj/machinery/power/generator/Topic(href, href_list) - ..() + if(..()) + return 0 if( href_list["close"] ) usr << browse(null, "window=teg") usr.unset_machine() return 0 - - updateDialog() + if( href_list["check"] ) + if(!powernet || !cold_circ || !hot_circ) + connect() return 1 - /obj/machinery/power/generator/power_change() ..() - updateicon() - - -/obj/machinery/power/generator/verb/rotate_clock() - set category = "Object" - set name = "Rotate Generator (Clockwise)" - set src in view(1) - - if(usr.stat || usr.restrained() || anchored) - return - - src.dir = turn(src.dir, 90) - -/obj/machinery/power/generator/verb/rotate_anticlock() - set category = "Object" - set name = "Rotate Generator (Counterclockwise)" - set src in view(1) - - if(usr.stat || usr.restrained() || anchored) - return - - src.dir = turn(src.dir, -90) \ No newline at end of file + update_icon() \ No newline at end of file diff --git a/code/modules/power/generator_type2.dm b/code/modules/power/generator_type2.dm deleted file mode 100644 index d1ff1f1079c..00000000000 --- a/code/modules/power/generator_type2.dm +++ /dev/null @@ -1,143 +0,0 @@ -/obj/machinery/power/generator_type2 - name = "thermoelectric generator" - desc = "It's a high efficiency thermoelectric generator." - icon_state = "teg" - anchored = 1 - density = 1 - use_power = 0 - - var/obj/machinery/atmospherics/unary/generator_input/input1 - var/obj/machinery/atmospherics/unary/generator_input/input2 - - var/lastgen = 0 - var/lastgenlev = -1 - - var/image/overlay_image - -/obj/machinery/power/generator_type2/New() - ..() - spawn(5) - input1 = locate(/obj/machinery/atmospherics/unary/generator_input) in get_step(src,turn(dir, 90)) - input2 = locate(/obj/machinery/atmospherics/unary/generator_input) in get_step(src,turn(dir, -90)) - if(!input1 || !input2) - stat |= BROKEN - updateicon() - - -/obj/machinery/power/generator_type2/proc/updateicon() - - if(isnull(src.overlay_image)) - src.overlay_image = image('icons/obj/power.dmi') - - overlays.Cut() - if(!(stat & (NOPOWER|BROKEN))) - - if(lastgenlev != 0) - src.overlay_image.icon_state = "teg-op[lastgenlev]" - overlays += src.overlay_image - -#define GENRATE 800 // generator output coefficient from Q - - -/obj/machinery/power/generator_type2/process() - if(!input1 || !input2) - return - - var/datum/gas_mixture/air1 = input1.return_exchange_air() - var/datum/gas_mixture/air2 = input2.return_exchange_air() - - - lastgen = 0 - - if(air1 && air2) - var/datum/gas_mixture/hot_air = air1 - var/datum/gas_mixture/cold_air = air2 - if(hot_air.temperature < cold_air.temperature) - hot_air = air2 - cold_air = air1 - - var/hot_air_heat_capacity = hot_air.heat_capacity() - var/cold_air_heat_capacity = cold_air.heat_capacity() - - var/delta_temperature = hot_air.temperature - cold_air.temperature - - if(delta_temperature > 1 && cold_air_heat_capacity > 0.01 && hot_air_heat_capacity > 0.01) - var/efficiency = (1 - cold_air.temperature/hot_air.temperature)*0.65 //65% of Carnot efficiency - - var/energy_transfer = delta_temperature*hot_air_heat_capacity*cold_air_heat_capacity/(hot_air_heat_capacity+cold_air_heat_capacity) - - var/heat = energy_transfer*(1-efficiency) - lastgen = energy_transfer*efficiency - - hot_air.temperature = hot_air.temperature - energy_transfer/hot_air_heat_capacity - cold_air.temperature = cold_air.temperature + heat/cold_air_heat_capacity - -// to_chat(world, "POWER: [lastgen] W generated at [efficiency*100]% efficiency and sinks sizes [cold_air_heat_capacity], [hot_air_heat_capacity]") - - input1.parent.update = 1 - input2.parent.update = 1 - - add_avail(lastgen) - // update icon overlays only if displayed level has changed - - var/genlev = max(0, min( round(11*lastgen / 100000), 11)) - if(genlev != lastgenlev) - lastgenlev = genlev - updateicon() - - src.updateDialog() - - -/obj/machinery/power/generator_type2/attack_ai(mob/user) - if(stat & (BROKEN|NOPOWER)) return - interact(user) - - -/obj/machinery/power/generator_type2/attack_hand(mob/user) - add_fingerprint(user) - if(stat & (BROKEN|NOPOWER)) return - interact(user) - - -/obj/machinery/power/generator_type2/interact(mob/user) - if( (get_dist(src, user) > 1 ) && (!istype(user, /mob/living/silicon/ai))) - user.unset_machine() - user << browse(null, "window=teg") - return - - user.set_machine(src) - - var/t = "
Thermo-Electric Generator
" - - t += "Output : [round(lastgen)] W

" - - t += "Cold loop
" - t += "Temperature: [round(input1.air_contents.temperature, 0.1)] K
" - t += "Pressure: [round(input1.air_contents.return_pressure(), 0.1)] kPa
" - - t += "Hot loop
" - t += "Temperature: [round(input2.air_contents.temperature, 0.1)] K
" - t += "Pressure: [round(input2.air_contents.return_pressure(), 0.1)] kPa
" - - t += "

Close" - - t += "
" - user << browse(t, "window=teg;size=460x300") - onclose(user, "teg") - return 1 - - -/obj/machinery/power/generator_type2/Topic(href, href_list) - ..() - - if( href_list["close"] ) - usr << browse(null, "window=teg") - usr.unset_machine() - return 0 - - return 1 - - -/obj/machinery/power/generator_type2/power_change() - ..() - updateicon() \ No newline at end of file diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 0f6d41fc145..420733f7c76 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -122,7 +122,7 @@ if(ishuman(mob)) //Hilariously enough, running into a closet should make you get hit the hardest. var/mob/living/carbon/human/H = mob - H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) + H.AdjustHallucinate(max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1))))) var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) ) mob.apply_effect(rads, IRRADIATE) @@ -189,7 +189,7 @@ var/obj/item/organ/internal/eyes/eyes = l.get_int_organ(/obj/item/organ/internal/eyes) if(!istype(eyes)) continue - l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) ) + l.Hallucinate(min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src))))) for(var/mob/living/l in range(src, round((power / 100) ** 0.25))) var/rads = (power / 10) * sqrt( 1 / max(get_dist(l, src),1) ) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 0ae9b10752e..275e2ec94e5 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -23,18 +23,18 @@ /obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0) if(..(target, blocked)) var/mob/living/M = target - M.dizziness += 20 - M.slurring += 20 - M.confused += 20 - M.eye_blurry += 20 - M.drowsyness += 20 + M.AdjustDizzy(20) + M.AdjustSlur(20) + M.AdjustConfused(20) + M.AdjustEyeBlurry(20) + M.AdjustDrowsy(20) for(var/datum/reagent/ethanol/A in M.reagents.reagent_list) M.AdjustParalysis(2) - M.dizziness += 10 - M.slurring += 10 - M.confused += 10 - M.eye_blurry += 10 - M.drowsyness += 10 + M.AdjustDizzy(10) + M.AdjustSlur(10) + M.AdjustConfused(10) + M.AdjustEyeBlurry(10) + M.AdjustDrowsy(10) A.volume += 5 //Because we can /obj/item/projectile/bullet/weakbullet2 //detective revolver instastuns, but multiple shots are better for keeping punks down @@ -216,7 +216,7 @@ ..(target, blocked) if(iscarbon(target)) var/mob/living/carbon/M = target - M.silent = max(M.silent, 10) + M.Silence(10) else if(istype(target, /obj/mecha/combat/honker)) var/obj/mecha/chassis = target chassis.occupant_message("A mimetech anti-honk bullet has hit \the [chassis]!") diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 0e1b7478cc8..bcc4335f66a 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -186,7 +186,7 @@ if(ishuman(target)) var/mob/living/carbon/human/M = target M.adjustBrainLoss(20) - M.hallucination += 20 + M.AdjustHallucinate(20) /obj/item/projectile/clown name = "snap-pop" diff --git a/code/modules/reagents/newchem/Blob-Reagents.dm b/code/modules/reagents/newchem/Blob-Reagents.dm index fa5e9747e34..a7cfa32f403 100644 --- a/code/modules/reagents/newchem/Blob-Reagents.dm +++ b/code/modules/reagents/newchem/Blob-Reagents.dm @@ -61,7 +61,7 @@ volume = ..() M.apply_damage(0.4*volume, BRUTE) M.apply_damage(1*volume, OXY) - M.losebreath += round(0.3*volume) + M.AdjustLoseBreath(round(0.3*volume)) /datum/reagent/blob/kinetic //does semi-random brute damage diff --git a/code/modules/reagents/newchem/disease.dm b/code/modules/reagents/newchem/disease.dm index def94ba9a2c..cdc2d0b8d43 100644 --- a/code/modules/reagents/newchem/disease.dm +++ b/code/modules/reagents/newchem/disease.dm @@ -131,12 +131,12 @@ color = "#EC536D" // rgb: 236, 83, 109 /datum/reagent/synaphydramine/on_mob_life(mob/living/M) - M.drowsyness = max(M.drowsyness-5, 0) + M.AdjustDrowsy(-5) if(holder.has_reagent("lsd")) holder.remove_reagent("lsd", 5) if(holder.has_reagent("histamine")) holder.remove_reagent("histamine", 5) - M.hallucination = max(0, M.hallucination - 10) + M.AdjustHallucinate(-10) if(prob(30)) M.adjustToxLoss(1) ..() @@ -317,4 +317,4 @@ if(B && B.data) var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] if(D) - D.Devolve() \ No newline at end of file + D.Devolve() diff --git a/code/modules/reagents/newchem/drinks.dm b/code/modules/reagents/newchem/drinks.dm index b1f789b7f22..da07f7a995f 100644 --- a/code/modules/reagents/newchem/drinks.dm +++ b/code/modules/reagents/newchem/drinks.dm @@ -15,7 +15,7 @@ mix_sound = 'sound/goonstation/misc/drinkfizz.ogg' /datum/reagent/ginsonic/on_mob_life(mob/living/M) - M.drowsyness = max(0, M.drowsyness-5) + M.AdjustDrowsy(-5) if(prob(25)) M.AdjustParalysis(-1) M.AdjustStunned(-1) diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index 99a637e4fca..bc5b10be569 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -30,7 +30,7 @@ if(severity == 1) if(effect <= 2) M.visible_message("[M] looks nervous!") - M.confused += 15 + M.AdjustConfused(15) M.adjustToxLoss(2) M.Jitter(10) M.emote("twitch_s") @@ -55,7 +55,7 @@ M.Jitter(10) M.adjustToxLoss(5) M.Weaken(1) - M.confused += 33 + M.AdjustConfused(33) else if(effect <= 7) M.emote("collapse") to_chat(M, "Your heart is pounding!") @@ -90,7 +90,7 @@ if(prob(4)) to_chat(M, "You feel kinda awful!") M.adjustToxLoss(1) - M.jitteriness += 30 + M.AdjustJitter(30) M.emote(pick("groan", "moan")) ..() @@ -99,7 +99,7 @@ if(severity == 1) if(effect <= 2) M.visible_message("[M] looks confused!") - M.confused += 20 + M.AdjustConfused(20) M.Jitter(20) M.emote("scream") else if(effect <= 4) @@ -123,7 +123,7 @@ M.adjustToxLoss(2) M.adjustBrainLoss(8) M.Weaken(3) - M.confused += 25 + M.AdjustConfused(25) M.emote("scream") M.reagents.add_reagent("jagged_crystals", 5) else if(effect <= 7) @@ -160,7 +160,7 @@ /datum/reagent/krokodil/on_mob_life(mob/living/M) - M.jitteriness -= 40 + M.AdjustJitter(-40) if(prob(25)) M.adjustBrainLoss(1) if(prob(15)) @@ -241,8 +241,8 @@ if(prob(5)) M.emote(pick("twitch_s","blink_r","shiver")) if(current_cycle >= 25) - M.jitteriness += 5 - M.drowsyness = max(0, M.drowsyness-10) + M.AdjustJitter(5) + M.AdjustDrowsy(-10) M.AdjustParalysis(-2.5) M.AdjustStunned(-2.5) M.AdjustWeakened(-2.5) @@ -262,7 +262,7 @@ if(severity == 1) if(effect <= 2) M.visible_message("[M] can't seem to control their legs!") - M.confused += 20 + M.AdjustConfused(20) M.Weaken(4) else if(effect <= 4) M.visible_message("[M]'s hands flip out and flail everywhere!") @@ -296,7 +296,7 @@ for(var/mob/living/carbon/C in range(T, 1)) if(C.can_breathe_gas()) C.emote("gasp") - C.losebreath++ + C.AdjustLoseBreath(1) C.reagents.add_reagent("toxin", 10) C.reagents.add_reagent("neurotoxin2", 20) @@ -342,15 +342,15 @@ M.SetWeakened(0) if(check < 30) M.emote(pick("twitch", "twitch_s", "scream", "drool", "grumble", "mumble")) - M.druggy = max(M.druggy, 15) + M.Druggy(15) if(check < 20) - M.confused += 10 + M.AdjustConfused(10) if(check < 8) M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5)) M.visible_message("[M] scratches at something under their skin!") M.adjustBruteLoss(5) else if(check < 16) - M.hallucination += 30 + M.AdjustHallucinate(30) else if(check < 24) to_chat(M, "They're coming for you!") else if(check < 28) @@ -373,7 +373,7 @@ if(severity == 1) if(effect <= 2) M.visible_message("[M] flails around like a lunatic!") - M.confused += 25 + M.AdjustConfused(25) M.Jitter(10) M.emote("scream") M.reagents.add_reagent("jagged_crystals", 5) @@ -383,7 +383,7 @@ M.adjustToxLoss(2) M.adjustBrainLoss(1) M.Stun(3) - M.eye_blurry = max(M.eye_blurry, 7) + M.EyeBlurry(7) M.reagents.add_reagent("jagged_crystals", 5) else if(effect <= 7) M.emote("faint") @@ -394,7 +394,7 @@ M.adjustToxLoss(2) M.adjustBrainLoss(1) M.Stun(3) - M.eye_blurry = max(M.eye_blurry, 7) + M.EyeBlurry(7) M.reagents.add_reagent("jagged_crystals", 5) else if(effect <= 4) M.visible_message("[M] convulses violently and falls to the floor!") @@ -479,7 +479,7 @@ to_chat(M, "You cannot breathe!") M.adjustOxyLoss(15) M.Stun(1) - M.losebreath++ + M.AdjustLoseBreath(1) ..() /datum/reagent/thc @@ -497,10 +497,10 @@ if(prob(5)) to_chat(M, "[pick("You feel hungry.","Your stomach rumbles.","You feel cold.","You feel warm.")]") if(prob(4)) - M.confused = max(M.confused, 10) + M.Confused(10) if(volume >= 50 && prob(25)) if(prob(10)) - M.drowsyness = max(M.drowsyness, 10) + M.Drowsy(10) ..() /datum/reagent/fliptonium @@ -545,7 +545,7 @@ if(current_cycle == 50) M.SpinAnimation(speed = 4, loops = -1) - M.drowsyness = max(0, M.drowsyness-6) + M.AdjustDrowsy(-6) M.AdjustParalysis(-1.5) M.AdjustStunned(-1.5) M.AdjustWeakened(-1.5) @@ -561,7 +561,7 @@ if(severity == 1) if(effect <= 2) M.visible_message("[M] can't seem to control their legs!") - M.confused += 33 + M.AdjustConfused(33) M.Weaken(2) else if(effect <= 4) M.visible_message("[M]'s hands flip out and flail everywhere!") @@ -655,7 +655,7 @@ /datum/reagent/surge/on_mob_life(mob/living/M) - M.druggy = max(M.druggy, 15) + M.Druggy(15) var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.") if(prob(1)) if(prob(1)) diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index 777c10ebfd7..a84ac83f385 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -167,7 +167,7 @@ M.adjustBruteLoss(-2*REM) M.adjustFireLoss(-2*REM) if(prob(50)) - M.losebreath -= 1 + M.AdjustLoseBreath(-1) ..() /datum/reagent/omnizine/overdose_process(mob/living/M, severity) @@ -181,7 +181,7 @@ M.Weaken(4) else if(effect <= 3) M.visible_message("[M] completely spaces out for a moment.") - M.confused += 15 + M.AdjustConfused(15) else if(effect <= 5) M.visible_message("[M] stumbles and staggers.") M.Dizzy(5) @@ -317,7 +317,7 @@ /datum/reagent/salbutamol/on_mob_life(mob/living/M) M.adjustOxyLoss(-6*REM) - M.losebreath = max(0, M.losebreath-4) + M.AdjustLoseBreath(-4) ..() /datum/chemical_reaction/salbutamol @@ -341,8 +341,8 @@ /datum/reagent/perfluorodecalin/on_mob_life(mob/living/carbon/human/M) M.adjustOxyLoss(-25*REM) if(volume >= 4) - M.losebreath = max(M.losebreath, 6) - M.silent = max(M.silent, 6) + M.LoseBreath(6) + M.Silence(6) if(prob(33)) M.adjustBruteLoss(-1*REM) M.adjustFireLoss(-1*REM) @@ -369,13 +369,12 @@ addiction_chance = 25 /datum/reagent/ephedrine/on_mob_life(mob/living/M) - M.drowsyness = max(0, M.drowsyness-5) + M.AdjustDrowsy(-5) M.AdjustParalysis(-1) M.AdjustStunned(-1) M.AdjustWeakened(-1) M.adjustStaminaLoss(-1*REM) - if(M.losebreath > 5) - M.losebreath = max(5, M.losebreath-1) + M.AdjustLoseBreath(-1, bound_lower = 5) if(M.oxyloss > 75) M.adjustOxyLoss(-1) if(M.health < 0 || M.health > 0 && prob(33)) @@ -422,14 +421,14 @@ addiction_chance = 10 /datum/reagent/diphenhydramine/on_mob_life(mob/living/M) - M.jitteriness = max(0, M.jitteriness-20) + M.AdjustJitter(-20) M.reagents.remove_reagent("histamine",3) M.reagents.remove_reagent("itching_powder",3) if(prob(7)) M.emote("yawn") if(prob(3)) M.Stun(2) - M.drowsyness += 1 + M.AdjustDrowsy(1) M.visible_message("[M] looks a bit dazed.") ..() @@ -453,16 +452,16 @@ shock_reduction = 50 /datum/reagent/morphine/on_mob_life(mob/living/M) - M.jitteriness = max(0, M.jitteriness-25) + M.AdjustJitter(-25) switch(current_cycle) if(1 to 15) if(prob(7)) M.emote("yawn") if(16 to 35) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) if(36 to INFINITY) M.Paralyse(15) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.traumatic_shock < 100) @@ -476,16 +475,16 @@ var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes) if(istype(E)) E.damage = max(E.damage-1, 0) - M.eye_blurry = max(M.eye_blurry-1 , 0) - M.adjustEarDamage(-1,0) + M.AdjustEyeBlurry(-1) + M.AdjustEarDamage(-1) if(prob(50)) - M.disabilities &= ~NEARSIGHTED + M.CureNearsighted() if(prob(30)) - M.disabilities &= ~BLIND - M.eye_blind = 0 + M.CureBlind() + M.SetEyeBlind(0) if(M.ear_damage <= 25) if(prob(30)) - M.setEarDamage(-1,0) + M.SetEarDeaf(0) ..() /datum/chemical_reaction/oculine @@ -515,12 +514,11 @@ overdose_threshold = 25 /datum/reagent/atropine/on_mob_life(mob/living/M) - M.dizziness += 1 - M.confused = max(M.confused, 5) + M.AdjustDizzy(1) + M.Confused(5) if(prob(4)) M.emote("collapse") - if(M.losebreath > 5) - M.losebreath = max(5, M.losebreath-5) + M.AdjustLoseBreath(-5, bound_lower = 5) if(M.oxyloss > 65) M.adjustOxyLoss(-10*REM) if(M.health < -25) @@ -550,7 +548,7 @@ overdose_threshold = 20 /datum/reagent/epinephrine/on_mob_life(mob/living/M) - M.drowsyness = max(0, M.drowsyness-5) + M.AdjustDrowsy(-5) if(prob(20)) M.AdjustParalysis(-1) if(prob(20)) @@ -562,8 +560,7 @@ if(prob(5)) M.adjustBrainLoss(-1) holder.remove_reagent("histamine", 15) - if(M.losebreath > 3) - M.losebreath-- + M.AdjustLoseBreath(-1, bound_lower = 3) if(M.oxyloss > 35) M.adjustOxyLoss(-10*REM) if(M.health < -10 && M.health > -65) @@ -694,7 +691,7 @@ color = "#D1D1F1" /datum/reagent/mutadone/on_mob_life(mob/living/carbon/human/M) - M.jitteriness = 0 + M.SetJitter(0) var/needs_update = M.mutations.len > 0 || M.disabilities > 0 if(needs_update) @@ -733,7 +730,7 @@ color = "#009CA8" /datum/reagent/antihol/on_mob_life(mob/living/M) - M.slurring = 0 + M.SetSlur(0) M.AdjustDrunk(-4) M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1) if(M.toxloss <= 25) @@ -763,10 +760,10 @@ M.adjustBruteLoss(-10*REM) M.adjustFireLoss(-10*REM) M.setStaminaLoss(0) - M.slowed = 0 - M.dizziness = max(0,M.dizziness-10) - M.drowsyness = max(0,M.drowsyness-10) - M.confused = 0 + M.SetSlowed(0) + M.AdjustDizzy(-10) + M.AdjustDrowsy(-10) + M.SetConfused(0) M.SetSleeping(0) var/status = CANSTUN | CANWEAKEN | CANPARALYSE M.status_flags &= ~status @@ -811,7 +808,7 @@ if(prob(33)) M.adjustStaminaLoss(2.5*REM) M.adjustToxLoss(1*REM) - M.losebreath++ + M.AdjustLoseBreath(1) /datum/reagent/insulin name = "Insulin" @@ -882,11 +879,11 @@ M.reagents.remove_reagent("bath_salts", 5) M.reagents.remove_reagent("lsd", 5) M.reagents.remove_reagent("thc", 5) - M.druggy -= 5 - M.hallucination -= 5 - M.jitteriness -= 5 + M.AdjustDruggy(-5) + M.AdjustHallucinate(-5) + M.AdjustJitter(-5) if(prob(50)) - M.drowsyness = max(M.drowsyness, 3) + M.Drowsy(3) if(prob(10)) M.emote("drool") if(prob(20)) @@ -910,16 +907,16 @@ color = "#96DEDE" /datum/reagent/ether/on_mob_life(mob/living/M) - M.jitteriness = max(M.jitteriness-25,0) + M.AdjustJitter(-25) switch(current_cycle) if(1 to 15) if(prob(7)) M.emote("yawn") if(16 to 35) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) if(36 to INFINITY) M.Paralyse(15) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) ..() /datum/chemical_reaction/ether @@ -960,7 +957,7 @@ M.AdjustParalysis(-1) M.AdjustStunned(-1) M.AdjustWeakened(-1) - M.confused = max(0, M.confused-5) + M.AdjustConfused(-5) for(var/datum/reagent/R in M.reagents.reagent_list) if(R != src) if(R.id == "ultralube" || R.id == "lube") @@ -1037,7 +1034,7 @@ M.Weaken(4) else if(effect <= 3) M.visible_message("[M] completely spaces out for a moment.") - M.confused += 15 + M.AdjustConfused(15) else if(effect <= 5) M.visible_message("[M] stumbles and staggers.") M.Dizzy(5) diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 6dece72544c..05ecb1b1206 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -356,12 +356,13 @@ if(!ear_safety) M.Stun(max(10/distance, 3)) M.Weaken(max(10/distance, 3)) - M.setEarDamage(M.ear_damage + rand(0, 5), max(M.ear_deaf,15)) + M.AdjustEarDamage(rand(0, 5)) + M.EarDeaf(15) if(M.ear_damage >= 15) to_chat(M, "Your ears start to ring badly!") - if(prob(M.ear_damage - 10 + 5)) + if(prob(M.ear_damage - 5)) to_chat(M, "You can't hear anything!") - M.disabilities |= DEAF + M.BecomeDeaf() else if(M.ear_damage >= 5) to_chat(M, "Your ears start to ring!") @@ -384,10 +385,11 @@ if(!ear_safety) M.Stun(max(10/distance, 3)) M.Weaken(max(10/distance, 3)) - M.setEarDamage(M.ear_damage + rand(0, 5), max(M.ear_deaf,15)) + M.AdjustEarDamage(rand(0, 5)) + M.EarDeaf(15) if(M.ear_damage >= 15) to_chat(M, "Your ears start to ring badly!") - if(prob(M.ear_damage - 10 + 5)) + if(prob(M.ear_damage - 5)) to_chat(M, "You can't hear anything!") M.disabilities |= DEAF else @@ -619,4 +621,4 @@ if(method == TOUCH) M.adjust_fire_stacks(volume / 5) return - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index 56d64d9a62e..d8e8205b1f7 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -41,7 +41,7 @@ if(prob(10)) to_chat(M, "Your eyes itch.") M.emote(pick("blink", "sneeze")) - M.eye_blurry += 3 + M.AdjustEyeBlurry(3) if(prob(10)) M.visible_message("[M] scratches at an itch.") M.adjustBruteLoss(1) @@ -141,7 +141,7 @@ if(prob(4)) M.visible_message("[M] starts convulsing violently!", "You feel as if your body is tearing itself apart!") M.Weaken(15) - M.jitteriness += 1000 + M.AdjustJitter(1000) spawn(rand(20, 100)) M.gib() @@ -159,19 +159,19 @@ current_cycle++ return if(5 to 8) - M.dizziness += 1 - M.confused = max(M.confused, 10) + M.AdjustDizzy(1) + M.Confused(10) if(9 to 12) - M.drowsyness = max(M.drowsyness, 10) - M.dizziness += 1 - M.confused = max(M.confused, 20) + M.Drowsy(10) + M.AdjustDizzy(1) + M.Confused(20) if(13) M.emote("faint") if(14 to INFINITY) M.Paralyse(10) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) - M.jitteriness = max(0, M.jitteriness-30) + M.AdjustJitter(-30) if(M.getBrainLoss() <= 80) M.adjustBrainLoss(1) else @@ -207,7 +207,7 @@ M.emote("drool") if(prob(10)) to_chat(M, "You cannot breathe!") - M.losebreath += 1 + M.AdjustLoseBreath(1) M.emote("gasp") if(prob(8)) to_chat(M, "You feel horrendously weak!") @@ -261,7 +261,7 @@ to_chat(M, "AHHHHHH!") M.adjustBruteLoss(5) M.Weaken(5) - M.jitteriness += 6 + M.AdjustJitter(6) M.visible_message("[M] falls to the floor, scratching themselves violently!") M.emote("scream") ..() @@ -364,11 +364,11 @@ if(prob(10)) to_chat(M, "You cannot breathe!") M.adjustOxyLoss(10) - M.losebreath++ + M.AdjustLoseBreath(1) if(prob(10)) to_chat(M, "Your chest is burning with pain!") M.adjustOxyLoss(10) - M.losebreath++ + M.AdjustLoseBreath(1) M.Stun(3) M.Weaken(2) if(ishuman(M)) @@ -425,12 +425,12 @@ M.Weaken(20) if(prob(10)) M.emote(pick("drool", "tremble", "gasp")) - M.losebreath++ + M.AdjustLoseBreath(1) if(prob(9)) to_chat(M, "You can't [pick("move", "feel your legs", "feel your face", "feel anything")]!") if(prob(7)) to_chat(M, "You can't breathe!") - M.losebreath += 3 + M.AdjustLoseBreath(3) ..() /datum/reagent/sodium_thiopental @@ -445,15 +445,15 @@ switch(current_cycle) if(1) M.emote("drool") - M.confused = max(M.confused, 5) + M.Confused(5) if(2 to 4) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) if(5) M.emote("faint") M.Weaken(5) if(6 to INFINITY) M.Paralyse(20) - M.jitteriness = max(0, M.jitteriness-50) + M.AdjustJitter(-50) if(prob(10)) M.emote("drool") M.adjustBrainLoss(1) @@ -474,7 +474,7 @@ if(prob(25)) M.emote("yawn") if(6 to 9) - M.eye_blurry += 5 + M.AdjustEyeBlurry(5) if(prob(35)) M.emote("yawn") if(10) @@ -502,20 +502,20 @@ mix_sound = 'sound/goonstation/misc/drinkfizz.ogg' /datum/reagent/sulfonal/on_mob_life(mob/living/M) - M.jitteriness = max(0, M.jitteriness-30) + M.AdjustJitter(-30) switch(current_cycle) if(1 to 10) if(prob(7)) M.emote("yawn") if(11 to 20) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) if(21) M.emote("faint") if(22 to INFINITY) if(prob(20)) M.emote("faint") M.Paralyse(5) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) M.adjustToxLoss(1) ..() @@ -570,7 +570,7 @@ /datum/reagent/coniine/on_mob_life(mob/living/M) M.adjustToxLoss(2) - M.losebreath += 5 + M.AdjustLoseBreath(5) ..() /datum/reagent/curare @@ -590,7 +590,7 @@ if(prob(20)) M.emote(pick("drool", "pale", "gasp")) if(6 to 10) - M.eye_blurry += 5 + M.AdjustEyeBlurry(5) if(prob(8)) to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].") M.Stun(1) @@ -598,12 +598,12 @@ M.emote(pick("drool","pale", "gasp")) if(11 to INFINITY) M.Stun(30) - M.drowsyness = max(M.drowsyness, 20) + M.Drowsy(20) if(prob(20)) M.emote(pick("drool", "faint", "pale", "gasp", "collapse")) else if(prob(8)) to_chat(M, "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!") - M.losebreath++ + M.AdjustLoseBreath(1) ..() /datum/reagent/sarin @@ -636,22 +636,22 @@ /datum/reagent/sarin/on_mob_life(mob/living/M) switch(current_cycle) if(1 to 15) - M.jitteriness += 20 + M.AdjustJitter(20) if(prob(20)) M.emote(pick("twitch","twitch_s","quiver")) if(16 to 30) if(prob(25)) M.emote(pick("twitch","twitch","drool","quiver","tremble")) - M.eye_blurry += 5 - M.stuttering = max(M.stuttering, 5) + M.AdjustEyeBlurry(5) + M.Stuttering(5) if(prob(10)) - M.confused = max(M.confused, 15) + M.Confused(15) if(prob(15)) M.Stun(1) M.emote("scream") if(30 to 60) - M.eye_blurry += 5 - M.stuttering = max(M.stuttering, 5) + M.AdjustEyeBlurry(5) + M.Stuttering(5) if(prob(10)) M.Stun(1) M.emote(pick("twitch","twitch","drool","shake","tremble")) @@ -660,15 +660,15 @@ if(prob(5)) M.Weaken(3) M.visible_message("[M] has a seizure!") - M.jitteriness = 1000 + M.SetJitter(1000) if(prob(5)) to_chat(M, "You can't breathe!") M.emote(pick("gasp", "choke", "cough")) - M.losebreath++ + M.AdjustLoseBreath(1) if(61 to INFINITY) if(prob(15)) M.emote(pick("gasp", "choke", "cough","twitch", "shake", "tremble","quiver","drool", "twitch","collapse")) - M.losebreath = max(5, M.losebreath + 5) + M.LoseBreath(5) M.adjustToxLoss(1) M.adjustBrainLoss(1) M.Weaken(4) @@ -754,16 +754,16 @@ /datum/reagent/capulettium/on_mob_life(mob/living/M) switch(current_cycle) if(1 to 5) - M.eye_blurry += 10 + M.AdjustEyeBlurry(10) if(6 to 10) - M.drowsyness = max(M.drowsyness, 10) + M.Drowsy(10) if(11) M.Paralyse(10) M.visible_message("[M] seizes up and falls limp, their eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary. if(12 to 60) M.Paralyse(10) if(61 to INFINITY) - M.eye_blurry += 10 + M.AdjustEyeBlurry(10) ..() /datum/reagent/capulettium_plus @@ -783,7 +783,7 @@ mix_message = "The solution begins to slosh about violently by itself." /datum/reagent/capulettium_plus/on_mob_life(mob/living/M) - M.silent = max(M.silent, 2) + M.Silence(2) ..() /datum/reagent/toxic_slurry @@ -884,4 +884,4 @@ var/location = get_turf(holder.my_atom) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(6, 1, location) - s.start() \ No newline at end of file + s.start() diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm index da92ffee0f2..e337aa10e1f 100644 --- a/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_alcohol.dm @@ -13,7 +13,7 @@ /datum/reagent/ethanol/on_mob_life(mob/living/M) M.nutrition += nutriment_factor M.AdjustDrunk(alcohol_perc) - M.dizziness += dizzy_adj + M.AdjustDizzy(dizzy_adj) ..() @@ -84,7 +84,7 @@ //copy paste from LSD... shoot me /datum/reagent/ethanol/absinthe/on_mob_life(mob/living/M) - M.hallucination += 5 + M.AdjustHallucinate(5) ..() /datum/reagent/ethanol/absinthe/overdose_process(mob/living/M, severity) @@ -97,10 +97,7 @@ color = "#664300" // rgb: 102, 67, 0 overdose_threshold = 30 alcohol_perc = 0.4 - -/datum/reagent/ethanol/rum/on_mob_life(mob/living/M) - M.dizziness +=5 - ..() + dizzy_adj = 5 /datum/reagent/ethanol/rum/overdose_process(mob/living/M, severity) M.adjustToxLoss(1) @@ -182,7 +179,7 @@ /datum/reagent/ethanol/thirteenloko/on_mob_life(mob/living/M) M.nutrition += nutriment_factor - M.drowsyness = max(0, M.drowsyness-7) + M.AdjustDrowsy(-7) M.AdjustSleeping(-2) if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) @@ -625,7 +622,7 @@ /datum/reagent/ethanol/neurotoxin/on_mob_life(mob/living/M) M.weakened = max(M.weakened, 3) if(current_cycle >=55) - M.druggy = max(M.druggy, 55) + M.Druggy(55) if(current_cycle >=200) M.adjustToxLoss(2) ..() @@ -637,10 +634,7 @@ reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.7 - -/datum/reagent/ethanol/changelingsting/on_mob_life(mob/living/M) - M.dizziness +=5 - ..() + dizzy_adj = 5 /datum/reagent/ethanol/irishcarbomb name = "Irish Car Bomb" @@ -649,10 +643,7 @@ reagent_state = LIQUID color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.3 - -/datum/reagent/ethanol/irishcarbomb/on_mob_life(mob/living/M) - M.dizziness +=5 - ..() + dizzy_adj = 5 /datum/reagent/ethanol/syndicatebomb name = "Syndicate Bomb" @@ -677,9 +668,9 @@ nutriment_factor = 1 * FOOD_METABOLISM color = "#2E6671" // rgb: 46, 102, 113 alcohol_perc = 0.5 + dizzy_adj = 10 /datum/reagent/ethanol/driestmartini/on_mob_life(mob/living/M) - M.dizziness +=10 if(current_cycle >= 55 && current_cycle < 115) M.stuttering += 10 ..() @@ -692,8 +683,8 @@ alcohol_perc = 0.2 /datum/reagent/ethanol/kahlua/on_mob_life(mob/living/M) - M.dizziness = max(0, M.dizziness-5) - M.drowsyness = max(0, M.drowsyness-3) + M.AdjustDizzy(-5) + M.AdjustDrowsy(-3) M.AdjustSleeping(-2) M.Jitter(5) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm index 26bad6c1665..869e9295bf5 100644 --- a/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink.dm @@ -38,8 +38,8 @@ color = "#973800" // rgb: 151, 56, 0 /datum/reagent/drink/carrotjuicde/on_mob_life(mob/living/M) - M.eye_blurry = max(M.eye_blurry-1 , 0) - M.eye_blind = max(M.eye_blind-1 , 0) + M.AdjustEyeBlurry(-1) + M.AdjustEyeBlind(-1) switch(current_cycle) if(1 to 20) //nothing @@ -282,4 +282,4 @@ if(ishuman(M) && M.job in list("Mime")) M.adjustBruteLoss(-1) M.adjustFireLoss(-1) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm index 1868489adb7..6e30efb9423 100644 --- a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_base.dm @@ -14,9 +14,9 @@ /datum/reagent/drink/on_mob_life(mob/living/M) M.nutrition += nutriment_factor if(adj_dizzy) - M.dizziness = max(0, M.dizziness + adj_dizzy) + M.AdjustDizzy(adj_dizzy) if(adj_drowsy) - M.drowsyness = max(0, M.drowsyness + adj_drowsy) + M.AdjustDrowsy(adj_drowsy) if(adj_sleepy) M.AdjustSleeping(adj_sleepy) if(adj_temp_hot) @@ -25,4 +25,4 @@ if(adj_temp_cool) if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055 M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT)) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm index fe54ed97246..26164571769 100644 --- a/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm +++ b/code/modules/reagents/oldchem/reagents/drink/reagents_drink_cold.dm @@ -48,9 +48,9 @@ /datum/reagent/drink/cold/nuka_cola/on_mob_life(mob/living/M) M.Jitter(20) - M.druggy = max(M.druggy, 30) - M.dizziness +=5 - M.drowsyness = 0 + M.Druggy(30) + M.AdjustDizzy(5) + M.SetDrowsy(0) M.status_flags |= GOTTAGOFAST ..() @@ -121,4 +121,4 @@ /datum/reagent/drink/cold/rewriter/on_mob_life(mob/living/M) M.Jitter(5) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/oldchem/reagents/reagents_admin.dm b/code/modules/reagents/oldchem/reagents/reagents_admin.dm index ccc617d2aaa..09636bd111f 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_admin.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_admin.dm @@ -14,7 +14,6 @@ M.adjustBruteLoss(-5) M.adjustFireLoss(-5) M.adjustToxLoss(-5) - M.hallucination = 0 M.setBrainLoss(0) if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -24,20 +23,28 @@ for(var/obj/item/organ/external/E in H.organs) if(E.mend_fracture()) E.perma_injury = 0 - M.disabilities = 0 - M.eye_blurry = 0 - M.eye_blind = 0 + M.SetEyeBlind(0) + M.CureNearsighted() + M.CureBlind() + M.CureMute() + M.CureDeaf() + M.CureEpilepsy() + M.CureTourettes() + M.CureCoughing() + M.CureNervous() + M.SetEyeBlurry(0) M.SetWeakened(0) M.SetStunned(0) M.SetParalysis(0) - M.silent = 0 - M.dizziness = 0 - M.drowsyness = 0 - M.stuttering = 0 - M.slurring = 0 - M.confused = 0 + M.SetSilence(0) + M.SetHallucinate(0) + M.SetDizzy(0) + M.SetDrowsy(0) + M.SetStuttering(0) + M.SetSlur(0) + M.SetConfused(0) M.SetSleeping(0) - M.jitteriness = 0 + M.SetJitter(0) for(var/datum/disease/D in M.viruses) if(D.severity == NONTHREAT) continue @@ -73,4 +80,4 @@ outgoing += tocheck else outgoing += tocheck - return outgoing \ No newline at end of file + return outgoing diff --git a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm index 7cbc79b41b0..1fd0188287a 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm @@ -37,7 +37,7 @@ metabolization_rate = 0.2 * REAGENTS_METABOLISM /datum/reagent/hippies_delight/on_mob_life(mob/living/M) - M.druggy = max(M.druggy, 50) + M.Druggy(50) switch(current_cycle) if(1 to 5) if(!M.stuttering) M.stuttering = 1 @@ -47,13 +47,13 @@ if(!M.stuttering) M.stuttering = 1 M.Jitter(20) M.Dizzy(20) - M.druggy = max(M.druggy, 45) + M.Druggy(45) if(prob(20)) M.emote(pick("twitch","giggle")) if(10 to INFINITY) if(!M.stuttering) M.stuttering = 1 M.Jitter(40) M.Dizzy(40) - M.druggy = max(M.druggy, 60) + M.Druggy(60) if(prob(30)) M.emote(pick("twitch","giggle")) ..() @@ -65,8 +65,8 @@ color = "#0000D8" /datum/reagent/lsd/on_mob_life(mob/living/M) - M.druggy = max(M.druggy, 15) - M.hallucination += 10 + M.Druggy(15) + M.AdjustHallucinate(10) ..() /datum/reagent/space_drugs @@ -80,7 +80,7 @@ heart_rate_decrease = 1 /datum/reagent/space_drugs/on_mob_life(mob/living/M) - M.druggy = max(M.druggy, 15) + M.Druggy(15) if(isturf(M.loc) && !istype(M.loc, /turf/space)) if(M.canmove && !M.restrained()) step(M, pick(cardinal)) @@ -94,22 +94,22 @@ color = "#E700E7" // rgb: 231, 0, 231 /datum/reagent/psilocybin/on_mob_life(mob/living/M) - M.druggy = max(M.druggy, 30) + M.Druggy(30) switch(current_cycle) if(1 to 5) - if(!M.stuttering) M.stuttering = 1 + M.Stuttering(1) M.Dizzy(5) if(prob(10)) M.emote(pick("twitch","giggle")) if(5 to 10) - if(!M.stuttering) M.stuttering = 1 + M.Stuttering(1) M.Jitter(10) M.Dizzy(10) - M.druggy = max(M.druggy, 35) + M.Druggy(35) if(prob(20)) M.emote(pick("twitch","giggle")) if(10 to INFINITY) - if(!M.stuttering) M.stuttering = 1 + M.Stuttering(1) M.Jitter(20) M.Dizzy(20) - M.druggy = max(M.druggy, 40) + M.Druggy(40) if(prob(30)) M.emote(pick("twitch","giggle")) - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm index 52d33e21e07..61228dfb2d0 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm @@ -22,7 +22,7 @@ M.adjustBrainLoss(3) if(iscultist(M)) M.status_flags |= GOTTAGOFAST - M.drowsyness = max(M.drowsyness-5, 0) + M.AdjustDrowsy(-5) M.AdjustParalysis(-2) M.AdjustStunned(-2) M.AdjustWeakened(-2) @@ -78,4 +78,4 @@ id = "glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 \ No newline at end of file + color = "#808080" // rgb: 128, 128, 128 diff --git a/code/modules/reagents/oldchem/reagents/reagents_food.dm b/code/modules/reagents/oldchem/reagents/reagents_food.dm index 1dbe1f05a20..de52805fef2 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_food.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_food.dm @@ -370,9 +370,9 @@ overdose_threshold = 200 // Hyperglycaemic shock /datum/reagent/sugar/on_mob_life(mob/living/M) - M.drowsyness = max(0, M.drowsyness-5) + M.AdjustDrowsy(-5) if(current_cycle >= 90) - M.jitteriness += 2 + M.AdjustJitter(2) if(prob(50)) M.AdjustParalysis(-1) M.AdjustStunned(-1) @@ -391,4 +391,3 @@ M.Weaken(4 * severity) if(prob(8)) M.adjustToxLoss(severity) - diff --git a/code/modules/reagents/oldchem/reagents/reagents_med.dm b/code/modules/reagents/oldchem/reagents/reagents_med.dm index cc5592dd42e..b0a09afc999 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_med.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_med.dm @@ -41,7 +41,7 @@ overdose_threshold = 40 /datum/reagent/synaptizine/on_mob_life(mob/living/M) - M.drowsyness = max(0, M.drowsyness-5) + M.AdjustDrowsy(-5) M.AdjustParalysis(-1) M.AdjustStunned(-1) M.AdjustWeakened(-1) @@ -139,4 +139,4 @@ description = "An all-purpose antibiotic agent extracted from space fungus." reagent_state = LIQUID color = "#0AB478" - metabolization_rate = 0.2 \ No newline at end of file + metabolization_rate = 0.2 diff --git a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm index bbdf92b8693..0aae5e3f40e 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm @@ -326,7 +326,7 @@ /datum/reagent/spores/on_mob_life(mob/living/M) M.adjustToxLoss(1) M.damageoverlaytemp = 60 - M.eye_blurry = max(M.eye_blurry, 3) + M.EyeBlurry(3) ..() /datum/reagent/beer2 //disguised as normal beer for use by emagged brobots @@ -385,25 +385,25 @@ to_chat(victim, "Your [safe_thing] protect you from most of the pepperspray!") if(prob(5)) victim.emote("scream") - victim.eye_blurry = max(M.eye_blurry, 3) - victim.eye_blind = max(M.eye_blind, 1) - victim.confused = max(M.confused, 3) + victim.EyeBlurry(3) + victim.EyeBlind(1) + victim.Confused(3) victim.damageoverlaytemp = 60 victim.Weaken(3) victim.drop_item() return else if( eyes_covered ) // Eye cover is better than mouth cover to_chat(victim, "Your [safe_thing] protects your eyes from the pepperspray!") - victim.eye_blurry = max(M.eye_blurry, 3) + victim.EyeBlurry(3) victim.damageoverlaytemp = 30 return else // Oh dear :D if(prob(5)) victim.emote("scream") to_chat(victim, "You're sprayed directly in the eyes with pepperspray!") - victim.eye_blurry = max(M.eye_blurry, 5) - victim.eye_blind = max(M.eye_blind, 2) - victim.confused = max(M.confused, 6) + victim.EyeBlurry(5) + victim.EyeBlind(2) + victim.Confused(6) victim.damageoverlaytemp = 75 victim.Weaken(5) victim.drop_item() @@ -411,4 +411,4 @@ /datum/reagent/condensedcapsaicin/on_mob_life(mob/living/M) if(prob(5)) M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]") - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/oldchem/reagents/reagents_water.dm b/code/modules/reagents/oldchem/reagents/reagents_water.dm index bbfcbeb8142..a2dd3eb7fc4 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_water.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_water.dm @@ -264,27 +264,27 @@ process_flags = ORGANIC | SYNTHETIC /datum/reagent/holywater/on_mob_life(mob/living/M) - M.jitteriness = max(M.jitteriness-5,0) + M.AdjustJitter(-5) if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec - M.stuttering = min(M.stuttering+4, 20) + M.AdjustStuttering(4, bound_lower = 0, bound_upper = 20) M.Dizzy(5) if(iscultist(M) && prob(5)) M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu")) if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds - M.confused += 3 + M.AdjustConfused(3) if(isvampirethrall(M)) ticker.mode.remove_vampire_mind(M.mind) holder.remove_reagent(id, volume) - M.jitteriness = 0 - M.stuttering = 0 - M.confused = 0 + M.SetJitter(0) + M.SetStuttering(0) + M.SetConfused(0) return if(iscultist(M)) ticker.mode.remove_cultist(M.mind) holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? - M.jitteriness = 0 - M.stuttering = 0 - M.confused = 0 + M.SetJitter(0) + M.SetStuttering(0) + M.SetConfused(0) return if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80)) switch(current_cycle) diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 1da5f07b2e5..a6fd792e795 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -80,12 +80,6 @@ icon_state = "pill8" list_reagents = list("haloperidol" = 15) -/obj/item/weapon/reagent_containers/food/pill/paroxetine - name = "Paroxetine pill" - desc = "Heavy anti-depressant." - icon_state = "pill8" - list_reagents = list("paroxetine" = 15) - /obj/item/weapon/reagent_containers/food/pill/happy name = "Happy pill" desc = "Happy happy joy joy!" diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm index 373b5d9454f..0e83e5812c3 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_badfeeling.dm @@ -37,7 +37,7 @@ to_chat(H, "[pick(messages)]") if(prob(50)) - H.dizziness += rand(3,5) + H.AdjustDizzy(rand(3,5)) /datum/artifact_effect/badfeeling/DoEffectAura() if(holder) @@ -50,7 +50,7 @@ to_chat(H, "[pick(drastic_messages)]") if(prob(10)) - H.dizziness += rand(3,5) + H.AdjustDizzy(rand(3,5)) return 1 /datum/artifact_effect/badfeeling/DoEffectPulse() @@ -64,7 +64,7 @@ to_chat(H, "[pick(messages)]") if(prob(50)) - H.dizziness += rand(3,5) + H.AdjustDizzy(rand(3,5)) else if(prob(25)) - H.dizziness += rand(5,15) + H.AdjustDizzy(rand(5,15)) return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm index 08639dec98f..dd42c44204c 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_goodfeeling.dm @@ -35,7 +35,7 @@ to_chat(H, "[pick(messages)]") if(prob(50)) - H.dizziness += rand(3,5) + H.AdjustDizzy(rand(3,5)) /datum/artifact_effect/goodfeeling/DoEffectAura() if(holder) @@ -48,7 +48,7 @@ to_chat(H, "[pick(drastic_messages)]") if(prob(5)) - H.dizziness += rand(3,5) + H.AdjustDizzy(rand(3,5)) return 1 /datum/artifact_effect/goodfeeling/DoEffectPulse() @@ -62,7 +62,7 @@ to_chat(H, "[pick(messages)]") if(prob(50)) - H.dizziness += rand(3,5) + H.AdjustDizzy(rand(3,5)) else if(prob(25)) - H.dizziness += rand(5,15) + H.AdjustDizzy(rand(5,15)) return 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm index bbb16d76a3d..1f098ddfa6b 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_sleepy.dm @@ -13,8 +13,8 @@ if(ishuman(toucher) && prob(weakness * 100)) var/mob/living/carbon/human/H = toucher to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")) - H.drowsyness = min(H.drowsyness + rand(5,25) * weakness, 50 * weakness) - H.eye_blurry = min(H.eye_blurry + rand(1,3) * weakness, 50 * weakness) + H.AdjustDrowsy(rand(5,25) * weakness, bound_lower = 0, bound_upper = 50 * weakness) + H.AdjustEyeBlurry(rand(1,3) * weakness, bound_lower = 0, bound_upper = 50 * weakness) return 1 else if(isrobot(toucher)) to_chat(toucher, "\red SYSTEM ALERT: CPU cycles slowing down.") @@ -28,8 +28,8 @@ if(prob(weakness * 100)) if(prob(10)) to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")) - H.drowsyness = min(H.drowsyness + 1 * weakness, 25 * weakness) - H.eye_blurry = min(H.eye_blurry + 1 * weakness, 25 * weakness) + H.AdjustDrowsy(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness) + H.AdjustEyeBlurry(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness) for(var/mob/living/silicon/robot/R in range(src.effectrange,holder)) to_chat(R, "\red SYSTEM ALERT: CPU cycles slowing down.") return 1 @@ -41,8 +41,8 @@ var/weakness = GetAnomalySusceptibility(H) if(prob(weakness * 100)) to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.")) - H.drowsyness = min(H.drowsyness + rand(5,15) * weakness, 50 * weakness) - H.eye_blurry = min(H.eye_blurry + rand(5,15) * weakness, 50 * weakness) + H.AdjustDrowsy(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness) + H.AdjustEyeBlurry(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness) for(var/mob/living/silicon/robot/R in range(src.effectrange,holder)) to_chat(R, "\red SYSTEM ALERT: CPU cycles slowing down.") return 1 diff --git a/code/modules/research/xenoarchaeology/finds/finds_special.dm b/code/modules/research/xenoarchaeology/finds/finds_special.dm index ce6fb4c2663..8ddcf27593b 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_special.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_special.dm @@ -194,7 +194,7 @@ 'sound/hallucinations/turn_around1.ogg',\ 'sound/hallucinations/turn_around2.ogg',\ ), 50, 1, -3) - M.sleeping = max(M.sleeping,rand(5,10)) + M.Sleeping(rand(5,10)) src.loc = null else processing_objects.Remove(src) diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm index 406c1f83083..6c2f7354b43 100644 --- a/code/modules/surgery/face.dm +++ b/code/modules/surgery/face.dm @@ -55,7 +55,7 @@ user.visible_message(" [user]'s hand slips, slicing [target]'s throat wth \the [tool]!" , \ " Your hand slips, slicing [target]'s throat wth \the [tool]!" ) affected.createwound(CUT, 60) - target.losebreath += 4 + target.AdjustLoseBreath(4) return 0 @@ -83,7 +83,7 @@ /datum/surgery_step/face/mend_vocal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery) user.visible_message(" [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \ " Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!") - target.losebreath += 4 + target.AdjustLoseBreath(4) return 0 /datum/surgery_step/face/fix_face diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index 9034393bfe2..f71e9bff0be 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -101,7 +101,7 @@ else adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1)) if(prob(5)) - eye_blurry = max(eye_blurry, 6) + EyeBlurry(6) var/word = pick("dizzy","woozy","faint") to_chat(src, "You feel very [word].") if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index bb408f51726..18f0e51b2e2 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -307,7 +307,7 @@ owner.drip(10) if(prob(4)) spawn owner.custom_emote(1, "gasps for air!") - owner.losebreath += 5 + owner.AdjustLoseBreath(5) /obj/item/organ/internal/kidneys name = "kidneys" @@ -357,10 +357,10 @@ /obj/item/organ/internal/eyes/surgeryize() if(!owner) return - owner.disabilities &= ~NEARSIGHTED - owner.disabilities &= ~BLIND - owner.eye_blurry = 0 - owner.eye_blind = 0 + owner.CureNearsighted() + owner.CureBlind() + owner.SetEyeBlurry(0) + owner.SetEyeBlind(0) /obj/item/organ/internal/liver @@ -493,6 +493,7 @@ slot = "brain_tumor" health = 3 var/organhonked = 0 + var/suffering_delay = 900 /obj/item/organ/internal/honktumor/New() ..() @@ -535,11 +536,11 @@ return if(organhonked < world.time) - organhonked = world.time+900 + organhonked = world.time + suffering_delay to_chat(owner, "HONK") - owner.sleeping = 0 - owner.stuttering = 20 - owner.adjustEarDamage(0, 30) + owner.SetSleeping(0) + owner.Stuttering(20) + owner.AdjustEarDeaf(30) owner.Weaken(3) owner << 'sound/items/AirHorn.ogg' if(prob(30)) diff --git a/code/modules/surgery/organs/pain.dm b/code/modules/surgery/organs/pain.dm index 23d2af69bf3..f0b4b912eaf 100644 --- a/code/modules/surgery/organs/pain.dm +++ b/code/modules/surgery/organs/pain.dm @@ -15,8 +15,8 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0 if(world.time < next_pain_time && !force) return if(amount > 10 && istype(src,/mob/living/carbon/human)) - if(src:paralysis) - src:paralysis = max(0, src:paralysis-round(amount/10)) + if(paralysis) + AdjustParalysis(-round(amount/10)) if(amount > 50 && prob(amount / 5)) src:drop_item() var/msg @@ -132,4 +132,4 @@ mob/living/carbon/human/proc/handle_pain() toxDamageMessage = "Your body aches all over, it's driving you mad." if(toxDamageMessage && prob(toxMessageProb)) - src.custom_pain(toxDamageMessage, getToxLoss() >= 15) \ No newline at end of file + src.custom_pain(toxDamageMessage, getToxLoss() >= 15) diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm index 0f75fe9f80f..a4b0d8fb92b 100644 --- a/code/modules/surgery/organs/subtypes/diona.dm +++ b/code/modules/surgery/organs/subtypes/diona.dm @@ -169,10 +169,10 @@ /obj/item/organ/internal/diona_receptor/surgeryize() if(!owner) return - owner.disabilities &= ~NEARSIGHTED - owner.disabilities &= ~BLIND - owner.eye_blurry = 0 - owner.eye_blind = 0 + owner.CureNearsighted() + owner.CureBlind() + owner.SetEyeBlurry(0) + owner.SetEyeBlind(0) //TODO:Make absorb rads on insert diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm index 61b2f143f69..0f402a42e5d 100644 --- a/code/modules/surgery/organs/subtypes/machine.dm +++ b/code/modules/surgery/organs/subtypes/machine.dm @@ -142,10 +142,10 @@ /obj/item/organ/internal/optical_sensor/surgeryize() if(!owner) return - owner.disabilities &= ~NEARSIGHTED - owner.disabilities &= ~BLIND - owner.eye_blurry = 0 - owner.eye_blind = 0 + owner.CureNearsighted() + owner.CureBlind() + owner.SetEyeBlurry(0) + owner.SetEyeBlind(0) // Used for an MMI or posibrain being installed into a human. diff --git a/html/changelogs/AutoChangeLog-pr-5601.yml b/html/changelogs/AutoChangeLog-pr-5601.yml new file mode 100644 index 00000000000..cd74a767312 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5601.yml @@ -0,0 +1,4 @@ +author: Crazylemon +delete-after: True +changes: + - tweak: "Status effects should work a little more consistently now" diff --git a/html/changelogs/AutoChangeLog-pr-5826.yml b/html/changelogs/AutoChangeLog-pr-5826.yml new file mode 100644 index 00000000000..62bc989c620 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5826.yml @@ -0,0 +1,4 @@ +author: Twinmold93 +delete-after: True +changes: + - bugfix: "Fixes a runtime issue caused by using the detective's scanner on the space hotel cleaver." diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi index 3fe35fe7651..9aed5172330 100644 Binary files a/icons/mob/inhands/clothing_lefthand.dmi and b/icons/mob/inhands/clothing_lefthand.dmi differ diff --git a/icons/mob/inhands/clothing_righthand.dmi b/icons/mob/inhands/clothing_righthand.dmi index 590945e9e15..c0c5dbd8678 100644 Binary files a/icons/mob/inhands/clothing_righthand.dmi and b/icons/mob/inhands/clothing_righthand.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 95a1a902aa0..568fcce4443 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/atmospherics/circulator.dmi b/icons/obj/atmospherics/circulator.dmi new file mode 100644 index 00000000000..45f7a626ef6 Binary files /dev/null and b/icons/obj/atmospherics/circulator.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index a555009ae6a..5a198ee1e64 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index 34fedaa560f..73d62edfaa8 100644 Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ diff --git a/icons/obj/pipes.dmi b/icons/obj/pipes.dmi index 45f79d9e66b..99e6e84d185 100644 Binary files a/icons/obj/pipes.dmi and b/icons/obj/pipes.dmi differ diff --git a/paradise.dme b/paradise.dme index 17f48fd9dba..ad5db876321 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1434,9 +1434,11 @@ #include "code\modules\mob\mob_movement.dm" #include "code\modules\mob\mob_transformation_simple.dm" #include "code\modules\mob\say.dm" +#include "code\modules\mob\status_procs.dm" #include "code\modules\mob\transform_procs.dm" #include "code\modules\mob\typing_indicator.dm" #include "code\modules\mob\update_icons.dm" +#include "code\modules\mob\update_status.dm" #include "code\modules\mob\camera\camera.dm" #include "code\modules\mob\dead\death.dm" #include "code\modules\mob\dead\observer\login.dm" @@ -1455,6 +1457,9 @@ #include "code\modules\mob\living\login.dm" #include "code\modules\mob\living\logout.dm" #include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\stat_states.dm" +#include "code\modules\mob\living\status_procs.dm" +#include "code\modules\mob\living\update_status.dm" #include "code\modules\mob\living\carbon\_defines.dm" #include "code\modules\mob\living\carbon\carbon.dm" #include "code\modules\mob\living\carbon\carbon_defenses.dm" @@ -1465,6 +1470,7 @@ #include "code\modules\mob\living\carbon\shock.dm" #include "code\modules\mob\living\carbon\superheroes.dm" #include "code\modules\mob\living\carbon\update_icons.dm" +#include "code\modules\mob\living\carbon\update_status.dm" #include "code\modules\mob\living\carbon\alien\alien.dm" #include "code\modules\mob\living\carbon\alien\alien_defenses.dm" #include "code\modules\mob\living\carbon\alien\death.dm" @@ -1501,6 +1507,7 @@ #include "code\modules\mob\living\carbon\brain\MMI.dm" #include "code\modules\mob\living\carbon\brain\posibrain.dm" #include "code\modules\mob\living\carbon\brain\say.dm" +#include "code\modules\mob\living\carbon\brain\update_status.dm" #include "code\modules\mob\living\carbon\human\appearance.dm" #include "code\modules\mob\living\carbon\human\body_accessories.dm" #include "code\modules\mob\living\carbon\human\death.dm" @@ -1558,6 +1565,7 @@ #include "code\modules\mob\living\silicon\ai\login.dm" #include "code\modules\mob\living\silicon\ai\logout.dm" #include "code\modules\mob\living\silicon\ai\say.dm" +#include "code\modules\mob\living\silicon\ai\update_status.dm" #include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" #include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" #include "code\modules\mob\living\silicon\ai\freelook\eye.dm" @@ -1574,6 +1582,7 @@ #include "code\modules\mob\living\silicon\pai\say.dm" #include "code\modules\mob\living\silicon\pai\software.dm" #include "code\modules\mob\living\silicon\pai\software_modules.dm" +#include "code\modules\mob\living\silicon\pai\update_status.dm" #include "code\modules\mob\living\silicon\robot\component.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" @@ -1588,6 +1597,7 @@ #include "code\modules\mob\living\silicon\robot\robot_items.dm" #include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\update_status.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" @@ -1595,6 +1605,7 @@ #include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" #include "code\modules\mob\living\silicon\robot\drone\drone_say.dm" +#include "code\modules\mob\living\silicon\robot\drone\update_status.dm" #include "code\modules\mob\living\simple_animal\constructs.dm" #include "code\modules\mob\living\simple_animal\corpse.dm" #include "code\modules\mob\living\simple_animal\parrot.dm" @@ -1737,7 +1748,6 @@ #include "code\modules\power\cell.dm" #include "code\modules\power\engine.dm" #include "code\modules\power\generator.dm" -#include "code\modules\power\generator_type2.dm" #include "code\modules\power\gravitygenerator.dm" #include "code\modules\power\lighting.dm" #include "code\modules\power\port_gen.dm"