From 4b72ada290eb2bc8fe575fbac9312410860a44ac Mon Sep 17 00:00:00 2001 From: "sieve32@gmail.com" Date: Mon, 13 Aug 2012 15:30:36 +0000 Subject: [PATCH] -Cleaned up the code to sacrifice borgs, AIs, and brains. (Also made it possible to sacrifice AIs on intelliCards) -Gave brains a proper gib() so they are actually gone -Added a proc to the 'Secrets' panel, a variation of power the station that instead is MUCH faster and just powers all SMES, turns on output, and sets it to max (helpful for testing and it doesn't leave the server frozen for 60 seconds to process) -Added maxHealth to mice, killer tomatos, and walking mushrooms (They started with 5 health but could be 'healed' up to 20) -Made the updatehealth() actually usable outside of humans by making it use maxHealth instead of just '100' -Fix for shield generator sprites not updating properly, caused by not all generators actually updating on powerloss, and adding an update_icon() where needed Fixes Issue 751 git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4393 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/gamemodes/events.dm | 13 ++++++++ code/game/magic/cultist/runes.dm | 33 ++++++------------- code/modules/admin/admin.dm | 7 ++++ code/modules/mob/living/carbon/brain/death.dm | 28 +++++++++++++++- code/modules/mob/living/living.dm | 2 +- .../modules/mob/living/simple_animal/mouse.dm | 1 + .../mob/living/simple_animal/mushroom.dm | 1 + .../mob/living/simple_animal/tomato.dm | 1 + .../power/singularity/field_generator.dm | 3 ++ 9 files changed, 64 insertions(+), 25 deletions(-) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index e40634abad4..65ffba2f22f 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 f1a9e3b7133..47111e106df 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 81f261b1eba..34f416ca81c 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 f7eb90cbbd6..62916d818da 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 a1246986b56..39825bcafa2 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 5cc26f8d754..8d00fe8ca3e 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 7db01ad6f9e..736aeeed6be 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 a22dc47fabe..244c070a717 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 c8003d6c06d..7bca6a4337c 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.