Merge branch 'dynamicport'
This commit is contained in:
@@ -13,7 +13,7 @@ INITIALIZE_IMMEDIATE(/mob/dead)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
flags_1 |= INITIALIZED_1
|
||||
tag = "mob_[next_mob_id++]"
|
||||
GLOB.mob_list += src
|
||||
add_to_mob_list()
|
||||
|
||||
prepare_huds()
|
||||
|
||||
|
||||
@@ -33,6 +33,13 @@
|
||||
|
||||
. = ..()
|
||||
|
||||
GLOB.new_player_list += src
|
||||
|
||||
/mob/dead/new_player/Destroy()
|
||||
GLOB.new_player_list -= src
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/dead/new_player/prepare_huds()
|
||||
return
|
||||
|
||||
@@ -391,7 +398,7 @@
|
||||
var/id_max = text2num(href_list["maxid"])
|
||||
|
||||
if( (id_max - id_min) > 100 ) //Basic exploit prevention
|
||||
//(protip, this stops no exploits)
|
||||
//(protip, this stops no exploits)
|
||||
to_chat(usr, "The option ID difference is too big. Please contact administration or the database admin.")
|
||||
return
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
|
||||
|
||||
animate(src, pixel_y = 2, time = 10, loop = -1)
|
||||
|
||||
GLOB.dead_mob_list += src
|
||||
add_to_dead_mob_list()
|
||||
|
||||
for(var/v in GLOB.active_alternate_appearances)
|
||||
if(!v)
|
||||
|
||||
@@ -64,8 +64,8 @@
|
||||
brainmob.container = src
|
||||
if(!(newbrain.organ_flags & ORGAN_FAILING)) // the brain organ hasn't been beaten to death.
|
||||
brainmob.stat = CONSCIOUS //we manually revive the brain mob
|
||||
GLOB.dead_mob_list -= brainmob
|
||||
GLOB.alive_mob_list += brainmob
|
||||
brainmob.remove_from_dead_mob_list()
|
||||
brainmob.add_to_alive_mob_list()
|
||||
|
||||
brainmob.reset_perspective()
|
||||
brain = newbrain
|
||||
@@ -102,8 +102,8 @@
|
||||
brainmob.stat = DEAD
|
||||
brainmob.emp_damage = 0
|
||||
brainmob.reset_perspective() //so the brainmob follows the brain organ instead of the mmi. And to update our vision
|
||||
GLOB.alive_mob_list -= brainmob //Get outta here
|
||||
GLOB.dead_mob_list += brainmob
|
||||
brainmob.remove_from_alive_mob_list() //Get outta here
|
||||
brainmob.add_to_dead_mob_list()
|
||||
brain.brainmob = brainmob //Set the brain to use the brainmob
|
||||
brainmob = null //Set mmi brainmob var to null
|
||||
if(user)
|
||||
|
||||
@@ -159,8 +159,8 @@ GLOBAL_VAR(posibrain_notify_cooldown)
|
||||
to_chat(brainmob, welcome_message)
|
||||
brainmob.mind.assigned_role = new_role
|
||||
brainmob.stat = CONSCIOUS
|
||||
GLOB.dead_mob_list -= brainmob
|
||||
GLOB.alive_mob_list += brainmob
|
||||
brainmob.remove_from_dead_mob_list()
|
||||
brainmob.add_to_alive_mob_list()
|
||||
|
||||
visible_message(new_mob_message)
|
||||
check_success()
|
||||
|
||||
@@ -65,9 +65,9 @@
|
||||
I.on_mob_death(src, gibbed)
|
||||
if(mind)
|
||||
mind.store_memory("Time of death: [tod]", 0)
|
||||
GLOB.alive_mob_list -= src
|
||||
remove_from_alive_mob_list()
|
||||
if(!gibbed)
|
||||
GLOB.dead_mob_list += src
|
||||
add_to_dead_mob_list()
|
||||
if(ckey)
|
||||
var/datum/preferences/P = GLOB.preferences_datums[ckey]
|
||||
if(P)
|
||||
|
||||
@@ -589,8 +589,8 @@
|
||||
if(full_heal)
|
||||
fully_heal(admin_revive)
|
||||
if(stat == DEAD && can_be_revived()) //in some cases you can't revive (e.g. no brain)
|
||||
GLOB.dead_mob_list -= src
|
||||
GLOB.alive_mob_list += src
|
||||
remove_from_dead_mob_list()
|
||||
add_to_alive_mob_list()
|
||||
suiciding = 0
|
||||
stat = UNCONSCIOUS //the mob starts unconscious,
|
||||
if(!eye_blind)
|
||||
@@ -1289,11 +1289,11 @@
|
||||
return FALSE
|
||||
if(NAMEOF(src, stat))
|
||||
if((stat == DEAD) && (var_value < DEAD))//Bringing the dead back to life
|
||||
GLOB.dead_mob_list -= src
|
||||
GLOB.alive_mob_list += src
|
||||
remove_from_dead_mob_list()
|
||||
add_to_alive_mob_list()
|
||||
if((stat < DEAD) && (var_value == DEAD))//Kill he
|
||||
GLOB.alive_mob_list -= src
|
||||
GLOB.dead_mob_list += src
|
||||
remove_from_alive_mob_list()
|
||||
add_to_dead_mob_list()
|
||||
if(NAMEOF(src, health)) //this doesn't work. gotta use procs instead.
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
@@ -7,6 +7,6 @@
|
||||
clear_fullscreens()
|
||||
|
||||
//New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here.
|
||||
GLOB.alive_mob_list -= src
|
||||
remove_from_alive_mob_list()
|
||||
ghostize()
|
||||
qdel(src)
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
if(mmi.brainmob)
|
||||
if(mmi.brainmob.stat == DEAD)
|
||||
mmi.brainmob.stat = CONSCIOUS
|
||||
GLOB.dead_mob_list -= mmi.brainmob
|
||||
GLOB.alive_mob_list += mmi.brainmob
|
||||
mmi.brainmob.remove_from_dead_mob_list()
|
||||
mmi.brainmob.add_to_alive_mob_list()
|
||||
mind.transfer_to(mmi.brainmob)
|
||||
mmi.update_icon()
|
||||
else
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/Login()
|
||||
GLOB.player_list |= src
|
||||
add_to_player_list()
|
||||
lastKnownIP = client.address
|
||||
computer_id = client.computer_id
|
||||
log_access("Mob Login: [key_name(src)] was assigned to a [type]")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
log_message("[key_name(src)] is no longer owning mob [src]([src.type])", LOG_OWNERSHIP)
|
||||
SStgui.on_logout(src)
|
||||
unset_machine()
|
||||
GLOB.player_list -= src
|
||||
remove_from_player_list()
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game.
|
||||
GLOB.mob_list -= src
|
||||
GLOB.dead_mob_list -= src
|
||||
GLOB.alive_mob_list -= src
|
||||
remove_from_mob_list()
|
||||
remove_from_dead_mob_list()
|
||||
remove_from_alive_mob_list()
|
||||
GLOB.all_clockwork_mobs -= src
|
||||
GLOB.mob_directory -= tag
|
||||
focus = null
|
||||
LAssailant = null
|
||||
movespeed_modification = null
|
||||
@@ -22,12 +21,11 @@
|
||||
return QDEL_HINT_HARDDEL
|
||||
|
||||
/mob/Initialize()
|
||||
GLOB.mob_list += src
|
||||
GLOB.mob_directory[tag] = src
|
||||
add_to_mob_list()
|
||||
if(stat == DEAD)
|
||||
GLOB.dead_mob_list += src
|
||||
add_to_dead_mob_list()
|
||||
else
|
||||
GLOB.alive_mob_list += src
|
||||
add_to_alive_mob_list()
|
||||
set_focus(src)
|
||||
prepare_huds()
|
||||
for(var/v in GLOB.active_alternate_appearances)
|
||||
|
||||
@@ -180,3 +180,6 @@
|
||||
|
||||
///Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb)
|
||||
var/sound_environment_override = SOUND_ENVIRONMENT_NONE
|
||||
|
||||
/// A mock client, provided by tests and friends
|
||||
var/datum/client_interface/mock_client
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
///Adds the mob reference to the list and directory of all mobs. Called on Initialize().
|
||||
/mob/proc/add_to_mob_list()
|
||||
GLOB.mob_list |= src
|
||||
GLOB.mob_directory[tag] = src
|
||||
|
||||
///Removes the mob reference from the list and directory of all mobs. Called on Destroy().
|
||||
/mob/proc/remove_from_mob_list()
|
||||
GLOB.mob_list -= src
|
||||
GLOB.mob_directory -= tag
|
||||
|
||||
///Adds the mob reference to the list of all mobs alive. If mob is cliented, it adds it to the list of all living player-mobs.
|
||||
/mob/proc/add_to_alive_mob_list()
|
||||
GLOB.alive_mob_list |= src
|
||||
if(client)
|
||||
add_to_current_living_players()
|
||||
|
||||
///Removes the mob reference from the list of all mobs alive. If mob is cliented, it removes it from the list of all living player-mobs.
|
||||
/mob/proc/remove_from_alive_mob_list()
|
||||
GLOB.alive_mob_list -= src
|
||||
if(client)
|
||||
remove_from_current_living_players()
|
||||
|
||||
|
||||
///Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
|
||||
/mob/proc/add_to_dead_mob_list()
|
||||
GLOB.dead_mob_list |= src
|
||||
if(client)
|
||||
add_to_current_dead_players()
|
||||
|
||||
///Remvoes the mob reference from list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs.
|
||||
/mob/proc/remove_from_dead_mob_list()
|
||||
GLOB.dead_mob_list -= src
|
||||
if(client)
|
||||
remove_from_current_dead_players()
|
||||
|
||||
|
||||
///Adds the cliented mob reference to the list of all player-mobs, besides to either the of dead or alive player-mob lists, as appropriate. Called on Login().
|
||||
/mob/proc/add_to_player_list()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
GLOB.player_list |= src
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
if(stat == DEAD)
|
||||
add_to_current_dead_players()
|
||||
else
|
||||
add_to_current_living_players()
|
||||
|
||||
///Removes the mob reference from the list of all player-mobs, besides from either the of dead or alive player-mob lists, as appropriate. Called on Logout().
|
||||
/mob/proc/remove_from_player_list()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
GLOB.player_list -= src
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
if(stat == DEAD)
|
||||
remove_from_current_dead_players()
|
||||
else
|
||||
remove_from_current_living_players()
|
||||
|
||||
|
||||
///Adds the cliented mob reference to either the list of dead player-mobs or to the list of observers, depending on how they joined the game.
|
||||
/mob/proc/add_to_current_dead_players()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
SSticker.mode.current_players[CURRENT_DEAD_PLAYERS] |= src
|
||||
|
||||
/mob/dead/observer/add_to_current_dead_players()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
if(started_as_observer)
|
||||
SSticker.mode.current_players[CURRENT_OBSERVERS] |= src
|
||||
return
|
||||
return ..()
|
||||
|
||||
/mob/dead/new_player/add_to_current_dead_players()
|
||||
return
|
||||
|
||||
///Removes the mob reference from either the list of dead player-mobs or from the list of observers, depending on how they joined the game.
|
||||
/mob/proc/remove_from_current_dead_players()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
SSticker.mode.current_players[CURRENT_DEAD_PLAYERS] -= src
|
||||
|
||||
/mob/dead/observer/remove_from_current_dead_players()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
if(started_as_observer)
|
||||
SSticker.mode.current_players[CURRENT_OBSERVERS] -= src
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
///Adds the cliented mob reference to the list of living player-mobs. If the mob is an antag, it adds it to the list of living antag player-mobs.
|
||||
/mob/proc/add_to_current_living_players()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
SSticker.mode.current_players[CURRENT_LIVING_PLAYERS] |= src
|
||||
if(mind && (mind.special_role || length(mind.antag_datums)))
|
||||
add_to_current_living_antags()
|
||||
|
||||
///Removes the mob reference from the list of living player-mobs. If the mob is an antag, it removes it from the list of living antag player-mobs.
|
||||
/mob/proc/remove_from_current_living_players()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
SSticker.mode.current_players[CURRENT_LIVING_PLAYERS] -= src
|
||||
if(LAZYLEN(mind?.antag_datums))
|
||||
remove_from_current_living_antags()
|
||||
|
||||
|
||||
///Adds the cliented mob reference to the list of living antag player-mobs.
|
||||
/mob/proc/add_to_current_living_antags()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
SSticker.mode.current_players[CURRENT_LIVING_ANTAGS] |= src
|
||||
|
||||
///Removes the mob reference from the list of living antag player-mobs.
|
||||
/mob/proc/remove_from_current_living_antags()
|
||||
if(!SSticker?.mode)
|
||||
return
|
||||
SSticker.mode.current_players[CURRENT_LIVING_ANTAGS] -= src
|
||||
Reference in New Issue
Block a user