Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port of admin freeze verb from NSS Pheonix [FEATURE] #327

Merged
merged 4 commits into from Feb 20, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 7 additions & 1 deletion code/game/objects/effects/overlays.dm
Expand Up @@ -32,4 +32,10 @@
/obj/effect/overlay/coconut
name = "Coconuts"
icon = 'icons/misc/beach.dmi'
icon_state = "coconuts"
icon_state = "coconuts"

/obj/effect/overlay/adminoverlay
name = "adminoverlay"
icon = 'icons/effects/effects.dmi'
icon_state = "admin"
layer = 4.1
5 changes: 4 additions & 1 deletion code/modules/admin/admin_verbs.dm
Expand Up @@ -60,7 +60,10 @@ var/list/admin_verbs_admin = list(
/client/proc/man_up,
/client/proc/global_man_up,
/client/proc/delbook,
/client/proc/empty_ai_core_toggle_latejoin
/client/proc/empty_ai_core_toggle_latejoin,
/client/proc/freeze,
/client/proc/freezemecha

)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
Expand Down
125 changes: 125 additions & 0 deletions code/modules/admin/verbs/freeze.dm
@@ -0,0 +1,125 @@
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////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 << "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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 << "<b> <font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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 << "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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 << "<b> <font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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)
M.overlays += adminomaly
M << "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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
M.stat = 0

M << "<b> <font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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 mechas_list)
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 <b>This can only be used on Mechs!</b>"
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 << "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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 << "<b><font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
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]")
4 changes: 4 additions & 0 deletions code/modules/mob/living/carbon/human/human_attackhand.dm
Expand Up @@ -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"]
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/human/human_defines.dm
Expand Up @@ -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"
9 changes: 9 additions & 0 deletions code/modules/mob/living/carbon/human/inventory.dm
Expand Up @@ -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 <B>[source] is trying to inject [target]!</B>"
Expand Down Expand Up @@ -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.
Expand Down
Binary file modified icons/effects/effects.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions paradise.dme
Expand Up @@ -885,6 +885,7 @@
#include "code\modules\admin\verbs\deadsay.dm"
#include "code\modules\admin\verbs\debug.dm"
#include "code\modules\admin\verbs\diagnostics.dm"
#include "code\modules\admin\verbs\freeze.dm"
#include "code\modules\admin\verbs\getlogs.dm"
#include "code\modules\admin\verbs\honksquad.dm"
#include "code\modules\admin\verbs\mapping.dm"
Expand Down