From d23d8af7782d75f611bb3178ab9ea8e9c2939869 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Tue, 17 Feb 2015 18:04:31 +0100 Subject: [PATCH 1/3] Port of freeze mob verb from NSS Pheonix --- code/game/objects/effects/overlays.dm | 8 ++- code/modules/admin/admin_verbs.dm | 4 +- code/modules/admin/verbs/freeze.dm | 97 ++++++++++++++++++++++++++ icons/effects/effects.dmi | Bin 267473 -> 268857 bytes paradise.dme | 1 + 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 code/modules/admin/verbs/freeze.dm diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 1963e2fb29a..a040e460b2c 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -32,4 +32,10 @@ /obj/effect/overlay/coconut name = "Coconuts" icon = 'icons/misc/beach.dmi' - icon_state = "coconuts" \ No newline at end of file + icon_state = "coconuts" + +/obj/effect/overlay/adminoverlay + name = "adminoverlay" + icon = 'icons/effects/effects.dmi' + icon_state = "admin" + layer = 4.1 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 01aae828579..84141e681c6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -66,7 +66,9 @@ var/list/admin_verbs_admin = list( /client/proc/delbook, /client/proc/event_manager_panel, /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/fax_panel + /client/proc/fax_panel, + /client/proc/freeze, + /client/proc/freezemecha ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm new file mode 100644 index 00000000000..2e699fc1a83 --- /dev/null +++ b/code/modules/admin/verbs/freeze.dm @@ -0,0 +1,97 @@ +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +//////Freeze Mob/Mech Verb -- Ported from NSS Pheonix (Unbound Travels)///////// +//////////////////////////////////////////////////////////////////////////////// +//////Allows admin's to right click on any mob/mech and freeze them in place./// +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/client/proc/freeze(mob/living/M as mob in mob_list) + set category = "Special Verbs" + set name = "Freeze" + if(!holder) + src << "Only administrators may use this command." + return + if(!mob) + return + if(!istype(M)) + alert("Cannot freeze a ghost") + return + if(usr) + if (usr.client) + if(usr.client.holder) + if (istype(M, /mob/living/carbon/slime)) + if(!M.paralysis) + M.adjustToxLoss(2147483647) + M.AdjustParalysis(2147483647) + var/adminomaly = new/obj/effect/overlay/adminoverlay + spawn(50) + M.overlays += adminomaly + M << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(M)]") + log_admin("[key_name(usr)] froze [key_name(M)]") + else if (M.paralysis) + M.AdjustParalysis(-2147483647) + M.blinded = 0 + M.lying = 0 + M.stat = 0 + M << " You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M)]") + log_admin("[key_name(usr)] unfroze [key_name(M)]") + M.revive() + else + if(!M.paralysis) + M.AdjustParalysis(2147483647) + var/adminomaly = new/obj/effect/overlay/adminoverlay + spawn(50) + M.overlays += adminomaly + M << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(M)]") + log_admin("[key_name(usr)] froze [key_name(M)]") + else if (M.paralysis) + M.AdjustParalysis(-2147483647) + M.blinded = 0 + M.lying = 0 + M.stat = 0 + + M << " You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M)]") + log_admin("[key_name(usr)] unfroze [key_name(M)]") + + +/client/proc/freezemecha(obj/mecha/O as obj in world) + set category = "Special Verbs" + set name = "Freeze Mech" + if(!holder) + src << "Only administrators may use this command." + return + var/obj/mecha/M = O + if(!istype(M,/obj/mecha)) + src << "\red This can only be used on Mechs!" + return + else + if(usr) + if (usr.client) + if(usr.client.holder) + var/adminomaly = new/obj/effect/overlay/adminoverlay + if(M.can_move == 1) + M.can_move = 0 + M.overlays += adminomaly + if(M.occupant) + M.removeVerb(/obj/mecha/verb/eject) + M.occupant << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]") + log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]") + else + message_admins("\blue [key_name_admin(usr)] froze an empty [M.name]") + log_admin("[key_name(usr)] froze an empty [M.name]") + else if(M.can_move == 0) + M.can_move = 1 + M.overlays -= adminomaly + if(M.occupant) + M.addVerb(/obj/mecha/verb/eject) + M.occupant << "You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]") + log_admin("[key_name(usr)] unfroze [M.occupant.name]/[M.occupant.ckey] in a [M.name]") + else + message_admins("\blue [key_name_admin(usr)] unfroze an empty [M.name]") + log_admin("[key_name(usr)] unfroze an empty [M.name]") diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 17667aab4e9ed5aa84b9701a6105ee56b0e15ab3..5cfba55a6c9ce33450d649a3843bec877205d78a 100644 GIT binary patch delta 9217 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 B0v-SW delta 7822 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 Date: Tue, 17 Feb 2015 18:17:10 +0100 Subject: [PATCH 2/3] In accordance with MarkvA's recommendation, switches 'world' to 'mechas_list'. --- code/modules/admin/verbs/freeze.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 2e699fc1a83..db8b9939252 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -58,7 +58,7 @@ log_admin("[key_name(usr)] unfroze [key_name(M)]") -/client/proc/freezemecha(obj/mecha/O as obj in world) +/client/proc/freezemecha(obj/mecha/O as obj in mechas_list) set category = "Special Verbs" set name = "Freeze Mech" if(!holder) From 826ccaed70b8ae761b0b357f4e2a70d4b3f12d4a Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 20 Feb 2015 05:16:03 +0100 Subject: [PATCH 3/3] Extra Freeze features- Prevent direct touching and pulling --- code/modules/admin/admin_verbs.dm | 4 +-- code/modules/admin/verbs/freeze.dm | 28 +++++++++++++++++++ .../living/carbon/human/human_attackhand.dm | 4 +++ .../mob/living/carbon/human/human_defines.dm | 2 ++ .../mob/living/carbon/human/inventory.dm | 9 ++++++ 5 files changed, 45 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 29e69eac22d..ce3ca49fd22 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -59,11 +59,11 @@ var/list/admin_verbs_admin = list( /client/proc/toggledrones, /client/proc/man_up, /client/proc/global_man_up, - /client/proc/delbook, + /client/proc/delbook, /client/proc/empty_ai_core_toggle_latejoin, /client/proc/freeze, /client/proc/freezemecha - + ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index db8b9939252..502060933ee 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -38,8 +38,35 @@ message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M)]") log_admin("[key_name(usr)] unfroze [key_name(M)]") M.revive() + else if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/FM = M + + if(!FM.paralysis) + FM.anchored = 1 + FM.frozen = 1 + FM.AdjustParalysis(2147483647) + var/adminomaly = new/obj/effect/overlay/adminoverlay + spawn(50) + FM.overlays += adminomaly + FM << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(FM)]") + log_admin("[key_name(usr)] froze [key_name(FM)]") + else if (M.paralysis) + FM.anchored = 0 + FM.frozen = 0 + FM.AdjustParalysis(-2147483647) + FM.blinded = 0 + FM.lying = 0 + FM.stat = 0 + + FM << " You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(FM)]") + log_admin("[key_name(usr)] unfroze [key_name(FM)]") + else + if(!M.paralysis) + M.anchored = 1 M.AdjustParalysis(2147483647) var/adminomaly = new/obj/effect/overlay/adminoverlay spawn(50) @@ -48,6 +75,7 @@ message_admins("\blue [key_name_admin(usr)] froze [key_name(M)]") log_admin("[key_name(usr)] froze [key_name(M)]") else if (M.paralysis) + M.anchored = 0 M.AdjustParalysis(-2147483647) M.blinded = 0 M.lying = 0 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index d88d19fe99e..2fdf3c42498 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -3,6 +3,10 @@ M << "No attacking people at spawn, you jackass." return + if(frozen) + M << "\red Do not touch Admin-Frozen people." + return + var/datum/organ/external/temp = M:organs_by_name["r_hand"] if (M.hand) temp = M:organs_by_name["l_hand"] diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 6f99995aba4..b98ea2c790f 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -71,5 +71,7 @@ var/lastFart = 0 // Toxic fart cooldown. + var/frozen = 0 //used for preventing attacks on admin-frozen people + fire_dmi = 'icons/mob/OnFire.dmi' fire_sprite = "Standing" diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b4f71ada72d..30e3f9dc5f5 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -395,6 +395,11 @@ del(src) var/message=null + if(target.frozen) + source << "\red Do not attempt to strip frozen people." + return + + switch(place) if("syringe") message = "\red [source] is trying to inject [target]!" @@ -598,6 +603,10 @@ It can still be worn/put on as normal. if (LinkBlockedUnclimbable(t_loc, s_loc)) return if(item && source.get_active_hand() != item) return //Swapped hands / removed item from the active one if ((source.restrained() || source.stat)) return //Source restrained or unconscious / dead + if(target.frozen) + source << "\red Do not attempt to strip frozen people." + return + var/slot_to_process var/strip_item //this will tell us which item we will be stripping - if any.