mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-02-08 15:48:45 +00:00
Merge branch 'master' into logging-improvements
This commit is contained in:
@@ -51,7 +51,7 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons
|
||||
|
||||
#ifdef TESTING
|
||||
var/msg = "Permission Sets Built:\n"
|
||||
for(var/rank in admin_ranks)
|
||||
for(var/rank in GLOB.admin_ranks)
|
||||
msg += "\t[rank] - [GLOB.admin_ranks[rank]]\n"
|
||||
testing(msg)
|
||||
#endif
|
||||
@@ -142,12 +142,12 @@ GLOBAL_PROTECT(admin_ranks) // this shit is being protected for obvious reasons
|
||||
|
||||
|
||||
#ifdef TESTING
|
||||
/client/verb/changerank(newrank in admin_ranks)
|
||||
/client/verb/changerank(newrank in GLOB.admin_ranks)
|
||||
if(holder)
|
||||
holder.rank = newrank
|
||||
holder.rights = admin_ranks[newrank]
|
||||
holder.rights = GLOB.admin_ranks[newrank]
|
||||
else
|
||||
holder = new /datum/admins(newrank,admin_ranks[newrank],ckey)
|
||||
holder = new /datum/admins(newrank,GLOB.admin_ranks[newrank],ckey)
|
||||
remove_admin_verbs()
|
||||
holder.associate(src)
|
||||
|
||||
|
||||
@@ -68,7 +68,6 @@ GLOBAL_LIST_INIT(admin_verbs_admin, list(
|
||||
/client/proc/empty_ai_core_toggle_latejoin,
|
||||
/client/proc/aooc,
|
||||
/client/proc/freeze,
|
||||
/client/proc/freezemecha,
|
||||
/client/proc/alt_check,
|
||||
/client/proc/secrets,
|
||||
/client/proc/change_human_appearance_admin, /* Allows an admin to change the basic appearance of human-based mobs */
|
||||
|
||||
@@ -5,121 +5,99 @@
|
||||
//////Allows admin's to right click on any mob/mech and freeze them in place.///
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
GLOBAL_LIST_EMPTY(frozen_mob_list)
|
||||
/client/proc/freeze(var/mob/living/M as mob in GLOB.mob_list)
|
||||
|
||||
GLOBAL_LIST_EMPTY(frozen_atom_list) // A list of admin-frozen atoms.
|
||||
|
||||
/client/proc/freeze(atom/movable/M)
|
||||
set name = "Freeze"
|
||||
set category = null
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!istype(M))
|
||||
return
|
||||
M.admin_Freeze(src)
|
||||
|
||||
if(M in GLOB.frozen_mob_list)
|
||||
M.admin_unFreeze(src)
|
||||
else
|
||||
M.admin_Freeze(src)
|
||||
/// Created here as a base proc. Override as needed for any type of object or mob you want able to be frozen.
|
||||
/atom/movable/proc/admin_Freeze(client/admin)
|
||||
to_chat(admin, "<span class='warning'>Freeze is not able to be called on this type of object.</span")
|
||||
return
|
||||
|
||||
///mob freeze procs
|
||||
|
||||
/mob/living/var/frozen = null //used for preventing attacks on admin-frozen mobs
|
||||
/mob/living/var/admin_prev_sleeping = 0 //used for keeping track of previous sleeping value with admin freeze
|
||||
/mob/living
|
||||
/// Used for preventing attacks on admin-frozen mobs.
|
||||
var/frozen = null
|
||||
/// Used for keeping track of previous sleeping value with admin freeze.
|
||||
var/admin_prev_sleeping = 0
|
||||
|
||||
/mob/living/proc/admin_Freeze(client/admin, skip_overlays = FALSE)
|
||||
if(istype(admin))
|
||||
to_chat(src, "<b><font color= red>You have been frozen by [admin]</b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(admin)]</span> froze [key_name_admin(src)]")
|
||||
log_admin("[key_name(admin)] froze [key_name(src)]")
|
||||
/mob/living/admin_Freeze(client/admin, skip_overlays = FALSE, mech = null)
|
||||
if(!istype(admin))
|
||||
return
|
||||
|
||||
var/obj/effect/overlay/adminoverlay/AO = new
|
||||
if(skip_overlays)
|
||||
overlays += AO
|
||||
if(!(src in GLOB.frozen_atom_list))
|
||||
GLOB.frozen_atom_list += src
|
||||
|
||||
anchored = TRUE
|
||||
canmove = FALSE
|
||||
admin_prev_sleeping = sleeping
|
||||
AdjustSleeping(20000)
|
||||
frozen = AO
|
||||
if(!(src in GLOB.frozen_mob_list))
|
||||
GLOB.frozen_mob_list += src
|
||||
var/obj/effect/overlay/adminoverlay/AO = new
|
||||
if(skip_overlays)
|
||||
overlays += AO
|
||||
|
||||
/mob/living/proc/admin_unFreeze(client/admin, skip_overlays = FALSE)
|
||||
if(istype(admin))
|
||||
to_chat(src, "<b><font color= red>You have been unfrozen by [admin]</b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(admin)] unfroze [key_name_admin(src)]</span>")
|
||||
log_admin("[key_name(admin)] unfroze [key_name(src)]")
|
||||
anchored = TRUE
|
||||
canmove = FALSE
|
||||
admin_prev_sleeping = sleeping
|
||||
AdjustSleeping(20000)
|
||||
frozen = AO
|
||||
|
||||
if(skip_overlays)
|
||||
overlays -= frozen
|
||||
else
|
||||
GLOB.frozen_atom_list -= src
|
||||
|
||||
anchored = FALSE
|
||||
canmove = TRUE
|
||||
frozen = null
|
||||
SetSleeping(admin_prev_sleeping)
|
||||
admin_prev_sleeping = null
|
||||
if(src in GLOB.frozen_mob_list)
|
||||
GLOB.frozen_mob_list -= src
|
||||
if(skip_overlays)
|
||||
overlays -= frozen
|
||||
|
||||
anchored = FALSE
|
||||
canmove = TRUE
|
||||
frozen = null
|
||||
SetSleeping(admin_prev_sleeping)
|
||||
admin_prev_sleeping = null
|
||||
|
||||
to_chat(src, "<b><font color= red>You have been [frozen ? "frozen" : "unfrozen"] by [admin]</b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(admin)] [frozen ? "froze" : "unfroze"] [key_name_admin(src)] [mech ? "in a [mech]" : ""]</span>")
|
||||
log_admin("[key_name(admin)] [frozen ? "froze" : "unfroze"] [key_name(src)] [mech ? "in a [mech]" : ""]")
|
||||
update_icons()
|
||||
|
||||
return frozen
|
||||
|
||||
|
||||
/mob/living/simple_animal/slime/admin_Freeze(admin)
|
||||
..(admin)
|
||||
adjustHealth(1000) //arbitrary large value
|
||||
|
||||
/mob/living/simple_animal/slime/admin_unFreeze(admin)
|
||||
..(admin)
|
||||
revive()
|
||||
|
||||
if(..()) // The result of the parent call here will be the value of the mob's `frozen` variable after they get (un)frozen.
|
||||
adjustHealth(1000) //arbitrary large value
|
||||
else
|
||||
revive()
|
||||
|
||||
/mob/living/simple_animal/var/admin_prev_health = null
|
||||
|
||||
/mob/living/simple_animal/admin_Freeze(admin)
|
||||
..(admin)
|
||||
admin_prev_health = health
|
||||
health = 0
|
||||
|
||||
/mob/living/simple_animal/admin_unFreeze(admin)
|
||||
..(admin)
|
||||
revive()
|
||||
overlays.Cut()
|
||||
if(..()) // The result of the parent call here will be the value of the mob's `frozen` variable after they get (un)frozen.
|
||||
admin_prev_health = health
|
||||
health = 0
|
||||
else
|
||||
revive()
|
||||
overlays.Cut()
|
||||
|
||||
//////////////////////////Freeze Mech
|
||||
|
||||
/client/proc/freezemecha(var/obj/mecha/O as obj in GLOB.mechas_list)
|
||||
set name = "Freeze Mech"
|
||||
set category = null
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/obj/mecha/M = O
|
||||
if(!istype(M,/obj/mecha))
|
||||
to_chat(src, "<span class='danger'>This can only be used on mechs!</span>")
|
||||
return
|
||||
/obj/mecha/admin_Freeze(client/admin)
|
||||
var/obj/effect/overlay/adminoverlay/freeze_overlay = new
|
||||
if(!frozen)
|
||||
GLOB.frozen_atom_list += src
|
||||
frozen = TRUE
|
||||
overlays += freeze_overlay
|
||||
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)
|
||||
to_chat(M.occupant, "<b><font color= red>You have been frozen by <a href='?priv_msg=[usr.client.UID()]'>[key]</a></b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]</span>")
|
||||
log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]")
|
||||
else
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] froze an empty [M.name]</span>")
|
||||
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)
|
||||
to_chat(M.occupant, "<b><font color= red>You have been unfrozen by <a href='?priv_msg=[usr.client.UID()]'>[key]</a></b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]</span>")
|
||||
log_admin("[key_name(usr)] unfroze [key_name(M.occupant)] in a [M.name]")
|
||||
else
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] unfroze an empty [M.name]</span>")
|
||||
log_admin("[key_name(usr)] unfroze an empty [M.name]")
|
||||
GLOB.frozen_atom_list -= src
|
||||
frozen = FALSE
|
||||
overlays -= freeze_overlay
|
||||
|
||||
if(occupant)
|
||||
occupant.admin_Freeze(admin, mech = name) // We also want to freeze the driver of the mech.
|
||||
else
|
||||
message_admins("<span class='notice'>[key_name_admin(admin)] [frozen ? "froze" : "unfroze"] an empty [name]</span>")
|
||||
log_admin("[key_name(admin)] [frozen ? "froze" : "unfroze"] an empty [name]")
|
||||
|
||||
Reference in New Issue
Block a user