mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-31 20:11:56 +00:00
Implements the new midround roll changes. 1. Split midround rulesets into heavy/light impact First, midround rulesets will be split into light/heavy impact categories. For example, sleeper agent and midround thief would be classified as light impact, while blob/ninja would be classified as heavy impact. This split will then be used to spawn lighter impact antagonists earlier into the round, and higher impact antagonists later into the round. Midrounds before 25 minutes = 100% light impact / 0% heavy impact Midrounds from 25-60 minutes = Varying chances, increasing in favor of heavy impact after enough time Midrounds from 60+ minutes = 0% light impact / 100% heavy impact Low impact threat rulesets are guaranteed to roll if there is enough threat. High impact threat rulesets will carry the same % chance as they do now. If a heavy impact threat ruleset cannot be rolled, but there is enough threat, a light impact threat ruleset will roll in its place. In the future, this can potentially be changed into not spawning any ruleset if the station is deemed extremely hostile, or even be tweaked into spawning protagonists like ERTs. Alongside this, rulesets should be able to determine their minimum time required. For example, nuclear assault has terrible numbers--it's very high cost, and very low weight, which are basically the only variables it can configure. In Dynamic 2022, it should be able to have low cost, still low weight (though maybe nto as much), while only being rollable after 70 minutes or so. 2. Midround antagonists now roll as intervals, determined by midround threat In order to make sure 50 midround threat spawns more antagonists than 10 midround threat, the intervals at which midround threats are spawned will change from 15-45 minutes to increments determined by midround threat. Larger midround threat = more, close intervals, smaller midround threat = less, farther intervals. Any threat not spent on midrounds will still be carried into latejoins, which as before will still consume midround threat, and are unchanged by this document.
143 lines
4.5 KiB
Plaintext
143 lines
4.5 KiB
Plaintext
///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()
|
|
if(QDELETED(src))
|
|
return
|
|
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 a mob reference to the list of all suicided mobs
|
|
/mob/proc/add_to_mob_suicide_list()
|
|
GLOB.suicided_mob_list += src
|
|
|
|
///Removes a mob references from the list of all suicided mobs
|
|
/mob/proc/remove_from_mob_suicide_list()
|
|
GLOB.suicided_mob_list -= src
|
|
|
|
///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()
|
|
if(QDELETED(src))
|
|
return
|
|
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(client.holder)
|
|
GLOB.keyloop_list |= src
|
|
else if(stat != DEAD || !SSlag_switch?.measures[DISABLE_DEAD_KEYLOOP])
|
|
GLOB.keyloop_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
|
|
GLOB.keyloop_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
|
|
GLOB.dead_player_list |= src
|
|
|
|
/mob/dead/observer/add_to_current_dead_players()
|
|
if(!SSticker?.mode)
|
|
return
|
|
if(started_as_observer)
|
|
GLOB.current_observers_list |= 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
|
|
GLOB.dead_player_list -= src
|
|
|
|
/mob/dead/observer/remove_from_current_dead_players()
|
|
if(!SSticker?.mode)
|
|
return
|
|
if(started_as_observer)
|
|
GLOB.current_observers_list -= 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
|
|
GLOB.alive_player_list |= 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
|
|
GLOB.alive_player_list -= 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
|
|
|
|
if (length(mind.antag_datums) == 0)
|
|
return
|
|
|
|
for (var/datum/antagonist/antagonist in mind.antag_datums)
|
|
if (antagonist.count_against_dynamic_roll_chance)
|
|
GLOB.current_living_antags |= src
|
|
return
|
|
|
|
///Removes the mob reference from the list of living antag player-mobs.
|
|
/mob/proc/remove_from_current_living_antags()
|
|
if(!SSticker?.mode)
|
|
return
|
|
GLOB.current_living_antags -= src
|