mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
Fixes runtimes with Assume Direct Control from View Vars, and observing from the main menu. Morgue sprite code is the cause of both runtimes, and this may break morgue tray sprites.
84 lines
3.2 KiB
Plaintext
84 lines
3.2 KiB
Plaintext
//handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying
|
|
/mob/proc/update_Login_details()
|
|
//Multikey checks and logging
|
|
lastKnownIP = client.address
|
|
computer_id = client.computer_id
|
|
log_access("Login: [key_name(src)] from [lastKnownIP ? lastKnownIP : "localhost"]-[computer_id] || BYOND v[client.byond_version]")
|
|
if(config.log_access)
|
|
for(var/mob/M in player_list)
|
|
if(M == src) continue
|
|
if( M.key && (M.key != key) )
|
|
var/matches
|
|
if( (M.lastKnownIP == client.address) )
|
|
matches += "IP ([client.address])"
|
|
if( (M.computer_id == client.computer_id) )
|
|
if(matches) matches += " and "
|
|
matches += "ID ([client.computer_id])"
|
|
spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!")
|
|
if(matches)
|
|
if(M.client)
|
|
message_admins("<font color='red'><B>Notice: </B><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
|
|
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
|
|
else
|
|
message_admins("<font color='red'><B>Notice: </B><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
|
|
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
|
|
|
|
/mob/Login()
|
|
player_list |= src
|
|
update_Login_details()
|
|
world.update_status()
|
|
|
|
client.images = null //remove the images such as AIs being unable to see runes
|
|
client.screen = null //remove hud items just in case
|
|
if(hud_used) del(hud_used) //remove the hud objects
|
|
hud_used = new /datum/hud(src)
|
|
|
|
next_move = 1
|
|
sight |= SEE_SELF
|
|
..()
|
|
|
|
if(loc && !isturf(loc))
|
|
client.eye = loc
|
|
client.perspective = EYE_PERSPECTIVE
|
|
else
|
|
client.eye = src
|
|
client.perspective = MOB_PERSPECTIVE
|
|
|
|
|
|
//Clear ability list and update from mob.
|
|
client.verbs -= ability_verbs
|
|
|
|
if(abilities)
|
|
client.verbs |= abilities
|
|
|
|
if(istype(src,/mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = src
|
|
if(H.species && H.species.abilities)
|
|
client.verbs |= H.species.abilities
|
|
|
|
CallHook("Login", list("client" = src.client, "mob" = src))
|
|
|
|
//Update morgues on login/logout
|
|
if (stat == DEAD)
|
|
var/obj/structure/morgue/Morgue = null
|
|
var/mob/living/carbon/human/C = null
|
|
if (istype(src,/mob/dead/observer)) //We're a ghost, let's find our corpse
|
|
var/mob/dead/observer/G = src
|
|
if(!G.mind) //This'll probably break morgue sprites, but the line under the next If statement causes runtimes with Assume Direct Control.
|
|
return
|
|
if (G.can_reenter_corpse && G.mind.current)
|
|
C = G.mind.current
|
|
else if (istype(src,/mob/living/carbon/human))
|
|
C = src
|
|
|
|
if (C) //We found our corpse, is it inside a morgue?
|
|
if (istype(C.loc,/obj/structure/morgue))
|
|
Morgue = C.loc
|
|
else if (istype(C.loc,/obj/structure/closet/body_bag))
|
|
var/obj/structure/closet/body_bag/B = C.loc
|
|
if (istype(B.loc,/obj/structure/morgue))
|
|
Morgue = B.loc
|
|
if (Morgue)
|
|
Morgue.update()
|
|
|