mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-30 18:06:56 +01:00
Whitelist backend changes (#4996)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Whitelist are run by name, so renaming a whitelisted species also needs an update to the WL as well. Removes a shitty gimmick of a mirror most people dont have access to because its a fucking nightmare of conditions we partially removed and a fix for both runtimes and uninteded stat cheating <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 del: Removed the code behind the raider mirror fix: fixed the shadekin traits applying to non shadekin config: changed WL using Species ID rather than name refactor: changed character species to always have a superspecies_id /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. -->
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
#define SPECIES_ID_SCORI "scori"
|
||||
#define SPECIES_ID_SERGLING "sergling"
|
||||
#define SPECIES_ID_SHADEKIN "shadekin"
|
||||
#define SPECIES_ID_SHADEKIN_BLACK "shadekin_black"
|
||||
#define SPECIES_ID_SHADEKIN_BLACK "blackeyedshadekin"
|
||||
#define SPECIES_ID_SHADOW "shadow"
|
||||
#define SPECIES_ID_SKELETON "skeleton"
|
||||
#define SPECIES_ID_SKRELL "skrell"
|
||||
@@ -65,7 +65,7 @@
|
||||
#define SPECIES_ID_XENOMORPH_HUNTER "xenomorph_hunter"
|
||||
#define SPECIES_ID_XENOMORPH_QUEEN "xenomorph_queen"
|
||||
#define SPECIES_ID_XENOMORPH_SENTINEL "xenomorph_sentinel"
|
||||
#define SPECIES_ID_XENOHYBRID "xenohybrid"
|
||||
#define SPECIES_ID_XENOHYBRID "xenomorph_hybrid"
|
||||
#define SPECIES_ID_ZADDAT "zaddat"
|
||||
#define SPECIES_ID_ZORREN "zorren"
|
||||
#define SPECIES_ID_ZORREN_HIGH "zorren_high"
|
||||
|
||||
@@ -72,6 +72,8 @@ DEFINE_BITFIELD(species_fluff_flags, list(
|
||||
#define SPECIES_SPAWN_SECRET (1<<3)
|
||||
/// Cannot normally spawn; something must pass in PREFS_COPY_TO_NO_CHECK_SPECIES to spawn checks to use!
|
||||
#define SPECIES_SPAWN_RESTRICTED (1<<4)
|
||||
/// if set, check species.id in WL, otherwise use uid
|
||||
#define SPECIES_SPAWN_WHITELIST_FLEXIBLE (1<<5)
|
||||
//? FLAGS ABOVE ARE RELEVANT TO UI.
|
||||
//? If you change them, change necessary TGUI too.
|
||||
//? Current TGUI that uses this:
|
||||
@@ -92,6 +94,7 @@ DEFINE_BITFIELD(species_spawn_flags, list(
|
||||
BITFIELD(SPECIES_SPAWN_NO_FBP_CONSTRUCT),
|
||||
BITFIELD(SPECIES_SPAWN_NO_FBP_SETUP),
|
||||
BITFIELD(SPECIES_SPAWN_NO_ROBOTIC_ORGANS),
|
||||
BITFIELD(SPECIES_SPAWN_WHITELIST_FLEXIBLE),
|
||||
))
|
||||
|
||||
//! species_appearance_flags
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/list/job_whitelist = list()
|
||||
|
||||
/**
|
||||
* name, ckey must be CKEY()'d.
|
||||
* name and ckey must be CKEY()'d.
|
||||
*/
|
||||
/datum/controller/configuration/proc/check_alien_whitelist(name, ckey)
|
||||
if(!config_legacy.usealienwhitelist)
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
species_paths = list()
|
||||
species_names = list()
|
||||
playable_species = list()
|
||||
whitelisted_species = list()
|
||||
custom_species_bases = list()
|
||||
var/static/list/blacklisted_icon_ids = list(SPECIES_ID_CUSTOM, SPECIES_ID_PROMETHEAN)
|
||||
var/static/list/whitelisted_icon_ids = list(SPECIES_ID_VULPKANIN, SPECIES_ID_XENOMORPH_HUNTER)
|
||||
@@ -41,17 +40,15 @@
|
||||
species_names[S.name] = S
|
||||
species_paths[path] = S
|
||||
|
||||
if(S.species_spawn_flags & SPECIES_SPAWN_WHITELISTED)
|
||||
whitelisted_species += S.name
|
||||
|
||||
if(!(S.species_spawn_flags & SPECIES_SPAWN_SPECIAL))
|
||||
playable_species += S.name
|
||||
playable_species += S.uid
|
||||
if((!(S.species_spawn_flags & (SPECIES_SPAWN_WHITELISTED | SPECIES_SPAWN_SPECIAL)) && !(S.get_species_id() in blacklisted_icon_ids)) || (S.get_species_id() in whitelisted_icon_ids))
|
||||
custom_species_bases += S.name
|
||||
|
||||
tim_sort(species_lookup, /proc/cmp_auto_compare, TRUE)
|
||||
tim_sort(species_names, /proc/cmp_auto_compare, TRUE)
|
||||
tim_sort(species_lookup, /proc/cmp_auto_compare, TRUE)
|
||||
tim_sort(whitelisted_species, /proc/cmp_auto_compare)
|
||||
tim_sort(playable_species, /proc/cmp_auto_compare)
|
||||
tim_sort(custom_species_bases, /proc/cmp_auto_compare)
|
||||
|
||||
|
||||
@@ -114,35 +114,13 @@
|
||||
user.visible_message("<span class='danger'>[user] hits [src] and bounces off!</span>")
|
||||
return 1
|
||||
|
||||
// The following mirror is ~special~.
|
||||
/// TODO: retype this one, I dont wanna touch maps in a Whitelist rework
|
||||
/obj/structure/mirror/raider
|
||||
name = "cracked mirror"
|
||||
desc = "Something seems strange about this old, dirty mirror. Your reflection doesn't look like you remember it."
|
||||
desc = "Oh no, seven years of bad luck!"
|
||||
icon_state = "mirror_broke"
|
||||
shattered = 1
|
||||
|
||||
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
|
||||
if(istype(get_area(src),/area/syndicate_mothership))
|
||||
if(istype(user) && user.mind && user.mind.special_role == "Raider" && user.species.name != SPECIES_VOX && config.check_alien_whitelist(ckey(SPECIES_VOX), user.ckey))
|
||||
var/choice = input("Do you wish to become a true Vox of the Shoal? This is not reversible.") as null|anything in list("No","Yes")
|
||||
if(choice && choice == "Yes")
|
||||
var/mob/living/carbon/human/vox/vox = new(get_turf(src),SPECIES_VOX)
|
||||
vox.gender = user.gender
|
||||
raiders.equip(vox)
|
||||
if(user.mind)
|
||||
user.mind.transfer_to(vox)
|
||||
spawn(1)
|
||||
var/newname = sanitizeSafe(input(vox,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN)
|
||||
if(!newname || newname == "")
|
||||
var/datum/language/L = SScharacters.resolve_language_id(vox.species.default_language)
|
||||
newname = L.get_random_name()
|
||||
vox.real_name = newname
|
||||
vox.name = vox.real_name
|
||||
raiders.update_access(vox)
|
||||
qdel(user)
|
||||
..()
|
||||
|
||||
|
||||
//Long mirrors.
|
||||
/obj/structure/mirror/long
|
||||
name = "mirror"
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
continue
|
||||
if(blacklist.len && (current_species_name in blacklist))
|
||||
continue
|
||||
if((S.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) && !config.check_alien_whitelist(ckey(S.name), ckey))
|
||||
if((S.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) && !config.check_alien_whitelist(ckey(S.species_spawn_flags & SPECIES_SPAWN_WHITELIST_FLEXIBLE ? S.id : S.uid), ckey))
|
||||
continue
|
||||
|
||||
valid_species += current_species_name
|
||||
|
||||
@@ -571,7 +571,7 @@
|
||||
|
||||
if(chosen_species && use_species_name)
|
||||
// Have to recheck admin due to no usr at roundstart. Latejoins are fine though.
|
||||
if(!(chosen_species.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) || config.check_alien_whitelist(ckey(chosen_species.name), ckey))
|
||||
if(!(chosen_species.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) || config.check_alien_whitelist(ckey(chosen_species.species_spawn_flags & SPECIES_SPAWN_WHITELIST_FLEXIBLE ? chosen_species.id : chosen_species.uid), ckey))
|
||||
new_character = new(T, use_species_name)
|
||||
|
||||
if(!new_character)
|
||||
@@ -661,7 +661,7 @@
|
||||
if(!chosen_species)
|
||||
return SPECIES_HUMAN
|
||||
|
||||
if(!(chosen_species.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) || config.check_alien_whitelist(ckey(chosen_species.name), ckey))
|
||||
if(!(chosen_species.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) || config.check_alien_whitelist(ckey(chosen_species.id), ckey))
|
||||
return chosen_species.name
|
||||
|
||||
return SPECIES_HUMAN
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
. += "<br>This is a [SPAN_RED("restricted")] species. You cannot join as this outside of special circumstances."
|
||||
else if(CS.species_spawn_flags & SPECIES_SPAWN_WHITELISTED)
|
||||
. += "<br>This is a whitelisted species. You "
|
||||
if(config.check_alien_whitelist(ckey(CS.name), prefs.client_ckey))
|
||||
if(config.check_alien_whitelist(ckey(CS.species_spawn_flags & SPECIES_SPAWN_WHITELIST_FLEXIBLE ? CS.superspecies_id : CS.uid), prefs.client_ckey))
|
||||
. += SPAN_GREEN("do")
|
||||
else
|
||||
. += SPAN_RED("do not")
|
||||
@@ -29,7 +29,7 @@
|
||||
if((CS.species_spawn_flags & SPECIES_SPAWN_RESTRICTED) && !(flags & PREF_COPY_TO_NO_CHECK_SPECIES))
|
||||
errors?.Add(SPAN_WARNING("[CS.name] is a restricted species. You cannot join as this as most normal roles."))
|
||||
return FALSE
|
||||
if((CS.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) && !config.check_alien_whitelist(ckey(CS.name), prefs.client_ckey))
|
||||
if((CS.species_spawn_flags & SPECIES_SPAWN_WHITELISTED) && !config.check_alien_whitelist(ckey(CS.species_spawn_flags & SPECIES_SPAWN_WHITELIST_FLEXIBLE ? CS.superspecies_id : CS.uid), prefs.client_ckey))
|
||||
errors?.Add(SPAN_WARNING("You do not have the whitelist to play as a [CS.name]."))
|
||||
return FALSE
|
||||
return TRUE
|
||||
@@ -79,7 +79,7 @@
|
||||
var/datum/species/S = SScharacters.resolve_species_id(data)
|
||||
if(!S)
|
||||
return SScharacters.default_species_id()
|
||||
if(!(S.name in SScharacters.playable_species))
|
||||
if(!(S.uid in SScharacters.playable_species))
|
||||
return SScharacters.default_species_id()
|
||||
return data
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
template.uid = uid
|
||||
if(id != uid)
|
||||
template.is_subspecies = TRUE
|
||||
template.superspecies_id = id
|
||||
template.superspecies_id = src.get_species_id()//Now its always safe to do
|
||||
template.category = category
|
||||
template.desc = blurb
|
||||
template.species_spawn_flags = species_spawn_flags
|
||||
|
||||
@@ -289,8 +289,8 @@
|
||||
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
|
||||
return
|
||||
|
||||
var/new_species_name = input("Please select a species to emulate.", "Shapeshifter Body") as null|anything in SScharacters.playable_species
|
||||
var/datum/species/new_species = SScharacters.resolve_species_name(new_species_name)
|
||||
var/new_species_id = input("Please select a species to emulate.", "Shapeshifter Body") as null|anything in SScharacters.playable_species
|
||||
var/datum/species/new_species = SScharacters.resolve_species_id(new_species_id)
|
||||
if(new_species)
|
||||
impersonate_bodytype_legacy = new_species.get_bodytype_legacy()
|
||||
impersonate_bodytype = new_species.default_bodytype
|
||||
|
||||
@@ -104,22 +104,23 @@
|
||||
)
|
||||
|
||||
/datum/trait/kintype/apply(datum/species/shadekin/S, mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
if(color && istype(S)) //Sanity check to see if they're actually a shadekin, otherwise just don't do anything. They shouldn't be able to spawn with the trait.
|
||||
S.kin_type = color
|
||||
switch(color)
|
||||
if(BLUE_EYES)
|
||||
H.shapeshifter_set_eye_color("0000FF")
|
||||
if(RED_EYES)
|
||||
H.shapeshifter_set_eye_color("FF0000")
|
||||
if(GREEN_EYES)
|
||||
H.shapeshifter_set_eye_color("00FF00")
|
||||
if(PURPLE_EYES)
|
||||
H.shapeshifter_set_eye_color("FF00FF")
|
||||
if(YELLOW_EYES)
|
||||
H.shapeshifter_set_eye_color("FFFF00")
|
||||
if(ORANGE_EYES)
|
||||
H.shapeshifter_set_eye_color("FFA500")
|
||||
if (istype(S))
|
||||
..(S,H)
|
||||
if(color) //Sanity check to see if they're actually a shadekin, otherwise just don't do anything. They shouldn't be able to spawn with the trait.
|
||||
S.kin_type = color
|
||||
switch(color)
|
||||
if(BLUE_EYES)
|
||||
H.shapeshifter_set_eye_color("0000FF")
|
||||
if(RED_EYES)
|
||||
H.shapeshifter_set_eye_color("FF0000")
|
||||
if(GREEN_EYES)
|
||||
H.shapeshifter_set_eye_color("00FF00")
|
||||
if(PURPLE_EYES)
|
||||
H.shapeshifter_set_eye_color("FF00FF")
|
||||
if(YELLOW_EYES)
|
||||
H.shapeshifter_set_eye_color("FFFF00")
|
||||
if(ORANGE_EYES)
|
||||
H.shapeshifter_set_eye_color("FFA500")
|
||||
|
||||
|
||||
/datum/unarmed_attack/shadekinharmbap
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
abstract_type = /datum/species
|
||||
|
||||
//! Intrinsics
|
||||
/// uid - **must be unique**
|
||||
/// uid - **must be unique** - Identifies the exact species you are using
|
||||
var/uid
|
||||
/// if we're a subspecies, real id
|
||||
/// id usually identical to uid, if we are a subspecies we use the parent species id/uid here
|
||||
var/id
|
||||
// TODO: ref species by id in code, so we can rename as needed
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/species/adherent
|
||||
uid = SPECIES_ID_ADHERENT
|
||||
id = SPECIES_ID_ADHERENT
|
||||
name = SPECIES_ADHERENT
|
||||
name_plural = "Adherents"
|
||||
uid = SPECIES_ID_ADHERENT
|
||||
default_bodytype = BODYTYPE_ADHERENT
|
||||
|
||||
blurb = "The Vigil is a relatively loose association of machine-servitors, Adherents, \
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/species/alraune
|
||||
name = SPECIES_ALRAUNE
|
||||
uid = SPECIES_ID_ALRAUNE
|
||||
id = SPECIES_ID_ALRAUNE
|
||||
name = SPECIES_ALRAUNE
|
||||
name_plural = "Alraunes"
|
||||
|
||||
icobase = 'icons/mob/species/human/body_greyscale.dmi'
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/species/apidaen
|
||||
uid = SPECIES_ID_APIDAEN
|
||||
id = SPECIES_ID_APIDAEN
|
||||
name = SPECIES_APIDAEN
|
||||
name_plural = SPECIES_APIDAEN
|
||||
uid = SPECIES_ID_APIDAEN
|
||||
|
||||
icobase = 'icons/mob/species/apidaen/body.dmi'
|
||||
deform = 'icons/mob/species/apidaen/body.dmi' // No deformed set has been made yet.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
|
||||
/datum/species/custom
|
||||
name = SPECIES_CUSTOM
|
||||
uid = SPECIES_ID_CUSTOM
|
||||
id = SPECIES_ID_CUSTOM
|
||||
name = SPECIES_CUSTOM
|
||||
name_plural = "Custom"
|
||||
selects_bodytype = TRUE
|
||||
base_species = SPECIES_HUMAN
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
|
||||
/datum/species/diona
|
||||
uid = SPECIES_ID_DIONA
|
||||
id = SPECIES_ID_DIONA
|
||||
name = SPECIES_DIONA
|
||||
name_plural = "Dionaea"
|
||||
uid = SPECIES_ID_DIONA
|
||||
//primitive_form = "Nymph"
|
||||
|
||||
icobase = 'icons/mob/species/diona/body.dmi'
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/species/golem
|
||||
uid = SPECIES_ID_GOLEM
|
||||
id = SPECIES_ID_GOLEM
|
||||
name = SPECIES_GOLEM
|
||||
name_plural = "golems"
|
||||
uid = SPECIES_ID_GOLEM
|
||||
|
||||
icobase = 'icons/mob/species/golem/body.dmi'
|
||||
deform = 'icons/mob/species/golem/body.dmi'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/species/monkey
|
||||
name = SPECIES_MONKEY
|
||||
uid = SPECIES_ID_MONKEY
|
||||
id = SPECIES_ID_MONKEY
|
||||
name = SPECIES_MONKEY
|
||||
name_plural = "Monkeys"
|
||||
greater_form = SPECIES_HUMAN
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/species/phoronoid
|
||||
name = SPECIES_PHORONOID
|
||||
uid = SPECIES_ID_PHORONOID
|
||||
id = SPECIES_ID_PHORONOID
|
||||
name = SPECIES_PHORONOID
|
||||
name_plural = "Phoronoids"
|
||||
default_bodytype = BODYTYPE_PHORONOID
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/species/rapala
|
||||
uid = SPECIES_ID_RAPALA
|
||||
id = SPECIES_ID_RAPALA
|
||||
name = SPECIES_RAPALA
|
||||
name_plural = "Rapalans"
|
||||
uid = SPECIES_ID_RAPALA
|
||||
|
||||
icobase = 'icons/mob/species/rapala/body.dmi'
|
||||
deform = 'icons/mob/species/rapala/deformed_body.dmi'
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/akula
|
||||
uid = SPECIES_ID_AKULA
|
||||
id = SPECIES_ID_AKULA
|
||||
name = SPECIES_AKULA
|
||||
name_plural = SPECIES_AKULA //It's singular and plural. English is weird.
|
||||
primitive_form = SPECIES_MONKEY_AKULA
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/harpy
|
||||
uid = SPECIES_ID_HARPY
|
||||
id = SPECIES_ID_HARPY
|
||||
name = SPECIES_RAPALA
|
||||
name_plural = "Rapalans"
|
||||
icobase = 'icons/mob/human_races/r_harpy_vr.dmi'
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/human/gravworlder
|
||||
uid = SPECIES_ID_HUMAN_GRAV
|
||||
id = SPECIES_ID_HUMAN
|
||||
name = SPECIES_HUMAN_GRAV
|
||||
name_plural = "grav-adapted Humans"
|
||||
|
||||
@@ -51,6 +52,7 @@
|
||||
|
||||
/datum/species/human/spacer
|
||||
uid = SPECIES_ID_HUMAN_SPACE
|
||||
id = SPECIES_ID_HUMAN
|
||||
name = SPECIES_HUMAN_SPACER
|
||||
name_plural = "space-adapted Humans"
|
||||
|
||||
@@ -98,6 +100,7 @@
|
||||
|
||||
/datum/species/human/vatgrown
|
||||
uid = SPECIES_ID_HUMAN_VAT
|
||||
id = SPECIES_ID_HUMAN
|
||||
name = SPECIES_HUMAN_VATBORN
|
||||
name_plural = SPECIES_HUMAN_VATBORN
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/species/naramadi
|
||||
name = SPECIES_SERGAL
|
||||
uid = SPECIES_ID_NARAMADI
|
||||
id = SPECIES_ID_NARAMADI
|
||||
name = SPECIES_SERGAL
|
||||
name_plural = "Naramadi"
|
||||
category = "Naramadi"
|
||||
default_bodytype = BODYTYPE_SERGAL
|
||||
@@ -40,17 +41,17 @@
|
||||
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#777777"
|
||||
|
||||
|
||||
ambiguous_genders = TRUE //Naramadi look the same when female and male, at least from the groin up if you catch my drift ;^) - Papalus
|
||||
|
||||
|
||||
cold_level_1 = 280 //I'm not sorry, Lore changes. - Papalus
|
||||
cold_level_2 = 240
|
||||
cold_level_3 = 180
|
||||
|
||||
|
||||
heat_level_1 = 380
|
||||
heat_level_2 = 420 //Nice
|
||||
heat_level_3 = 1000
|
||||
|
||||
|
||||
heat_discomfort_strings = list(
|
||||
"Your fur prickles in the heat.",
|
||||
"You feel uncomfortably warm.",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/nevrean
|
||||
uid = SPECIES_ID_NEVREAN
|
||||
id = SPECIES_ID_NEVREAN
|
||||
name = SPECIES_NEVREAN
|
||||
name_plural = "Nevreans"
|
||||
primitive_form = SPECIES_MONKEY_NEVREAN
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/crew_shadekin
|
||||
uid = SPECIES_ID_SHADEKIN_BLACK
|
||||
id = SPECIES_ID_SHADEKIN_BLACK
|
||||
name = SPECIES_SHADEKIN_CREW
|
||||
name_plural = SPECIES_SHADEKIN_CREW
|
||||
category = "Special"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/skrell
|
||||
uid = SPECIES_ID_SKRELL
|
||||
id = SPECIES_ID_SKRELL
|
||||
name = SPECIES_SKRELL
|
||||
name_plural = SPECIES_SKRELL
|
||||
primitive_form = SPECIES_MONKEY_SKRELL
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/tajaran
|
||||
uid = SPECIES_ID_TAJARAN
|
||||
id = SPECIES_ID_TAJARAN
|
||||
name = SPECIES_TAJ
|
||||
name_plural = "Tajaran"
|
||||
category = "Tajaran"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/teshari
|
||||
uid = SPECIES_ID_TESHARI
|
||||
id = SPECIES_ID_TESHARI
|
||||
name = SPECIES_TESHARI
|
||||
default_bodytype = BODYTYPE_TESHARI
|
||||
category = "Teshari"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/unathi
|
||||
uid = SPECIES_ID_UNATHI
|
||||
id = SPECIES_ID_UNATHI
|
||||
name = SPECIES_UNATHI
|
||||
category = "Unathi"
|
||||
name_plural = SPECIES_UNATHI
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/unathi/digi
|
||||
uid = SPECIES_ID_UNATHI_DIGI
|
||||
id = SPECIES_ID_UNATHI_DIGI
|
||||
name = SPECIES_UNATHI_DIGI
|
||||
name_plural = SPECIES_UNATHI_DIGI
|
||||
default_bodytype = BODYTYPE_UNATHI_DIGI
|
||||
@@ -12,7 +13,7 @@
|
||||
tail_animation = 'icons/mob/species/unathidigi/tail.dmi'
|
||||
|
||||
blurb = {"
|
||||
As a result of the many challenges of living on Moghes and other worlds, Unathi have become morphologically diverse.
|
||||
As a result of the many challenges of living on Moghes and other worlds, Unathi have become morphologically diverse.
|
||||
While some unathi are plantigrade and almost resemble humans in their silhouette, others are more hulking; a digitigrade, beastial and alien creature.
|
||||
"}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/vulpkanin
|
||||
uid = SPECIES_ID_VULPKANIN
|
||||
id = SPECIES_ID_VULPKANIN
|
||||
name = SPECIES_VULPKANIN
|
||||
name_plural = SPECIES_VULPKANIN
|
||||
primitive_form = SPECIES_MONKEY_VULPKANIN
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/zaddat
|
||||
uid = SPECIES_ID_ZADDAT
|
||||
id = SPECIES_ID_ZADDAT
|
||||
name = SPECIES_ZADDAT
|
||||
name_plural = SPECIES_ZADDAT
|
||||
icobase = 'icons/mob/species/zaddat/body.dmi'
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/species/hi_zoxxen
|
||||
uid = SPECIES_ID_ZORREN_HIGH
|
||||
id = SPECIES_ID_ZORREN_HIGH
|
||||
id = SPECIES_ID_ZORREN
|
||||
name = SPECIES_ZORREN_HIGH
|
||||
name_plural = "Zorren"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/datum/species/vasilissan //These actually look pretty damn spooky!
|
||||
uid = SPECIES_ID_VASILISSAN
|
||||
id = SPECIES_ID_VASILISSAN
|
||||
name = SPECIES_VASILISSAN
|
||||
name_plural = "Vasilissans"
|
||||
uid = SPECIES_ID_VASILISSAN
|
||||
|
||||
icobase = 'icons/mob/species/vasilissan/body.dmi'
|
||||
deform = 'icons/mob/species/vasilissan/deformed_body.dmi'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/species/werebeast
|
||||
name = SPECIES_WEREBEAST
|
||||
uid = SPECIES_ID_WEREBEAST
|
||||
id = SPECIES_ID_WEREBEAST
|
||||
name = SPECIES_WEREBEAST
|
||||
name_plural = "Werebeasts"
|
||||
primitive_form = SPECIES_MONKEY_VULPKANIN
|
||||
default_bodytype = BODYTYPE_WEREBEAST
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = SPECIES_XENOHYBRID
|
||||
name_plural = "Xenomorph Hybrids"
|
||||
uid = SPECIES_ID_XENOHYBRID
|
||||
id = SPECIES_ID_XENOHYBRID
|
||||
default_bodytype = BODYTYPE_XENOHYBRID
|
||||
|
||||
icobase = 'icons/mob/species/xenohybrid/body.dmi'
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
// Due to sprite construction, they have to have separate limb lists
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/human
|
||||
name = SPECIES_VR_HUMAN
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_HUMAN
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_HUMAN
|
||||
name = SPECIES_VR_HUMAN
|
||||
icobase = 'icons/mob/species/human/body.dmi'
|
||||
deform = 'icons/mob/species/human/deformed_body.dmi'
|
||||
species_appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR
|
||||
@@ -22,8 +23,9 @@
|
||||
)
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/unathi
|
||||
name = SPECIES_VR_UNATHI
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_UNATHI
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_UNATHI
|
||||
name = SPECIES_VR_UNATHI
|
||||
icobase = 'icons/mob/species/unathi/body_greyscale.dmi'
|
||||
deform = 'icons/mob/species/unathi/deformed_body_greyscale.dmi'
|
||||
tail = "sogtail"
|
||||
@@ -44,8 +46,9 @@
|
||||
)
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/tajaran
|
||||
name = "Virtual Reality Tajaran"
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_TAJARAN
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_TAJARAN
|
||||
name = "Virtual Reality Tajaran"
|
||||
icobase = 'icons/mob/species/tajaran/body_greyscale.dmi'
|
||||
deform = 'icons/mob/species/tajaran/deformed_body_greyscale.dmi'
|
||||
tail = "tajtail"
|
||||
@@ -66,8 +69,9 @@
|
||||
)
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/skrell
|
||||
name = SPECIES_VR_SKRELL
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_SKRELL
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_SKRELL
|
||||
name = SPECIES_VR_SKRELL
|
||||
icobase = 'icons/mob/species/skrell/body_greyscale.dmi'
|
||||
deform = 'icons/mob/species/skrell/deformed_body_greyscale.dmi'
|
||||
species_appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
|
||||
@@ -86,8 +90,9 @@
|
||||
)
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/teshari
|
||||
name = SPECIES_VR_TESHARI
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_TESHARI
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_TESHARI
|
||||
name = SPECIES_VR_TESHARI
|
||||
icobase = 'icons/mob/species/teshari/body.dmi'
|
||||
deform = 'icons/mob/species/teshari/deformed_body.dmi'
|
||||
species_appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR
|
||||
@@ -107,6 +112,7 @@
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/diona
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_DIONA
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_DIONA
|
||||
name = SPECIES_VR_DIONA
|
||||
icobase = 'icons/mob/species/diona/body.dmi'
|
||||
deform = 'icons/mob/species/diona/deformed_body.dmi'
|
||||
@@ -127,6 +133,7 @@
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/monkey
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_MONKEY
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_MONKEY
|
||||
name = SPECIES_VR_MONKEY
|
||||
icobase = 'icons/mob/species/monkey/body_monkey.dmi'
|
||||
deform = 'icons/mob/species/monkey/body_monkey.dmi'
|
||||
@@ -151,6 +158,7 @@
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/vox
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_VOX
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_VOX
|
||||
name = SPECIES_VR_VOX
|
||||
icobase = 'icons/mob/species/vox/body.dmi'
|
||||
deform = 'icons/mob/species/vox/deformed_body.dmi'
|
||||
@@ -171,6 +179,7 @@
|
||||
|
||||
/datum/species/shapeshifter/promethean/avatar/skeleton
|
||||
uid = SPECIES_ID_VIRTUAL_REALITY_SKELETON
|
||||
id = SPECIES_ID_VIRTUAL_REALITY_SKELETON
|
||||
name = SPECIES_VR_SKELETON
|
||||
icobase = 'icons/mob/species/human/skeleton.dmi'
|
||||
deform = 'icons/mob/species/human/skeleton.dmi'
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
/datum/species/shapeshifter/xenochimera //Scree's race.
|
||||
uid = SPECIES_ID_XENOCHIMERA
|
||||
id = SPECIES_ID_XENOCHIMERA
|
||||
name = SPECIES_XENOCHIMERA
|
||||
name_plural = "Xenochimeras"
|
||||
base_species = SPECIES_XENOCHIMERA
|
||||
uid = SPECIES_ID_XENOCHIMERA
|
||||
category = "Special"
|
||||
|
||||
selects_bodytype = TRUE
|
||||
|
||||
Reference in New Issue
Block a user