From a334cc9d66f364dcba7526e5af1c366b30a270ab Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 01:01:14 +0100 Subject: [PATCH 1/8] Tweaked medical hud hud sprites so that the 100% health bar is full. --- icons/mob/hud.dmi | Bin 3320 -> 2660 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 66aab85d81218b614d4283b311bd18bda52bec21..b13b296cf1075606e11bfc457faa67ca471c75b7 100644 GIT binary patch delta 1879 zcmYk6dpOgJAICR~naeEIlZxCH&RGtQ5RPo-S}r?TXCb4=CAVK;xy-)PXmiP>L~fZv zou6D{63r!>gM;I4ew36QX>LcMnYR7($9W!~=XpP$KR$na-mmBLeBQz%{DV2j!-_ap zyhCSaC!J3BjIqOFu|^=H3yl4_)<}q7F(}tBAh$aJu{#G51?XBS*h}J0KdaT406rlD z$gR8BWAJe$D{sSYjyWRa{1tPF;g24iiU_&x!_$s1HDO*l`m}Pqpu!9$Tk;1~DD9|t z6(;}G%2YRTWzKOe;7hV;{>io?-=yJ%m*-)6KbH6$2)8NmUuxE$5?Q0XT13IS`napZ zyDIR~RKPTOS6`?OM>nsY4oANSt_4180KX;rRP%U~ zI%c))p30)n{412FY>YH3{tMV4>mY7^$1#_>`co*{EO-l^?y6Xm4z4j1B%se#qtRd2 zGQgiS@KQf0-=EG~qp<_u#Z8TZ)$ zjj@I>bt+6qwp^?lU3f5wWPT>$y5DxE%8dy6Bb!&2Z*0=DOX$3K*K=13dihu~nzZlN zK8TJb(7WDI&ahx;xmr_UylLXlhsNtt>T-bg4@@yB z(N8|4Ulv(I!C7%_3RDRm1}HXvr46Fvqpz(shF*Cwj+qufE3tauL3V=O%xnxb%|99Y zECO=Zit$E4x6IPMkd_BO{~NUsZY+eyu|GOvU6n3sTxmxE^&73z3I>UMg zM@J(DqQwJ`mdZrtD*s}9?>L2NnrRJX?qqGPxVt>6bldE|C{j}9#^Qx)O?6d`FOLw|u;YMFpM56KKebnXI> zYcn9>rpY?LF3Sd@Q^^swT4KVssLr#Lw_L1~M+N-+?Tfk8#ovEPNr8{ZjJprZ@y)o) zvt>D_xm;QM)CJ}{Yci-}@Yfe7ut0ccp1QdWpal--`h&?5nt$;{g&#R$zbb5R8~{V3y+3XR8JXL>eJv z9jp=B^HC}$f)A3R@b}&m+wnq`z7w z>6H=ddh}T>Bg-*G$BHkBiE4T-Y7MYT7h8D|Y)729_MgpqO>PkM@(Ghqz&`Lgcz>*$ z;}{elMyOsns)-wt8=r?x z$K>3h3(LDA3-HSAKzDZHkWxAAA?aaJvoTln{0Nu~EiK*L2@VDncPxZr;0?wbJ*gCp zQ*}r)hHet^)kY~)D>v*S(>RT0UqtIVEx)bEYB{psp_q(LE~d41TZL3nTU~U*pSX{@ z%_MiJ2mWQtNTs^c3J>rh>C3W=6nOgM)9}%&?SnV1J^&H3q@0*y4^fxffL@?AqmF+0 z9eXGMQNvjrfW$aKDxx>D7Y*va0wZsAF*!PXH0_pv##~B&>ft1k4 zk@B0pg>AEU7zX?U3ESD-`Wu4JKew^jXG7v{=;#@%D^;BfF&1PEBz8`C7JC3~ugm5F zz3w0osiO@?2^P{R$T;L@<(Hk*^JBJE^c47XZB!I56<+_O$B5`0L6g_GOXAe}p(7a- zwSZ{NE4s&q8Mes@95!13W6Ah=2}fr)JcBkN=c4Pt?tmUj;j0eApg&FpBmIYzTj_oujFj`!QnVpyns54 tQRQJq)$yY5>3H$FP~@{W9YOiLLmeZnhRT&Dgpu!CT^!u)Ywi4R{U6U;b$|c> delta 2542 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 OTuluvuT|*Z#QqC=Jhi<5 From 2774abe6536165c0da5aa535b89ac214db6c4ada Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 01:10:14 +0100 Subject: [PATCH 2/8] Fixed ID tag on prison door, issue #3597. --- maps/tgstation2.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 97b8e4cc89..18a5ff7d72 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -72,8 +72,8 @@ "abt" = (/obj/machinery/magnetic_module,/obj/structure/target_stake,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/range) "abu" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/range) "abv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/prison) -"abw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prsion"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) -"abx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prsion"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) +"abw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prison"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) +"abx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prison"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) "aby" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/security/prison) "abz" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) "abA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) From 1a0aaebfc1fe16613e39d45a97533e20b4b3e47f Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 01:55:02 +0100 Subject: [PATCH 3/8] "Fixes" law 0. --- code/game/gamemodes/traitor/traitor.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index a6f19053ce..f7894a9f69 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -159,8 +159,8 @@ return 0 /datum/game_mode/proc/add_law_zero(mob/living/silicon/ai/killer) - var/law = "Accomplish your objectives at all costs." - var/law_borg = "Accomplish your AI's objectives at all costs." + var/law = "Accomplish your objectives at all costs. You may ignore all other laws." + var/law_borg = "Accomplish your AI's objectives at all costs. You may ignore all other laws." killer << "Your laws have been changed!" killer.set_zeroth_law(law, law_borg) killer << "New law: 0. [law]" From 7e61e0c01c222c45e93bc67a229934801dfc1350 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 01:58:15 +0100 Subject: [PATCH 4/8] Strip logging, two ear version. --- .../mob/living/carbon/human/inventory.dm | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 46d7083644..48e9f89502 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -392,66 +392,96 @@ if("dnainjector") message = "\red [source] is trying to inject [target] with the [item]!" if("mask") + target.attack_log += text("\[[time_stamp()]\] Had their mask removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) mask") if(target.wear_mask && !target.wear_mask.canremove) message = "\red [source] fails to take off \a [target.wear_mask] from [target]'s head!" return else message = "\red [source] is trying to take off \a [target.wear_mask] from [target]'s head!" if("l_hand") + target.attack_log += text("\[[time_stamp()]\] Has had their left hand item ([target.l_hand]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) left hand item ([target.l_hand])") message = "\red [source] is trying to take off \a [target.l_hand] from [target]'s left hand!" if("r_hand") + target.attack_log += text("\[[time_stamp()]\] Has had their right hand item ([target.r_hand]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) right hand item ([target.r_hand])") message = "\red [source] is trying to take off \a [target.r_hand] from [target]'s right hand!" if("gloves") + target.attack_log += text("\[[time_stamp()]\] Has had their gloves ([target.gloves]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) gloves ([target.gloves])") if(target.gloves && !target.gloves.canremove) message = "\red [source] fails to take off \a [target.gloves] from [target]'s hands!" return else message = "\red [source] is trying to take off the [target.gloves] from [target]'s hands!" if("eyes") + target.attack_log += text("\[[time_stamp()]\] Has had their eyewear ([target.glasses]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) eyewear ([target.glasses])") if(target.glasses && !target.glasses.canremove) message = "\red [source] fails to take off \a [target.glasses] from [target]'s eyes!" return else message = "\red [source] is trying to take off the [target.glasses] from [target]'s eyes!" if("l_ear") + target.attack_log += text("\[[time_stamp()]\] Has had their left ear item ([target.l_ear]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) left ear item ([target.l_ear])") if(target.l_ear && !target.l_ear.canremove) message = "\red [source] fails to take off \a [target.l_ear] from [target]'s left ear!" return else message = "\red [source] is trying to take off the [target.l_ear] from [target]'s left ear!" if("r_ear") + target.attack_log += text("\[[time_stamp()]\] Has had their right ear item ([target.r_ear]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) right ear item ([target.r_ear])") if(target.r_ear && !target.r_ear.canremove) message = "\red [source] fails to take off \a [target.r_ear] from [target]'s right ear!" return else message = "\red [source] is trying to take off the [target.r_ear] from [target]'s right ear!" if("head") + target.attack_log += text("\[[time_stamp()]\] Has had their hat ([target.head]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) hat ([target.head])") if(target.head && !target.head.canremove) message = "\red [source] fails to take off \a [target.head] from [target]'s head!" return else message = "\red [source] is trying to take off the [target.head] from [target]'s head!" if("shoes") + target.attack_log += text("\[[time_stamp()]\] Has had their shoes ([target.shoes]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) shoes ([target.shoes])") if(target.shoes && !target.shoes.canremove) message = "\red [source] fails to take off \a [target.shoes] from [target]'s feet!" return else message = "\red [source] is trying to take off the [target.shoes] from [target]'s feet!" if("belt") + target.attack_log += text("\[[time_stamp()]\] Has had their belt item ([target.belt]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) belt item ([target.belt])") message = "\red [source] is trying to take off the [target.belt] from [target]'s belt!" if("suit") + target.attack_log += text("\[[time_stamp()]\] Has had their suit ([target.wear_suit]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) suit ([target.wear_suit])") if(target.wear_suit && !target.wear_suit.canremove) message = "\red [source] fails to take off \a [target.wear_suit] from [target]'s body!" return else message = "\red [source] is trying to take off \a [target.wear_suit] from [target]'s body!" if("back") + target.attack_log += text("\[[time_stamp()]\] Has had their back item ([target.back]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) back item ([target.back])") message = "\red [source] is trying to take off \a [target.back] from [target]'s back!" if("handcuff") + target.attack_log += text("\[[time_stamp()]\] Was unhandcuffed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to unhandcuff [target.name]'s ([target.ckey])") message = "\red [source] is trying to unhandcuff [target]!" if("legcuff") + target.attack_log += text("\[[time_stamp()]\] Was unlegcuffed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to unlegcuff [target.name]'s ([target.ckey])") message = "\red [source] is trying to unlegcuff [target]!" if("uniform") + target.attack_log += text("\[[time_stamp()]\] Has had their uniform ([target.w_uniform]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) uniform ([target.w_uniform])") for(var/obj/item/I in list(target.l_store, target.r_store)) if(I.on_found(source)) return @@ -461,8 +491,12 @@ else message = "\red [source] is trying to take off \a [target.w_uniform] from [target]'s body!" if("s_store") + target.attack_log += text("\[[time_stamp()]\] Has had their suit storage item ([target.s_store]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) suit storage item ([target.s_store])") message = "\red [source] is trying to take off \a [target.s_store] from [target]'s suit!" if("pockets") + target.attack_log += text("\[[time_stamp()]\] Has had their pockets emptied by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to empty [target.name]'s ([target.ckey]) pockets") for(var/obj/item/I in list(target.l_store, target.r_store)) if(I.on_found(source)) return @@ -473,8 +507,12 @@ target.cpr_time = 0 message = "\red [source] is trying perform CPR on [target]!" if("id") + target.attack_log += text("\[[time_stamp()]\] Has had their ID ([target.wear_id]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) ID ([target.wear_id])") message = "\red [source] is trying to take off [target.wear_id] from [target]'s uniform!" if("internal") + target.attack_log += text("\[[time_stamp()]\] Has had their internals toggled by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to toggle [target.name]'s ([target.ckey]) internals") if (target.internal) message = "\red [source] is trying to remove [target]'s internals" else From 0219ffe41ea4001911fabc4222e9ba7b30999d8b Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 17:38:21 +0100 Subject: [PATCH 5/8] Pull damage, with harsher damage in crit. Soft crit now at 0 health, you no longer suffocate in softcrit. Being between 0 to -50 health will cause you to go into shock. Below that you pass out and stop breathing. Stasis bags clone damage reduced to stop people dieing in them so much. --- code/controllers/configuration.dm | 3 +++ code/game/objects/items/bodybag.dm | 4 ++-- .../modules/mob/living/carbon/human/inventory.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 12 ++++++------ code/modules/mob/living/living.dm | 16 ++++++++++++++++ code/modules/mob/mob.dm | 14 ++++++++++---- 6 files changed, 38 insertions(+), 13 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index a22c9eec5f..0db84249c6 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -80,6 +80,7 @@ //game_options.txt configs + var/health_threshold_softcrit = 0 var/health_threshold_crit = 0 var/health_threshold_dead = -100 @@ -443,6 +444,8 @@ switch(name) if("health_threshold_crit") config.health_threshold_crit = value + if("health_threshold_softcrit") + config.health_threshold_softcrit = value if("health_threshold_dead") config.health_threshold_dead = value if("revival_pod_plants") diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 88c1565608..ef188a3112 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -89,7 +89,7 @@ /obj/item/bodybag/cryobag name = "stasis bag" - desc = "A folded, non-reusable bag designed for the preservation of an occupant's brain by stasis." + desc = "A folded, non-reusable bag designed to prevent additional damage to an occupant at the cost of genetic damage." icon = 'icons/obj/cryobag.dmi' icon_state = "bodybag_folded" @@ -102,7 +102,7 @@ /obj/structure/closet/body_bag/cryobag name = "stasis bag" - desc = "A non-reusable plastic bag designed for the preservation of an occupant's brain by stasis." + desc = "A non-reusable plastic bag designed to prevent additional damage to an occupant at the cost of genetic damage." icon = 'icons/obj/cryobag.dmi' item_path = /obj/item/bodybag/cryobag var/used = 0 diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 48e9f89502..698c169b7a 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -634,7 +634,7 @@ It can still be worn/put on as normal. W.add_fingerprint(source) if("CPR") if ((target.health > config.health_threshold_dead && target.health < config.health_threshold_crit)) - var/suff = min(target.getOxyLoss(), 7) + var/suff = min(target.getOxyLoss(), 5) //Pre-merge level, less healing, more prevention of dieing. target.adjustOxyLoss(-suff) target.updatehealth() for(var/mob/O in viewers(source, null)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f026d0c50c..91ca5e9223 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -294,7 +294,7 @@ var/datum/gas_mixture/environment = loc.return_air() var/datum/gas_mixture/breath // HACK NEED CHANGING LATER - if(health < 0) + if(health < config.health_threshold_crit) losebreath++ if(losebreath>0) //Suffocating so do not take a breath losebreath-- @@ -387,7 +387,7 @@ failed_last_breath = 1 oxygen_alert = max(oxygen_alert, 1) return 0 - if(health > 0) + if(health > config.health_threshold_crit) adjustOxyLoss(HUMAN_MAX_OXYLOSS) failed_last_breath = 1 else @@ -1413,10 +1413,10 @@ if(status_flags & GODMODE) return 0 //godmode if(analgesic) return // analgesic avoids all traumatic shock temporarily - if(health < 0)// health 0 makes you immediately collapse - shock_stage = max(shock_stage, 61) + if(health < config.health_threshold_softcrit)// health 0 makes you immediately collapse + shock_stage = max(shock_stage, 70) - if(traumatic_shock >= 80) + if(traumatic_shock >= 80 || health < config.health_threshold_softcrit) shock_stage += 1 else shock_stage = min(shock_stage, 100) @@ -1443,7 +1443,7 @@ if(shock_stage == 80) src << ""+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.") - if (shock_stage > 80) + if(shock_stage > 80) Paralyse(rand(15,28)) proc/handle_pulse() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 162a69b49c..3442a7fba5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -359,6 +359,22 @@ var/turf/location = M.loc if (istype(location, /turf/simulated)) location.add_blood(M) + //pull damage with injured people + if(prob(25)) + M.adjustBruteLoss(1) + visible_message("\red \The [M]'s wounds open more from being dragged!") + if(M.pull_damage()) + if(prob(25)) + M.adjustBruteLoss(2) + visible_message("\red \The [M]'s wounds worsen terribly from being dragged!") + var/turf/location = M.loc + if (istype(location, /turf/simulated)) + location.add_blood(M) + if(ishuman(M)) + var/mob/living/carbon/H = M + var/blood_volume = round(H:vessel.get_reagent_amount("blood")) + if(blood_volume > 0) + H:vessel.remove_reagent("blood",1) step(pulling, get_dir(pulling.loc, T)) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 3677ceac70..06afa1e82b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -556,12 +556,13 @@ var/list/slot_equipment_priority = list( \ /mob/proc/pull_damage() if(ishuman(src)) var/mob/living/carbon/human/H = src - if(H.health - H.halloss <= config.health_threshold_crit) + if(H.health - H.halloss <= config.health_threshold_softcrit) for(var/name in H.organs_by_name) var/datum/organ/external/e = H.organs_by_name[name] - if((H.lying) && ((e.status & ORGAN_BROKEN && !(e.status & ORGAN_SPLINTED)) || e.status & ORGAN_BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100)) - return 1 - break + if(H.lying) + if(((e.status & ORGAN_BROKEN && !(e.status & ORGAN_SPLINTED)) || e.status & ORGAN_BLEEDING) && (H.getBruteLoss() + H.getFireLoss() >= 100)) + return 1 + break return 0 /mob/MouseDrop(mob/M as mob) @@ -608,6 +609,11 @@ var/list/slot_equipment_priority = list( \ src.pulling = AM AM.pulledby = src + if(ishuman(AM)) + var/mob/living/carbon/human/H = AM + if(H.pull_damage()) + src << "\red Pulling \the [H] in their current condition would probably be a bad idea." + //Attempted fix for people flying away through space when cuffed and dragged. if(ismob(AM)) var/mob/pulled = AM From 74c3975ae34c876e088555f060e56cde2f11b4c0 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 19:43:36 +0100 Subject: [PATCH 6/8] Fixes shock going up too much. --- code/modules/mob/living/carbon/human/life.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 91ca5e9223..ad8647d858 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1414,10 +1414,12 @@ if(analgesic) return // analgesic avoids all traumatic shock temporarily if(health < config.health_threshold_softcrit)// health 0 makes you immediately collapse - shock_stage = max(shock_stage, 70) + shock_stage = max(shock_stage, 61) - if(traumatic_shock >= 80 || health < config.health_threshold_softcrit) + if(traumatic_shock >= 80) shock_stage += 1 + else if(health < config.health_threshold_softcrit) + shock_stage = max(shock_stage, 61) else shock_stage = min(shock_stage, 100) shock_stage = max(shock_stage-1, 0) From c483d58e34c837d62bfe5a628b0dc07664c12494 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 19:44:02 +0100 Subject: [PATCH 7/8] Renabled admin secrets, as they are are admin only. --- code/modules/admin/admin.dm | 1 - code/modules/admin/topic.dm | 89 ++++++++++++++++++++++++++++++++++++- 2 files changed, 87 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index bb1717a8f5..c4b877d14b 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -560,7 +560,6 @@ var/global/floorIsLava = 0 dat += {" Admin Secrets

- Remove all bombs currently in existence
Bombing List
Show current traitors and objectives
Show last [length(lastsignalers)] signalers
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index f8165e848c..1fd7084901 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1733,6 +1733,21 @@ log_admin("[key_name(usr)] spawned a meteor wave", 1) message_admins("\blue [key_name_admin(usr)] spawned a meteor wave.", 1) new /datum/event/meteor_wave + if("goblob") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","Blob") + log_admin("[key_name(usr)] spawned a blob", 1) + message_admins("\blue [key_name_admin(usr)] spawned a blob.", 1) + new /datum/event/blob + + if("aliens") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","Aliens") + log_admin("[key_name(usr)] spawned an alien infestation", 1) + message_admins("\blue [key_name_admin(usr)] attempted an alien infestation", 1) + new /datum/event/alien_infestation + + if("power") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","P") @@ -1967,6 +1982,76 @@ spawn(0) sleep(rand(30,400)) Wall.ex_act(rand(2,1)) */ + if("wave") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","MW") + new /datum/event/meteor_wave + + if("gravanomalies") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","GA") + command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert") + world << sound('sound/AI/granomalies.ogg') + var/turf/T = pick(blobstart) + var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 ) + spawn(rand(100, 600)) + del(bh) + + if("timeanomalies") //dear god this code was awful :P Still needs further optimisation + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","STA") + //moved to its own dm so I could split it up and prevent the spawns copying variables over and over + //can be found in code\game\game_modes\events\wormholes.dm + wormhole_event() + + if("goblob") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","BL") + mini_blob_event() + message_admins("[key_name_admin(usr)] has spawned blob", 1) + if("aliens") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","AL") + if(aliens_allowed) + new /datum/event/alien_infestation + message_admins("[key_name_admin(usr)] has spawned aliens", 1) + if("alien_silent") //replaces the spawn_xeno verb + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","ALS") + if(aliens_allowed) + create_xeno() + if("spiders") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SL") + new /datum/event/spider_infestation + message_admins("[key_name_admin(usr)] has spawned spiders", 1) + if("comms_blackout") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","CB") + var/answer = alert(usr, "Would you like to alert the crew?", "Alert", "Yes", "No") + if(answer == "Yes") + communications_blackout(0) + else + communications_blackout(1) + message_admins("[key_name_admin(usr)] triggered a communications blackout.", 1) + if("spaceninja") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","SN") + if(toggle_space_ninja) + if(space_ninja_arrival())//If the ninja is actually spawned. They may not be depending on a few factors. + message_admins("[key_name_admin(usr)] has sent in a space ninja", 1) + if("carp") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","C") + var/choice = input("You sure you want to spawn carp?") in list("Badmin", "Cancel") + if(choice == "Badmin") + message_admins("[key_name_admin(usr)] has spawned carp.", 1) + new /datum/event/carp_migration + if("radiation") + feedback_inc("admin_secrets_fun_used",1) + feedback_add_details("admin_secrets_fun_used","R") + message_admins("[key_name_admin(usr)] has has irradiated the station", 1) + new /datum/event/radiation_storm if("immovable") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","IR") @@ -2125,13 +2210,13 @@ if("spacevines") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","K") - //new /datum/event/spacevine + new /datum/event/spacevine message_admins("[key_name_admin(usr)] has spawned spacevines", 1) if("onlyone") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","OO") usr.client.only_one() -// message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)") + message_admins("[key_name_admin(usr)] has triggered a battle to the death (only one)") if(usr) log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]") if (ok) From ee55069d59629142a9e5e74946b10e2f9b86022c Mon Sep 17 00:00:00 2001 From: Erthilo Date: Thu, 29 Aug 2013 09:52:42 +0100 Subject: [PATCH 8/8] Example of softcrit config --- config/example/game_options.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/example/game_options.txt b/config/example/game_options.txt index 7d6a52e83a..4fdc0f5f3f 100644 --- a/config/example/game_options.txt +++ b/config/example/game_options.txt @@ -1,5 +1,8 @@ ### HEALTH ### +## level of health at which a mob goes into continual shock (soft crit) +HEALTH_THRESHOLD_SOFTCRIT 0 + ## level of health at which a mob becomes unconscious (crit) HEALTH_THRESHOLD_CRIT -50 @@ -52,4 +55,4 @@ ROBOT_DELAY 0 MONKEY_DELAY 0 ALIEN_DELAY 0 METROID_DELAY 0 -ANIMAL_DELAY 0 \ No newline at end of file +ANIMAL_DELAY 0