mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge remote-tracking branch 'upstream/master' into third_times_the_charm_questionmark
Conflicts: code/modules/mob/living/carbon/human/species/species.dm
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -76,8 +76,6 @@
|
||||
silent = 0
|
||||
return 1
|
||||
|
||||
handle_statuses()
|
||||
|
||||
. = 1
|
||||
|
||||
/mob/living/carbon/brain/handle_vision()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 << "<span class='notice'>You're too exhausted to keep going...</span>"
|
||||
Weaken(5)
|
||||
setStaminaLoss(health - 2)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 << "<span class='danger'>ERROR: APC access disabled, hack attempt canceled.</span>"
|
||||
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] <b>:</b> [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 << "<span class='danger'>You have lost power!</span>"
|
||||
|
||||
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)
|
||||
|
||||
@@ -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)
|
||||
@@ -244,8 +244,6 @@
|
||||
if(!client)
|
||||
return
|
||||
|
||||
regular_hud_updates()
|
||||
|
||||
switch(sensor_mode)
|
||||
if(SEC_HUD)
|
||||
process_sec_hud(src,1)
|
||||
|
||||
@@ -1324,49 +1324,6 @@ mob/proc/yank_out_object()
|
||||
host.ckey = src.ckey
|
||||
host << "<span class='info'>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.</span>"
|
||||
|
||||
/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
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user