Skyrat Cleanup: Total Veteran Annihilation (#2519)

## About The Pull Request
Removes all fragments of veteran code from the game.
## Why It's Good For The Game
It should help maintainers when doing upstream syncs as it removes some
non-modular code. Also we have no use for the veteran system.
## Proof Of Testing
It compiled and ran.
## Changelog
Nothing player facing.

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
This commit is contained in:
Alexis
2024-11-28 09:07:02 +00:00
committed by GitHub
co-authored by Waterpig
parent 0a7308c3b1
commit 780ce44d33
30 changed files with 4 additions and 255 deletions
+1 -2
View File
@@ -1,6 +1,5 @@
// Just keeping this easy to maintain in the future.
#define JOB_NOT_VETERAN (JOB_UNAVAILABLE_AGE + 1)
#define JOB_UNAVAILABLE_QUIRK (JOB_NOT_VETERAN + 1)
#define JOB_UNAVAILABLE_QUIRK (JOB_UNAVAILABLE_AGE + 1)
#define JOB_UNAVAILABLE_SPECIES (JOB_UNAVAILABLE_QUIRK + 1)
#define JOB_UNAVAILABLE_LANGUAGE (JOB_UNAVAILABLE_SPECIES + 1)
#define JOB_UNAVAILABLE_FLAVOUR (JOB_UNAVAILABLE_LANGUAGE + 1)
-4
View File
@@ -964,10 +964,6 @@ SUBSYSTEM_DEF(job)
return JOB_UNAVAILABLE_AGE
//SKYRAT EDIT ADDITION BEGIN - CUSTOMIZATION
if(!CONFIG_GET(flag/bypass_veteran_system) && possible_job.veteran_only && !SSplayer_ranks.is_veteran(player.client))
job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_NOT_VETERAN)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_NOT_VETERAN
if(possible_job.has_banned_quirk(player.client.prefs))
job_debug("[debug_prefix] Error: [get_job_unavailable_error_message(JOB_UNAVAILABLE_QUIRK)], Player: [player][add_job_to_log ? ", Job: [possible_job]" : ""]")
return JOB_UNAVAILABLE_QUIRK
-3
View File
@@ -36,9 +36,6 @@ ADMIN_VERB_ONLY_CONTEXT_MENU(show_player_panel, R_ADMIN, "Show Player Panel", mo
if(SSplayer_ranks.is_mentor(player.client, admin_bypass = FALSE))
player_ranks += "Mentor"
if(SSplayer_ranks.is_veteran(player.client, admin_bypass = FALSE))
player_ranks += "Veteran"
//BUBBER ADDITION START
if(SSplayer_ranks.is_vetted(player.client, admin_bypass = FALSE))
player_ranks |= "Vetted"
@@ -75,7 +75,6 @@
jobs[job.title] = list(
"description" = job.description,
"department" = department_name,
"veteran" = job.veteran_only, // SKYRAT EDIT
"alt_titles" = job.alt_titles, // SKYRAT EDIT
)
@@ -101,10 +100,6 @@
/datum/preference_middleware/jobs/get_ui_static_data(mob/user)
var/list/data = list()
// SKYRAT EDIT
if(CONFIG_GET(flag/bypass_veteran_system) || SSplayer_ranks.is_veteran(user.client))
data["is_veteran"] = TRUE
// SKYRAT EDIT END
// BUBBER EDIT BEGIN
if(SSplayer_ranks.is_vetted(user.client))
data["is_vetted"] = TRUE
@@ -54,7 +54,6 @@
"value" = initial(quirk.value),
"customizable" = constant_data?.is_customizable(),
"customization_options" = customization_options,
"veteran_only" = initial(quirk.veteran_only), // SKYRAT EDIT - Veteran quirks
"species_whitelist" = species_whitelist, //BUBBER EDIT - Species quirks
)
@@ -71,13 +70,6 @@
/datum/preference_middleware/quirks/proc/give_quirk(list/params, mob/user)
var/quirk_name = params["quirk"]
//SKYRAT EDIT ADDITION
var/list/quirks = SSquirks.get_quirks()
var/datum/quirk/quirk = quirks[quirk_name]
if(!CONFIG_GET(flag/bypass_veteran_system) && initial(quirk.veteran_only) && !SSplayer_ranks.is_veteran(preferences?.parent))
return FALSE
//SKYRAT EDIT END
var/list/new_quirks = preferences.all_quirks | quirk_name
if (SSquirks.filter_invalid_quirks(new_quirks, preferences.augments) != new_quirks)// SKYRAT EDIT - AUGMENTS+
// If the client is sending an invalid give_quirk, that means that
@@ -114,13 +106,6 @@
var/list/selected_quirks = list()
for (var/quirk in preferences.all_quirks)
//SKYRAT EDIT ADDITION
var/list/quirks = SSquirks.get_quirks()
var/datum/quirk/quirk_datum = quirks[quirk]
if(!CONFIG_GET(flag/bypass_veteran_system) && initial(quirk_datum.veteran_only) && !SSplayer_ranks.is_veteran(preferences?.parent))
preferences.all_quirks -= quirk
continue
//SKYRAT EDIT END
selected_quirks += sanitize_css_class_name(quirk)
return selected_quirks
@@ -61,6 +61,5 @@
data[species_id]["enabled_features"] = species.get_features()
data[species_id]["perks"] = species.get_species_perks()
data[species_id]["diet"] = species.get_species_diet()
data[species_id]["veteran_only"] = species.veteran_only // SKYRAT EDIT ADDITION - Veteran races
return data
@@ -122,8 +122,6 @@
if(JOB_UNAVAILABLE_SLOTFULL)
return "[jobtitle] is already filled to capacity."
//SKYRAT EDIT ADDITION
if(JOB_NOT_VETERAN)
return "You need to be veteran to join as [jobtitle]."
if(JOB_UNAVAILABLE_QUIRK)
return "[jobtitle] is restricted due to your selected quirks."
if(JOB_UNAVAILABLE_LANGUAGE)
@@ -171,8 +169,6 @@
return JOB_UNAVAILABLE_LANGUAGE
if(job.has_banned_quirk(client.prefs))
return JOB_UNAVAILABLE_QUIRK
if(!CONFIG_GET(flag/bypass_veteran_system) && job.veteran_only && !SSplayer_ranks.is_veteran(client))
return JOB_NOT_VETERAN
if(job.has_banned_species(client.prefs))
return JOB_UNAVAILABLE_SPECIES
//SKYRAT EDIT END
-4
View File
@@ -144,7 +144,6 @@ SIZE_COLLAR_MINIMUM 15
## These flags are automatically enabled if SQL_ENABLED isn't.
DONATOR_LEGACY_SYSTEM
MENTOR_LEGACY_SYSTEM
VETERAN_LEGACY_SYSTEM
## How much time arrivals shuttle should stay at station after its engines recharged before returning to interlink. In deciseconds. 150 - 15 seconds. 0 - disables autoreturn.
ARRIVALS_WAIT 150
@@ -161,8 +160,5 @@ LOWPOP_THRESHOLD_ENABLE 9
## The lowpop subsystem fire rate. It does actions each time it fires.(default is 10 minutes)
LOWPOP_SUBSYSTEM_FIRE 3000
## Uncomment to make veteran quirks and jobs available to everybody
#BYPASS_VETERAN_SYSTEM
## Uncomment to enable the age prompt system; It asks players for their date of birth upon entry and denies players below a certain age.
#AGE_PROMPT_SYSTEM
@@ -60,7 +60,3 @@
/// Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system.
/datum/config_entry/flag/mentor_legacy_system
protection = CONFIG_ENTRY_LOCKED
/// Defines whether the server uses the legacy veteran system with veteran_players.txt or the SQL system.
/datum/config_entry/flag/veteran_legacy_system
protection = CONFIG_ENTRY_LOCKED
@@ -1,5 +1,3 @@
/datum/quirk
/// Is this quirk restricted to veteran players only?
var/veteran_only = FALSE
// Is this quirk hidden from TGUI / the character preferences window?
var/hidden_quirk = FALSE
@@ -1,5 +1,5 @@
/// The list of the available special player ranks
#define SKYRAT_PLAYER_RANKS list("Donator", "Mentor", "Veteran")
#define SKYRAT_PLAYER_RANKS list("Donator", "Mentor")
ADMIN_VERB(manage_player_ranks, R_PERMISSIONS, "Manage Player Ranks", "Manage who has the special player ranks while the server is running.", ADMIN_CATEGORY_MAIN)
if(!check_rights(R_PERMISSIONS))
@@ -7,7 +7,7 @@ ADMIN_VERB(manage_player_ranks, R_PERMISSIONS, "Manage Player Ranks", "Manage wh
usr.client?.holder.manage_player_ranks()
/// Proc for admins to change people's "player" ranks (donator, mentor, veteran, etc.)
/// Proc for admins to change people's "player" ranks (donator, mentor, etc.)
/datum/admins/proc/manage_player_ranks()
if(IsAdminAdvancedProcCall())
return
@@ -43,7 +43,6 @@
/obj/item/ammo_box/magazine/caflechette = 10,
)
veteran_only = TRUE
job_flags = STATION_JOB_FLAGS | JOB_CANNOT_OPEN_SLOTS
/datum/outfit/job/blueshield
@@ -16,10 +16,6 @@
/// Which languages does the job require, associative to UNDERSTOOD_LANGUAGE or (UNDERSTOOD_LANGUAGE | SPOKEN_LANGUAGE)
var/list/required_languages = list(/datum/language/common = (UNDERSTOOD_LANGUAGE | SPOKEN_LANGUAGE))
///Is this job veteran only? If so, then this job requires the player to be in the veteran_players.txt
var/veteran_only = FALSE
/datum/job/proc/has_banned_quirk(datum/preferences/pref)
if(!pref) //No preferences? We'll let you pass, this time (just a precautionary check,you dont wanna mess up gamemode setting logic)
return FALSE
@@ -21,8 +21,6 @@ GLOBAL_LIST_EMPTY(customizable_races)
var/markings_alpha = 255
///If a species can always be picked in prefs for the purposes of customizing it for ghost roles or events
var/always_customizable = FALSE
/// If a species requires the player to be a Veteran to be able to pick it.
var/veteran_only = FALSE
///Flavor text of the species displayed on character creation screeen
var/flavor_text = "No description."
///Path to BODYSHAPE_CUSTOM species worn icons. An assoc list of ITEM_SLOT_X => /icon
@@ -25,7 +25,6 @@
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT
examine_limb_id = SPECIES_HUMAN
skinned_type = /obj/item/stack/sheet/animalhide/human
veteran_only = TRUE
/datum/species/hemophage/allows_food_preferences()
return FALSE
@@ -37,7 +37,6 @@
/obj/item/reagent_containers/cup/glass/bottle/champagne = 10
)
veteran_only = TRUE
job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS
/datum/outfit/job/nanotrasen_consultant
@@ -12,7 +12,6 @@
value = 0
mob_trait = TRAIT_OVERSIZED
icon = FA_ICON_EXPAND_ARROWS_ALT
veteran_only = TRUE
quirk_flags = QUIRK_HUMAN_ONLY|QUIRK_CHANGES_APPEARANCE
/datum/quirk/oversized/add(client/client_source)
@@ -4,7 +4,6 @@
icon = FA_ICON_HORSE
value = 4
mob_trait = TRAIT_PET_OWNER
veteran_only = TRUE
gain_text = span_notice("You brought your pet with you to work.")
lose_text = span_danger("You feel lonely, as if leaving somebody behind...")
medical_record_text = "Patient mentions their fondness for their pet."
@@ -1 +0,0 @@
/datum/config_entry/flag/bypass_veteran_system
@@ -1,47 +0,0 @@
/// The list of all veteran players.
GLOBAL_LIST_EMPTY(veteran_list)
GLOBAL_PROTECT(veteran_list)
/datum/player_rank_controller/veteran
rank_title = "veteran"
/datum/player_rank_controller/veteran/New()
. = ..()
legacy_file_path = "[global.config.directory]/skyrat/veteran_players.txt"
/datum/player_rank_controller/veteran/add_player(ckey)
if(IsAdminAdvancedProcCall())
return
ckey = ckey(ckey)
// Associative list for extra SPEED!
GLOB.veteran_list[ckey] = TRUE
/datum/player_rank_controller/veteran/remove_player(ckey)
if(IsAdminAdvancedProcCall())
return
GLOB.veteran_list -= ckey
/datum/player_rank_controller/veteran/get_ckeys_for_legacy_save()
if(IsAdminAdvancedProcCall())
return
return GLOB.veteran_list
/datum/player_rank_controller/veteran/should_use_legacy_system()
return CONFIG_GET(flag/veteran_legacy_system)
/datum/player_rank_controller/veteran/clear_existing_rank_data()
if(IsAdminAdvancedProcCall())
return
GLOB.veteran_list = list()
@@ -18,8 +18,7 @@ SUBSYSTEM_DEF(player_ranks)
var/datum/player_rank_controller/donator/donator_controller
/// The mentor player rank controller.
var/datum/player_rank_controller/mentor/mentor_controller
/// The veteran player rank controller.
var/datum/player_rank_controller/veteran/veteran_controller
/// The vetted player rank controller.
var/datum/player_rank_controller/vetted/vetted_controller
/datum/controller/subsystem/player_ranks/Initialize()
@@ -28,7 +27,6 @@ SUBSYSTEM_DEF(player_ranks)
load_donators()
load_mentors()
load_veterans()
load_vetted_ckeys()
return SS_INIT_SUCCESS
@@ -38,7 +36,6 @@ SUBSYSTEM_DEF(player_ranks)
QDEL_NULL(donator_controller)
QDEL_NULL(mentor_controller)
QDEL_NULL(veteran_controller)
QDEL_NULL(vetted_controller)
/**
@@ -77,18 +74,6 @@ SUBSYSTEM_DEF(player_ranks)
return user.is_mentor(admin_bypass)
/**
* Returns whether or not the user is qualified as a veteran.
*
* Arguments:
* * user - The client to verify the veteran status of.
* * admin_bypass - Whether or not admins can succeed this check, even if they
* do not actually possess the role. Defaults to `TRUE`.
*/
/datum/controller/subsystem/player_ranks/proc/is_veteran(client/user, admin_bypass = TRUE) // BUBBER TODO - Remove the remnants of the skyrat elitism system
return TRUE
/// Handles loading donators either via SQL or using the legacy system,
/// based on configs.
/datum/controller/subsystem/player_ranks/proc/load_donators()
@@ -167,33 +152,6 @@ SUBSYSTEM_DEF(player_ranks)
load_player_rank_sql(mentor_controller)
/// Handles loading veteran players either via SQL or using the legacy system,
/// based on configs.
/datum/controller/subsystem/player_ranks/proc/load_veterans()
PROTECTED_PROC(TRUE)
if(IsAdminAdvancedProcCall())
return
veteran_controller = new
if(CONFIG_GET(flag/veteran_legacy_system))
veteran_controller.load_legacy()
return
if(!SSdbcore.Connect())
var/message = "Failed to connect to database in load_veterans(). Reverting to legacy system."
log_config(message)
log_game(message)
message_admins(message)
CONFIG_SET(flag/veteran_legacy_system, TRUE)
veteran_controller.load_legacy()
return
load_player_rank_sql(veteran_controller)
/**
* Handles populating the player rank from the database.
*
@@ -234,9 +192,6 @@ SUBSYSTEM_DEF(player_ranks)
if(rank_title == mentor_controller.rank_title)
return mentor_controller
if(rank_title == veteran_controller.rank_title)
return veteran_controller
CRASH("Invalid player_rank_controller \"[rank_title || "*null*"]\" used in get_controller_for_group()!")
@@ -3,8 +3,6 @@
/datum/station_trait/overflow_job_bureaucracy/set_overflow_job_override(datum/source)
var/datum/job/picked_job = pick(SSjob.joinable_occupations)
while(picked_job.veteran_only)
picked_job = pick(SSjob.joinable_occupations)
chosen_job_name = lowertext(picked_job.title) // like Chief Engineers vs like chief engineers
SSjob.set_overflow_role(picked_job.type)
@@ -1,5 +0,0 @@
/datum/job/clown
veteran_only = TRUE
/datum/job/mime
veteran_only = TRUE
@@ -1,2 +0,0 @@
/datum/species/snail
veteran_only = TRUE
@@ -1,28 +0,0 @@
## Title: Veteran Only Overrides
MODULE ID: VETERAN_ONLY
### Description:
Overrides or extends /tg/ definitions with veteran only requirements.
As of module creation, there are no veteran_only overrides remaining in the master files.
### TG Proc Changes:
- N/A
### Defines:
- N/A
### Master file additions
- None!
### Included files that are not contained in this module:
- N/A
### Credits:
- N/A
-4
View File
@@ -8339,10 +8339,8 @@
#include "modular_skyrat\modules\player_ranks\code\preferences.dm"
#include "modular_skyrat\modules\player_ranks\code\world_topic.dm"
#include "modular_skyrat\modules\player_ranks\code\player_rank_controller\_player_rank_controller.dm"
#include "modular_skyrat\modules\player_ranks\code\player_rank_controller\config_entry.dm"
#include "modular_skyrat\modules\player_ranks\code\player_rank_controller\donator_controller.dm"
#include "modular_skyrat\modules\player_ranks\code\player_rank_controller\mentor_controller.dm"
#include "modular_skyrat\modules\player_ranks\code\player_rank_controller\veteran_controller.dm"
#include "modular_skyrat\modules\player_ranks\code\subsystem\player_ranks.dm"
#include "modular_skyrat\modules\pod_locking\pod_locking.dm"
#include "modular_skyrat\modules\polarized_windows\capacitor.dm"
@@ -8613,8 +8611,6 @@
#include "modular_skyrat\modules\verbs\code\looc.dm"
#include "modular_skyrat\modules\verbs\code\say.dm"
#include "modular_skyrat\modules\verbs\code\subtle.dm"
#include "modular_skyrat\modules\veteran_only\code\job_types.dm"
#include "modular_skyrat\modules\veteran_only\code\species_types.dm"
#include "modular_skyrat\modules\vox_sprites\code\color.dm"
#include "modular_skyrat\modules\vox_sprites\code\head.dm"
#include "modular_skyrat\modules\vox_sprites\code\security.dm"
@@ -225,14 +225,6 @@ const JobRow = (props: { className?: string; job: Job; name: string }) => {
</Stack>
);
// SKYRAT EDIT START
} else if (job.veteran && !data.is_veteran) {
rightSide = (
<Stack align="center" height="100%" pr={1}>
<Stack.Item grow textAlign="right">
<b>Veteran Only</b>
</Stack.Item>
</Stack>
);
} else if (
data.species_restricted_jobs &&
data.species_restricted_jobs.indexOf(name) !== -1
@@ -344,11 +344,6 @@ export function QuirksPage(props) {
}
}
// SKYRAT EDIT START - Veteran quirks. Please phase these out! - Kali
if (quirk.veteran_only && !data.is_veteran) {
return 'You need to be a veteran to select this quirk, apply today!';
}
// SKYRAT EDIT END
const selectedQuirkNames = selectedQuirks.map((quirkKey) => {
return quirkInfo[quirkKey].name;
});
@@ -1,5 +1,3 @@
import { classes } from 'common/react';
import { useBackend } from '../../backend';
import {
BlockQuote,
@@ -268,49 +266,6 @@ const SpeciesPageInner = (props: {
<Stack.Item grow>
<Stack fill>
<Stack.Item>
<Box height="calc(100vh - 170px)" overflowY="auto" pr={3}>
{species.map(([speciesKey, species]) => {
// SKYRAT EDIT START - Veteran-only species
let speciesPage = (
<Button
key={speciesKey}
onClick={() => {
if (species.veteran_only && !data.is_veteran) {
return;
}
setSpecies(speciesKey);
}}
selected={
data.character_preferences.misc.species === speciesKey
}
tooltip={species.name}
style={{
display: 'block',
height: '64px',
width: '64px',
}}
>
<Box
className={classes(['species64x64', species.icon])}
ml={-1}
/>
</Button>
);
if (species.veteran_only && !data.is_veteran) {
let tooltipContent =
species.name +
' - You need to be a veteran to select this race, apply today!';
speciesPage = (
<Tooltip content={tooltipContent}>{speciesPage}</Tooltip>
);
}
return speciesPage;
// SKYRAT EDIT END
})}
</Box>
</Stack.Item>
<Stack.Item grow>
<Box>
<Box>
@@ -52,8 +52,6 @@ export type Species = {
enabled_features: string[];
veteran_only: boolean; // SKYRAT EDIT - Veteran quirks
perks: {
positive: Perk[];
negative: Perk[];
@@ -81,7 +79,6 @@ export type Job = {
description: string;
department: string;
// SKYRAT EDIT
veteran?: boolean;
alt_titles?: string[];
// SKYRAT EDIT END
};
@@ -93,7 +90,6 @@ export type Quirk = {
value: number;
customizable: boolean;
customization_options?: string[];
veteran_only: boolean; // SKYRAT EDIT - Veteran quirks
species_whitelist: Record<string, string>[]; // BUBBER EDIT ADDITION - Species quirks
};
@@ -182,7 +178,6 @@ export type PreferencesMenuData = {
preview_options: string[]; // SKYRAT EDIT ADDITION
preview_selection: string; // SKYRAT EDIT ADDITION
is_veteran: BooleanLike; // SKYRAT EDIT - Veteran status
is_vetted: BooleanLike; // BUBBER EDIT - Vetted Users
character_preferences: {
clothing: Record<string, string>;