diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index e40634abad..65ffba2f22 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -162,6 +162,19 @@ A.power_environ = 1 A.power_change() +/proc/power_restore_quick() + + command_alert("All SMESs on [station_name()] have been recharged. We apologize for the inconvenience.", "Power Systems Nominal") + world << sound('poweron.ogg') + for(var/obj/machinery/power/smes/S in world) + if(S.z != 1) + continue + S.charge = S.capacity + S.output = 200000 + S.online = 1 + S.updateicon() + S.power_change() + /proc/appendicitis() for(var/mob/living/carbon/human/H in living_mob_list) var/foundAlready = 0 // don't infect someone that already has the virus diff --git a/code/game/magic/cultist/runes.dm b/code/game/magic/cultist/runes.dm index f1a9e3b713..47111e106d 100644 --- a/code/game/magic/cultist/runes.dm +++ b/code/game/magic/cultist/runes.dm @@ -538,15 +538,16 @@ var/list/sacrificed = list() var/list/mob/living/carbon/human/cultsinrange = list() var/list/mob/living/carbon/human/victims = list() for(var/mob/living/carbon/human/V in src.loc)//Checks for non-cultist humans to sacrifice - if(!(iscultist(V))) - victims += V - for(var/mob/living/carbon/brain/V in src.loc)//Checks for brains to sacrifice - victims += V - for(var/mob/living/silicon/V in src.loc)//Checks for borgs/AIs to sacrifice - victims += V - for(var/obj/item/device/mmi/V in src.loc)//Checks for MMIs - if(V.brainmob) - victims += V.brainmob + if(ishuman(V) || isbrain(V) || issilicon(V))// || istype(V,/obj/item/device/mmi)) + if(!(iscultist(V))) + victims += V//Checks for cult status and mob type + for(var/obj/item/I in src.loc)//Checks for MMIs/brains/Intellicards + if(istype(I,/obj/item/brain) || istype(I,/obj/item/device/mmi)) + if(hasvar(I,"brainmob"))//Makes sure it has a brainmob + victims += I:brainmob + if(istype(I,/obj/item/device/aicard)) + for(var/mob/living/silicon/ai/A in I)//Because AIs are just stored inside the card and not attached to a var + victims += A for(var/mob/living/carbon/C in orange(1,src)) if(iscultist(C) && !C.stat) cultsinrange += C @@ -558,8 +559,6 @@ var/list/sacrificed = list() sacrificed += H.mind if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete." @@ -576,8 +575,6 @@ var/list/sacrificed = list() usr << "\red However, this soul was not enough to gain His favor." if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() else @@ -589,8 +586,6 @@ var/list/sacrificed = list() usr << "\red However, a mere dead body is not enough to satisfy Him." if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() else @@ -605,8 +600,6 @@ var/list/sacrificed = list() usr << "\red However, a mere dead body is not enough to satisfy Him." if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() else @@ -620,8 +613,6 @@ var/list/sacrificed = list() usr << "\red However, this soul was not enough to gain His favor." if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() else @@ -633,8 +624,6 @@ var/list/sacrificed = list() usr << "\red However, a mere dead body is not enough to satisfy Him." if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() else @@ -649,8 +638,6 @@ var/list/sacrificed = list() usr << "\red However, a mere dead body is not enough to satisfy Him." if(isrobot(H)) H.dust()//To prevent the MMI from remaining - else if(isbrain(H)) - H.death()//Since they don't have a proper gib else H.gib() for(var/mob/living/carbon/monkey/M in src.loc) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 81f261b1eb..34f416ca81 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1673,6 +1673,12 @@ var/global/BSACooldown = 0 log_admin("[key_name(usr)] made all areas unpowered", 1) message_admins("\blue [key_name_admin(usr)] made all areas unpowered", 1) power_failure() + if("quickpower") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","QP") + log_admin("[key_name(usr)] made all SMESs powered", 1) + message_admins("\blue [key_name_admin(usr)] made all SMESs powered", 1) + power_restore_quick() if("activateprison") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","AP") @@ -2460,6 +2466,7 @@ var/global/BSACooldown = 0 Remove firesuits, grilles, and pods
Make all areas powered
Make all areas unpowered
+Power all SMES
Toggle Prison Shuttle Status(Use with S/R)
Send Prison Shuttle
Return Prison Shuttle
diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index f7eb90cbbd..62916d818d 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -14,4 +14,30 @@ tod = worldtime2text() //weasellos time of death patch if(mind) mind.store_memory("Time of death: [tod]", 0) //mind. ? - return ..(gibbed) \ No newline at end of file + return ..(gibbed) + +/mob/living/carbon/brain/gib() + death(1) + var/atom/movable/overlay/animation = null + monkeyizing = 1 + canmove = 0 + icon = null + invisibility = 101 + + animation = new(loc) + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = src + +// flick("gibbed-m", animation) + gibs(loc, viruses, dna) + + dead_mob_list -= src + if(container && istype(container, /obj/item/device/mmi)) + del(container)//Gets rid of the MMI if there is one + if(loc) + if(istype(loc,/obj/item/brain)) + del(loc)//Gets rid of the brain item + spawn(15) + if(animation) del(animation) + if(src) del(src) \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a1246986b5..39825bcafa 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -27,7 +27,7 @@ src.health = 100 src.stat = 0 else - src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() - src.halloss + src.health = src.maxHealth - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss() - src.halloss //This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually diff --git a/code/modules/mob/living/simple_animal/mouse.dm b/code/modules/mob/living/simple_animal/mouse.dm index 5cc26f8d75..8d00fe8ca3 100644 --- a/code/modules/mob/living/simple_animal/mouse.dm +++ b/code/modules/mob/living/simple_animal/mouse.dm @@ -11,6 +11,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 + maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat response_help = "pets the" diff --git a/code/modules/mob/living/simple_animal/mushroom.dm b/code/modules/mob/living/simple_animal/mushroom.dm index 7db01ad6f9..736aeeed6b 100644 --- a/code/modules/mob/living/simple_animal/mushroom.dm +++ b/code/modules/mob/living/simple_animal/mushroom.dm @@ -6,6 +6,7 @@ icon_dead = "mushroom_dead" speak_chance = 0 turns_per_move = 1 + maxHealth = 5 health = 5 meat_type = /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice response_help = "pets the" diff --git a/code/modules/mob/living/simple_animal/tomato.dm b/code/modules/mob/living/simple_animal/tomato.dm index a22dc47fab..244c070a71 100644 --- a/code/modules/mob/living/simple_animal/tomato.dm +++ b/code/modules/mob/living/simple_animal/tomato.dm @@ -6,6 +6,7 @@ icon_dead = "tomato_dead" speak_chance = 0 turns_per_move = 5 + maxHealth = 15 health = 15 meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat response_help = "prods the" diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index c8003d6c06..7bca6a4337 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -332,9 +332,12 @@ field_generator power level display if (isnull(FG)) continue FG.connected_gens.Remove(src) + if(!FG.clean_up)//Makes the other gens clean up as well + FG.cleanup() connected_gens.Remove(FG) connected_gens = list() clean_up = 0 + update_icon() //This is here to help fight the "hurr durr, release singulo cos nobody will notice before the //singulo eats the evidence". It's not fool-proof but better than nothing.