diff --git a/code/__defines/species_languages_vr.dm b/code/__defines/species_languages_vr.dm index 224478646db..1004c1e22c1 100644 --- a/code/__defines/species_languages_vr.dm +++ b/code/__defines/species_languages_vr.dm @@ -1,3 +1,5 @@ +#define SPECIES_WHITELIST_SELECTABLE 0x20 // Can select and customize, but not join as + #define LANGUAGE_BIRDSONG "Birdsong" #define LANGUAGE_SAGARU "Sagaru" #define LANGUAGE_CANILUNZT "Canilunzt" diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index a3687b9b99c..efe8590d162 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -186,7 +186,7 @@ var/global/list/string_slot_flags = list( if(!(S.spawn_flags & SPECIES_IS_RESTRICTED)) playable_species += S.name - if(S.spawn_flags & SPECIES_IS_WHITELISTED) + if((S.spawn_flags & SPECIES_IS_WHITELISTED) || (S.spawn_flags & SPECIES_WHITELIST_SELECTABLE)) //VOREStation Edit whitelisted_species += S.name //Posters diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index ff708ad3776..7d894894741 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -467,7 +467,7 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN, if(species_name in blacklisted_icons) continue var/datum/species/S = all_species[species_name] - if(S.spawn_flags & SPECIES_IS_WHITELISTED) + if((S.spawn_flags & SPECIES_IS_WHITELISTED) || (S.spawn_flags & SPECIES_WHITELIST_SELECTABLE)) continue custom_species_bases += species_name diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 9a13e066a54..1270490517e 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -40,7 +40,7 @@ var/list/whitelist = list() return 0 //The species isn't even whitelisted - if(!(species.spawn_flags & SPECIES_IS_WHITELISTED)) + if(!(species.spawn_flags & SPECIES_IS_WHITELISTED) && !(species.spawn_flags & SPECIES_WHITELIST_SELECTABLE)) //VOREStation Edit return 1 //If we have a loaded file, search it diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index cda61be1b31..841838dc6a4 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -825,7 +825,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O dat += "
Unheard of on human stations." else dat += "
May be present on human stations." - if(current_species.spawn_flags & SPECIES_IS_WHITELISTED) + if((current_species.spawn_flags & SPECIES_IS_WHITELISTED) || (current_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE)) //VOREStation Edit dat += "
Whitelist restricted." if(!current_species.has_organ[O_HEART]) dat += "
Does not have a circulatory system." @@ -853,7 +853,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O var/restricted = 0 - if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) + + //VOREStation Addition begin + if(current_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE) + restricted = 3 + //VOREStation Addition end + else if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) //VOREStation Edit restricted = 2 else if(!is_alien_whitelisted(preference_mob(),current_species)) restricted = 1 @@ -863,6 +868,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O dat += "You cannot play as this species.
If you wish to be whitelisted, you can make an application post on the forums.

" else if(restricted == 2) dat += "You cannot play as this species.
This species is not available for play as a station race..

" + //VOREStation Addition begin + else if(restricted == 3) + dat += "You cannot play as this species.
You can however select it and set it up in case admin approves spawning you in.

" + restricted = 0 + //VOREStation Addition end if(!restricted || check_rights(R_ADMIN, 0)) dat += "\[select\]" dat += "" diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 454ce677a83..14f5f9c0635 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -156,6 +156,8 @@ continue if((current_species.spawn_flags & SPECIES_IS_WHITELISTED) && !is_alien_whitelisted(src, current_species)) continue + if((current_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE) && !is_alien_whitelisted(src, current_species)) //VOREStation Addition + continue //VOREStation Addition valid_species += current_species_name diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 0d6b8ed3e8a..dc2fed13af0 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -39,7 +39,7 @@ heat_level_3 = 1150 flags = NO_SCAN | NO_PAIN | NO_SLIP | NO_MINOR_CUT | NO_INFECT - spawn_flags = SPECIES_IS_RESTRICTED + spawn_flags = SPECIES_CAN_JOIN | SPECIES_WHITELIST_SELECTABLE reagent_tag = IS_SHADEKIN //TODO: shadekin-unqiue chem interactions diff --git a/code/modules/mob/new_player/new_player_vr.dm b/code/modules/mob/new_player/new_player_vr.dm index 10ad4dba14c..95a610150ee 100644 --- a/code/modules/mob/new_player/new_player_vr.dm +++ b/code/modules/mob/new_player/new_player_vr.dm @@ -16,6 +16,11 @@ pass = FALSE to_chat(src,"You have not set your scale yet. Do this on the VORE tab in character setup.") + //Can they play? + if(!is_alien_whitelisted(src,all_species[client.prefs.species]) && (all_species[client.prefs.species].spawn_flags & SPECIES_WHITELIST_SELECTABLE)) + pass = FALSE + to_chat(src,"You are not allowed to spawn in as this species.") + //Custom species checks if (client && client.prefs && client.prefs.species == "Custom Species") diff --git a/code/modules/resleeving/designer.dm b/code/modules/resleeving/designer.dm index 4803a9e6688..b665c37640c 100644 --- a/code/modules/resleeving/designer.dm +++ b/code/modules/resleeving/designer.dm @@ -70,7 +70,7 @@ var/stock_bodyrecords_list_ui[0] for (var/N in all_species) var/datum/species/S = all_species[N] - if((S.spawn_flags & (SPECIES_IS_WHITELISTED|SPECIES_CAN_JOIN)) != SPECIES_CAN_JOIN) continue + if((S.spawn_flags & (SPECIES_WHITELIST_SELECTABLE|SPECIES_IS_WHITELISTED|SPECIES_CAN_JOIN)) != SPECIES_CAN_JOIN) continue stock_bodyrecords_list_ui += N if(stock_bodyrecords_list_ui.len) data["stock_bodyrecords"] = stock_bodyrecords_list_ui @@ -173,7 +173,7 @@ else if(href_list["view_stock_brec"]) var/datum/species/S = all_species[href_list["view_stock_brec"]] - if(S && (S.spawn_flags & (SPECIES_IS_WHITELISTED|SPECIES_CAN_JOIN)) == SPECIES_CAN_JOIN) + if(S && (S.spawn_flags & (SPECIES_WHITELIST_SELECTABLE|SPECIES_IS_WHITELISTED|SPECIES_CAN_JOIN)) == SPECIES_CAN_JOIN) // Generate body record from species! mannequin = new(null, S.name) mannequin.real_name = "Stock [S.name] Body"