From 783e437c5e2be00e84a5b4298377bc6f2f6bf325 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 7 May 2015 09:49:53 +0200 Subject: [PATCH 01/27] Enforces antagHUD restrictions. antagHUD checks were missing in a few places. Can no longer join as drone, ERT member, or pAI if you have enabled antagHUD. --- code/game/response_team.dm | 4 +++- code/modules/client/client procs.dm | 11 +++++++++++ code/modules/mob/dead/observer/observer.dm | 11 ++++++++--- code/modules/mob/living/carbon/brain/posibrain.dm | 2 +- code/modules/mob/living/silicon/pai/recruit.dm | 4 ++-- .../living/silicon/robot/drone/drone_manufacturer.dm | 3 +++ code/modules/mob/new_player/new_player.dm | 3 +++ 7 files changed, 31 insertions(+), 7 deletions(-) diff --git a/code/game/response_team.dm b/code/game/response_team.dm index dafd819016..416edf78ca 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -38,10 +38,12 @@ var/can_call_ert log_admin("[key_name(usr)] used Dispatch Response Team.") trigger_armed_response_team(1) - client/verb/JoinResponseTeam() set category = "IC" + if(!MayRespawn(1)) + return + if(istype(usr,/mob/dead/observer) || istype(usr,/mob/new_player)) if(!send_emergency_team) usr << "No emergency response team is currently being sent." diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index a8efe68418..d68356792c 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -302,3 +302,14 @@ 'html/images/ntlogo.png', 'html/images/talisman.png' ) + + +mob/proc/MayRespawn() + return 0 + +client/proc/MayRespawn() + if(mob) + return mob.MayRespawn() + + // Something went wrong, client is usually kicked or transfered to a new mob at this point + return 0 diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 058f5d6044..5f1c1cb7b7 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -427,9 +427,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp src << "Spawning as a mouse is currently disabled." return - var/mob/dead/observer/M = usr - if(config.antag_hud_restricted && M.has_enabled_antagHUD == 1) - src << "antagHUD restrictions prevent you from spawning in as a mouse." + if(!MayRespawn(1)) return var/timedifference = world.time - client.time_died_as_mouse @@ -620,3 +618,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/canface() return 1 + +mob/dead/observer/MayRespawn(var/feedback = 0) + if(config.antag_hud_restricted && has_enabled_antagHUD == 1) + if(feedback) + src << "antagHUD restrictions prevent you from respawning." + return 0 + return 1 diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 08f2e34243..4f4543b3b9 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -26,7 +26,7 @@ /obj/item/device/mmi/digital/posibrain/proc/request_player() for(var/mob/dead/observer/O in player_list) - if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted) + if(!O.MayRespawn()) continue if(jobban_isbanned(O, "AI") && jobban_isbanned(O, "Cyborg")) continue diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 650b20cf7c..8a7328ed35 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -235,7 +235,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates if(c.ready) var/found = 0 for(var/mob/dead/observer/o in player_list) - if(o.key == c.key) + if(o.key == c.key && o.MayRespawn()) found = 1 if(found) available.Add(c) @@ -348,7 +348,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates /datum/paiController/proc/requestRecruits(var/mob/user) inquirer = user for(var/mob/dead/observer/O in player_list) - if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted) + if(!O.MayRespawn()) continue if(jobban_isbanned(O, "pAI")) continue diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index d8009e6161..44714ffd44 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -102,6 +102,9 @@ if(jobban_isbanned(src,"Cyborg")) usr << "\red You are banned from playing synthetics and cannot spawn as a drone." return + + if(!MayRespawn(1)) + return var/deathtime = world.time - src.timeofdeath if(istype(src,/mob/dead/observer)) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 662715ca21..4222fc9651 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -527,3 +527,6 @@ /mob/new_player/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0) return + +mob/new_player/MayRespawn() + return 1 From 420a16c9aba705737564eca7ee02048eaef1c7eb Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 7 May 2015 09:55:36 +0200 Subject: [PATCH 02/27] Changelog entry. --- html/changelogs/PsiOmegaDelta-AntagHUDRestrictions.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/PsiOmegaDelta-AntagHUDRestrictions.yml diff --git a/html/changelogs/PsiOmegaDelta-AntagHUDRestrictions.yml b/html/changelogs/PsiOmegaDelta-AntagHUDRestrictions.yml new file mode 100644 index 0000000000..d4e90bd1ac --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-AntagHUDRestrictions.yml @@ -0,0 +1,5 @@ +author: PsiOmegaDelta +delete-after: True + +changes: + - bugfix: "As an observer, using antagHUD should now always restrict you from respawning without admin intervention." From d6429afcba49c21700ce008b332a9427300f3846 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 7 May 2015 10:35:25 +0200 Subject: [PATCH 03/27] Cultists can no longer manifest ghosts with antagHUD enabled. --- code/game/gamemodes/cult/runes.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index c7df1e5381..f7c638be9b 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -104,7 +104,7 @@ var/list/sacrificed = list() if(!iscultist(M) && M.stat < DEAD && !(M in converting)) target = M break - + if(!target) //didn't find any new targets if(!converting.len) fizzle() @@ -113,7 +113,7 @@ var/list/sacrificed = list() return usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!") - + converting |= target var/list/waiting_for_input = list(target = 0) //need to box this up in order to be able to reset it again from inside spawn, apparently var/initial_message = 0 @@ -123,7 +123,7 @@ var/list/sacrificed = list() if(target.getFireLoss() < 100) target.hallucination = min(target.hallucination, 500) return 0 - + target.take_overall_damage(0, rand(5, 20)) // You dirty resister cannot handle the damage to your mind. Easily. - even cultists who accept right away should experience some effects // Resist messages go! if(initial_message) //don't do this stuff right away, only if they resist or hesitate. @@ -139,7 +139,7 @@ var/list/sacrificed = list() target << "Your mind turns to ash as the burning flames engulf your very soul and images of an unspeakable horror begin to bombard the last remnants of mental resistance." //broken mind - 5000 may seem like a lot I wanted the effect to really stand out for maxiumum losing-your-mind-spooky //hallucination is reduced when the step off as well, provided they haven't hit the last stage... - target.hallucination += 5000 + target.hallucination += 5000 target.apply_effect(10, STUTTER) target.adjustBrainLoss(1) if(100 to INFINITY) @@ -160,8 +160,8 @@ var/list/sacrificed = list() if(!is_convertable_to_cult(target.mind) || jobban_isbanned(target, "cultist"))//putting jobban check here because is_convertable uses mind as argument //waiting_for_input ensures this is only shown once, so they basically auto-resist from here on out. They still need to find a way to get off the freaking rune if they don't want to burn to death, though. target << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root." - target << "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs." - + target << "And you were able to force it out of your mind. You now know the truth, there's something horrible out there, stop it and its minions at all costs." + else spawn() var/choice = alert(target,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit") waiting_for_input[target] = 0 @@ -172,7 +172,7 @@ var/list/sacrificed = list() target << "Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back." converting -= target target.hallucination = 0 //sudden clarity - + sleep(100) //proc once every 10 seconds return 1 @@ -415,6 +415,7 @@ var/list/sacrificed = list() var/mob/dead/observer/ghost for(var/mob/dead/observer/O in this_rune.loc) if(!O.client) continue + if(!O.MayRespawn()) continue if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue ghost = O break From d7e5792f98c10ef89b3f045f5c24f8021b2c32f9 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 7 May 2015 13:28:35 +0200 Subject: [PATCH 04/27] Ensures dionaea nymphs respect antagHUD restrictions. --- code/modules/hydroponics/seed_mobs.dm | 2 +- code/modules/mob/living/carbon/alien/diona/diona.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm index d31f184380..d57ead4a74 100644 --- a/code/modules/hydroponics/seed_mobs.dm +++ b/code/modules/hydroponics/seed_mobs.dm @@ -27,7 +27,7 @@ for(var/mob/dead/observer/O in player_list) if(jobban_isbanned(O, "Dionaea")) continue - if(O.client) + if(O.client && O.MayRespawn()) if(O.client.prefs.be_special & BE_PLANT && !(O.client in currently_querying)) currently_querying |= O.client question(O.client,host) diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm index 5faeadbdcc..981e250749 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona.dm @@ -31,4 +31,4 @@ /mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands. W.loc = get_turf(src) - return 1 \ No newline at end of file + return 1 From 95aef467a0db7cb99f3b7c1e7319de5419fe5913 Mon Sep 17 00:00:00 2001 From: Techhead0 Date: Tue, 5 May 2015 23:12:01 -0400 Subject: [PATCH 05/27] Magboots can be worn over shoes Equipping magboots or a voidsuit with magboots installed will place them over any existing shoes. Existing shoes are replaced on feet when magboots are unequipped. Magboots cannot be worn over other magboots. Fixes #9125 Changelog for this and my previous voidsuit changes included. --- code/modules/clothing/clothing.dm | 1 + code/modules/clothing/shoes/magboots.dm | 47 +++++++++++++++++-- code/modules/clothing/spacesuits/void/void.dm | 9 ++-- .../Techhead-VoidsuitsMagbootsAndTanks.yml | 6 +++ 4 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 html/changelogs/Techhead-VoidsuitsMagbootsAndTanks.yml diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 527f596f54..cd552ad3a5 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -357,6 +357,7 @@ BLIND // can't see anything permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN force = 2 + var/overshoes = 0 species_restricted = list("exclude","Unathi","Tajara") sprite_sheets = list("Vox" = 'icons/mob/species/vox/shoes.dmi') diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 637a84e765..c9074fb8bd 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -1,31 +1,72 @@ /obj/item/clothing/shoes/magboots - desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle." + desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. They're large enough to be worn over other footwear." name = "magboots" icon_state = "magboots0" species_restricted = null force = 3 + overshoes = 1 var/magpulse = 0 var/icon_base = "magboots" icon_action_button = "action_blank" action_button_name = "Toggle the magboots" + var/obj/item/clothing/shoes/shoes = null //Undershoes + var/mob/living/carbon/human/wearer = null //For shoe procs + +/obj/item/clothing/shoes/magboots/proc/set_slowdown() + slowdown = shoes? max(SHOES_SLOWDOWN, shoes.slowdown): SHOES_SLOWDOWN //So you can't put on magboots to make you walk faster. + if (magpulse) + slowdown += 3 /obj/item/clothing/shoes/magboots/attack_self(mob/user) if(magpulse) flags &= ~NOSLIP - slowdown = SHOES_SLOWDOWN magpulse = 0 + set_slowdown() force = 3 if(icon_base) icon_state = "[icon_base]0" user << "You disable the mag-pulse traction system." else flags |= NOSLIP - slowdown = 2 magpulse = 1 + set_slowdown() force = 5 if(icon_base) icon_state = "[icon_base]1" user << "You enable the mag-pulse traction system." user.update_inv_shoes() //so our mob-overlays update +/obj/item/clothing/shoes/magboots/mob_can_equip(mob/user) + var/mob/living/carbon/human/H = user + + if(H.shoes) + shoes = H.shoes + if(shoes.overshoes) + user << "You are unable to wear \the [src] as \the [H.shoes] are in the way." + shoes = null + return 0 + H.drop_from_inventory(shoes) //Remove the old shoes so you can put on the magboots. + shoes.loc = src + + if(!..()) + if(shoes) //Put the old shoes back on if the check fails. + if(H.equip_to_slot_if_possible(shoes, slot_shoes)) + src.shoes = null + return 0 + + if (shoes) + user << "You slip \the [src] on over \the [shoes]." + set_slowdown() + wearer = H + return 1 + +/obj/item/clothing/shoes/magboots/dropped() + ..() + var/mob/living/carbon/human/H = wearer + if(shoes) + if(!H.equip_to_slot_if_possible(shoes, slot_shoes)) + shoes.loc = get_turf(src) + src.shoes = null + wearer = null + /obj/item/clothing/shoes/magboots/examine(mob/user) ..(user) var/state = "disabled" diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 6854513138..997048424a 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -96,10 +96,7 @@ helmet.canremove = 0 if(boots) - if(H.shoes) - M << "You are unable to deploy your suit's magboots as \the [H.shoes] are in the way." - else if (H.equip_to_slot_if_possible(boots, slot_shoes)) - M << "Your suit's boots deploy with a hiss." + if (H.equip_to_slot_if_possible(boots, slot_shoes)) boots.canremove = 0 if(tank) @@ -115,18 +112,18 @@ var/mob/living/carbon/human/H if(helmet) + helmet.canremove = 1 H = helmet.loc if(istype(H)) if(helmet && H.head == helmet) - helmet.canremove = 1 H.drop_from_inventory(helmet) helmet.loc = src if(boots) + boots.canremove = 1 H = boots.loc if(istype(H)) if(boots && H.shoes == boots) - boots.canremove = 1 H.drop_from_inventory(boots) boots.loc = src diff --git a/html/changelogs/Techhead-VoidsuitsMagbootsAndTanks.yml b/html/changelogs/Techhead-VoidsuitsMagbootsAndTanks.yml new file mode 100644 index 0000000000..ff46294acd --- /dev/null +++ b/html/changelogs/Techhead-VoidsuitsMagbootsAndTanks.yml @@ -0,0 +1,6 @@ ++author: Techhead + +delete-after: True + +changes: ++ - rscadd: "Voidsuits can have tanks inserted into the storage slot." ++ - rscadd: "Voidsuits display helpful information on their contents on examine." ++ - rscadd: "Magboots can be equipped over other shoes. Except other magboots." \ No newline at end of file From 8f9fd29c5f58a08d674ce1ca1ce9420a00cd9204 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Fri, 8 May 2015 22:20:39 +0100 Subject: [PATCH 06/27] Removes sleeping chems from clones and adds a consistent sleep period (+1 squashed commits) Squashed commits: [2c002f9] Removes sleepy chems from cloning --- code/game/machinery/cloning.dm | 10 +--------- html/changelogs/Yoshax-nomorechems.YML | 5 +++++ 2 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 html/changelogs/Yoshax-nomorechems.YML diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 343c8ab2db..fe96bdf549 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -184,17 +184,9 @@ //So clones don't die of oxyloss in a running pod. if(occupant.reagents.get_reagent_amount("inaprovaline") < 30) occupant.reagents.add_reagent("inaprovaline", 60) - - //So clones will remain asleep for long enough to get them into cryo (Bay RP edit) - if(occupant.reagents.get_reagent_amount("stoxin") < 10) - occupant.reagents.add_reagent("stoxin", 5) - if(occupant.reagents.get_reagent_amount("chloralhydrate") < 1) - occupant.reagents.add_reagent("chloralhydrate", 1) - + occupant.Sleeping(30) //Also heal some oxyloss ourselves because inaprovaline is so bad at preventing it!! occupant.adjustOxyLoss(-4) - if(notoxin) - occupant.adjustToxLoss(-2) // If sufficiently upgraded - remove toxin damage from chloral use_power(7500) //This might need tweaking. return diff --git a/html/changelogs/Yoshax-nomorechems.YML b/html/changelogs/Yoshax-nomorechems.YML new file mode 100644 index 0000000000..aeec93b30a --- /dev/null +++ b/html/changelogs/Yoshax-nomorechems.YML @@ -0,0 +1,5 @@ +author: Yoshax +delete-after: True + +changes: + - tweak: "Removes sleepy chems from being cloned, adds a consistent period of 30 tick sleep." \ No newline at end of file From 6618b225a0f010a2ae49767331ffe5ab84042ee4 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 9 May 2015 22:10:39 +0300 Subject: [PATCH 07/27] Made sterile gloves actually start sterile Fixes #9163 --- code/modules/clothing/gloves/miscellaneous.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index dfb370d38c..c93db78d4d 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -49,7 +49,7 @@ siemens_coefficient = 0.30 permeability_coefficient = 0.01 item_color="white" - + germ_level = 0 cmo item_color = "medical" //Exists for washing machines. Is not different from latex gloves in any way. From f3e37861cf3d5b3284a525e481f96555b423dd08 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 10 May 2015 10:44:16 +0200 Subject: [PATCH 08/27] Updates changelog. --- html/changelog.html | 10 ++++++++++ html/changelogs/.all_changelog.yml | 8 ++++++++ html/changelogs/GinjaNinja32_acting_manifest.yml | 5 ----- html/changelogs/Yoshax-nomorechems.YML | 5 ----- 4 files changed, 18 insertions(+), 10 deletions(-) delete mode 100644 html/changelogs/GinjaNinja32_acting_manifest.yml delete mode 100644 html/changelogs/Yoshax-nomorechems.YML diff --git a/html/changelog.html b/html/changelog.html index 9169105593..2340fede16 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,16 @@ -->
+

10 May 2015

+

GinjaNinja32 updated:

+
    +
  • Acting jobs on the manifest will now sort with their non-acting counterparts. All assignments beginning with the word 'acting', 'temporary', or 'interim' will do this.
  • +
+

Yoshax updated:

+
    +
  • Removes sleepy chems from being cloned, adds a consistent period of 30 tick sleep.
  • +
+

09 May 2015

Yoshax updated: