mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-19 11:05:50 +01:00
Unit Test rework & Master/Ticker update (#17912)
* Unit Test rework & Master/Ticker update * Fixes and working unit testing * Fixes * Test fixes and FA update * Fixed runtimes * Radio subsystem * move that glob wherever later * ident * CIBUILDING compile option * Fixed runtimes * Some changes to the workflow * CI Split * More split * Pathing * Linters and Annotators * ci dir fix * Missing undef fixed * Enable grep checks * More test conversions * More split * Correct file * Removes unneeded inputs * oop * More dependency changes * More conversions * Conversion fixes * Fixes * Some assert fixes * Corrects start gate * Converted some README.dms to README.mds * Removes duplicate proc * Removes unused defines * Example configs * fix dll access viol by double calling * Post-rebase fixes * Cleans up names global list * Undef restart counter * More code/game/ cleanup * Statpanel update * Skybox * add * Fix ticker * Roundend fix * Persistence dependency update * Reordering * Reordering * Reordering * Initstage fix * . * . * Reorder * Reorder * Circle * Mobs * Air * Test fix * CI Script Fix * Configs * More ticker stuff * This is now in 'reboot world' * Restart world announcements * no glob in PreInit * to define * Update * Removed old include * Make this file normal again * moved * test * shared unit testing objects * Updates batched_spritesheets and universal_icon * . * job data debug * rm that * init order * show us * . * i wonder * . * . * urg * do we not have a job ID? * . * rm sleep for now * updated rust-g linux binaries * binaries update 2 * binaries update 3 * testing something * change that * test something * . * . * . * locavar * test * move that * . * debug * don't run this test * strack trace it * cleaner * . * . * cras again * also comment this out * return to official rust g * Update robot_icons.dm * monitor the generation * . --------- Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
@@ -74,9 +74,9 @@
|
||||
name = M.real_name
|
||||
else
|
||||
if(gender == MALE)
|
||||
name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
name = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
name = capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
|
||||
mind = M.mind //we don't transfer the mind but we keep a reference to it.
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
to_chat(src, span_danger("Could not locate an observer spawn point. Use the Teleport verb to jump to the station map."))
|
||||
|
||||
if(!name) //To prevent nameless ghosts
|
||||
name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
name = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
real_name = name
|
||||
animate(src, pixel_y = 2, time = 10, loop = -1)
|
||||
animate(pixel_y = default_pixel_y, time = 10, loop = -1)
|
||||
@@ -683,7 +683,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
return 0 //something is terribly wrong
|
||||
|
||||
var/ghosts_can_write
|
||||
if(ticker.mode.name == "cult")
|
||||
if(SSticker.mode.name == "cult")
|
||||
if(cult.current_antagonists.len > CONFIG_GET(number/cult_ghostwriter_req_cultists))
|
||||
ghosts_can_write = 1
|
||||
|
||||
|
||||
@@ -116,8 +116,8 @@
|
||||
handle_regular_hud_updates()
|
||||
handle_vision()
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
ticker.mode.check_win()
|
||||
if(SSticker && SSticker.mode)
|
||||
SSticker.mode.check_win()
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
/obj/machinery/camera/Initialize(mapload)
|
||||
. = ..()
|
||||
//Camera must be added to global list of all cameras no matter what...
|
||||
if(cameranet.cameras_unsorted || !ticker)
|
||||
if(cameranet.cameras_unsorted || !SSticker)
|
||||
cameranet.cameras += src
|
||||
cameranet.cameras_unsorted = 1
|
||||
else
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// TURFS
|
||||
|
||||
/proc/updateVisibility(atom/A, var/opacity_check = 1)
|
||||
if(ticker)
|
||||
if(SSticker)
|
||||
for(var/datum/visualnet/VN in visual_nets)
|
||||
VN.updateVisibility(A, opacity_check)
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
|
||||
/datum/visualnet/proc/updateVisibility(atom/A, var/opacity_check = 1)
|
||||
|
||||
if(!ticker || (opacity_check && !A.opacity))
|
||||
if(!SSticker || (opacity_check && !A.opacity))
|
||||
return
|
||||
majorChunkChange(A, 2)
|
||||
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
|
||||
if(!syllables || !syllables.len)
|
||||
if(gender==FEMALE)
|
||||
return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
|
||||
var/full_name = ""
|
||||
var/new_name = ""
|
||||
|
||||
@@ -127,8 +127,8 @@
|
||||
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix")
|
||||
|
||||
/datum/language/skrell/get_random_name(var/gender)
|
||||
var/list/first_names = file2list('config/names/first_name_skrell.txt')
|
||||
var/list/last_names = file2list('config/names/last_name_skrell.txt')
|
||||
var/list/first_names = file2list('strings/names/first_name_skrell.txt')
|
||||
var/list/last_names = file2list('strings/names/last_name_skrell.txt')
|
||||
return "[pick(first_names)] [pick(last_names)]"
|
||||
|
||||
/datum/language/human
|
||||
@@ -152,9 +152,9 @@
|
||||
/datum/language/human/get_random_name(var/gender)
|
||||
if (prob(80))
|
||||
if(gender==FEMALE)
|
||||
return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
if(prob(70))
|
||||
return "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
|
||||
else
|
||||
return pick(ai_names)
|
||||
return pick(GLOB.ai_names)
|
||||
|
||||
/datum/language/teshari
|
||||
name = LANGUAGE_SCHECHI
|
||||
|
||||
@@ -117,11 +117,11 @@
|
||||
/datum/species/proc/get_random_name(var/gender)
|
||||
if(!name_language)
|
||||
if(gender == FEMALE)
|
||||
return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else if(gender == MALE)
|
||||
return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(prob(50) ? pick(first_names_male) : pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
return capitalize(prob(50) ? pick(GLOB.first_names_male) : pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
|
||||
var/datum/language/species_language = GLOB.all_languages[name_language]
|
||||
if(!species_language)
|
||||
|
||||
@@ -932,8 +932,8 @@
|
||||
|
||||
//check for nuke disks
|
||||
if(client && stat != DEAD) //if they are clientless and dead don't bother, the parent will treat them as any other container
|
||||
if(ticker && istype(ticker.mode, /datum/game_mode/nuclear)) //only really care if the game mode is nuclear
|
||||
var/datum/game_mode/nuclear/G = ticker.mode
|
||||
if(SSticker && istype(SSticker.mode, /datum/game_mode/nuclear)) //only really care if the game mode is nuclear
|
||||
var/datum/game_mode/nuclear/G = SSticker.mode
|
||||
if(G.check_mob(src))
|
||||
if(x <= TRANSITIONEDGE)
|
||||
inertia_dir = 4
|
||||
@@ -1429,7 +1429,7 @@
|
||||
"})
|
||||
|
||||
/mob/living/update_gravity(has_gravity)
|
||||
if(!ticker)
|
||||
if(!SSticker)
|
||||
return
|
||||
if(has_gravity)
|
||||
clear_alert("weightless")
|
||||
|
||||
@@ -113,11 +113,11 @@ var/list/ai_verbs_default = list(
|
||||
announcement.announcement_type = "A.I. Announcement"
|
||||
announcement.newscast = 1
|
||||
|
||||
var/list/possibleNames = ai_names
|
||||
var/list/possibleNames = GLOB.ai_names
|
||||
|
||||
var/pickedName = null
|
||||
while(!pickedName)
|
||||
pickedName = pick(ai_names)
|
||||
pickedName = pick(GLOB.ai_names)
|
||||
for (var/mob/living/silicon/ai/A in GLOB.mob_list)
|
||||
if (A.real_name == pickedName && possibleNames.len > 1) //fixing the theoretically possible infinite loop
|
||||
possibleNames -= pickedName
|
||||
|
||||
@@ -15,7 +15,7 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores)
|
||||
set category = "OOC.Game"
|
||||
set desc = "Enter intelligence storage. This is functionally equivalent to cryo or robotic storage, freeing up your job slot."
|
||||
|
||||
if(ticker && ticker.mode && ticker.mode.name == "AI malfunction")
|
||||
if(SSticker && SSticker.mode && SSticker.mode.name == "AI malfunction")
|
||||
to_chat(src, span_danger("You cannot use this verb in malfunction. If you need to leave, please adminhelp."))
|
||||
return
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
GLOB.paikeys |= pai.ckey
|
||||
card.setPersonality(pai)
|
||||
if(!candidate.name)
|
||||
pai.SetName(pick(ninja_names))
|
||||
pai.SetName(pick(GLOB.ninja_names))
|
||||
else
|
||||
pai.SetName(candidate.name)
|
||||
if(candidate.description)
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
/obj/machinery/drone_fabricator/process()
|
||||
|
||||
if(ticker.current_state < GAME_STATE_PLAYING)
|
||||
if(SSticker.current_state < GAME_STATE_PLAYING)
|
||||
return
|
||||
|
||||
if(stat & NOPOWER || !produce_drones)
|
||||
|
||||
@@ -34,11 +34,11 @@
|
||||
|
||||
/mob/living/silicon/robot/platform/attack_ghost(mob/observer/dead/user)
|
||||
|
||||
if(client || key || stat == DEAD || !ticker || !ticker.mode)
|
||||
if(client || key || stat == DEAD || !SSticker || !SSticker.mode)
|
||||
return ..()
|
||||
|
||||
var/confirm = tgui_alert(user, "Do you wish to take control of \the [src]?", "Platform Control", list("No", "Yes"))
|
||||
if(confirm != "Yes" || QDELETED(src) || client || key || stat == DEAD || !ticker || !ticker.mode)
|
||||
if(confirm != "Yes" || QDELETED(src) || client || key || stat == DEAD || !SSticker || !SSticker.mode)
|
||||
return ..()
|
||||
|
||||
if(jobban_isbanned(user, "Robot"))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
var/datum/admins/is_admin = GLOB.admin_datums[src.ckey]
|
||||
if(is_admin && is_admin.check_for_rights(R_HOLDER))
|
||||
message_admins("Staff logout: [key_name(src)]") // Staff logout notice displays no matter what
|
||||
if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
|
||||
if (SSticker && SSticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
|
||||
var/admins_number = GLOB.admins.len
|
||||
|
||||
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
// Try to figure out what time to use
|
||||
|
||||
// Special cases, can never respawn
|
||||
if(ticker?.mode?.deny_respawn)
|
||||
if(SSticker?.mode?.deny_respawn)
|
||||
time = -1
|
||||
else if(!CONFIG_GET(flag/abandon_allowed))
|
||||
time = -1
|
||||
@@ -348,7 +348,7 @@
|
||||
time = -1
|
||||
|
||||
// Special case for observing before game start
|
||||
else if(ticker?.current_state <= GAME_STATE_SETTING_UP)
|
||||
else if(SSticker?.current_state <= GAME_STATE_SETTING_UP)
|
||||
time = 1 MINUTE
|
||||
|
||||
// Wasn't given a time, use the config time
|
||||
@@ -377,7 +377,7 @@
|
||||
to_chat(src, span_boldnotice("You are already in the lobby!"))
|
||||
return
|
||||
|
||||
if(stat != DEAD || !ticker)
|
||||
if(stat != DEAD || !SSticker)
|
||||
to_chat(src, span_boldnotice("You must be dead to use this!"))
|
||||
return
|
||||
|
||||
|
||||
@@ -146,6 +146,9 @@
|
||||
// Used many times below, faster reference.
|
||||
var/atom/loc = my_mob.loc
|
||||
|
||||
if(HAS_TRAIT(my_mob, TRAIT_NO_TRANSFORM))
|
||||
return FALSE //This is sorta the goto stop mobs from moving trait
|
||||
|
||||
// We're controlling an object which is when admins possess an object.
|
||||
if(my_mob.control_object)
|
||||
Move_object(direct)
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
data["server_name"] = displayed_name
|
||||
data["map"] = using_map.full_name
|
||||
data["station_time"] = stationtime2text()
|
||||
data["display_loading"] = SSticker.current_state == GAME_STATE_INIT
|
||||
data["display_loading"] = SSticker.current_state == GAME_STATE_STARTUP
|
||||
data["round_start"] = !SSticker.mode || SSticker.current_state <= GAME_STATE_PREGAME
|
||||
data["round_time"] = roundduration2text()
|
||||
data["ready"] = ready
|
||||
@@ -82,7 +82,7 @@
|
||||
ViewManifest()
|
||||
return TRUE
|
||||
if("late_join")
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING)
|
||||
to_chat(usr, span_red("The round is either not ready, or has already finished..."))
|
||||
return TRUE
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
if("observe")
|
||||
if(QDELETED(src))
|
||||
return FALSE
|
||||
if(!SSticker || SSticker.current_state == GAME_STATE_INIT)
|
||||
if(!SSticker || SSticker.current_state == GAME_STATE_STARTUP)
|
||||
to_chat(src, span_warning("The game is still setting up, please try again later."))
|
||||
return TRUE
|
||||
if(tgui_alert(src,"Are you sure you wish to observe? If you do, make sure to not use any knowledge gained from observing if you decide to join later.","Observe Round?",list("Yes","No")) == "Yes")
|
||||
@@ -160,7 +160,7 @@
|
||||
client.changes()
|
||||
return TRUE
|
||||
if("keyboard")
|
||||
if(!SSsounds.subsystem_initialized)
|
||||
if(!SSsounds.initialized)
|
||||
return
|
||||
|
||||
playsound_local(ui.user, get_sfx("keyboard"), vol = 20)
|
||||
|
||||
@@ -42,11 +42,11 @@
|
||||
// if(SSvote.mode)
|
||||
// . += "Vote: [capitalize(SSvote.mode)] Time Left: [SSvote.time_remaining] s"
|
||||
|
||||
if(SSticker.current_state == GAME_STATE_INIT)
|
||||
if(SSticker.current_state == GAME_STATE_STARTUP)
|
||||
. += "Time To Start: Server Initializing"
|
||||
|
||||
else if(SSticker.current_state == GAME_STATE_PREGAME)
|
||||
. += "Time To Start: [round(SSticker.pregame_timeleft,1)][GLOB.round_progressing ? "" : " (DELAYED)"]"
|
||||
. += "Time To Start: [round(SSticker.timeLeft, 1)][GLOB.round_progressing ? "" : " (DELAYED)"]"
|
||||
. += "Players: [totalPlayers]"
|
||||
. += "Players Ready: [totalPlayersReady]"
|
||||
totalPlayers = 0
|
||||
@@ -223,7 +223,7 @@
|
||||
/mob/new_player/proc/AttemptLateSpawn(rank,var/spawning_at)
|
||||
if (src != usr)
|
||||
return 0
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING)
|
||||
to_chat(src, span_red("The round is either not ready, or has already finished..."))
|
||||
return 0
|
||||
if(!CONFIG_GET(flag/enter_allowed))
|
||||
@@ -297,7 +297,7 @@
|
||||
character = character.AIize(move = FALSE) // Dupe of code in /datum/controller/subsystem/ticker/proc/create_characters() for non-latespawn, unify?
|
||||
|
||||
AnnounceCyborg(character, rank, "has been transferred to the empty core in \the [character.loc.loc]")
|
||||
ticker.mode.latespawn(character)
|
||||
SSticker.mode.latespawn(character)
|
||||
|
||||
qdel(C) //Deletes empty core (really?)
|
||||
qdel(src) //Deletes new_player
|
||||
@@ -308,22 +308,22 @@
|
||||
character.buckled.loc = character.loc
|
||||
character.buckled.set_dir(character.dir)
|
||||
|
||||
ticker.mode.latespawn(character)
|
||||
SSticker.mode.latespawn(character)
|
||||
|
||||
if(rank == JOB_OUTSIDER)
|
||||
log_and_message_admins("has joined the round as non-crew. (<A href='byond://?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",character)
|
||||
if(!(J.mob_type & JOB_SILICON))
|
||||
ticker.minds += character.mind
|
||||
SSticker.minds += character.mind
|
||||
else if(rank == JOB_ANOMALY)
|
||||
log_and_message_admins("has joined the round as anomaly. (<A href='byond://?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",character)
|
||||
if(!(J.mob_type & JOB_SILICON))
|
||||
ticker.minds += character.mind
|
||||
SSticker.minds += character.mind
|
||||
else if(J.mob_type & JOB_SILICON)
|
||||
AnnounceCyborg(character, rank, join_message, announce_channel, character.z)
|
||||
else
|
||||
AnnounceArrival(character, rank, join_message, announce_channel, character.z)
|
||||
GLOB.data_core.manifest_inject(character)
|
||||
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
SSticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
|
||||
if(ishuman(character))
|
||||
if(character.client.prefs.auto_backup_implant)
|
||||
var/obj/item/implant/backup/imp = new(src)
|
||||
@@ -370,7 +370,7 @@
|
||||
qdel(src) // Delete new_player mob
|
||||
|
||||
/mob/new_player/proc/AnnounceCyborg(var/mob/living/character, var/rank, var/join_message, var/channel, var/zlevel)
|
||||
if (ticker.current_state == GAME_STATE_PLAYING)
|
||||
if (SSticker.current_state == GAME_STATE_PLAYING)
|
||||
var/list/zlevels = zlevel ? using_map.get_map_levels(zlevel, TRUE, om_range = DEFAULT_OVERMAP_RANGE) : null
|
||||
if(character.mind.role_alt_title)
|
||||
rank = character.mind.role_alt_title
|
||||
@@ -402,7 +402,7 @@
|
||||
if(!new_character)
|
||||
new_character = new(T)
|
||||
|
||||
if(ticker.random_players)
|
||||
if(CONFIG_GET(flag/force_random_names))
|
||||
new_character.gender = pick(MALE, FEMALE)
|
||||
client.prefs.real_name = random_name(new_character.gender)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user