diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm
index 14e24033e68..f51cb42d4cb 100644
--- a/code/defines/procs/hud.dm
+++ b/code/defines/procs/hud.dm
@@ -3,7 +3,7 @@ Use the regular_hud_updates() proc before process_med_hud(mob) or process_sec_hu
the HUD updates properly! */
//Medical HUD outputs. Called by the Life() proc of the mob using it, usually.
-proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt)
+/proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt)
if(!can_process_hud(M))
return
@@ -25,7 +25,7 @@ proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt)
P.Client.images += patient.hud_list[STATUS_HUD]
//Security HUDs. Pass a value for the second argument to enable implant viewing or other special features.
-proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt)
+/proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt)
if(!can_process_hud(M))
return
var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, sec_hud_users)
@@ -41,7 +41,7 @@ proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt)
P.Client.images += perp.hud_list[IMPCHEM_HUD]
-proc/process_antag_hud(var/mob/M, var/mob/Alt)
+/proc/process_antag_hud(var/mob/M, var/mob/Alt)
if(!can_process_hud(M))
return
var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, antag_hud_users)
@@ -51,12 +51,12 @@ proc/process_antag_hud(var/mob/M, var/mob/Alt)
P.Client.images += target.hud_list[SPECIALROLE_HUD]
-datum/arranged_hud_process
+/datum/arranged_hud_process
var/client/Client
var/mob/Mob
var/turf/Turf
-proc/arrange_hud_process(var/mob/M, var/mob/Alt, var/list/hud_list)
+/proc/arrange_hud_process(var/mob/M, var/mob/Alt, var/list/hud_list)
hud_list |= M
var/datum/arranged_hud_process/P = new
P.Client = M.client
@@ -64,7 +64,7 @@ proc/arrange_hud_process(var/mob/M, var/mob/Alt, var/list/hud_list)
P.Turf = get_turf(P.Mob)
return P
-proc/can_process_hud(var/mob/M)
+/proc/can_process_hud(var/mob/M)
if(!M)
return 0
if(!M.client)
@@ -74,16 +74,16 @@ proc/can_process_hud(var/mob/M)
return 1
//Deletes the current HUD images so they can be refreshed with new ones.
-mob/proc/regular_hud_updates() //Used in the life.dm of mobs that can use HUDs.
+/mob/proc/regular_hud_updates() //Used in the life.dm of mobs that can use HUDs.
if(client)
for(var/image/hud in client.images)
- if(copytext(hud.icon_state,1,4) == "hud")
+ if(copytext(hud.icon_state,1,4) == "hud") //this makes me weep
client.images -= hud
med_hud_users -= src
sec_hud_users -= src
antag_hud_users -= src
-mob/proc/in_view(var/turf/T)
+/mob/proc/in_view(var/turf/T)
return view(T)
/mob/aiEye/in_view(var/turf/T)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index d4ee72861bc..caf50cffa99 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1260,7 +1260,7 @@
product_ads = "House-training costs extra!;Now with 1000% more cat hair!;Allergies are a sign of weakness!;Dogs are man's best friend. Remember that Vulpkanin!; Heat lamps for Unathi!; Vox-y want a cracker?"
vend_delay = 15
icon_state = "crittercare"
- products = list(/obj/item/clothing/accessory/petcollar = 5, /obj/item/weapon/storage/aquatic_kit =5, /obj/item/fish_eggs/goldfish = 5,
+ products = list(/obj/item/clothing/accessory/petcollar = 5, /obj/item/weapon/storage/aquatic_kit/full =5, /obj/item/fish_eggs/goldfish = 5,
/obj/item/fish_eggs/clownfish = 5, /obj/item/fish_eggs/shark = 5, /obj/item/fish_eggs/feederfish = 10,
/obj/item/fish_eggs/salmon = 5, /obj/item/fish_eggs/catfish = 5, /obj/item/fish_eggs/glofish = 5,
/obj/item/fish_eggs/electric_eel = 5, /obj/item/fish_eggs/shrimp = 10, /obj/item/toy/pet_rock = 5,
diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm
index 5ca60bea7f0..eaf73f5cd61 100644
--- a/code/modules/clothing/glasses/glasses.dm
+++ b/code/modules/clothing/glasses/glasses.dm
@@ -53,6 +53,7 @@
vision_flags = SEE_TURFS
prescription_upgradable = 1
species_fit = list("Vox")
+ see_darkness = 0 //don't render darkness while wearing mesons
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/eyes.dmi'
)
@@ -63,7 +64,6 @@
icon_state = "nvgmeson"
item_state = "glasses"
darkness_view = 8
- see_darkness = 0
prescription_upgradable = 0
/obj/item/clothing/glasses/meson/prescription
diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm
index eec69c7b0ef..73cd5eff306 100644
--- a/code/modules/food/recipes_microwave.dm
+++ b/code/modules/food/recipes_microwave.dm
@@ -45,6 +45,12 @@
)
result = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
+/datum/recipe/microwave/donut/sprinkles
+ reagents = list("sugar" = 5, "sprinkles" = 3)
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/dough
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/donut/sprinkles
/datum/recipe/microwave/human/burger
items = list(
@@ -667,7 +673,7 @@ datum/recipe/microwave/slimesandwich
)
result = /obj/item/weapon/reagent_containers/food/snacks/fries
-/datum/recipe/microwave/mint
+/datum/recipe/microwave/mint_2
reagents = list("sugar" = 5, "frostoil" = 5)
result = /obj/item/weapon/reagent_containers/food/snacks/mint
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index 71ca32e5f97..203039250d7 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -76,8 +76,6 @@
silent = 0
return 1
- handle_statuses()
-
. = 1
/mob/living/carbon/brain/handle_vision()
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 7086595a3c6..98c17d2e9d8 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -14,13 +14,6 @@ mob/living
qdel(food)
return ..()
-/mob/living/carbon/Life()
- ..()
-
- // Increase germ_level regularly
- if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
- germ_level++
-
/mob/living/carbon/blob_act()
if (stat == DEAD)
return
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index b8b4eec4b3b..03cde195fe4 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -786,7 +786,8 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
/mob/living/carbon/human/handle_regular_status_updates()
- if(status_flags & GODMODE) return 0
+ if(status_flags & GODMODE)
+ return 0
//SSD check, if a logged player is awake put them back to sleep!
if(player_logged && sleeping < 2)
@@ -853,7 +854,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
setHalLoss(99)
if(paralysis)
- AdjustParalysis(-1)
blinded = 1
stat = UNCONSCIOUS
if(halloss > 0)
@@ -985,9 +985,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
if(flying)
animate(src, pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING)
- //Other
- handle_statuses()
-
// If you're dirty, your gloves will become dirty, too.
if(gloves && germ_level > gloves.germ_level && prob(10))
gloves.germ_level += 1
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 6d8f4b3e13b..c65756fce62 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -376,18 +376,25 @@
else
H.sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS)
+ H.see_in_dark = darksight //set their variables to default, modify them later
+ H.see_invisible = SEE_INVISIBLE_LIVING
+
if(H.mind && H.mind.vampire)
if(VAMP_VISION in H.mind.vampire.powers && !(VAMP_FULL in H.mind.vampire.powers))
H.sight |= SEE_MOBS
+
else if(VAMP_FULL in H.mind.vampire.powers)
H.sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
H.see_in_dark = 8
- if(!H.druggy) H.see_invisible = SEE_INVISIBLE_LEVEL_TWO
+ H.see_invisible = SEE_INVISIBLE_MINIMUM
+
if(XRAY in H.mutations)
H.sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS
H.see_in_dark = 8
- if(!H.druggy) H.see_invisible = SEE_INVISIBLE_LEVEL_TWO
+
+ H.see_invisible = SEE_INVISIBLE_MINIMUM
+
if(H.seer == 1)
var/obj/effect/rune/R = locate() in H.loc
@@ -397,11 +404,7 @@
H.see_invisible = SEE_INVISIBLE_LIVING
H.seer = 0
- else if(!H.seer)
- H.see_in_dark = darksight
- H.see_invisible = SEE_INVISIBLE_LIVING
-
- // This checks how much the mob's eyewear impairs their vision
+ //This checks how much the mob's eyewear impairs their vision
if(H.tinttotal >= TINT_IMPAIR)
if(tinted_weldhelh)
if(H.tinttotal >= TINT_BLIND)
@@ -413,7 +416,9 @@
if(istype(H.glasses, /obj/item/clothing/glasses))
var/obj/item/clothing/glasses/G = H.glasses
H.sight |= G.vision_flags
- H.see_in_dark = G.darkness_view
+
+ if(G.darkness_view)
+ H.see_in_dark = G.darkness_view
if(!G.see_darkness)
H.see_invisible = SEE_INVISIBLE_MINIMUM
@@ -452,13 +457,10 @@
H.see_in_dark = (G.darkness_view ? G.darkness_view : darksight) // Otherwise we keep our darkness view with togglable nightvision.
if(G.vision_flags) // MESONS
H.sight |= G.vision_flags
- if(!H.druggy)
- H.see_invisible = SEE_INVISIBLE_MINIMUM
+
if(!G.see_darkness)
H.see_invisible = SEE_INVISIBLE_MINIMUM
- /* HUD shit goes here, as long as it doesn't modify sight flags */
- // The purpose of this is to stop xray and w/e from preventing you from using huds -- Love, Doohl
switch(G.HUDType)
if(SECHUD)
process_sec_hud(H,1)
@@ -467,6 +469,13 @@
if(ANTAGHUD)
process_antag_hud(H)
+ if(H.vision_type)
+ H.see_in_dark = max(H.see_in_dark, H.vision_type.see_in_dark, darksight)
+ H.see_invisible = H.vision_type.see_invisible
+ if(H.vision_type.light_sensitive)
+ H.weakeyes = 1
+ H.sight |= H.vision_type.sight_flags
+
if(H.see_override) //Override all
H.see_invisible = H.see_override
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 8b3e3899b2f..ee7dcedec56 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -13,6 +13,10 @@
handle_wetness()
+ // Increase germ_level regularly
+ if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
+ germ_level++
+
///////////////
// BREATHING //
@@ -276,7 +280,7 @@
/mob/living/carbon/proc/CheckStamina()
if(staminaloss)
var/total_health = (health - staminaloss)
- if(total_health <= config.health_threshold_crit && !stat)
+ if(total_health <= config.health_threshold_softcrit && !stat)
src << "You're too exhausted to keep going..."
Weaken(5)
setStaminaLoss(health - 2)
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 6359c497ee1..60cd33d689d 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -54,7 +54,9 @@
update_canmove()
if(client)
- handle_regular_hud_updates()
+ regular_hud_updates() //THIS DOESN'T FUCKING UPDATE SHIT
+ handle_regular_hud_updates() //IT JUST REMOVES FUCKING HUD IMAGES
+
/mob/living/proc/handle_breathing()
return
@@ -100,17 +102,54 @@
//this updates all special effects: stunned, sleeping, weakened, druggy, stuttering, etc..
/mob/living/proc/handle_status_effects()
- if(paralysis)
- paralysis = max(paralysis-1,0)
+ handle_stunned()
+ handle_weakened()
+ handle_stuttering()
+ handle_silent()
+ handle_drugged()
+ handle_slurring()
+ handle_paralysed()
+
+
+/mob/living/proc/handle_stunned()
if(stunned)
- stunned = max(stunned-1,0)
+ AdjustStunned(-1)
if(!stunned)
update_icons()
+ return stunned
+/mob/living/proc/handle_weakened()
if(weakened)
- weakened = max(weakened-1,0)
+ weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
if(!weakened)
update_icons()
+ return weakened
+
+/mob/living/proc/handle_stuttering()
+ if(stuttering)
+ stuttering = max(stuttering-1, 0)
+ return stuttering
+
+/mob/living/proc/handle_silent()
+ if(silent)
+ silent = max(silent-1, 0)
+ return silent
+
+/mob/living/proc/handle_drugged()
+ if(druggy)
+ druggy = max(druggy-1, 0)
+ return druggy
+
+/mob/living/proc/handle_slurring()
+ if(slurring)
+ slurring = max(slurring-1, 0)
+ return slurring
+
+/mob/living/proc/handle_paralysed() // Currently only used by simple_animal.dm, treated as a special case in other mobs
+ if(paralysis)
+ AdjustParalysis(-1)
+ return paralysis
+
/mob/living/proc/handle_disabilities()
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index 06698318f44..7523a30c162 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -1,188 +1,158 @@
/mob/living/silicon/ai/Life()
- if (src.stat == 2)
+ //doesn't call parent because it's a horrible mess
+ if(stat == DEAD)
return
- else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist
- //Being dead doesn't mean your temperature never changes
- var/turf/T = get_turf(src)
- if (src.stat!=0)
- src.cameraFollow = null
- src.reset_view(null)
- src.unset_machine()
+ var/turf/T = get_turf(src)
+ if(stat != CONSCIOUS) //ai's fucked
+ cameraFollow = null
+ reset_view(null)
+ unset_machine()
- src.updatehealth()
+ updatehealth()
+ update_gravity(mob_has_gravity())
- update_gravity(mob_has_gravity())
+ if (health <= config.health_threshold_dead)
+ death()
+ return 0
- if (src.malfhack)
- if (src.malfhack.aidisabled)
- src << "\red ERROR: APC access disabled, hack attempt canceled."
- src.malfhacking = 0
- src.malfhack = null
+ if(malfhack)
+ if(malfhack.aidisabled)
+ src << "ERROR: APC access disabled, hack attempt canceled."
+ malfhacking = 0
+ malfhack = null
+ if(aiRestorePowerRoutine)
+ adjustOxyLoss(1)
+ else
+ adjustOxyLoss(-1)
- if (src.health <= config.health_threshold_dead)
- death()
- return
+ handle_stunned()
- // Handle power damage (oxy)
- if(src:aiRestorePowerRoutine != 0)
- // Lost power
- adjustOxyLoss(1)
- else
- // Gain Power
- adjustOxyLoss(-1)
+ var/is_blind = 0 //THIS WAS JUST FUCKING 'blind' WHICH CONFLICTED WITH A NORMAL VARIABLE
+ var/area/my_area = get_area(src)
+ if(istype(my_area))
+ if(!my_area.power_equip && !is_type_in_list(loc, list(/obj/item, /obj/mecha)))
+ is_blind = 1 //HOW THE FUCK DID THAT EVEN COMPILE JESUS CHRIST
- // Handle EMP-stun
- handle_stunned()
+ if(!is_blind)
+ sight |= SEE_TURFS
+ sight |= SEE_MOBS
+ sight |= SEE_OBJS
- //stage = 1
- //if (istype(src, /mob/living/silicon/ai)) // Are we not sure what we are?
- var/blind = 0
- //stage = 2
- var/area/loc = null
- if (istype(T, /turf))
- //stage = 3
- loc = T.loc
- if (istype(loc, /area))
- //stage = 4
- if (!loc.power_equip && !is_type_in_list(src.loc,list(/obj/item, /obj/mecha)))
- //stage = 5
- blind = 1
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_LEVEL_TWO
- if (!blind) //lol? if(!blind) #if(src.blind.layer) <--something here is clearly wrong :P
- //I'll get back to this when I find out how this is -supposed- to work ~Carn //removed this shit since it was confusing as all hell --39kk9t
- //stage = 4.5
- src.sight |= SEE_TURFS
- src.sight |= SEE_MOBS
- src.sight |= SEE_OBJS
- src.see_in_dark = 8
- src.see_invisible = SEE_INVISIBLE_LEVEL_TWO
- if(see_override)
- see_invisible = see_override
+ if(see_override)
+ see_invisible = see_override
- //Congratulations! You've found a way for AI's to run without using power!
- //Todo: Without snowflaking up master_controller procs find a way to make AI use_power but only when APC's clear the area usage the tick prior
- // since mobs are in master_controller before machinery. We also have to do it in a manner where we don't reset the entire area's need to update
- // the power usage.
- //
- // We can probably create a new machine that resides inside of the AI contents that uses power using the idle_usage of 1000 and nothing else and
- // be fine.
-/*
- var/area/home = get_area(src)
- if(!home) return//something to do with malf fucking things up I guess. <-- aisat is gone. is this still necessary? ~Carn
- if(home.powered(EQUIP))
- home.use_power(1000, EQUIP)
-*/
+ if(aiRestorePowerRoutine == 2)
+ src << "Alert cancelled. Power has been restored without our assistance."
+ aiRestorePowerRoutine = 0
+ blind.layer = 0
+ else if(aiRestorePowerRoutine == 3)
+ src << "Alert cancelled. Power has been restored."
+ aiRestorePowerRoutine = 0
+ blind.layer = 0
- if (src:aiRestorePowerRoutine==2)
- src << "Alert cancelled. Power has been restored without our assistance."
- src:aiRestorePowerRoutine = 0
- src.blind.layer = 0
- return
- else if (src:aiRestorePowerRoutine==3)
- src << "Alert cancelled. Power has been restored."
- src:aiRestorePowerRoutine = 0
- src.blind.layer = 0
- return
- else
+ return
- //stage = 6
+ else
- var/area/current_area = get_area(src)
+ blind.screen_loc = "1,1 to 15,15"
+ if(blind.layer != 18)
+ blind.layer = 18
+ sight &= ~SEE_TURFS
+ sight &= ~SEE_MOBS
+ sight &= ~SEE_OBJS
- src.blind.screen_loc = "1,1 to 15,15"
- if (src.blind.layer!=18)
- src.blind.layer = 18
- src.sight = src.sight&~SEE_TURFS
- src.sight = src.sight&~SEE_MOBS
- src.sight = src.sight&~SEE_OBJS
- src.see_in_dark = 0
- src.see_invisible = SEE_INVISIBLE_LIVING
+ see_in_dark = 0
+ see_invisible = SEE_INVISIBLE_LIVING
- if (((!loc.power_equip) || istype(T, /turf/space)) && !is_type_in_list(src.loc,list(/obj/item, /obj/mecha)))
- if (src:aiRestorePowerRoutine==0)
- src:aiRestorePowerRoutine = 1
+ if(((!my_area.power_equip) || istype(T, /turf/space)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha)))
+ if(!aiRestorePowerRoutine)
+ aiRestorePowerRoutine = 1
- src << "You've lost power!"
-// world << "DEBUG CODE TIME! [loc] is the area the AI is sucking power from"
- if (!is_special_character(src))
- src.set_zeroth_law("")
- //src.clear_supplied_laws() // Don't reset our laws.
- //var/time = time2text(world.realtime,"hh:mm:ss")
- //lawchanges.Add("[time] : [src.name]'s noncore laws have been reset due to power failure")
- spawn(20)
- src << "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection."
- sleep(50)
- if (loc.power_equip)
+ src << "You have lost power!"
+
+ if(!is_special_character(src))
+ set_zeroth_law("")
+
+ spawn(20)
+ src << "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection."
+ sleep(50)
+ my_area = get_area(src)
+ T = get_turf(src)
+ if(my_area && my_area.power_equip && !istype(T, /turf/space))
+ src << "Alert cancelled. Power has been restored without our assistance."
+ aiRestorePowerRoutine = 0
+ blind.layer = 0
+ return
+ src << "Fault confirmed: missing external power. Shutting down main control system to save power."
+ sleep(20)
+ src << "Emergency control system online. Verifying connection to power network."
+ sleep(50)
+ T = get_turf(src)
+ if(istype(T, /turf/space))
+ src << "Unable to verify! No power connection detected!"
+ aiRestorePowerRoutine = 2
+ return
+ src << "Connection verified. Searching for APC in power network."
+ sleep(50)
+
+ my_area = get_area(src)
+ T = get_turf(src)
+
+ var/obj/machinery/power/apc/theAPC = null
+
+ var/PRP
+ for(PRP = 1, PRP <= 4, PRP++)
+ for(var/obj/machinery/power/apc/APC in my_area)
+ if (!(APC.stat & BROKEN))
+ theAPC = APC
+ break
+
+ if(!theAPC)
+ switch(PRP)
+ if(1) src << "Unable to locate APC!"
+ else src << "Lost connection with the APC!"
+ aiRestorePowerRoutine = 2
+ return
+
+ if(my_area.power_equip)
if (!istype(T, /turf/space))
src << "Alert cancelled. Power has been restored without our assistance."
- src:aiRestorePowerRoutine = 0
- src.blind.layer = 0
+ aiRestorePowerRoutine = 0
+ blind.layer = 0
return
- src << "Fault confirmed: missing external power. Shutting down main control system to save power."
- sleep(20)
- src << "Emergency control system online. Verifying connection to power network."
- sleep(50)
- if (istype(T, /turf/space))
- src << "Unable to verify! No power connection detected!"
- src:aiRestorePowerRoutine = 2
- return
- src << "Connection verified. Searching for APC in power network."
- sleep(50)
- var/obj/machinery/power/apc/theAPC = null
-/*
- for (var/something in loc)
- if (istype(something, /obj/machinery/power/apc))
- if (!(something:stat & BROKEN))
- theAPC = something
- break
-*/
- var/PRP
- for (PRP=1, PRP<=4, PRP++)
- for (var/obj/machinery/power/apc/APC in current_area)
- if (!(APC.stat & BROKEN))
- theAPC = APC
- break
- if (!theAPC)
- switch(PRP)
- if (1) src << "Unable to locate APC!"
- else src << "Lost connection with the APC!"
- src:aiRestorePowerRoutine = 2
- return
- if (loc.power_equip)
- if (!istype(T, /turf/space))
- src << "Alert cancelled. Power has been restored without our assistance."
- src:aiRestorePowerRoutine = 0
- src.blind.layer = 0 //This, too, is a fix to issue 603
- return
- switch(PRP)
- if (1) src << "APC located. Optimizing route to APC to avoid needless power waste."
- if (2) src << "Best route identified. Hacking offline APC power port."
- if (3) src << "Power port upload access confirmed. Loading control program into APC power port software."
- if (4)
- src << "Transfer complete. Forcing APC to execute program."
- sleep(50)
- src << "Receiving control information from APC."
- sleep(2)
- //bring up APC dialog
- apc_override = 1
- theAPC.attack_ai(src)
- apc_override = 0
- src:aiRestorePowerRoutine = 3
- src << "Here are your current laws:"
- src.show_laws()
- sleep(50)
- theAPC = null
+ switch(PRP)
+ if(1) src << "APC located. Optimizing route to APC to avoid needless power waste."
+ if(2) src << "Best route identified. Hacking offline APC power port."
+ if(3) src << "Power port upload access confirmed. Loading control program into APC power port software."
+ if(4)
+ src << "Transfer complete. Forcing APC to execute program."
+ sleep(50)
+ src << "Receiving control information from APC."
+ sleep(2)
+ //bring up APC dialog
+ apc_override = 1
+ theAPC.attack_ai(src)
+ apc_override = 0
+ aiRestorePowerRoutine = 3
+ src << "Here are your current laws:"
+ src.show_laws() //WHY THE FUCK IS THIS HERE
+ sleep(50)
+ theAPC = null
process_queued_alarms()
regular_hud_updates()
- switch(src.sensor_mode)
+
+ switch(sensor_mode)
if (SEC_HUD)
- process_sec_hud(src,1,src.eyeobj)
+ process_sec_hud(src, 1, eyeobj)
if (MED_HUD)
- process_med_hud(src,1,src.eyeobj)
+ process_med_hud(src, 1, eyeobj)
/mob/living/silicon/ai/updatehealth()
if(status_flags & GODMODE)
diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm
index c272fff3b3f..38c7df68aa3 100644
--- a/code/modules/mob/living/silicon/pai/life.dm
+++ b/code/modules/mob/living/silicon/pai/life.dm
@@ -1,11 +1,9 @@
/mob/living/silicon/pai/Life()
. = ..()
if(.)
- regular_hud_updates()
-
- if(src.secHUD == 1)
+ if(secHUD == 1)
process_sec_hud(src, 1)
- if(src.medHUD == 1)
+ if(medHUD == 1)
process_med_hud(src, 1)
if(silence_time)
if(world.timeofday >= silence_time)
@@ -19,9 +17,6 @@
M.show_message("\red The data cable rapidly retracts back into its spool.", 3, "\red You hear a click and the sound of wire spooling rapidly.", 2)
qdel(src.cable)
- handle_statuses()
-
-
/mob/living/silicon/pai/updatehealth()
if(status_flags & GODMODE)
health = 100
@@ -29,5 +24,4 @@
else
health = 100 - getBruteLoss() - getFireLoss()
if(health <= 0)
- death(0)
-
+ death(0)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 33d47b2975b..6512d1b8353 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -244,8 +244,6 @@
if(!client)
return
- regular_hud_updates()
-
switch(sensor_mode)
if(SEC_HUD)
process_sec_hud(src,1)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index a51f24cc8cc..46a7c80667b 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1324,49 +1324,6 @@ mob/proc/yank_out_object()
host.ckey = src.ckey
host << "You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent."
-/mob/living/proc/handle_statuses()
- handle_stunned()
- handle_weakened()
- handle_stuttering()
- handle_silent()
- handle_drugged()
- handle_slurring()
-
-/mob/living/proc/handle_stunned()
- if(stunned)
- AdjustStunned(-1)
- return stunned
-
-/mob/living/proc/handle_weakened()
- if(weakened)
- weakened = max(weakened-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times
- return weakened
-
-/mob/living/proc/handle_stuttering()
- if(stuttering)
- stuttering = max(stuttering-1, 0)
- return stuttering
-
-/mob/living/proc/handle_silent()
- if(silent)
- silent = max(silent-1, 0)
- return silent
-
-/mob/living/proc/handle_drugged()
- if(druggy)
- druggy = max(druggy-1, 0)
- return druggy
-
-/mob/living/proc/handle_slurring()
- if(slurring)
- slurring = max(slurring-1, 0)
- return slurring
-
-/mob/living/proc/handle_paralysed() // Currently only used by simple_animal.dm, treated as a special case in other mobs
- if(paralysis)
- AdjustParalysis(-1)
- return paralysis
-
/mob/proc/assess_threat() //For sec bot threat assessment
return
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index 097dc03e6e1..ceaf2fdc99f 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -448,6 +448,14 @@
src.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)
+
/obj/item/weapon/reagent_containers/food/snacks/donut/chaos
name = "Chaos Donut"
desc = "Like life, it never quite tastes the same."
diff --git a/icons/obj/flora/plants.dmi b/icons/obj/flora/plants.dmi
index 38ef19cacb1..fbc2d62dcad 100644
Binary files a/icons/obj/flora/plants.dmi and b/icons/obj/flora/plants.dmi differ
diff --git a/icons/obj/plants.dmi b/icons/obj/plants.dmi
deleted file mode 100644
index 6fce62f4f13..00000000000
Binary files a/icons/obj/plants.dmi and /dev/null differ