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