diff --git a/code/__defines/dna.dm b/code/__defines/dna.dm
index b958466201..bcf5f15e3c 100644
--- a/code/__defines/dna.dm
+++ b/code/__defines/dna.dm
@@ -160,3 +160,4 @@ var/SMALLSIZEBLOCK = 0
// Gene flags
#define GENE_ALWAYS_ACTIVATE 1
+#define MUTCHK_HIDEMSG 2
diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index 790d8dcf4a..3f2c71d834 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -262,6 +262,13 @@
#define MOB_PULL_SAME 2
#define MOB_PULL_LARGER 3
+//Protean organs
+#define O_ORCH "orchestrator"
+#define O_FACT "refactory"
+
+//Alraune organs
+#define A_FRUIT "fruit gland"
+
//XENOBIO2 FLAGS
#define NOMUT 0
#define COLORMUT 1
@@ -298,23 +305,42 @@
#define SPECIES_UNATHI "Unathi"
#define SPECIES_SKRELL "Skrell"
#define SPECIES_TESHARI "Teshari"
-#define SPECIES_TAJ "Tajara"
+#define SPECIES_TAJARAN "Tajara"
#define SPECIES_PROMETHEAN "Promethean"
#define SPECIES_DIONA "Diona"
#define SPECIES_VOX "Vox"
#define SPECIES_ZADDAT "Zaddat"
+#define SPECIES_AKULA "Akula"
+#define SPECIES_ALRAUNE "Alraune"
+#define SPECIES_NEVREAN "Nevrean"
+#define SPECIES_PROTEAN "Protean"
+#define SPECIES_RAPALA "Rapala"
+#define SPECIES_SERGAL "Sergal"
+#define SPECIES_ALTEVIAN "Altevian"
+#define SPECIES_SHADEKIN_CREW "Black-Eyed Shadekin"
+#define SPECIES_VASILISSAN "Vasilissan"
+#define SPECIES_VULPKANIN "Vulpkanin"
+#define SPECIES_XENOCHIMERA "Xenochimera"
+#define SPECIES_ZORREN_HIGH "Zorren"
+#define SPECIES_CUSTOM "Custom Species"
+#define SPECIES_LLEILL "Lleill"
+#define SPECIES_HANNER "Hanner"
// Monkey and alien monkeys.
-#define SPECIES_MONKEY "Monkey"
-#define SPECIES_MONKEY_TAJ "Farwa"
-#define SPECIES_MONKEY_SKRELL "Neaera"
-#define SPECIES_MONKEY_UNATHI "Stok"
+#define SPECIES_MONKEY "Monkey"
+#define SPECIES_MONKEY_TAJ "Farwa"
+#define SPECIES_MONKEY_SKRELL "Neaera"
+#define SPECIES_MONKEY_UNATHI "Stok"
+#define SPECIES_MONKEY_AKULA "Sobaka"
+#define SPECIES_MONKEY_NEVREAN "Sparra"
+#define SPECIES_MONKEY_SERGAL "Saru"
+#define SPECIES_MONKEY_VULPKANIN "Wolpin"
// Virtual Reality IDs.
#define SPECIES_VR "Virtual Reality Avatar"
#define SPECIES_VR_HUMAN "Virtual Reality Human"
#define SPECIES_VR_UNATHI "Virtual Reality Unathi"
-#define SPECIES_VR_TAJ "Virtual Reality Tajara" // NO CHANGING.
+#define SPECIES_VR_TAJARAN "Virtual Reality Tajara" // NO CHANGING.
#define SPECIES_VR_SKRELL "Virtual Reality Skrell"
#define SPECIES_VR_TESHARI "Virtual Reality Teshari"
#define SPECIES_VR_DIONA "Virtual Reality Diona"
@@ -343,6 +369,24 @@
#define SPECIES_REPLICANT_ALPHA "Alpha Replicant"
#define SPECIES_REPLICANT_BETA "Beta Replicant"
#define SPECIES_REPLICANT_CREW "Gamma Replicant"
+#define SPECIES_WEREBEAST "Werebeast"
+#define SPECIES_SHADEKIN "Shadekin"
+
+// Custom species base
+#define SPECIES_FENNEC "Fennec"
+#define SPECIES_XENOHYBRID "Xenohybrid"
+
+//for custom bodytypes
+#define SELECTS_BODYTYPE_FALSE 0
+#define SELECTS_BODYTYPE_CUSTOM 1
+#define SELECTS_BODYTYPE_SHAPESHIFTER 2
+
+#define MARKING_NONDIGI_ONLY (1 << 0)
+#define MARKING_DIGITIGRADE_ONLY (1 << 1)
+#define MARKING_ALL_LEGS MARKING_NONDIGI_ONLY|MARKING_DIGITIGRADE_ONLY
+
+//Grabs
+#define UPGRADE_COOLDOWN 40
// Used to seperate simple animals by ""intelligence"".
#define SA_PLANT 1
diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm
deleted file mode 100644
index af0eddf426..0000000000
--- a/code/__defines/mobs_vr.dm
+++ /dev/null
@@ -1,50 +0,0 @@
-//Protean organs
-#define O_ORCH "orchestrator"
-#define O_FACT "refactory"
-
-//Alraune organs
-#define A_FRUIT "fruit gland"
-
-//species defines
-
-//station species
-#define SPECIES_AKULA "Akula"
-#define SPECIES_ALRAUNE "Alraune"
-#define SPECIES_NEVREAN "Nevrean"
-#define SPECIES_PROTEAN "Protean"
-#define SPECIES_RAPALA "Rapala"
-#define SPECIES_SERGAL "Sergal"
-#define SPECIES_ALTEVIAN "Altevian"
-#define SPECIES_SHADEKIN_CREW "Black-Eyed Shadekin"
-#define SPECIES_VASILISSAN "Vasilissan"
-#define SPECIES_VULPKANIN "Vulpkanin"
-#define SPECIES_XENOCHIMERA "Xenochimera"
-#define SPECIES_ZORREN_HIGH "Zorren"
-#define SPECIES_CUSTOM "Custom Species"
-#define SPECIES_TAJARAN "Tajara"
-#define SPECIES_LLEILL "Lleill"
-#define SPECIES_HANNER "Hanner"
-//monkey species
-#define SPECIES_MONKEY_AKULA "Sobaka"
-#define SPECIES_MONKEY_NEVREAN "Sparra"
-#define SPECIES_MONKEY_SERGAL "Saru"
-#define SPECIES_MONKEY_VULPKANIN "Wolpin"
-//event species
-#define SPECIES_WEREBEAST "Werebeast"
-#define SPECIES_SHADEKIN "Shadekin"
-//custom species base sprites
-#define SPECIES_FENNEC "Fennec"
-#define SPECIES_XENOHYBRID "Xenohybrid"
-
-//for custom bodytypes
-
-#define SELECTS_BODYTYPE_FALSE 0
-#define SELECTS_BODYTYPE_CUSTOM 1
-#define SELECTS_BODYTYPE_SHAPESHIFTER 2
-
-#define MARKING_NONDIGI_ONLY (1 << 0)
-#define MARKING_DIGITIGRADE_ONLY (1 << 1)
-#define MARKING_ALL_LEGS MARKING_NONDIGI_ONLY|MARKING_DIGITIGRADE_ONLY
-
-//Grabs
-#define UPGRADE_COOLDOWN 40
diff --git a/code/__defines/sprite_sheets.dm b/code/__defines/sprite_sheets.dm
index 2194efca23..5cd4ce9f38 100644
--- a/code/__defines/sprite_sheets.dm
+++ b/code/__defines/sprite_sheets.dm
@@ -1,7 +1,7 @@
// Default species get default sprites, VR species get VR sprites
#define VR_SPECIES_SPRITE_SHEETS_SUIT_MOB list(\
SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi',\
-SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/suit/mob_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi',\
@@ -15,7 +15,7 @@ SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/suit/mob_vr_altevian.dmi')
#define VR_SPECIES_SPRITE_SHEETS_HEAD_MOB list(\
SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',\
-SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi',\
@@ -29,7 +29,7 @@ SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/head/mob_vr_altevian.dmi')
#define VR_SPECIES_SPRITE_SHEETS_HANDS_MOB list(\
SPECIES_HUMAN = 'icons/inventory/hands/mob.dmi',\
-SPECIES_TAJ = 'icons/inventory/hands/mob_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/hands/mob_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/hands/mob_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/hands/mob_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi',\
@@ -42,7 +42,7 @@ SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob_vr_vulpkanin.dmi',\
SPECIES_FENNEC = 'icons/inventory/hands/mob_vr_vulpkanin.dmi')
#define VR_SPECIES_SPRITE_SHEETS_FEET_MOB list(\
SPECIES_HUMAN = 'icons/inventory/feet/mob.dmi',\
-SPECIES_TAJ = 'icons/inventory/feet/mob_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/feet/mob_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/feet/mob_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/feet/mob_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi',\
@@ -56,7 +56,7 @@ SPECIES_FENNEC = 'icons/inventory/feet/mob_vr_vulpkanin.dmi')
#define VR_SPECIES_SPRITE_SHEETS_SUIT_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/suit/item.dmi',\
-SPECIES_TAJ = 'icons/inventory/suit/item_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/suit/item_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/suit/item_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/suit/item_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/suit/item_teshari.dmi',\
@@ -70,7 +70,7 @@ SPECIES_FENNEC = 'icons/inventory/suit/item_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/suit/item_vr_altevian.dmi')
#define VR_SPECIES_SPRITE_SHEETS_HEAD_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/head/item.dmi',\
-SPECIES_TAJ = 'icons/inventory/head/item_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/head/item_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/head/item_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/head/item_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/head/item_teshari.dmi',\
@@ -84,7 +84,7 @@ SPECIES_FENNEC = 'icons/inventory/head/item_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/head/item_vr_altevian.dmi')
#define VR_SPECIES_SPRITE_SHEETS_HANDS_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/hands/item.dmi',\
-SPECIES_TAJ = 'icons/inventory/hands/item_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/hands/item_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/hands/item_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/hands/item_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/hands/item_teshari.dmi',\
@@ -97,7 +97,7 @@ SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item_vr_vulpkanin.dmi',\
SPECIES_FENNEC = 'icons/inventory/hands/item_vr_vulpkanin.dmi')
#define VR_SPECIES_SPRITE_SHEETS_FEET_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/feet/item.dmi',\
-SPECIES_TAJ = 'icons/inventory/feet/item_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/feet/item_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/feet/item_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/feet/item_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/feet/item_teshari.dmi',\
@@ -112,7 +112,7 @@ SPECIES_FENNEC = 'icons/inventory/feet/item_vr_vulpkanin.dmi')
// All species get VR sprites
#define ALL_VR_SPRITE_SHEETS_SUIT_MOB list(\
SPECIES_HUMAN = 'icons/inventory/suit/mob_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/suit/mob_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/suit/mob_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/suit/mob_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/suit/mob_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/suit/mob_vr_teshari.dmi',\
@@ -126,7 +126,7 @@ SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/suit/mob_vr_altevian.dmi')
#define ALL_VR_SPRITE_SHEETS_HEAD_MOB list(\
SPECIES_HUMAN = 'icons/inventory/head/mob_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/head/mob_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/head/mob_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/head/mob_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/head/mob_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/head/mob_vr_teshari.dmi',\
@@ -140,7 +140,7 @@ SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/head/mob_vr_altevian.dmi')
#define ALL_VR_SPRITE_SHEETS_HANDS_MOB list(\
SPECIES_HUMAN = 'icons/inventory/hands/mob_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/hands/mob_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/hands/mob_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/hands/mob_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/hands/mob_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/hands/mob_vr_teshari.dmi',\
@@ -153,7 +153,7 @@ SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob_vr_vulpkanin.dmi',\
SPECIES_FENNEC = 'icons/inventory/hands/mob_vr_vulpkanin.dmi')
#define ALL_VR_SPRITE_SHEETS_FEET_MOB list(\
SPECIES_HUMAN = 'icons/inventory/feet/mob_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/feet/mob_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/feet/mob_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/feet/mob_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/feet/mob_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/feet/mob_vr_teshari.dmi',\
@@ -167,7 +167,7 @@ SPECIES_FENNEC = 'icons/inventory/feet/mob_vr_vulpkanin.dmi')
#define ALL_VR_SPRITE_SHEETS_SUIT_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/suit/item_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/suit/item_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/suit/item_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/suit/item_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/suit/item_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/suit/item_vr_teshari.dmi',\
@@ -181,7 +181,7 @@ SPECIES_FENNEC = 'icons/inventory/suit/item_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/suit/item_vr_altevian.dmi')
#define ALL_VR_SPRITE_SHEETS_HEAD_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/head/item_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/head/item_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/head/item_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/head/item_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/head/item_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/head/item_vr_teshari.dmi',\
@@ -195,7 +195,7 @@ SPECIES_FENNEC = 'icons/inventory/head/item_vr_vulpkanin.dmi',\
SPECIES_ALTEVIAN = 'icons/inventory/head/item_vr_altevian.dmi')
#define ALL_VR_SPRITE_SHEETS_HANDS_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/hands/item_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/hands/item_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/hands/item_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/hands/item_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/hands/item_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/hands/item_vr_teshari.dmi',\
@@ -208,7 +208,7 @@ SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item_vr_vulpkanin.dmi',\
SPECIES_FENNEC = 'icons/inventory/hands/item_vr_vulpkanin.dmi')
#define ALL_VR_SPRITE_SHEETS_FEET_ITEM list(\
SPECIES_HUMAN = 'icons/inventory/feet/item_vr.dmi',\
-SPECIES_TAJ = 'icons/inventory/feet/item_vr_tajaran.dmi',\
+SPECIES_TAJARAN = 'icons/inventory/feet/item_vr_tajaran.dmi',\
SPECIES_SKRELL = 'icons/inventory/feet/item_vr_skrell.dmi',\
SPECIES_UNATHI = 'icons/inventory/feet/item_vr_unathi.dmi',\
SPECIES_TESHARI = 'icons/inventory/feet/item_vr_teshari.dmi',\
@@ -218,4 +218,4 @@ SPECIES_SERGAL = 'icons/inventory/feet/item_vr_sergal.dmi',\
SPECIES_NEVREAN = 'icons/inventory/feet/item_vr_sergal.dmi',\
SPECIES_VULPKANIN = 'icons/inventory/feet/item_vr_vulpkanin.dmi',\
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item_vr_vulpkanin.dmi',\
-SPECIES_FENNEC = 'icons/inventory/feet/item_vr_vulpkanin.dmi')
\ No newline at end of file
+SPECIES_FENNEC = 'icons/inventory/feet/item_vr_vulpkanin.dmi')
diff --git a/code/_helpers/text.dm b/code/_helpers/text.dm
index 725335f267..8d7ed229e4 100644
--- a/code/_helpers/text.dm
+++ b/code/_helpers/text.dm
@@ -349,7 +349,7 @@ GLOBAL_LIST_EMPTY(text_tag_cache)
if(!(C && C.prefs?.read_preference(/datum/preference/toggle/chat_tags)))
return tagdesc
if(!GLOB.text_tag_cache[tagname])
- var/datum/asset/spritesheet/chatassets = get_asset_datum(/datum/asset/spritesheet/chat)
+ var/datum/asset/spritesheet_batched/chatassets = get_asset_datum(/datum/asset/spritesheet_batched/chat)
GLOB.text_tag_cache[tagname] = chatassets.icon_tag(tagname)
if(!C.tgui_panel.is_ready() || C.tgui_panel.oldchat)
return "
"
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 4d221c9c4f..d8781ef799 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -390,7 +390,7 @@
contents.Add(0)
// No races breath this, but never know about downstream servers.
- if ("carbon dioxide")
+ if (GAS_CO2)
if(t.air_contents.gas[GAS_CO2] && !t.air_contents.gas[GAS_PHORON])
contents.Add(t.air_contents.gas[GAS_CO2])
else
diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm
index f216ae01cf..b5c41302ba 100644
--- a/code/datums/chat_message.dm
+++ b/code/datums/chat_message.dm
@@ -368,10 +368,10 @@ var/list/runechat_image_cache = list()
return world.icon_size * 0.95
/atom/movable/runechat_x_offset(width, height)
- return (width - bound_width) * -0.5
+ return (width - bound_width) * -0.5 + get_oversized_icon_offsets()["x"]
/atom/movable/runechat_y_offset(width, height)
- return bound_height * 0.95
+ return bound_height * 0.95 + get_oversized_icon_offsets()["y"]
/* Nothing special
/mob/runechat_x_offset(width, height)
diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm
index d9d11999f3..dd67c61851 100644
--- a/code/game/antagonist/antagonist.dm
+++ b/code/game/antagonist/antagonist.dm
@@ -54,7 +54,7 @@
var/flags = 0 // Various runtime options.
// Used for setting appearance.
- var/list/valid_species = list(SPECIES_UNATHI,SPECIES_TAJ,SPECIES_SKRELL,SPECIES_HUMAN,SPECIES_DIONA,SPECIES_TESHARI)
+ var/list/valid_species = list(SPECIES_UNATHI,SPECIES_TAJARAN,SPECIES_SKRELL,SPECIES_HUMAN,SPECIES_DIONA,SPECIES_TESHARI)
// Runtime vars.
var/datum/mind/leader // Current leader, if any.
diff --git a/code/game/antagonist/outsider/ninja.dm b/code/game/antagonist/outsider/ninja.dm
index 7df32b76aa..4dd40c508e 100644
--- a/code/game/antagonist/outsider/ninja.dm
+++ b/code/game/antagonist/outsider/ninja.dm
@@ -158,7 +158,7 @@ var/datum/antagonist/ninja/ninjas
if(13)
directive += "Some disgruntled [using_map.company_name] employees have been supportive of our operations. Be wary of any mistreatment by command staff."
if(14)
- var/xenorace = pick(SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL)
+ var/xenorace = pick(SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL)
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
if(15)
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the " + JOB_CHAPLAIN + " and prove these accusations false."
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 80580031d6..cd1081051c 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -818,3 +818,29 @@
var/mouseparams = list2params(paramslist)
usr_client.Click(src, loc, null, mouseparams)
return TRUE
+
+GLOBAL_LIST_EMPTY(icon_dimensions)
+
+/atom/proc/get_oversized_icon_offsets()
+ if (pixel_x == 0 && pixel_y == 0)
+ return list("x" = 0, "y" = 0)
+ var/list/icon_dimensions = get_icon_dimensions(icon)
+ var/icon_width = icon_dimensions["width"]
+ var/icon_height = icon_dimensions["height"]
+ return list(
+ "x" = icon_width > world.icon_size && pixel_x != 0 ? (icon_width - world.icon_size) * 0.5 : 0,
+ "y" = icon_height > world.icon_size /*&& pixel_y != 0*/ ? (icon_height - world.icon_size) * 0.5 : 0, // we don't have pixel_y in use
+ )
+
+/// Returns a list containing the width and height of an icon file
+/proc/get_icon_dimensions(icon_path)
+ // Icons can be a real file(), a rsc backed file(), a dynamic rsc (dyn.rsc) reference (known as a cache reference in byond docs), or an /icon which is pointing to one of those.
+ // Runtime generated dynamic icons are an unbounded concept cache identity wise, the same icon can exist millions of ways and holding them in a list as a key can lead to unbounded memory usage if called often by consumers.
+ // Check distinctly that this is something that has this unspecified concept, and thus that we should not cache.
+ if (!isfile(icon_path) || !length("[icon_path]"))
+ var/icon/my_icon = icon(icon_path)
+ return list("width" = my_icon.Width(), "height" = my_icon.Height())
+ if (isnull(GLOB.icon_dimensions[icon_path]))
+ var/icon/my_icon = icon(icon_path)
+ GLOB.icon_dimensions[icon_path] = list("width" = my_icon.Width(), "height" = my_icon.Height())
+ return GLOB.icon_dimensions[icon_path]
diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm
index 099e5c4d18..63b8a4a4de 100644
--- a/code/game/dna/dna2.dm
+++ b/code/game/dna/dna2.dm
@@ -50,6 +50,19 @@ var/global/list/datum/dna/gene/dna_genes[0]
var/base_species = "Human"
var/list/species_traits = list()
var/blood_color = "#A10808"
+ var/blood_reagents = "iron"
+ var/scale_appearance = 0
+ var/offset_override = 0
+ var/synth_markings = 0
+ var/custom_speech_bubble = "default"
+ var/species_sounds = "None"
+ var/gender_specific_species_sounds = FALSE
+ var/species_sounds_male = "None"
+ var/species_sounds_female = "None"
+ var/grad_style = 0
+ var/r_grad = 0
+ var/g_grad = 0
+ var/b_grad = 0
var/custom_say
var/custom_ask
var/custom_whisper
@@ -79,6 +92,19 @@ var/global/list/datum/dna/gene/dna_genes[0]
new_dna.custom_species=custom_species //VOREStaton Edit
new_dna.species_traits=species_traits.Copy() //VOREStation Edit
new_dna.blood_color=blood_color //VOREStation Edit
+ new_dna.blood_reagents=blood_reagents
+ new_dna.scale_appearance = scale_appearance
+ new_dna.offset_override = offset_override
+ new_dna.synth_markings = synth_markings
+ new_dna.custom_speech_bubble = custom_speech_bubble
+ new_dna.species_sounds = species_sounds
+ new_dna.gender_specific_species_sounds = gender_specific_species_sounds
+ new_dna.species_sounds_male = species_sounds_male
+ new_dna.species_sounds_female = species_sounds_female
+ new_dna.grad_style = grad_style
+ new_dna.r_grad = r_grad
+ new_dna.g_grad = g_grad
+ new_dna.b_grad = b_grad
new_dna.custom_say=custom_say //VOREStaton Edit
new_dna.custom_ask=custom_ask //VOREStaton Edit
new_dna.custom_whisper=custom_whisper //VOREStaton Edit
@@ -157,6 +183,21 @@ var/global/list/datum/dna/gene/dna_genes[0]
src.custom_species = character.custom_species
src.base_species = character.species.base_species
src.blood_color = character.species.blood_color
+ src.blood_reagents = character.species.blood_reagents
+ src.scale_appearance = character.fuzzy
+ src.offset_override = character.offset_override
+ src.synth_markings = character.synth_markings
+ src.custom_speech_bubble = character.custom_speech_bubble
+ /* Currently not implemented on virgo
+ src.species_sounds = character.species.species_sounds
+ src.gender_specific_species_sounds = character.species.gender_specific_species_sounds
+ src.species_sounds_male = character.species.species_sounds_male
+ src.species_sounds_female = character.species.species_sounds_female
+ */
+ src.grad_style = character.grad_style
+ src.r_grad = character.r_grad
+ src.g_grad = character.g_grad
+ src.b_grad = character.b_grad
src.species_traits = character.species.traits.Copy()
src.custom_say = character.custom_say
src.custom_ask = character.custom_ask
diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm
index e7b68fdfe5..9d1060db1c 100644
--- a/code/game/dna/dna2_helpers.dm
+++ b/code/game/dna/dna2_helpers.dm
@@ -258,12 +258,28 @@
H.custom_whisper = dna.custom_whisper
H.custom_exclaim = dna.custom_exclaim
H.species.blood_color = dna.blood_color
+ H.fuzzy = dna.scale_appearance
+ H.offset_override = dna.offset_override
+ H.synth_markings = dna.synth_markings
+ H.custom_speech_bubble = dna.custom_speech_bubble
+ H.grad_style = dna.grad_style
+ H.r_grad = dna.r_grad
+ H.g_grad = dna.g_grad
+ H.b_grad = dna.b_grad
H.custom_heat = dna.custom_heat
H.custom_cold = dna.custom_cold
var/datum/species/S = H.species
- S.produceCopy(dna.species_traits, H, dna.base_species)
+ S.produceCopy(dna.species_traits, H, dna.base_species, FALSE) // Traitgenes edit - reset_dna flag required, or genes get reset on resleeve
// VOREStation Edit End
+ H.species.blood_reagents = dna.blood_reagents
+ /* Currently not implemented on virgo
+ H.species.species_sounds = dna.species_sounds
+ H.species.gender_specific_species_sounds = dna.gender_specific_species_sounds
+ H.species.species_sounds_male = dna.species_sounds_male
+ H.species.species_sounds_female = dna.species_sounds_female
+ */
+
H.force_update_organs() //VOREStation Add - Gotta do this too
H.force_update_limbs()
//H.update_body(0) //VOREStation Edit - Done in force_update_limbs already
diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm
index 767ac32923..6dbc6d56a8 100644
--- a/code/game/jobs/job/captain.dm
+++ b/code/game/jobs/job/captain.dm
@@ -26,7 +26,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
min_age_by_species = list(SPECIES_HUMAN_VATBORN = 14)
ideal_character_age = 70 // Old geezer captains ftw
ideal_age_by_species = list(SPECIES_HUMAN_VATBORN = 55) /// Vatborn live shorter, no other race eligible for captain besides human/skrell
- banned_job_species = list(SPECIES_UNATHI, SPECIES_TAJ, SPECIES_DIONA, SPECIES_PROMETHEAN, SPECIES_ZADDAT, "mechanical", "digital")
+ banned_job_species = list(SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_DIONA, SPECIES_PROMETHEAN, SPECIES_ZADDAT, "mechanical", "digital")
disallow_jobhop = TRUE
pto_type = PTO_CIVILIAN
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 1619659f04..6d24d496ea 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -339,6 +339,9 @@
//Lifted from Unity stasis.dm and refactored. ~Zuhayr
/obj/machinery/cryopod/process()
if(occupant)
+ if(occupant.loc != src)
+ go_out(TRUE)
+ return
//Allow a ten minute gap between entering the pod and actually despawning.
if(world.time - time_entered < time_till_despawn)
return
@@ -654,12 +657,12 @@
for(var/obj/machinery/gateway/G in range(1,src))
G.icon_state = "on"
-/obj/machinery/cryopod/robot/door/gateway/go_out()
- ..()
+/obj/machinery/cryopod/robot/door/gateway/go_out(var/skip_move = FALSE)
+ ..(skip_move)
for(var/obj/machinery/gateway/G in range(1,src))
G.icon_state = "off"
-/obj/machinery/cryopod/proc/go_out()
+/obj/machinery/cryopod/proc/go_out(var/skip_move = FALSE)
if(!occupant)
return
@@ -667,8 +670,8 @@
if(occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
-
- occupant.forceMove(get_turf(src))
+ if(!skip_move)
+ occupant.forceMove(get_turf(src))
if(ishuman(occupant) && applies_stasis)
var/mob/living/carbon/human/H = occupant
H.Stasis(0)
diff --git a/code/game/machinery/suit_storage/suit_cycler_datums.dm b/code/game/machinery/suit_storage/suit_cycler_datums.dm
index 1a9d0d9bce..88e10f79dd 100644
--- a/code/game/machinery/suit_storage/suit_cycler_datums.dm
+++ b/code/game/machinery/suit_storage/suit_cycler_datums.dm
@@ -337,7 +337,7 @@ GLOBAL_LIST_EMPTY(suit_cycler_emagged)
/datum/suit_cycler_choice/species/unathi
name = SPECIES_UNATHI
/datum/suit_cycler_choice/species/tajaran
- name = SPECIES_TAJ
+ name = SPECIES_TAJARAN
/datum/suit_cycler_choice/species/teshari
name = SPECIES_TESHARI
/datum/suit_cycler_choice/species/akula
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 553d08c343..d7e6d55aed 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -76,7 +76,7 @@
/* Species-specific sprites, concept stolen from Paradise//vg/.
ex:
sprite_sheets = list(
- SPECIES_TAJ = 'icons/cat/are/bad'
+ SPECIES_TAJARAN = 'icons/cat/are/bad'
)
If index term exists and icon_override is not set, this sprite sheet will be used.
*/
diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm
index 68a2c4eab2..2864040fe1 100644
--- a/code/game/objects/items/devices/modkit.dm
+++ b/code/game/objects/items/devices/modkit.dm
@@ -76,4 +76,4 @@
/obj/item/modkit/tajaran
name = "tajaran hardsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
- target_species = SPECIES_TAJ
+ target_species = SPECIES_TAJARAN
diff --git a/code/game/objects/items/weapons/implants/implant_vr.dm b/code/game/objects/items/weapons/implants/implant_vr.dm
index 8f82fb42f7..0ed3726191 100644
--- a/code/game/objects/items/weapons/implants/implant_vr.dm
+++ b/code/game/objects/items/weapons/implants/implant_vr.dm
@@ -96,14 +96,14 @@
active = !active
if(active)
if(findtext(msg,"grow"))
- H.resize(min(H.size_multiplier*1.5, 2))
+ H.resize(min(H.size_multiplier*1.5, RESIZE_MAXIMUM))
else if(findtext(msg,"shrink"))
- H.resize(max(H.size_multiplier*0.5, 0.25))
+ H.resize(max(H.size_multiplier*0.5, RESIZE_MINIMUM))
else if(findtext(msg, "resize"))
var/static/regex/size_mult = new/regex("\\d+")
if(size_mult.Find(msg))
var/resizing_value = text2num(size_mult.match)
- H.resize(CLAMP(resizing_value/100 , 0.25, 2))
+ H.resize(CLAMP(resizing_value/100 , RESIZE_MINIMUM, RESIZE_MAXIMUM))
diff --git a/code/modules/admin/modify_robot.dm b/code/modules/admin/modify_robot.dm
index e8afa5e6c5..6d6ddb94ab 100644
--- a/code/modules/admin/modify_robot.dm
+++ b/code/modules/admin/modify_robot.dm
@@ -45,13 +45,13 @@
/datum/eventkit/modify_robot/ui_assets(mob/user)
return list(
- get_asset_datum(/datum/asset/spritesheet/robot_icons)
+ get_asset_datum(/datum/asset/spritesheet_batched/robot_icons)
)
/datum/eventkit/modify_robot/tgui_data(mob/user)
. = list()
// Target section for general data
- var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons)
+ var/datum/asset/spritesheet_batched/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet_batched/robot_icons)
if(target)
.["target"] = list()
@@ -589,7 +589,7 @@
target_items += list(list("name" = item.name, "ref" = "\ref[item]", "icon" = icon2html(item, user, sourceonly=TRUE), "desc" = item.desc))
return target_items
-/datum/eventkit/modify_robot/proc/get_module_source(var/mob/user, var/datum/asset/spritesheet/robot_icons/spritesheet)
+/datum/eventkit/modify_robot/proc/get_module_source(var/mob/user, var/datum/asset/spritesheet_batched/robot_icons/spritesheet)
var/list/source_list = list()
source_list["model"] = source.module
source_list["sprite"] = sanitize_css_class_name("[source.sprite_datum.type]")
diff --git a/code/modules/asset_cache/assets/spritesheets/chat.dm b/code/modules/asset_cache/assets/spritesheets/chat.dm
index cbaf4ac35b..7f3922e613 100644
--- a/code/modules/asset_cache/assets/spritesheets/chat.dm
+++ b/code/modules/asset_cache/assets/spritesheets/chat.dm
@@ -1,5 +1,5 @@
-/datum/asset/spritesheet/chat
+/datum/asset/spritesheet_batched/chat
name = "chat"
-/datum/asset/spritesheet/chat/create_spritesheets()
- InsertAll("", text_tag_icons) // OOC, LOOC ect icons
+/datum/asset/spritesheet_batched/chat/create_spritesheets()
+ insert_all_icons("", text_tag_icons, prefix_with_dirs = FALSE) // OOC, LOOC ect icons
diff --git a/code/modules/asset_cache/assets/spritesheets/robot_icons.dm b/code/modules/asset_cache/assets/spritesheets/robot_icons.dm
index 7935c5af7e..bcba8ccfba 100644
--- a/code/modules/asset_cache/assets/spritesheets/robot_icons.dm
+++ b/code/modules/asset_cache/assets/spritesheets/robot_icons.dm
@@ -1,36 +1,52 @@
-/datum/asset/spritesheet/robot_icons
+/datum/asset/spritesheet_batched/robot_icons
name = "robot_icons"
-/datum/asset/spritesheet/robot_icons/create_spritesheets()
+/datum/asset/spritesheet_batched/robot_icons/create_spritesheets()
for(var/datum/robot_sprite/S as anything in typesof(/datum/robot_sprite))
if(!S.name || !S.sprite_icon_state) // snowflake out those customs... they suck
continue
- var/icon/I_N = icon(S.sprite_icon, S.sprite_icon_state, NORTH)
- var/icon/I_S = icon(S.sprite_icon, S.sprite_icon_state, SOUTH)
- var/icon/I_W = icon(S.sprite_icon, S.sprite_icon_state, WEST)
- var/icon/I_E = icon(S.sprite_icon, S.sprite_icon_state, EAST)
+
+ var/datum/universal_icon/I_N = uni_icon(S.sprite_icon, S.sprite_icon_state, NORTH)
+ var/datum/universal_icon/I_S = uni_icon(S.sprite_icon, S.sprite_icon_state, SOUTH)
+ var/datum/universal_icon/I_W = uni_icon(S.sprite_icon, S.sprite_icon_state, WEST)
+ var/datum/universal_icon/I_E = uni_icon(S.sprite_icon, S.sprite_icon_state, EAST)
+
if(S.has_eye_sprites)
- var/icon/I_NE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH)
+ var/datum/universal_icon/I_NE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", NORTH)
if(I_NE)
- I_N.Blend(I_NE, ICON_OVERLAY)
+ I_N.blend_icon(I_NE, ICON_OVERLAY)
if(S.has_eye_sprites)
- var/icon/I_SE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH)
+ var/datum/universal_icon/I_SE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", SOUTH)
if(I_SE)
- I_S.Blend(I_SE, ICON_OVERLAY)
+ I_S.blend_icon(I_SE, ICON_OVERLAY)
if(S.has_eye_sprites)
- var/icon/I_WE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST)
+ var/datum/universal_icon/I_WE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", WEST)
if(I_WE)
- I_W.Blend(I_WE, ICON_OVERLAY)
+ I_W.blend_icon(I_WE, ICON_OVERLAY)
if(S.has_eye_sprites)
- var/icon/I_EE = icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST)
+ var/datum/universal_icon/I_EE = uni_icon(S.sprite_icon, "[S.sprite_icon_state]-eyes", EAST)
if(I_EE)
- I_E.Blend(I_EE, ICON_OVERLAY)
+ I_E.blend_icon(I_EE, ICON_OVERLAY)
+
var/imgid = sanitize_css_class_name("[S.type]")
- I_N.Scale(120, 120)
- I_S.Scale(120, 120)
- I_W.Scale(120, 120)
- I_E.Scale(120, 120)
- Insert(imgid + "N", I_N)
- Insert(imgid + "S", I_S)
- Insert(imgid + "W", I_W)
- Insert(imgid + "E", I_E)
+ if(S.icon_x > S.icon_y)
+ var/buffer = (S.icon_x - S.icon_y) / 2
+ I_N.crop(0, -buffer, S.icon_x, S.icon_y + buffer)
+ I_S.crop(0, -buffer, S.icon_x, S.icon_y + buffer)
+ I_W.crop(0, -buffer, S.icon_x, S.icon_y + buffer)
+ I_E.crop(0, -buffer, S.icon_x, S.icon_y + buffer)
+ else if (S.icon_x < S.icon_y)
+ var/buffer = (S.icon_y - S.icon_x) / 2
+ I_N.crop(-buffer, 0, S.icon_x + buffer, S.icon_y)
+ I_S.crop(-buffer, 0, S.icon_x + buffer, S.icon_y)
+ I_W.crop(-buffer, 0, S.icon_x + buffer, S.icon_y)
+ I_E.crop(-buffer, 0, S.icon_x + buffer, S.icon_y)
+ I_N.scale(120, 120)
+ I_S.scale(120, 120)
+ I_W.scale(120, 120)
+ I_E.scale(120, 120)
+
+ insert_icon(imgid + "N", I_N)
+ insert_icon(imgid + "S", I_S)
+ insert_icon(imgid + "W", I_W)
+ insert_icon(imgid + "E", I_E)
diff --git a/code/modules/asset_cache/iconforge/batched_spritesheet.dm b/code/modules/asset_cache/iconforge/batched_spritesheet.dm
index c49248f417..ead99a2f8a 100644
--- a/code/modules/asset_cache/iconforge/batched_spritesheet.dm
+++ b/code/modules/asset_cache/iconforge/batched_spritesheet.dm
@@ -180,6 +180,10 @@
// Remove the cache, since it's invalid if we get to this point.
fdel("[ASSET_CROSS_ROUND_SMART_CACHE_DIRECTORY]/spritesheet_cache.[name].json")
+ if(!fexists(ASSET_CROSS_ROUND_SMART_CACHE_DIRECTORY))
+ rustg_file_write("stub", "[ASSET_CROSS_ROUND_SMART_CACHE_DIRECTORY]/stub.txt")
+ fdel("[ASSET_CROSS_ROUND_SMART_CACHE_DIRECTORY]/stub.txt")
+
var/do_cache = CONFIG_GET(flag/smart_cache_assets) || force_cache
var/data_out
if(yield || !isnull(job_id))
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 95a17a4f71..821dde398e 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -25,7 +25,7 @@
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
- var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overriden downstream. only includes common humanoids for voidsuit compatibility's sake.
+ var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJARAN,SPECIES_UNATHI,SPECIES_SKRELL) //preset list that can be overriden downstream. only includes common humanoids for voidsuit compatibility's sake.
// var/random_appearance = FALSE //TODO: make this work
// var/cause_of_death = null //TODO: set up a cause-of-death system. needs to support both damage types and actual wound types, so a body can have been bitten/stabbed/clawed/shot/burned/lasered/etc. to death
delete_me = TRUE
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm
index 1d6a204a63..042d193e17 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm
@@ -8,7 +8,7 @@
/datum/gear/head/zhan_scarf
display_name = "Zhan headscarf"
path = /obj/item/clothing/head/tajaran/scarf
- whitelisted = SPECIES_TAJ
+ whitelisted = SPECIES_TAJARAN
/datum/gear/suit/unathi_mantle
display_name = "hide mantle (Unathi)"
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm
index 3fdf1ec61f..e11e126b8a 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno_vr.dm
@@ -59,31 +59,31 @@
/datum/gear/eyes/tajblind
display_name = "embroidered veil"
path = /obj/item/clothing/glasses/tajblind
- //whitelisted = SPECIES_TAJ
+ //whitelisted = SPECIES_TAJARAN
sort_category = "Xenowear"
/datum/gear/eyes/medical/tajblind
display_name = "medical veil (Tajara) (Medical)"
path = /obj/item/clothing/glasses/hud/health/tajblind
- //whitelisted = SPECIES_TAJ
+ //whitelisted = SPECIES_TAJARAN
sort_category = "Xenowear"
/datum/gear/eyes/meson/tajblind
display_name = "industrial veil (Tajara) (Engineering, Science)"
path = /obj/item/clothing/glasses/meson/prescription/tajblind
- //whitelisted = SPECIES_TAJ
+ //whitelisted = SPECIES_TAJARAN
sort_category = "Xenowear"
/datum/gear/eyes/material/tajblind
display_name = "mining veil (Tajara) (Mining)"
path = /obj/item/clothing/glasses/material/prescription/tajblind
- //whitelisted = SPECIES_TAJ
+ //whitelisted = SPECIES_TAJARAN
sort_category = "Xenowear"
/datum/gear/eyes/security/tajblind
display_name = "sleek veil (Tajara) (Security)"
path = /obj/item/clothing/glasses/sunglasses/sechud/tajblind
- //whitelisted = SPECIES_TAJ
+ //whitelisted = SPECIES_TAJARAN
sort_category = "Xenowear"
/datum/gear/mask/altevian_breath
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index 2184a30f92..92909532de 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -257,7 +257,7 @@ var/global/list/valid_bloodreagents = list("default",REAGENT_ID_IRON,REAGENT_ID_
pref.dirty_synth = 0
var/datum/species/S = character.species
- var/datum/species/new_S = S.produceCopy(pref.pos_traits + pref.neu_traits + pref.neg_traits, character, pref.custom_base)
+ var/datum/species/new_S = S.produceCopy(pref.pos_traits + pref.neu_traits + pref.neg_traits, character, pref.custom_base, TRUE)
for(var/datum/trait/T in new_S.traits)
T.apply_pref(src)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 1b161ad311..32b39ec9fe 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -721,6 +721,9 @@ var/list/preferences_datums = list()
character.digitigrade = selected_species.digi_allowed ? digitigrade : 0
+ for(var/obj/item/clothing/O in character.contents)
+ O.handle_digitigrade(character)
+
character.dna.ResetUIFrom(character)
character.force_update_limbs()
character.regenerate_icons()
diff --git a/code/modules/client/record_updater.dm b/code/modules/client/record_updater.dm
index 28a3de6a7d..e96e77bd84 100644
--- a/code/modules/client/record_updater.dm
+++ b/code/modules/client/record_updater.dm
@@ -77,7 +77,7 @@ var/global/client_record_update_lock = FALSE
return "Update syncronization failed (OOC: Record's owner is offline)"
var/choice = tgui_alert(M, "Your [record_string] record has been updated from the a records console by [user]. Please review the changes made to your [record_string] record. Accepting these changes will SAVE your CURRENT character slot! If your new [record_string] record has errors, it is recomended to have it corrected IC instead of editing it yourself.", "Record Updated", list("Review Changes","DENY"))
- if(choice == "DENY")
+ if(!choice || choice == "DENY")
message_admins("[active.fields["name"]] refused [record_string] record update from [user] without review.")
if(COM && !QDELETED(COM))
COM.visible_message(span_notice("\The [COM] buzzes!"))
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 9f8d9e9db2..87bfe187fe 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -367,7 +367,7 @@
desc = "[desc]
They have had the fingertips cut off of them."
if("exclude" in species_restricted)
species_restricted -= SPECIES_UNATHI
- species_restricted -= SPECIES_TAJ
+ species_restricted -= SPECIES_TAJARAN
return
*/
@@ -573,7 +573,7 @@
sprite_sheets = list(
SPECIES_TESHARI = 'icons/inventory/face/mob_teshari.dmi',
SPECIES_VOX = 'icons/inventory/face/mob_vox.dmi',
- SPECIES_TAJ = 'icons/inventory/face/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/face/mob_tajaran.dmi',
SPECIES_UNATHI = 'icons/inventory/face/mob_unathi.dmi'
)
diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index e588b2767a..41bd5f212f 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -148,7 +148,7 @@
sprite_sheets = list(
SPECIES_TESHARI = 'icons/inventory/face/mob_teshari.dmi',
SPECIES_VOX = 'icons/inventory/face/mob_vox.dmi',
- SPECIES_TAJ = 'icons/inventory/face/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/face/mob_tajaran.dmi',
SPECIES_UNATHI = 'icons/inventory/face/mob_unathi.dmi',
SPECIES_SERGAL = 'icons/inventory/face/mob_vr_sergal.dmi',
SPECIES_NEVREAN = 'icons/inventory/face/mob_vr_nevrean.dmi',
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 4106d577af..29caa0d81a 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -172,7 +172,7 @@
icon_state = "swathelm"
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
sprite_sheets = list(
- SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',
)
diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm
index 056a1092ab..b6d68241ac 100644
--- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm
@@ -11,13 +11,13 @@
cold_protection = HEAD|FACE|EYES
light_range = 4
sprite_sheets = list(
- SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',
SPECIES_VOX = 'icons/inventory/head/mob_vox.dmi',
SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi'
)
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
max_pressure_protection = null
min_pressure_protection = null
@@ -28,7 +28,7 @@
body_parts_covered = HANDS
heat_protection = HANDS
cold_protection = HANDS
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
gender = PLURAL
/obj/item/clothing/shoes/magboots/rig
@@ -36,7 +36,7 @@
body_parts_covered = FEET
cold_protection = FEET
heat_protection = FEET
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI)
gender = PLURAL
icon_base = null
@@ -54,13 +54,13 @@
resilience = 0.2
can_breach = 1
sprite_sheets = list(
- SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/mob_tajaran.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi',
SPECIES_VOX = 'icons/inventory/suit/mob_vox.dmi',
SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi'
)
supporting_limbs = list()
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_TESHARI) //vox, diona, and zaddat can't use hardsuits not designed for them
var/obj/item/material/knife/tacknife
max_pressure_protection = null
min_pressure_protection = null
diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
index ac918a4bc8..ec3ccd9a30 100644
--- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
@@ -1,6 +1,6 @@
/obj/item/clothing/head/helmet/space/rig
sprite_sheets = list(
- SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi',
@@ -18,7 +18,7 @@
/obj/item/clothing/suit/space/rig
sprite_sheets = list(
- SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_unathi.dmi',
@@ -35,16 +35,16 @@
)
/obj/item/clothing/head/helmet/space/rig
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
/obj/item/clothing/gloves/gauntlets/rig
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
/obj/item/clothing/shoes/magboots/rig
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
/obj/item/clothing/suit/space/rig
- species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
+ species_restricted = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_ALRAUNE, SPECIES_FENNEC, SPECIES_XENOHYBRID, SPECIES_ALTEVIAN)
/obj/item/clothing/shoes/magboots/rig/ce
name = "advanced boots"
@@ -54,4 +54,4 @@
else if(shoes)
slowdown = shoes.slowdown
else
- slowdown = SHOES_SLOWDOWN
\ No newline at end of file
+ slowdown = SHOES_SLOWDOWN
diff --git a/code/modules/clothing/spacesuits/void/ert_vr.dm b/code/modules/clothing/spacesuits/void/ert_vr.dm
index f165f11f82..e88fc6e3bd 100644
--- a/code/modules/clothing/spacesuits/void/ert_vr.dm
+++ b/code/modules/clothing/spacesuits/void/ert_vr.dm
@@ -170,7 +170,7 @@
/obj/item/clothing/suit/space/void/responseteam
sprite_sheets = list(
SPECIES_HUMAN = 'icons/inventory/suit/mob_vr.dmi',
- SPECIES_TAJ = 'icons/inventory/suit/mob_vr_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/mob_vr_tajaran.dmi',
SPECIES_LLEILL = 'icons/inventory/suit/mob_vr_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/mob_vr_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/mob_vr_unathi.dmi',
@@ -188,7 +188,7 @@
SPECIES_ZADDAT = 'icons/inventory/suit/mob_vr.dmi'
)
sprite_sheets_obj = list(
- SPECIES_TAJ = 'icons/inventory/suit/item_vr.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/item_vr.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/item_vr.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/item_vr.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/suit/item_vr.dmi',
@@ -209,7 +209,7 @@
/obj/item/clothing/head/helmet/space/void/responseteam
sprite_sheets = list(
SPECIES_HUMAN = 'icons/inventory/head/mob_vr.dmi',
- SPECIES_TAJ = 'icons/inventory/head/mob_vr_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/mob_vr_tajaran.dmi',
SPECIES_LLEILL = 'icons/inventory/suit/mob_vr_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/head/mob_vr_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/head/mob_vr_unathi.dmi',
@@ -227,7 +227,7 @@
SPECIES_ZADDAT = 'icons/inventory/head/mob_vr.dmi'
)
sprite_sheets_obj = list(
- SPECIES_TAJ = 'icons/inventory/head/item_vr.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/item_vr.dmi',
SPECIES_SKRELL = 'icons/inventory/head/item_vr.dmi',
SPECIES_UNATHI = 'icons/inventory/head/item_vr.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/head/item_vr.dmi',
diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm
index ab724b894c..953cba8b99 100644
--- a/code/modules/clothing/spacesuits/void/station.dm
+++ b/code/modules/clothing/spacesuits/void/station.dm
@@ -208,12 +208,12 @@
/obj/item/clothing/head/helmet/space/void/medical/alt
sprite_sheets = list(
SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',
- SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi'
)
sprite_sheets_obj = list(
- SPECIES_TAJ = 'icons/inventory/head/item.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/item.dmi',
SPECIES_SKRELL = 'icons/inventory/head/item.dmi',
SPECIES_UNATHI = 'icons/inventory/head/item.dmi'
)
@@ -244,12 +244,12 @@
/obj/item/clothing/suit/space/void/medical/alt
sprite_sheets = list(
SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi',
- SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi'
)
sprite_sheets_obj = list(
- SPECIES_TAJ = 'icons/inventory/suit/item.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/item.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/item.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/item.dmi'
)
diff --git a/code/modules/clothing/spacesuits/void/station_vr.dm b/code/modules/clothing/spacesuits/void/station_vr.dm
index 852863e0ba..f6db107674 100644
--- a/code/modules/clothing/spacesuits/void/station_vr.dm
+++ b/code/modules/clothing/spacesuits/void/station_vr.dm
@@ -1,7 +1,7 @@
/obj/item/clothing/head/helmet/space/void/medical/alt
sprite_sheets = list(
SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',
- SPECIES_TAJ = 'icons/inventory/head/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi',
@@ -12,7 +12,7 @@
SPECIES_FENNEC = 'icons/inventory/head/mob_vr_vulpkanin.dmi'
)
sprite_sheets_obj = list(
- SPECIES_TAJ = 'icons/inventory/head/item.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/head/item.dmi',
SPECIES_SKRELL = 'icons/inventory/head/item.dmi',
SPECIES_UNATHI = 'icons/inventory/head/item.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/head/item.dmi',
@@ -26,7 +26,7 @@
/obj/item/clothing/suit/space/void/medical/alt
sprite_sheets = list(
SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi',
- SPECIES_TAJ = 'icons/inventory/suit/mob_tajaran.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/mob_tajaran.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_unathi.dmi',
@@ -37,7 +37,7 @@
SPECIES_FENNEC = 'icons/inventory/suit/mob_vr_vulpkanin.dmi'
)
sprite_sheets_obj = list(
- SPECIES_TAJ = 'icons/inventory/suit/item.dmi',
+ SPECIES_TAJARAN = 'icons/inventory/suit/item.dmi',
SPECIES_SKRELL = 'icons/inventory/suit/item.dmi',
SPECIES_UNATHI = 'icons/inventory/suit/item.dmi',
SPECIES_XENOHYBRID = 'icons/inventory/suit/item.dmi',
diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm
index c216ca4579..e101dee28e 100644
--- a/code/modules/clothing/under/miscellaneous_vr.dm
+++ b/code/modules/clothing/under/miscellaneous_vr.dm
@@ -76,7 +76,11 @@
to_chat(H,span_warning("You must be WEARING the uniform to change your size."))
return
- var/new_size = tgui_input_number(usr, "Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", 200, 600, 1)
+ var/new_size
+ if(H.has_large_resize_bounds())
+ new_size = tgui_input_number(H, "Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", H.size_multiplier * 100, RESIZE_MAXIMUM_DORMS * 100, RESIZE_MINIMUM_DORMS * 100)
+ else
+ new_size = tgui_input_number(H, "Put the desired size (25-200%), or (1-600%) in dormitory areas.", "Set Size", H.size_multiplier * 100, RESIZE_MAXIMUM * 100, RESIZE_MINIMUM * 100)
if(!new_size)
return //cancelled
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index 60d3ae2867..02f25faf13 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -1872,6 +1872,7 @@
H.real_name = H.species.get_random_name()
H.name = H.real_name
H.low_sorting_priority = TRUE
+ H.species.produceCopy(H.species.traits.Copy(),H,null,FALSE)
if(ismob(loc))
var/mob/M = loc
M.unEquip(src)
@@ -1906,27 +1907,27 @@
/obj/item/reagent_containers/food/snacks/monkeycube/farwacube
name = "farwa cube"
- monkey_type = "Farwa"
+ monkey_type = SPECIES_MONKEY_TAJ
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/farwacube
name = "farwa cube"
- monkey_type = "Farwa"
+ monkey_type = SPECIES_MONKEY_TAJ
/obj/item/reagent_containers/food/snacks/monkeycube/stokcube
name = "stok cube"
- monkey_type = "Stok"
+ monkey_type = SPECIES_MONKEY_UNATHI
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/stokcube
name = "stok cube"
- monkey_type = "Stok"
+ monkey_type = SPECIES_MONKEY_UNATHI
/obj/item/reagent_containers/food/snacks/monkeycube/neaeracube
name = "neaera cube"
- monkey_type = "Neaera"
+ monkey_type = SPECIES_MONKEY_SKRELL
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube
name = "neaera cube"
- monkey_type = "Neaera"
+ monkey_type = SPECIES_MONKEY_SKRELL
/obj/item/reagent_containers/food/snacks/spellburger
name = "Spell Burger"
diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm
index 3437b29ee9..d799c2b0d4 100644
--- a/code/modules/food/food/snacks_vr.dm
+++ b/code/modules/food/food/snacks_vr.dm
@@ -419,35 +419,35 @@
/obj/item/reagent_containers/food/snacks/monkeycube/sobakacube
name = "sobaka cube"
- monkey_type = "Sobaka"
+ monkey_type = SPECIES_MONKEY_AKULA
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/sobakacube
name = "sobaka cube"
- monkey_type = "Sobaka"
+ monkey_type = SPECIES_MONKEY_AKULA
/obj/item/reagent_containers/food/snacks/monkeycube/sarucube
name = "saru cube"
- monkey_type = "Saru"
+ monkey_type = SPECIES_MONKEY_SERGAL
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/sarucube
name = "saru cube"
- monkey_type = "Saru"
+ monkey_type = SPECIES_MONKEY_SERGAL
/obj/item/reagent_containers/food/snacks/monkeycube/sparracube
name = "sparra cube"
- monkey_type = "Sparra"
+ monkey_type = SPECIES_MONKEY_NEVREAN
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/sparracube
name = "sparra cube"
- monkey_type = "Sparra"
+ monkey_type = SPECIES_MONKEY_NEVREAN
/obj/item/reagent_containers/food/snacks/monkeycube/wolpincube
name = "wolpin cube"
- monkey_type = "Wolpin"
+ monkey_type = SPECIES_MONKEY_VULPKANIN
/obj/item/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube
name = "wolpin cube"
- monkey_type = "Wolpin"
+ monkey_type = SPECIES_MONKEY_VULPKANIN
// food cubes
/obj/item/reagent_containers/food/snacks/cube
diff --git a/code/modules/gamemaster/event2/events/security/security_advisement.dm b/code/modules/gamemaster/event2/events/security/security_advisement.dm
index 009d64c0ff..df16418e9f 100644
--- a/code/modules/gamemaster/event2/events/security/security_advisement.dm
+++ b/code/modules/gamemaster/event2/events/security/security_advisement.dm
@@ -18,7 +18,7 @@
suspicious_people += metric.count_all_of_specific_species(SPECIES_UNATHI) * 10
suspicious_people += metric.count_all_of_specific_species(SPECIES_ZADDAT) * 10
suspicious_people += metric.count_all_of_specific_species(SPECIES_SKRELL) * 5 // Not sure why skrell are so high.
- suspicious_people += metric.count_all_of_specific_species(SPECIES_TAJ) * 5
+ suspicious_people += metric.count_all_of_specific_species(SPECIES_TAJARAN) * 5
suspicious_people += metric.count_all_of_specific_species(SPECIES_TESHARI) * 5
suspicious_people += metric.count_all_of_specific_species(SPECIES_HUMAN_VATBORN) * 5
suspicious_people += metric.count_all_FBPs_of_kind(FBP_DRONE) * 20
@@ -34,7 +34,7 @@
SPECIES_UNATHI = 15,
SPECIES_HUMAN_VATBORN = 6,
SPECIES_TESHARI = 2,
- SPECIES_TAJ = 3,
+ SPECIES_TAJARAN = 3,
SPECIES_DIONA = 1,
SPECIES_ZADDAT = 25,
SPECIES_PROMETHEAN = 30
diff --git a/code/modules/mob/_modifiers/feysight.dm b/code/modules/mob/_modifiers/feysight.dm
index 0cf07c935f..aac6d286d3 100644
--- a/code/modules/mob/_modifiers/feysight.dm
+++ b/code/modules/mob/_modifiers/feysight.dm
@@ -13,12 +13,14 @@
/datum/modifier/feysight/on_applied()
holder.see_invisible = 60
holder.see_invisible_default = 60
- holder.plane_holder.set_vis(VIS_GHOSTS,TRUE)
+ holder.vis_enabled += VIS_GHOSTS
+ holder.recalculate_vis()
/datum/modifier/feysight/on_expire()
holder.see_invisible_default = initial(holder.see_invisible_default)
holder.see_invisible = holder.see_invisible_default
- holder.plane_holder.set_vis(VIS_GHOSTS,FALSE)
+ holder.vis_enabled -= VIS_GHOSTS
+ holder.recalculate_vis()
/datum/modifier/feysight/can_apply(var/mob/living/L)
if(L.stat)
diff --git a/code/modules/mob/_modifiers/modifiers_vr.dm b/code/modules/mob/_modifiers/modifiers_vr.dm
index 18eb5fb0c9..21bf74436d 100644
--- a/code/modules/mob/_modifiers/modifiers_vr.dm
+++ b/code/modules/mob/_modifiers/modifiers_vr.dm
@@ -242,7 +242,7 @@
effective_brute_resistance = 1
max_fire_resistance = 0.70
- min_brute_resistance = 0.85
+ min_fire_resistance = 0.85
effective_fire_resistance = 1
max_hal_resistance = 1.5 // No mobs should be shooting you with halloss. If this happens, it means you're using it wrong!!!
diff --git a/code/modules/mob/dead/corpse.dm b/code/modules/mob/dead/corpse.dm
index cab2a71147..abe0d4deb2 100644
--- a/code/modules/mob/dead/corpse.dm
+++ b/code/modules/mob/dead/corpse.dm
@@ -28,7 +28,7 @@
var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID
var/species = SPECIES_HUMAN //defaults to generic-ass humans
var/random_species = FALSE //flip to TRUE to randomize species from the list below
- var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL)
+ var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJARAN,SPECIES_UNATHI,SPECIES_SKRELL)
var/list/tail_type = null
var/list/ear_type = null
/// list(name of ear, color of ear, color of ear, ...).
diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm
index 13413d9646..e38e1a8d37 100644
--- a/code/modules/mob/language/station.dm
+++ b/code/modules/mob/language/station.dm
@@ -101,7 +101,7 @@
speaker.say_signlang(message, verb_to_use, verb_to_use, src)
/datum/language/tajsign/can_speak_special(var/mob/speaker) // TODO: If ever we make external organs assist languages, convert this over to the new format
- var/list/allowed_species = list(SPECIES_TAJ, SPECIES_TESHARI) // Need a tail and ears and such to use this.
+ var/list/allowed_species = list(SPECIES_TAJARAN, SPECIES_TESHARI) // Need a tail and ears and such to use this.
if(iscarbon(speaker))
var/obj/item/organ/external/hand/hands = locate() in speaker //you can't sign without hands
if(!hands)
diff --git a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm
index 54df0bdb0b..4119c2e8ed 100644
--- a/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm
+++ b/code/modules/mob/living/carbon/human/ai_controlled/ai_controlled.dm
@@ -43,6 +43,8 @@
..(loc, generate_species)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
+
h_style = to_wear_hair
if(to_wear_uniform)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index cfc772616d..f90accb88f 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1814,8 +1814,6 @@
rig.visor.deactivate()
to_chat(src, span_warning("\The [rig]'s visor has shuddenly deactivated!"))
- ..()
-
/mob/living/carbon/human/get_mob_riding_slots()
return list(back, head, wear_suit)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index 2cc6a561ea..d5ccd8a26b 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -20,22 +20,21 @@
. += M.slowdown
var/health_deficiency = (getMaxHealth() - health)
- if(istype(src, /mob/living/carbon/human)) //VOREStation Edit Start
+ if(istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
health_deficiency *= H.species.trauma_mod //Species pain sensitivity does not apply to painkillers, so we apply it before
if(health_deficiency >= 40)
if(chem_effects[CE_PAINKILLER]) //On painkillers? Reduce pain! On anti-painkillers? Increase pain!
health_deficiency = max(0, health_deficiency - src.chem_effects[CE_PAINKILLER])
if(health_deficiency >= 40) //Still in enough pain for it to be significant?
- . += (health_deficiency / 25) //VOREStation Edit End
+ . += (health_deficiency / 25)
if(can_feel_pain())
if(halloss >= 10) . += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it
- var/hungry = (500 - nutrition) / 5 //VOREStation Edit - Fixed 500 here instead of our huge MAX_NUTRITION
+ var/hungry = (500 - nutrition) / 5 //Fixed 500 here instead of our huge MAX_NUTRITION
if (hungry >= 70) . += hungry/50
- //VOREstation start
if (feral >= 10) //crazy feral animals give less and less of a shit about pain and hunger as they get crazier
. = max(species.slowdown, species.slowdown+((.-species.slowdown)/(feral/10))) // As feral scales to damage, this amounts to an effective +1 slowdown cap
if(shock_stage >= 10) . -= 1.5 //this gets a +3 later, feral critters take reduced penalty
@@ -49,7 +48,6 @@
. += 1
//if(H.weight > L.weight) weight should not have mechanical impact
//. += 1
- //VOREstation end
if(istype(buckled, /obj/structure/bed/chair/wheelchair))
for(var/organ_name in list(BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM))
@@ -102,7 +100,8 @@
var/their_slowdown = max(H.calculate_item_encumbrance(), 1)
item_tally = max(item_tally, their_slowdown) // If our slowdown is less than theirs, then we become as slow as them (before species modifires).
- item_tally *= species.item_slowdown_mod
+ if(item_tally > 0) //ALT-ENCUMBERANCE
+ item_tally *= species.item_slowdown_mod //ALT-ENCUMBERANCE
. += item_tally
@@ -127,7 +126,49 @@
// This calculates the amount of slowdown to receive from items worn. This does NOT include species modifiers.
// It is in a seperate place to avoid an infinite loop situation with dragging mobs dragging each other.
// Also its nice to have these things seperated.
+
/mob/living/carbon/human/proc/calculate_item_encumbrance()
+ /// We check for all the items the wearer has that cause slowdown (positive or negative)
+ /// We then multiply the postive ones by our species.item_slowdown_mod to slow us down more, while we leave negative ones untouched.
+ /// Heavy things in your hands are affected by this change, UNLESS the thing in your hand speeds you up, in which case it doesn't.
+ /// Before you look at the below for(), yes, I know. It looks ugly. However, it is REQUIRED to be done this way instead of using get_equipped_items() as that makes a new list and does a LOT. This proc is called once (or up to 3 times if someone is being dragged) every time someone moves. Making hundreds of new lists() every second is a good way to destroy you CPU.
+
+ /// If this is STILL proving to be too resource intensive, I have left the old code commented out underneath this.
+ /// Just search this file for lines labled as "ALT-ENCUMBERANCE" that are commented out.
+ /// Just comment out the below code, uncomment out the version labeled 'ALT-ENCUMBERANCE', and you'll be back to the old system.
+
+ var/total_item_slowdown = 0
+ var/slowdown_mod = species.item_slowdown_mod //HIGHER = MAKES YOU SLOWER
+ for(var/slot in list(back, belt, l_ear, r_ear, glasses, gloves, head, shoes, wear_id, wear_mask, wear_suit, w_uniform)) //Two things to note here. ONE: If you add a new inventory slot, ADD IT HERE. Two: If we ever get a global list on human of all the inventory slots (MINUS HANDS) add it here.
+ if(!slot) //ZOOM
+ continue
+ var/obj/item/I = slot
+ if(istype(I))
+ var/item_slowdown = I.slowdown //Positive == Slows you down. Negative == Speeds you up.
+ if(item_slowdown != 0) //If it's a positive number, we multiply it by out slowdown mod. Otherwise, don't do anything special.
+ if(item_slowdown > 0 && slowdown_mod > 0)
+ item_slowdown = item_slowdown * (slowdown_mod)
+
+ /// Adminbus / future proofing. These should NEVER get called unless someone down the line does something crazy
+ else if(slowdown_mod < 0 && item_slowdown < 0)
+ item_slowdown = -(item_slowdown * slowdown_mod)
+ else if(slowdown_mod < 0 && item_slowdown > 0)
+ item_slowdown = item_slowdown + slowdown_mod //Yes, this is + (Adding a negative), not multiplied. You are not making the 5 slowdown rigsuit give you 5*X speed. You're getting 5-X slowdown instead.
+ total_item_slowdown += item_slowdown
+ for(var/hands in list(l_hand, r_hand)) //Hands get special treatment. We want slowdown_mod
+ if(!hands)
+ continue
+ var/obj/item/H = hands
+ var/item_slowdown = H.slowdown
+ if(item_slowdown > 0)
+ total_item_slowdown += item_slowdown * slowdown_mod
+ else
+ continue
+
+ . += total_item_slowdown
+
+ //ALT-ENCUMBERANCE below here
+ /*
if(shoes) // Shoes can make you go faster.
if(!buckled || (buckled && istype(buckled, /obj/machinery/power/rtg/reg)))
. += shoes.slowdown
@@ -141,13 +182,15 @@
// This is done seperately to disallow negative numbers (so you can't hold shoes in your hands to go faster).
for(var/obj/item/I in list(r_hand, l_hand) )
. += max(I.slowdown, 0)
+ */
+ //ALT-ENCUMBERANCE end
// Similar to above, but for turf slowdown.
/mob/living/carbon/human/proc/calculate_turf_slowdown(turf/T, direct)
if(!T)
return 0
- if(T.movement_cost && !flying) //VOREStation Add: If you are flying you are probably not affected by the terrain on the ground.
+ if(T.movement_cost && !flying) //If you are flying you are probably not affected by the terrain on the ground.
var/turf_move_cost = T.movement_cost
if(istype(T, /turf/simulated/floor/water))
if(species.water_movement)
@@ -171,7 +214,6 @@
// Wind makes it easier or harder to move, depending on if you're with or against the wind.
// I don't like that so I'm commenting it out :)
- // VOREstation Edit Start
/*
if((T.is_outdoors()) && (T.z <= SSplanets.z_to_planet.len))
var/datum/planet/P = SSplanets.z_to_planet[z]
@@ -186,7 +228,6 @@
. += WH.wind_speed
*/
-// VOREstation Edit End.
#undef HUMAN_LOWEST_SLOWDOWN
/mob/living/carbon/human/get_jetpack()
@@ -205,11 +246,11 @@
if(..()) //Can move due to other reasons, don't use jetpack fuel
return TRUE
- if(species.can_space_freemove || (species.can_zero_g_move && !istype(get_turf(src), /turf/space))) //VOREStation Edit.
- return TRUE //VOREStation Edit.
+ if(species.can_space_freemove || (species.can_zero_g_move && !istype(get_turf(src), /turf/space)))
+ return TRUE
- if(flying) //VOREStation Edit. If you're flying, you glide around!
- return TRUE //VOREStation Edit.
+ if(flying) //If you're flying, you glide around!
+ return TRUE
//Do we have a working jetpack?
var/obj/item/tank/jetpack/thrust = get_jetpack()
diff --git a/code/modules/mob/living/carbon/human/human_powers_vr.dm b/code/modules/mob/living/carbon/human/human_powers_vr.dm
index acc53a7d49..f9cb232e5c 100644
--- a/code/modules/mob/living/carbon/human/human_powers_vr.dm
+++ b/code/modules/mob/living/carbon/human/human_powers_vr.dm
@@ -36,3 +36,224 @@
to_chat(src, span_notice("You reconfigure the rendering order of your facial display."))
return TRUE
+
+//////////// Hand games that can be played by people next to each other, or over a small table.
+
+/mob/living/carbon/human/verb/hand_games()
+ set name = "Play Hand Games"
+ set desc = "Choose from a variety of hand games to play with someone next to you or across a small table."
+ set category = "IC.Game"
+
+ if(stat)
+ return
+
+ var/obj/item/organ/external/l_hand = get_organ("l_hand")
+ var/obj/item/organ/external/r_hand = get_organ("r_hand")
+ if((!l_hand || l_hand.is_stump()) && (!r_hand || r_hand.is_stump()))
+ to_chat(src, span_warning("You have no hands to play games with!"))
+ return
+
+ var/list/nearby = list()
+ for(var/mob/living/carbon/human/H in range(src,1))
+ if(H.stat)
+ continue
+ if(H == src)
+ continue
+ var/obj/item/organ/external/l_hand2 = H.get_organ("l_hand")
+ var/obj/item/organ/external/r_hand2 = H.get_organ("r_hand")
+ if((!l_hand2 || l_hand2.is_stump()) && (!r_hand2 || r_hand2.is_stump()))
+ continue
+ nearby |= H
+ for(var/obj/structure/table/T in range(src, 1))
+ for(var/mob/living/carbon/human/H in range(T,1))
+ if(H.stat)
+ continue
+ if(H == src)
+ continue
+ var/obj/item/organ/external/l_hand2 = H.get_organ("l_hand")
+ var/obj/item/organ/external/r_hand2 = H.get_organ("r_hand")
+ if((!l_hand2 || l_hand2.is_stump()) && (!r_hand2 || r_hand2.is_stump()))
+ continue
+ nearby |= H
+
+ if(!nearby.len)
+ to_chat(src, span_warning("There is nobody nearby to play games with!"))
+
+ var/partner = tgui_input_list(src, "Choose a game partner:", "Hand games", nearby)
+ if(!partner)
+ return
+ var/choose_game = tgui_alert(src, "Choose a game to play with [partner]?", "Hand games", list("Rock, Paper, Scissors", "Arm Wrestling", "Slap Hands", "Thumb Wars", "Cancel"))
+
+ if(!choose_game || (choose_game == "Cancel"))
+ return
+
+ if(choose_game == "Rock, Paper, Scissors")
+ game_rps(src,partner)
+
+ if(choose_game == "Arm Wrestling")
+ game_armwrestle(src,partner)
+
+ if(choose_game == "Slap Hands")
+ game_slaphands(src,partner)
+
+ if(choose_game == "Thumb Wars")
+ game_thumbwars(src,partner)
+
+// Checks to make sure everything is fine to continue playing.
+
+/mob/living/carbon/human/proc/hand_games_check(var/mob/living/carbon/human/player1, var/mob/living/carbon/human/player2)
+ if(!istype(player1) || !istype(player2))
+ return 0
+ if(player1.stat || player2.stat) //Make sure they're still standing
+ return 0
+ if(!(player2 in range(player1,2))) //Just make sure they're within 2 spaces still.
+ return 0
+
+ return 1
+
+///// A simple game of rock paper scissors, each player chooses an option and the choices are declared simultaneously.
+
+/mob/living/carbon/human/proc/game_rps(var/mob/living/carbon/human/player1, var/mob/living/carbon/human/player2)
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_notice("Asking [player2] if they want to play Rock, Paper, Scissors!"))
+ var/playgame = tgui_alert(player2, "[player1] wants to play Rock, Paper, Scissors.", "Rock, Paper, Scissors", list("Play", "Refuse"))
+ if(!playgame || (playgame == "Refuse"))
+ to_chat(player1, span_warning("[player2] declines to play the game."))
+ return
+ else
+ player1.visible_message(span_notice("[player1] challenges [player2] to Rock, Paper, Scissors!"))
+ to_chat(player2, span_warning("[player1] is deciding."))
+ var/choice1 = tgui_alert(player1, "Choose your attack!", "Rock, Paper, Scissors", list("Rock", "Paper", "Scissors", "Cancel"))
+ if(choice1 == "Cancel")
+ player1.visible_message(span_notice("[player1] chickens out!"))
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_warning("[player2] is deciding."))
+ var/choice2 = tgui_alert(player2, "Choose your attack!", "Rock, Paper, Scissors", list("Rock", "Paper", "Scissors", "Cancel"))
+ if(choice2 == "Cancel")
+ player2.visible_message(span_notice("[player2] chickens out!"))
+ if(!hand_games_check(player1,player2))
+ return
+ if(choice1 == choice2)
+ player1.visible_message(span_notice("[player1] and [player2] both choose [choice1], it's a draw!"))
+ else
+ player1.visible_message(span_notice("[player1] chooses [choice1]!"))
+ player2.visible_message(span_notice("[player2] chooses [choice2]!"))
+
+/////// Arm wrestling! Each player gets a modifier based on their size and can choose the strength of their character, then a weighted roll is made.
+
+/mob/living/carbon/human/proc/game_armwrestle(var/mob/living/carbon/human/player1, var/mob/living/carbon/human/player2)
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_notice("Asking [player2] if they want to play Arm Wrestling!"))
+ var/playgame = tgui_alert(player2, "[player1] wants to play Arm Wrestling.", "Arm Wrestling", list("Play", "Refuse"))
+ if(!playgame || (playgame == "Refuse"))
+ to_chat(player1, span_warning("[player2] declines to play the game."))
+ return
+ else
+ if(!hand_games_check(player1,player2))
+ return
+ player1.visible_message(span_notice("[player1] challenges [player2] to Arm Wrestling!"))
+ var/scale1 = player1.size_multiplier
+ var/scale2 = player2.size_multiplier
+ to_chat(player2, span_warning("[player1] is getting ready."))
+ var/strength1 = tgui_input_number(player1, "How strong is your character on a scale of 1 to 10 (1 being a weakling, 10 being very strong).", "Strength")
+ strength1 = clamp(strength1, 1, 10)
+ if(!strength1)
+ player1.visible_message(span_notice("[player1] chickens out!"))
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_warning("[player2] is getting ready."))
+ var/strength2 = tgui_input_number(player2, "How strong is your character on a scale of 1 to 10 (1 being a weakling, 10 being very strong).", "Strength")
+ strength2 = clamp(strength2, 1, 10)
+ if(!strength2)
+ player2.visible_message(span_notice("[player2] chickens out!"))
+ if(!hand_games_check(player1,player2))
+ return
+
+ var/score1 = (scale1 * strength1)
+ var/score2 = (scale2 * strength2)
+
+ var/competition = pick(score1;player1, score2;player2)
+ if(!do_after(player1, 50, player2, exclusive = TASK_USER_EXCLUSIVE))
+ player2.visible_message(span_notice("The players cancelled their competition!"))
+ return 0
+ if(!hand_games_check(player1,player2))
+ return
+ if(competition == player1)
+ player1.visible_message(span_notice("[player1] manages to overpower [player2] and pin their arm down!"))
+ else
+ player2.visible_message(span_notice("[player2] manages to overpower [player1] and pin their arm down!"))
+
+/////// Slap Hands! Each player gets a modifier based on their size and can choose the reaction time of their character, then a weighted roll is made. This one gives the advantage to smaller players.
+
+/mob/living/carbon/human/proc/game_slaphands(var/mob/living/carbon/human/player1, var/mob/living/carbon/human/player2)
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_notice("Asking [player2] if they want to play Slap Hands!"))
+ var/playgame = tgui_alert(player2, "[player1] wants to play Slap Hands.", "Slap Hands", list("Play", "Refuse"))
+ if(!playgame || (playgame == "Refuse"))
+ to_chat(player1, span_warning("[player2] declines to play the game."))
+ return
+ else
+ if(!hand_games_check(player1,player2))
+ return
+ player1.visible_message(span_notice("[player1] challenges [player2] to Slap Hands!"))
+ var/scale1 = (2.25 - player1.size_multiplier)
+ scale1 = clamp(scale1, 0.1, 3)
+ var/scale2 = (2.25 - player2.size_multiplier)
+ scale2 = clamp(scale2, 0.1, 3)
+ to_chat(player2, span_warning("[player1] is getting ready."))
+ var/strength1 = tgui_input_number(player1, "How fast are your character's reaction times on a scale of 1 to 10 (1 being slow, 10 being very fast).", "Speed")
+ strength1 = clamp(strength1, 1, 10)
+ if(!strength1)
+ player1.visible_message(span_notice("[player1] chickens out!"))
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_warning("[player2] is getting ready."))
+ var/strength2 = tgui_input_number(player2, "How fast are your character's reaction times on a scale of 1 to 10 (1 being slow, 10 being very fast).", "Speed")
+ strength2 = clamp(strength2, 1, 10)
+ if(!strength2)
+ player2.visible_message(span_notice("[player2] chickens out!"))
+ if(!hand_games_check(player1,player2))
+ return
+
+ var/score1 = (scale1 * strength1)
+ var/score2 = (scale2 * strength2)
+
+ var/competition = pick(score1;player1, score2;player2)
+ if(!do_after(player1, 10, player2, exclusive = TASK_USER_EXCLUSIVE))
+ player2.visible_message(span_notice("The players cancelled their competition!"))
+ return 0
+ if(!hand_games_check(player1,player2))
+ return
+ playsound(player1, 'sound/effects/snap.ogg', 30, 1)
+ if(competition == player1)
+ player1.visible_message(span_notice("[player1] manages to slap [player2]'s hand before they can react!"))
+ else
+ player2.visible_message(span_notice("[player2] manages to slap [player1]'s hand before they can react!"))
+
+///// Thumb wars! This one is just pure chance to allow people to do just quick RNG.
+
+/mob/living/carbon/human/proc/game_thumbwars(var/mob/living/carbon/human/player1, var/mob/living/carbon/human/player2)
+ if(!hand_games_check(player1,player2))
+ return
+ to_chat(player1, span_notice("Asking [player2] if they want to play Thumb Wars!"))
+ var/playgame = tgui_alert(player2, "[player1] wants to play Thumb Wars.", "Thumb Wars", list("Play", "Refuse"))
+ if(!playgame || (playgame == "Refuse"))
+ to_chat(player1, span_warning("[player2] declines to play the game."))
+ return
+ else
+ if(!hand_games_check(player1,player2))
+ return
+ player1.visible_message(span_notice("[player1] challenges [player2] to a thumb war!"))
+ if(!do_after(player1, 50, player2, exclusive = TASK_USER_EXCLUSIVE))
+ player2.visible_message(span_notice("The players cancelled their thumb war!"))
+ return 0
+ if(!hand_games_check(player1,player2))
+ return
+ if(prob(50))
+ player1.visible_message(span_notice("After a gruelling battle, [player1] eventually manages to subdue the thumb of [player2]!"))
+ else
+ player2.visible_message(span_notice("After a gruelling battle, [player2] eventually manages to subdue the thumb of [player1]!"))
diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm
index 8b3673289e..260f685768 100644
--- a/code/modules/mob/living/carbon/human/human_species.dm
+++ b/code/modules/mob/living/carbon/human/human_species.dm
@@ -66,7 +66,7 @@
icon = 'icons/mob/human_races/r_tajaran.dmi'
/mob/living/carbon/human/dummy/mannequin/autoequip/tajaran/Initialize(var/new_loc)
h_style = "Tajaran Ears"
- return ..(new_loc, SPECIES_TAJ)
+ return ..(new_loc, SPECIES_TAJARAN)
/mob/living/carbon/human/dummy/mannequin/autoequip/unathi
icon = 'icons/mob/human_races/r_lizard.dmi'
@@ -98,7 +98,7 @@
/mob/living/carbon/human/tajaran/Initialize(var/new_loc)
h_style = "Tajaran Ears"
- return ..(new_loc, SPECIES_TAJ)
+ return ..(new_loc, SPECIES_TAJARAN)
/mob/living/carbon/human/unathi/Initialize(var/new_loc)
h_style = "Unathi Horns"
@@ -125,22 +125,26 @@
low_sorting_priority = TRUE
/mob/living/carbon/human/monkey/Initialize(var/new_loc)
- return ..(new_loc, SPECIES_MONKEY)
+ . = ..(new_loc, SPECIES_MONKEY)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
/mob/living/carbon/human/farwa
low_sorting_priority = TRUE
/mob/living/carbon/human/farwa/Initialize(var/new_loc)
- return ..(new_loc, SPECIES_MONKEY_TAJ)
+ . = .. (new_loc, SPECIES_MONKEY_TAJ)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
/mob/living/carbon/human/neaera
low_sorting_priority = TRUE
/mob/living/carbon/human/neaera/Initialize(var/new_loc)
- return ..(new_loc, SPECIES_MONKEY_SKRELL)
+ . = ..(new_loc, SPECIES_MONKEY_SKRELL)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
/mob/living/carbon/human/stok
low_sorting_priority = TRUE
/mob/living/carbon/human/stok/Initialize(var/new_loc)
- return ..(new_loc, SPECIES_MONKEY_UNATHI)
+ . = ..(new_loc, SPECIES_MONKEY_UNATHI)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
diff --git a/code/modules/mob/living/carbon/human/species/lleill/hanner.dm b/code/modules/mob/living/carbon/human/species/lleill/hanner.dm
index 276be69091..c8eb09b829 100644
--- a/code/modules/mob/living/carbon/human/species/lleill/hanner.dm
+++ b/code/modules/mob/living/carbon/human/species/lleill/hanner.dm
@@ -20,6 +20,8 @@
min_age = 18
max_age = 200
+ digi_allowed = TRUE
+
//Specific abilities
burn_mod = 0.8 //Slightly resistant to fire
@@ -97,7 +99,7 @@
// /mob/living/carbon/human/proc/hanner_beast_form
)
- valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
+ valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
var/list/lleill_abilities = list(/datum/power/lleill/contact,
/datum/power/lleill/alchemy,
diff --git a/code/modules/mob/living/carbon/human/species/lleill/lleill.dm b/code/modules/mob/living/carbon/human/species/lleill/lleill.dm
index 55663e30b6..51cc7a8e3b 100644
--- a/code/modules/mob/living/carbon/human/species/lleill/lleill.dm
+++ b/code/modules/mob/living/carbon/human/species/lleill/lleill.dm
@@ -65,12 +65,12 @@
water_breather = TRUE
var/list/valid_transform_species = list(
- "Human", "Unathi", "Tajara", "Skrell",
- "Diona", "Teshari", "Monkey","Sergal",
- "Akula","Nevrean","Zorren",
- "Fennec", "Vulpkanin", "Vasilissan",
- "Rapala", "Neaera", "Stok", "Farwa", "Sobaka",
- "Wolpin", "Saru", "Sparra", "Lleill")
+ SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL,
+ SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_SERGAL,
+ SPECIES_AKULA, SPECIES_NEVREAN, SPECIES_ZORREN_HIGH,
+ SPECIES_FENNEC, SPECIES_VULPKANIN, SPECIES_VASILISSAN,
+ SPECIES_RAPALA, SPECIES_MONKEY_SKRELL, SPECIES_MONKEY_UNATHI, SPECIES_MONKEY_TAJ, SPECIES_MONKEY_AKULA,
+ SPECIES_MONKEY_VULPKANIN, SPECIES_MONKEY_SERGAL, SPECIES_MONKEY_NEVREAN, SPECIES_LLEILL)
// Looks like a lot but the majority of these are just to change their appearance.
inherent_verbs = list(
diff --git a/code/modules/mob/living/carbon/human/species/outsider/replicant.dm b/code/modules/mob/living/carbon/human/species/outsider/replicant.dm
index 7e8bf25f6e..e93a62f636 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/replicant.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/replicant.dm
@@ -40,7 +40,7 @@
spawn_flags = SPECIES_IS_RESTRICTED
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR
- valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_VOX)
+ valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_VOX)
inherent_verbs = list(
/mob/living/carbon/human/proc/shapeshifter_select_shape,
diff --git a/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm b/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm
index d8a5577e37..73168b8e83 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm
@@ -2,7 +2,7 @@
name = SPECIES_SKELETON
name_plural = "Skeletons"
icobase = 'icons/mob/human_races/r_skeleton.dmi'
- primitive_form = "Monkey"
+ primitive_form = SPECIES_MONKEY
language = "Sol Common"
unarmed_types = list(/datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/sharp) //Bones are pointy, fight me.
blurb = "Spooky Scary Skeletons!"
@@ -50,4 +50,4 @@
heat_level_2 = 3000
heat_level_3 = 4000
- body_temperature = T20C
\ No newline at end of file
+ body_temperature = T20C
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 c1de18c498..2e02cc4a02 100644
--- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm
+++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm
@@ -331,7 +331,7 @@
H.health = H.maxHealth
-/datum/species/shadekin/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base)
+/datum/species/shadekin/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base, var/reset_dna = TRUE)
var/datum/species/shadekin/new_copy = ..()
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 7a04d2da3b..e8bcb5c029 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -592,3 +592,28 @@
/datum/species/proc/update_misc_tabs(var/mob/living/carbon/human/H)
return
+
+/datum/species/proc/handle_base_eyes(var/mob/living/carbon/human/H, var/custom_base)
+ if(selects_bodytype && custom_base) // only bother if our src species datum allows bases and one is assigned
+ var/datum/species/S = GLOB.all_species[custom_base]
+
+ //extract default eye data from species datum
+ var/baseHeadPath = S.has_limbs[BP_HEAD]["path"] //has_limbs is a list of lists
+
+ if(!baseHeadPath)
+ return // exit if we couldn't find a head path from the base.
+
+ var/obj/item/organ/external/head/baseHead = new baseHeadPath()
+ if(!baseHead)
+ return // exit if we didn't create the base properly
+
+ var/obj/item/organ/external/head/targetHead = H.get_organ(BP_HEAD)
+ if(!targetHead)
+ return // don't bother if target mob has no head for whatever reason
+
+ targetHead.eye_icon = baseHead.eye_icon
+ targetHead.eye_icon_location = baseHead.eye_icon_location
+
+ if(!QDELETED(baseHead) && baseHead)
+ qdel(baseHead)
+ return
diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm
index 9a994bc97d..c32c2a6182 100644
--- a/code/modules/mob/living/carbon/human/species/species_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/species_vr.dm
@@ -72,7 +72,7 @@
else
..()
-/datum/species/proc/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base)
+/datum/species/proc/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base, var/reset_dna = TRUE)
ASSERT(src)
ASSERT(istype(H))
var/datum/species/new_copy = new src.type()
@@ -104,9 +104,11 @@
if(new_copy.holder_type)
H.holder_type = new_copy.holder_type
- if(H.dna)
+ if(H.dna && reset_dna)
H.dna.ready_dna(H)
+ handle_base_eyes(H, custom_base)
+
return new_copy
//We REALLY don't need to go through every variable. Doing so makes this lag like hell on 515
diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm
index 29bd68ff32..aba05c0591 100644
--- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm
@@ -54,8 +54,8 @@
var/datum/species/real = GLOB.all_species[base_species]
return real.race_key
-/datum/species/custom/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base)
- . = ..(traits, H, custom_base)
+/datum/species/custom/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base, var/reset_dna = TRUE)
+ . = ..(traits, H, custom_base,reset_dna)
H.maxHealth = H.species.total_health
H.hunger_rate = H.species.hunger_factor
diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm
index c24ff5a123..c555f4f1dc 100644
--- a/code/modules/mob/living/carbon/human/species/station/monkey.dm
+++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm
@@ -74,7 +74,7 @@
icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
deform = 'icons/mob/human_races/monkeys/r_farwa.dmi'
- greater_form = SPECIES_TAJ
+ greater_form = SPECIES_TAJARAN
default_language = LANGUAGE_ANIMAL
flesh_color = "#AFA59E"
base_color = "#333333"
diff --git a/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm b/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
index 1b82f78101..f8df9cd220 100644
--- a/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
@@ -27,7 +27,7 @@
/* Example from Polaris code
/datum/species/monkey/tajaran
- name = "Farwa"
+ name = SPECIES_MONKEY_TAJ
name_plural = "Farwa"
icobase = 'icons/mob/human_races/monkeys/r_farwa.dmi'
@@ -60,22 +60,26 @@
low_sorting_priority = TRUE
/mob/living/carbon/human/sharkm/New(var/new_loc)
- ..(new_loc, "Sobaka")
+ ..(new_loc, SPECIES_MONKEY_AKULA)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
/mob/living/carbon/human/sergallingm
low_sorting_priority = TRUE
/mob/living/carbon/human/sergallingm/New(var/new_loc)
- ..(new_loc, "Saru")
+ ..(new_loc, SPECIES_MONKEY_SERGAL)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
/mob/living/carbon/human/sparram
low_sorting_priority = TRUE
/mob/living/carbon/human/sparram/New(var/new_loc)
- ..(new_loc, "Sparra")
+ ..(new_loc, SPECIES_MONKEY_NEVREAN)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
/mob/living/carbon/human/wolpin
low_sorting_priority = TRUE
/mob/living/carbon/human/wolpin/New(var/new_loc)
- ..(new_loc, "Wolpin")
\ No newline at end of file
+ ..(new_loc, SPECIES_MONKEY_VULPKANIN)
+ species.produceCopy(species.traits.Copy(),src,null,FALSE)
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
index 25a6064ee9..4334d89fab 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
@@ -120,7 +120,7 @@ var/datum/species/shapeshifter/promethean/prometheans
/mob/living/carbon/human/proc/regenerate
)
- valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY)
+ valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY)
var/heal_rate = 0.5 // Temp. Regen per tick.
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index de24de4936..699a79e11c 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -6,12 +6,12 @@
gluttonous = 0
water_damage_mod = 0 //No water damage
valid_transform_species = list(
- "Human", "Unathi", "Tajara", "Skrell",
- "Diona", "Teshari", "Monkey","Sergal",
- "Akula","Nevrean","Zorren",
- "Fennec", "Vulpkanin", "Vasilissan",
- "Rapala", "Neaera", "Stok", "Farwa", "Sobaka",
- "Wolpin", "Saru", "Sparra")
+ SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL,
+ SPECIES_DIONA, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_SERGAL,
+ SPECIES_AKULA, SPECIES_NEVREAN, SPECIES_ZORREN_HIGH,
+ SPECIES_FENNEC, SPECIES_VULPKANIN, SPECIES_VASILISSAN,
+ SPECIES_RAPALA, SPECIES_MONKEY_SKRELL, SPECIES_MONKEY_UNATHI, SPECIES_MONKEY_TAJ, SPECIES_MONKEY_AKULA,
+ SPECIES_MONKEY_VULPKANIN, SPECIES_MONKEY_SERGAL, SPECIES_MONKEY_NEVREAN)
spawn_flags = SPECIES_CAN_JOIN
wikilink="https://wiki.vore-station.net/Promethean"
diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_rig.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_rig.dm
index 4a77377260..7b281c39e9 100644
--- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_rig.dm
+++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_rig.dm
@@ -109,11 +109,11 @@
name = "mass"
desc = "A helmet-shaped clump of nanomachines."
light_overlay = "should not use a light overlay"
- species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
+ species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
sprite_sheets = list(
SPECIES_PROTEAN = 'icons/mob/head.dmi',
SPECIES_HUMAN = 'icons/mob/head.dmi',
- SPECIES_TAJ = 'icons/mob/species/tajaran/helmet.dmi',
+ SPECIES_TAJARAN = 'icons/mob/species/tajaran/helmet.dmi',
SPECIES_SKRELL = 'icons/mob/species/skrell/helmet.dmi',
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi',
SPECIES_XENOHYBRID = 'icons/mob/species/unathi/helmet.dmi',
@@ -133,7 +133,7 @@
sprite_sheets_obj = list(
SPECIES_PROTEAN = 'icons/mob/head.dmi',
SPECIES_HUMAN = 'icons/mob/head.dmi',
- SPECIES_TAJ = 'icons/mob/head.dmi',
+ SPECIES_TAJARAN = 'icons/mob/head.dmi',
SPECIES_SKRELL = 'icons/mob/head.dmi',
SPECIES_UNATHI = 'icons/mob/head.dmi',
SPECIES_XENOHYBRID = 'icons/mob/head.dmi',
@@ -156,11 +156,11 @@
name = "mass"
desc = "Glove-shaped clusters of nanomachines."
siemens_coefficient= 0
- species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
+ species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
sprite_sheets = list(
SPECIES_PROTEAN = 'icons/mob/hands.dmi',
SPECIES_HUMAN = 'icons/mob/hands.dmi',
- SPECIES_TAJ = 'icons/mob/hands.dmi',
+ SPECIES_TAJARAN = 'icons/mob/hands.dmi',
SPECIES_SKRELL = 'icons/mob/hands.dmi',
SPECIES_UNATHI = 'icons/mob/hands.dmi',
SPECIES_XENOHYBRID = 'icons/mob/hands.dmi',
@@ -179,7 +179,7 @@
sprite_sheets_obj = list(
SPECIES_HUMAN = 'icons/mob/hands.dmi',
- SPECIES_TAJ = 'icons/mob/hands.dmi',
+ SPECIES_TAJARAN = 'icons/mob/hands.dmi',
SPECIES_SKRELL = 'icons/mob/hands.dmi',
SPECIES_UNATHI = 'icons/mob/hands.dmi',
SPECIES_XENOHYBRID = 'icons/mob/hands.dmi',
@@ -201,7 +201,7 @@
/obj/item/clothing/shoes/magboots/rig/protean
name = "mass"
desc = "Boot-shaped clusters of nanomachines."
- species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
+ species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
sprite_sheets = list(
SPECIES_TESHARI = 'icons/mob/species/teshari/feet.dmi',
SPECIES_VOX = 'icons/mob/species/vox/shoes.dmi',
@@ -215,7 +215,7 @@
name = "mass"
desc = "A body-hugging mass of nanomachines."
can_breach = 0
- species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJ, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
+ species_restricted = list(SPECIES_PROTEAN, SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_PROMETHEAN, SPECIES_XENOHYBRID, SPECIES_VOX, SPECIES_TESHARI, SPECIES_VASILISSAN, SPECIES_XENOMORPH_HYBRID)
allowed = list(
/obj/item/gun,
/obj/item/flashlight,
diff --git a/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm b/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm
index c841ae4109..5d6a4e1d6a 100644
--- a/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm
+++ b/code/modules/mob/living/carbon/human/species/station/replicant_crew.dm
@@ -14,6 +14,7 @@
siemens_coefficient = 1.5 //Don't get electrocuted
secondary_langs = list() // None by default
+ digi_allowed = TRUE
has_organ = list(
O_HEART = /obj/item/organ/internal/heart/replicant/rage/crew,
@@ -34,7 +35,7 @@
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
color_mult = 1
- valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
+ valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
inherent_verbs = list(
/mob/living/carbon/human/proc/shapeshifter_select_shape,
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index eb4e6a8f5b..4b00ed832b 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -178,7 +178,7 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
/datum/species/tajaran
- name = SPECIES_TAJ
+ name = SPECIES_TAJARAN
name_plural = "Tajaran"
icobase = 'icons/mob/human_races/r_tajaran.dmi'
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
index 997aac129f..7f90c692a5 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
@@ -46,7 +46,7 @@
cold_level_2 = -1
cold_level_3 = -1
- //primitive_form = "Farwa"
+ //primitive_form = SPECIES_MONKEY_TAJ
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken.
flags = NO_SCAN | NO_INFECT // | NO_DEFIB // Dying as a chimera is, quite literally, a death sentence. Well, if it wasn't for their revive, that is. Leaving NO_DEFIB there for the future/in case reversion to old 'chimera no-defib.
@@ -368,7 +368,7 @@
cold_level_2 = -1
cold_level_3 = -1
- //primitive_form = "Monkey" //I dunno. Replace this in the future.
+ //primitive_form = SPECIES_MONKEY //I dunno. Replace this in the future.
flags = NO_MINOR_CUT
spawn_flags = SPECIES_CAN_JOIN
@@ -424,7 +424,7 @@
secondary_langs = list(LANGUAGE_CANILUNZT)
name_language = LANGUAGE_CANILUNZT
species_language = LANGUAGE_CANILUNZT
- primitive_form = "Wolpin"
+ primitive_form = SPECIES_MONKEY_VULPKANIN
color_mult = 1
icon_height = 64
can_climb = TRUE
diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
index ad66fdeefd..9fbbb3face 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
@@ -35,7 +35,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/sergal)
- primitive_form = "Saru"
+ primitive_form = SPECIES_MONKEY_SERGAL
spawn_flags = SPECIES_CAN_JOIN
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
@@ -101,7 +101,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/akula)
- primitive_form = "Sobaka"
+ primitive_form = SPECIES_MONKEY_AKULA
genders = list(MALE, FEMALE, PLURAL, NEUTER)
@@ -153,7 +153,7 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/nevrean)
- primitive_form = "Sparra"
+ primitive_form = SPECIES_MONKEY_NEVREAN
genders = list(MALE, FEMALE, PLURAL, NEUTER)
@@ -232,7 +232,7 @@
secondary_langs = list(LANGUAGE_CANILUNZT)
name_language = LANGUAGE_CANILUNZT
species_language = LANGUAGE_CANILUNZT
- primitive_form = "Wolpin"
+ primitive_form = SPECIES_MONKEY_VULPKANIN
tail = "vulptail"
tail_animation = 'icons/mob/species/vulpkanin/tail.dmi' // probably need more than just one of each, but w/e
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
@@ -269,7 +269,7 @@
breath_heat_level_2 = 445 //Default 450
breath_heat_level_3 = 1125 //Default 1250
- primitive_form = "Wolpin"
+ primitive_form = SPECIES_MONKEY_VULPKANIN
spawn_flags = SPECIES_CAN_JOIN
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
index f59313f92d..6d3c506938 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
@@ -63,7 +63,7 @@
cost = -1
custom_only = FALSE
var_changes = list("brute_mod" = 1.15)
- banned_species = list(SPECIES_TESHARI, SPECIES_TAJ, SPECIES_ZADDAT, SPECIES_SHADEKIN_CREW) //These are already this weak.
+ banned_species = list(SPECIES_TESHARI, SPECIES_TAJARAN, SPECIES_ZADDAT, SPECIES_SHADEKIN_CREW) //These are already this weak.
/datum/trait/negative/brute_weak
name = "Brute Weakness"
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
index 5933c53a57..ccc43426a8 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm
@@ -543,7 +543,7 @@
cost = 0
custom_only = FALSE
var_changes = list("chem_strength_alcohol" = 1)
- allowed_species = list(SPECIES_SKRELL,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_DIONA,SPECIES_PROMETHEAN)
+ allowed_species = list(SPECIES_SKRELL,SPECIES_TAJARAN,SPECIES_UNATHI,SPECIES_DIONA,SPECIES_PROMETHEAN)
/datum/trait/neutral/alcohol_tolerance_basic
name = "Liver of Iron"
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
index d3df8f312a..11db4fa422 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
@@ -6,7 +6,7 @@
desc = "Allows you to move faster on average than baseline."
cost = 4
var_changes = list("slowdown" = -0.5)
-// banned_species = list(SPECIES_ALRAUNE, SPECIES_SHADEKIN_CREW, SPECIES_TESHARI, SPECIES_TAJ, SPECIES_DIONA, SPECIES_UNATHI) //Either not applicable or buffs ruin species flavour/balance
+// banned_species = list(SPECIES_ALRAUNE, SPECIES_SHADEKIN_CREW, SPECIES_TESHARI, SPECIES_TAJARAN, SPECIES_DIONA, SPECIES_UNATHI) //Either not applicable or buffs ruin species flavour/balance
// custom_only = FALSE //Keeping these in comments in case we decide to open them up in future, so the species are already organised.
/datum/trait/positive/hardy
@@ -252,7 +252,7 @@
a climbable wall. To climbe like so, use the verb 'Climb Down Wall' in IC tab!"
cost = 1
custom_only = FALSE
- banned_species = list(SPECIES_TAJ, SPECIES_VASILISSAN) // They got unique climbing delay.
+ banned_species = list(SPECIES_TAJARAN, SPECIES_VASILISSAN) // They got unique climbing delay.
var_changes = list("can_climb" = TRUE, "climb_mult" = 0.75)
excludes = list(/datum/trait/positive/wall_climber_pro, /datum/trait/positive/wall_climber_natural)
@@ -285,7 +285,7 @@
excludes = list(/datum/trait/positive/wall_climber,/datum/trait/positive/wall_climber_natural)
// This feels jank, but it's the cleanest way I could do TRAIT_VARCHANGE_LESS_BETTER while having a boolean var change
-// Alternate would've been banned_species = list(SPECIES_TAJ, SPECIES_VASSILISIAN)
+// Alternate would've been banned_species = list(SPECIES_TAJARAN, SPECIES_VASSILISIAN)
// Opted for this as it's "future proof"
/datum/trait/positive/wall_climber_pro/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
diff --git a/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm b/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm
index c8d044330b..e314a8217a 100644
--- a/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm
+++ b/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm
@@ -23,7 +23,7 @@
male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg'
female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg'
- valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_VOX, SPECIES_MONKEY, SPECIES_SKELETON)
+ valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_VOX, SPECIES_MONKEY, SPECIES_SKELETON)
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/punch, /datum/unarmed_attack/bite)
has_organ = list(O_BRAIN = /obj/item/organ/internal/brain/slime, O_EYES = /obj/item/organ/internal/eyes) // Slime core.
diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm
index 3928b0b324..d52951a8cd 100644
--- a/code/modules/mob/living/silicon/pai/software_modules.dm
+++ b/code/modules/mob/living/silicon/pai/software_modules.dm
@@ -420,9 +420,9 @@
user.add_language(LANGUAGE_ALAI)
user.add_language(LANGUAGE_PROMETHEAN)
user.add_language(LANGUAGE_GIBBERISH)
- user.add_language("Mouse")
- user.add_language("Animal")
- user.add_language("Teppi")
+ user.add_language(LANGUAGE_MOUSE)
+ user.add_language(LANGUAGE_ANIMAL)
+ user.add_language(LANGUAGE_TEPPI)
else
user.remove_language(LANGUAGE_UNATHI)
user.remove_language(LANGUAGE_SIIK)
@@ -447,9 +447,9 @@
user.remove_language(LANGUAGE_ALAI)
user.remove_language(LANGUAGE_PROMETHEAN)
user.remove_language(LANGUAGE_GIBBERISH)
- user.remove_language("Mouse")
- user.remove_language("Animal")
- user.remove_language("Teppi")
+ user.remove_language(LANGUAGE_MOUSE)
+ user.remove_language(LANGUAGE_ANIMAL)
+ user.remove_language(LANGUAGE_TEPPI)
/datum/pai_software/translator/is_active(mob/living/silicon/pai/user)
return user.translator_on
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 032fe3ed43..1c07efe363 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -354,6 +354,8 @@
sprite_datum = module_sprites[1]
sprite_datum.do_equipment_glamour(module)
return
+ if(mind)
+ sprite_name = mind.name
if(!selecting_module)
var/datum/tgui_module/robot_ui_module/ui = new(src)
ui.tgui_interact(src)
diff --git a/code/modules/mob/living/silicon/robot/robot_ui_module.dm b/code/modules/mob/living/silicon/robot/robot_ui_module.dm
index ef1545831c..6fbda3189b 100644
--- a/code/modules/mob/living/silicon/robot/robot_ui_module.dm
+++ b/code/modules/mob/living/silicon/robot/robot_ui_module.dm
@@ -23,7 +23,7 @@
/datum/tgui_module/robot_ui_module/ui_assets(mob/user)
return list(
- get_asset_datum(/datum/asset/spritesheet/robot_icons)
+ get_asset_datum(/datum/asset/spritesheet_batched/robot_icons)
)
/datum/tgui_module/robot_ui_module/tgui_static_data()
@@ -49,6 +49,7 @@
if(is_borg_whitelisted(R, module_name))
modules |= module_name
data["possible_modules"] = modules
+ data["mind_name"] = R.mind.name
if(R.emagged)
data["theme"] = "syndicate"
else if (R.ui_theme)
@@ -60,7 +61,7 @@
var/list/data = ..()
var/mob/living/silicon/robot/R = host
- var/datum/asset/spritesheet/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet/robot_icons)
+ var/datum/asset/spritesheet_batched/robot_icons/spritesheet = get_asset_datum(/datum/asset/spritesheet_batched/robot_icons)
data["currentName"] = new_name ? new_name : R.name
data["isDefaultName"] = !new_name
@@ -136,6 +137,7 @@
var/name = params["value"]
if(name)
new_name = sanitizeSafe(name, MAX_NAME_LEN)
+ R.sprite_name = new_name
. = TRUE
if("confirm")
R.apply_name(new_name)
diff --git a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
index 8fe2277b0f..704c7bb7f6 100644
--- a/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/_sprite_datum.dm
@@ -24,6 +24,8 @@
var/has_custom_equipment_sprites = FALSE
var/vis_height = 32
var/pixel_x = 0
+ var/icon_x = 32
+ var/icon_y = 32
var/is_whitelisted = FALSE
var/whitelist_ckey
@@ -188,6 +190,8 @@
has_dead_sprite_overlay = TRUE
has_custom_equipment_sprites = TRUE
pixel_x = -16
+ icon_x = 64
+ icon_y = 32
/datum/robot_sprite/dogborg/do_equipment_glamour(var/obj/item/robot_module/module)
if(!has_custom_equipment_sprites)
@@ -207,6 +211,8 @@
has_dead_sprite_overlay = FALSE
has_custom_equipment_sprites = FALSE
vis_height = 64
+ icon_x = 64
+ icon_y = 64
// Default module sprite
diff --git a/code/modules/mob/living/silicon/robot/sprites/civilian.dm b/code/modules/mob/living/silicon/robot/sprites/civilian.dm
index 05a0333d7d..e5d0ee1275 100644
--- a/code/modules/mob/living/silicon/robot/sprites/civilian.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/civilian.dm
@@ -308,15 +308,13 @@
has_vore_belly_sprites = FALSE
rest_sprite_options = list("Default", "Bellyup")
-/datum/robot_sprite/dogborg/tall/service/dullahan
+/datum/robot_sprite/dogborg/tall/service/dullahanv3
sprite_icon = 'icons/mob/tallborg/dullahans64x64.dmi'
//named v3 to avoid conflicts with downstream
-/datum/robot_sprite/dogborg/tall/service/dullahan/basic
+/datum/robot_sprite/dogborg/tall/service/dullahanv3/basic
name = "Dullahan service v3"
sprite_icon_state = "dullahanservice"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
@@ -324,8 +322,6 @@
/datum/robot_sprite/dogborg/tall/service/dullahanv3/barista
name = "Dullahan matcha v3"
sprite_icon_state = "dullahanbarista"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/combat.dm b/code/modules/mob/living/silicon/robot/sprites/combat.dm
index a0b8140cb7..8613f4f5ff 100644
--- a/code/modules/mob/living/silicon/robot/sprites/combat.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/combat.dm
@@ -92,10 +92,23 @@
BCS.dogborg = TRUE
/datum/robot_sprite/dogborg/tall/combat/derg
- name = "ERT"
+ name = "ERT Dragon"
sprite_icon_state = "derg"
- rest_sprite_options = list("Default")
- sprite_flags = ROBOT_HAS_GUN_SPRITE
+ sprite_hud_icon_state = "ert"
+ rest_sprite_options = list("Default", "Sit")
+ sprite_flags = ROBOT_HAS_GUN_SPRITE | ROBOT_HAS_SHIELD_SPRITE
+/datum/robot_sprite/dogborg/tall/combat/derg/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
+ ..()
+ if(ourborg.resting)
+ return
+ if(ourborg.has_active_type(/obj/item/borg/combat/mobility))
+ ourborg.add_overlay("[sprite_icon_state]-roll")
+
+/datum/robot_sprite/dogborg/tall/combat/derg/get_eyes_overlay(var/mob/living/silicon/robot/ourborg)
+ if(ourborg.has_active_type(/obj/item/borg/combat/mobility))
+ return
+ else
+ return ..()
/datum/robot_sprite/dogborg/tall/combat/hound
name = "Hound"
diff --git a/code/modules/mob/living/silicon/robot/sprites/engineering.dm b/code/modules/mob/living/silicon/robot/sprites/engineering.dm
index 9ffaa658de..96017cfe95 100644
--- a/code/modules/mob/living/silicon/robot/sprites/engineering.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/engineering.dm
@@ -221,8 +221,6 @@
/datum/robot_sprite/dogborg/tall/engineering/dullahanv3/engineerdully
name = "Dullahan engineer v3"
sprite_icon_state = "dullahanengineer"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/fluff.dm b/code/modules/mob/living/silicon/robot/sprites/fluff.dm
index 6312a73b03..b28bf461bf 100644
--- a/code/modules/mob/living/silicon/robot/sprites/fluff.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/fluff.dm
@@ -19,6 +19,8 @@
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
pixel_x = -16
+ icon_x = 64
+ icon_y = 32
whitelist_ckey = "argonne"
whitelist_charname = "RUSS"
@@ -80,6 +82,8 @@
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
pixel_x = -16
+ icon_x = 64
+ icon_y = 32
whitelist_ckey = "jademanique"
whitelist_charname = "B.A.U-Kingside"
@@ -101,6 +105,8 @@
has_dead_sprite = TRUE
has_dead_sprite_overlay = TRUE
pixel_x = -16
+ icon_x = 64
+ icon_y = 32
whitelist_ckey = "lunarfleet"
whitelist_charname = "Clea-Nor"
diff --git a/code/modules/mob/living/silicon/robot/sprites/janitor.dm b/code/modules/mob/living/silicon/robot/sprites/janitor.dm
index cdc5f817ce..4283153dc3 100644
--- a/code/modules/mob/living/silicon/robot/sprites/janitor.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/janitor.dm
@@ -206,8 +206,6 @@
/datum/robot_sprite/dogborg/tall/janitor/dullahanv3/janitordully
name = "Dullahan janitor v3"
sprite_icon_state = "dullahanjanitor"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/medical.dm b/code/modules/mob/living/silicon/robot/sprites/medical.dm
index f53b9894a2..2d5ec9f1f3 100644
--- a/code/modules/mob/living/silicon/robot/sprites/medical.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/medical.dm
@@ -144,8 +144,6 @@
/datum/robot_sprite/dogborg/tall/medical/dullahanv3/medicaldully
name = "Dullahan medical v3"
sprite_icon_state = "dullahanmedical"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/mining.dm b/code/modules/mob/living/silicon/robot/sprites/mining.dm
index d074a510a6..2eeae517c4 100644
--- a/code/modules/mob/living/silicon/robot/sprites/mining.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/mining.dm
@@ -191,8 +191,6 @@
/datum/robot_sprite/dogborg/tall/mining/dullahanv3/miningdully
name = "Dullahan mining v3"
sprite_icon_state = "dullahanmining"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/science.dm b/code/modules/mob/living/silicon/robot/sprites/science.dm
index 51159d9cb3..93b3bc2b61 100644
--- a/code/modules/mob/living/silicon/robot/sprites/science.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/science.dm
@@ -213,8 +213,6 @@
/datum/robot_sprite/dogborg/tall/science/dullahanv3/sciencedully
name = "Dullahan science v3"
sprite_icon_state = "dullahanscience"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/security.dm b/code/modules/mob/living/silicon/robot/sprites/security.dm
index 8ddd148260..67c215ab01 100644
--- a/code/modules/mob/living/silicon/robot/sprites/security.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/security.dm
@@ -219,8 +219,6 @@
/datum/robot_sprite/dogborg/tall/security/dullahanv3/securitydully
name = "Dullahan security v3"
sprite_icon_state = "dullahansecurity"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/living/silicon/robot/sprites/standard.dm b/code/modules/mob/living/silicon/robot/sprites/standard.dm
index 0190d40a67..e32490f3e3 100644
--- a/code/modules/mob/living/silicon/robot/sprites/standard.dm
+++ b/code/modules/mob/living/silicon/robot/sprites/standard.dm
@@ -139,8 +139,6 @@
/datum/robot_sprite/dogborg/tall/standard/dullahanv3/standarddully
name = "Dullahan standard v3"
sprite_icon_state = "dullahanstandard"
- has_eye_light_sprites = TRUE
- has_custom_open_sprites = TRUE
has_vore_belly_sprites = TRUE
has_robotdecal_sprites = TRUE
rest_sprite_options = list("Default", "sit")
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index ffc6dcd1e0..868910fc9f 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -1655,14 +1655,14 @@ shaved
name = "Shaved"
icon_state = "bald"
gender = NEUTER
- species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+ species_allowed = list(SPECIES_HUMAN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
*/
/datum/sprite_accessory/facial_hair/neck_fluff
name = "Neck Fluff"
icon = 'icons/mob/human_face_or_alt.dmi'
icon_state = "facial_neckfluff"
gender = NEUTER
- species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
+ species_allowed = list(SPECIES_TAJARAN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/facial_hair/vulp_none
@@ -1754,7 +1754,7 @@ shaved
name = "Shaved"
icon_state = "bald"
gender = NEUTER
- species_allowed = list(SPECIES_HUMAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI,SPECIES_TAJ,SPECIES_SKRELL, "Machine", SPECIES_TESHARI, SPECIES_TESHARI,SPECIES_PROMETHEAN)
+ species_allowed = list(SPECIES_HUMAN,SPECIES_HUMAN_VATBORN,SPECIES_UNATHI,SPECIES_TAJARAN,SPECIES_SKRELL, "Machine", SPECIES_TESHARI, SPECIES_TESHARI,SPECIES_PROMETHEAN)
/datum/sprite_accessory/facial_hair/watson
name = "Watson Mustache"
@@ -1950,7 +1950,7 @@ shaved
/datum/sprite_accessory/hair/taj
name = "Tajaran Ears"
icon_state = "ears_plain"
- species_allowed = list(SPECIES_TAJ)
+ species_allowed = list(SPECIES_TAJARAN)
/datum/sprite_accessory/hair/taj/bangs
name = "Tajaran Bangs"
@@ -2213,7 +2213,7 @@ shaved
/datum/sprite_accessory/facial_hair/taj
name = "Tajaran Sideburns"
icon_state = "facial_sideburns"
- species_allowed = list(SPECIES_TAJ)
+ species_allowed = list(SPECIES_TAJARAN)
/datum/sprite_accessory/facial_hair/taj/mutton
name = "Tajaran Mutton"
@@ -2460,7 +2460,7 @@ shaved
name = "Color Bands (Face)"
icon_state = "bandsface"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ,SPECIES_UNATHI) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN,SPECIES_UNATHI) //Removing Polaris whitelits
/datum/sprite_accessory/marking/bandsface_human
name = "Color Bands (Face)"
@@ -2472,7 +2472,7 @@ shaved
name = "Tiger Stripes"
icon_state = "tiger"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits //There's a tattoo for non-cats
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits //There's a tattoo for non-cats
/datum/sprite_accessory/marking/tigerhead
name = "Tiger Stripes (Head, Minor)"
@@ -2483,7 +2483,7 @@ shaved
name = "Tiger Stripes (Head, Major)"
icon_state = "tigerface"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits //There's a tattoo for non-cats
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits //There's a tattoo for non-cats
/datum/sprite_accessory/marking/backstripe
name = "Back Stripe"
@@ -3001,7 +3001,7 @@ shaved
name = "Socks Coloration (Taj)"
icon_state = "taj_pawsocks"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/una_paw_socks
name = "Socks Coloration (Una)"
@@ -3013,43 +3013,43 @@ shaved
name = "Socks Coloration (Generic)"
icon_state = "pawsocks"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND)
- //species_allowed = list(SPECIES_TAJ, SPECIES_UNATHI) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_UNATHI) //Removing Polaris whitelits
/datum/sprite_accessory/marking/paw_socks_belly
name = "Socks,Belly Coloration (Generic)"
icon_state = "pawsocksbelly"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
- //species_allowed = list(SPECIES_TAJ, SPECIES_UNATHI) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_UNATHI) //Removing Polaris whitelits
/datum/sprite_accessory/marking/belly_hands_feet
name = "Hands,Feet,Belly Color (Minor)"
icon_state = "bellyhandsfeetsmall"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
- //species_allowed = list(SPECIES_TAJ, SPECIES_UNATHI) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_UNATHI) //Removing Polaris whitelits
/datum/sprite_accessory/marking/hands_feet_belly_full
name = "Hands,Feet,Belly Color (Major)"
icon_state = "bellyhandsfeet"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
- //SPECIES_TAJ, SPECIES_UNATHI) //Removing Polaris whitelits
+ //SPECIES_TAJARAN, SPECIES_UNATHI) //Removing Polaris whitelits
/datum/sprite_accessory/marking/hands_feet_belly_full_female
name = "Hands,Feet,Belly Color (Major, Female)"
icon_state = "bellyhandsfeet_female"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/patches
name = "Color Patches"
icon_state = "patches"
body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/patchesface
name = "Color Patches (Face)"
icon_state = "patchesface"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
//Taj specific stuff
@@ -3057,55 +3057,55 @@ shaved
name = "Belly Fur (Taj)"
icon_state = "taj_belly"
body_parts = list(BP_TORSO)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_bellyfull
name = "Belly Fur Wide (Taj)"
icon_state = "taj_bellyfull"
body_parts = list(BP_TORSO)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_earsout
name = "Outer Ear (Taj)"
icon_state = "taj_earsout"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_earsin
name = "Inner Ear (Taj)"
icon_state = "taj_earsin"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_nose
name = "Nose Color (Taj)"
icon_state = "taj_nose"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_crest
name = "Chest Fur Crest (Taj)"
icon_state = "taj_crest"
body_parts = list(BP_TORSO)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_muzzle
name = "Muzzle Color (Taj)"
icon_state = "taj_muzzle"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_face
name = "Cheeks Color (Taj)"
icon_state = "taj_face"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/marking/taj_all
name = "All Taj Head (Taj)"
icon_state = "taj_all"
body_parts = list(BP_HEAD)
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
//Una specific stuff
/datum/sprite_accessory/marking/una_face
@@ -3694,7 +3694,7 @@ shaved
name = "Default tajaran skin"
icon_state = "default"
icon = 'icons/mob/human_races/r_tajaran.dmi'
- //species_allowed = list(SPECIES_TAJ) //Removing Polaris whitelits
+ //species_allowed = list(SPECIES_TAJARAN) //Removing Polaris whitelits
/datum/sprite_accessory/skin/unathi
name = "Default Unathi skin"
diff --git a/code/modules/mob/new_player/sprite_accessories_ear.dm b/code/modules/mob/new_player/sprite_accessories_ear.dm
index 2b5f60c892..8607e0f118 100644
--- a/code/modules/mob/new_player/sprite_accessories_ear.dm
+++ b/code/modules/mob/new_player/sprite_accessories_ear.dm
@@ -43,7 +43,7 @@
icon_state = "ears_plain"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
- //species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
extra_overlay = "ears_plain-inner"
/datum/sprite_accessory/ears/taj_ears_tall
@@ -51,7 +51,7 @@
icon_state = "msai_plain"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
- //species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
extra_overlay = "msai_plain-inner"
/datum/sprite_accessory/ears/squirrel_orange
diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
index 7b7d264498..106bb12bf5 100644
--- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
@@ -9,7 +9,7 @@
name = DEVELOPER_WARNING_NAME
icon = 'icons/mob/vore/ears_vr.dmi'
do_colouration = 0 // Set to 1 to blend (ICON_ADD) hair color
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
// Species-unique ears
@@ -62,11 +62,11 @@
/datum/sprite_accessory/ears/taj_ears
name = "tajaran, colorable (old)"
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/taj_ears_tall
name = "tajaran tall, colorable (old)"
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/alt_ram_horns
name = "Solid ram horns"
@@ -481,19 +481,19 @@
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/elfs1
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/elfs2
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/elfs3
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/elfs4
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/elfs5
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use
/datum/sprite_accessory/ears/sleek
name = "sleek ears"
diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm
index 858fe01b10..dbc233ceb8 100644
--- a/code/modules/mob/new_player/sprite_accessories_tail.dm
+++ b/code/modules/mob/new_player/sprite_accessories_tail.dm
@@ -44,7 +44,7 @@
icon = null
icon_state = null
- //species_allowed = list(SPECIES_TAJ, SPECIES_UNATHI, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_UNATHI, SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
/datum/sprite_accessory/tail/squirrel_orange
name = "squirel, orange"
@@ -93,7 +93,7 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "stripeytail_mark"
- //species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
/datum/sprite_accessory/tail/stripeytail_brown
name = "stripey taj, brown"
@@ -495,7 +495,7 @@
icon_state = "tajtail_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
- //species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
/datum/sprite_accessory/tail/special/sergal
name = "sergal tail"
@@ -579,7 +579,7 @@
icon_state = "tajtail_hc_s"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
- //species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
+ //species_allowed = list(SPECIES_TAJARAN, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3) //Removing Polaris whitelits, ones we need are defined in our files
/datum/sprite_accessory/tail/special/sergalhc
name = "sergal tail, colorable"
diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
index 8b510e6502..37d8481c33 100644
--- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm
@@ -13,7 +13,7 @@
var/mob_offset_x = 0
var/mob_offset_y = 0
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
var/list/lower_layer_dirs = list(SOUTH)
var/icon_loaf = null
diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm
index 0a440d4a23..a20d2932ea 100644
--- a/code/modules/mob/new_player/sprite_accessories_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_vr.dm
@@ -6,7 +6,7 @@
/datum/sprite_accessory/hair
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use the default hairstyles.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use the default hairstyles.
/datum/sprite_accessory/hair/astolfo
name = "Astolfo"
@@ -97,14 +97,14 @@
name = "Bald"
icon_state = "bald"
gender = MALE
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //Lets all the races be bald if they want.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //Lets all the races be bald if they want.
/datum/sprite_accessory/hair/ponytail6_fixed
name = "Ponytail 6 but fixed"
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hair_ponytail6"
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_NEVREAN, SPECIES_AKULA,SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_NEVREAN, SPECIES_AKULA,SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW)
/datum/sprite_accessory/hair/una_hood
name = "Cobra Hood"
@@ -174,87 +174,87 @@
/datum/sprite_accessory/hair/taj_ears
name = "Tajaran Ears"
icon_state = "ears_plain"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_clean
name = "Tajara Clean"
icon_state = "hair_clean"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_bangs
name = "Tajara Bangs"
icon_state = "hair_bangs"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_braid
name = "Tajara Braid"
icon_state = "hair_tbraid"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_shaggy
name = "Tajara Shaggy"
icon_state = "hair_shaggy"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_mohawk
name = "Tajaran Mohawk"
icon_state = "hair_mohawk"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_plait
name = "Tajara Plait"
icon_state = "hair_plait"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_straight
name = "Tajara Straight"
icon_state = "hair_straight"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_long
name = "Tajara Long"
icon_state = "hair_long"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_rattail
name = "Tajara Rat Tail"
icon_state = "hair_rattail"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_spiky
name = "Tajara Spiky"
icon_state = "hair_tajspiky"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_messy
name = "Tajara Messy"
icon_state = "hair_messy"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_curls
name = "Tajaran Curly"
icon_state = "hair_curly"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_wife
name = "Tajaran Housewife"
icon_state = "hair_wife"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_victory
name = "Tajaran Victory Curls"
icon_state = "hair_victory"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_bob
name = "Tajaran Bob"
icon_state = "hair_tbob"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
/datum/sprite_accessory/hair/taj_ears_fingercurl
name = "Tajaran Finger Curls"
icon_state = "hair_fingerwave"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
//Skrell 'hairstyles' - these were requested for a chimera and screw it, if one wants to eat seafood, go nuts
@@ -293,7 +293,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "kajam"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_keid
@@ -301,7 +301,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "keid"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_adhara
@@ -309,7 +309,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "adhara"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_kleeia
@@ -317,7 +317,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "kleeia"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_mizar
@@ -325,7 +325,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "mizar"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_apollo
@@ -333,7 +333,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "apollo"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_belle
@@ -341,7 +341,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "belle"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_bun
@@ -349,7 +349,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "bun"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_jagged
@@ -357,7 +357,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "jagged"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_curl
@@ -365,7 +365,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "curl"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_hawk
@@ -373,7 +373,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "hawk"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_anita
@@ -381,7 +381,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "anita"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_short
@@ -389,7 +389,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "short"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
/datum/sprite_accessory/hair/vulp_hair_spike
@@ -397,7 +397,7 @@
icon = 'icons/mob/human_face_vr.dmi'
icon_add = 'icons/mob/human_face_vr_add.dmi'
icon_state = "spike"
- species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJ, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
+ species_allowed = list(SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_TAJARAN, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_PROTEAN)
gender = NEUTER
//xeno stuffs
@@ -485,20 +485,20 @@
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/human_face_or_vr.dmi'
color_blend_mode = ICON_MULTIPLY
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use the facial hair styles.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use the facial hair styles.
/datum/sprite_accessory/facial_hair/shaved
name = "Shaved"
icon_state = "bald"
gender = NEUTER
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_VOX, SPECIES_LLEILL, SPECIES_HANNER) //This needed to be manually defined, apparantly.
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_VOX, SPECIES_LLEILL, SPECIES_HANNER) //This needed to be manually defined, apparantly.
/datum/sprite_accessory/facial_hair/neck_fluff
name = "Neck Fluff"
icon = 'icons/mob/human_face_or_vr.dmi'
icon_state = "facial_neckfluff"
gender = NEUTER
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER)
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER)
/datum/sprite_accessory/facial_hair/vulp_none
name = "None"
diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
index 6610a2e8ea..4e697dff6b 100644
--- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm
@@ -9,7 +9,7 @@
name = DEVELOPER_WARNING_NAME
icon = 'icons/mob/vore/wings_vr.dmi'
do_colouration = 0 //Set to 1 to enable coloration using the tail color.
- species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
+ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN, SPECIES_LLEILL, SPECIES_HANNER) //This lets all races use
color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1
var/wing_offset = 0
var/multi_dir = FALSE // Does it use different sprites at different layers? _front will be added for sprites on low layer, _back to high layer
diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm
index 7a0311ad93..6f48f2bce0 100644
--- a/code/modules/organs/robolimbs.dm
+++ b/code/modules/organs/robolimbs.dm
@@ -64,7 +64,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
// Species in this list cannot take these prosthetics.
var/list/species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_XENOCHIMERA) //VOREStation Edit
// "Species Name" = "Robolimb Company", List, when initialized, will become "Species Name" = RobolimbDatum, used for alternate species sprites.
- var/list/species_alternates = list(SPECIES_TAJ = "Unbranded - Tajaran", SPECIES_UNATHI = "Unbranded - Unathi")
+ var/list/species_alternates = list(SPECIES_TAJARAN = "Unbranded - Tajaran", SPECIES_UNATHI = "Unbranded - Unathi")
/datum/robolimb/unbranded_monitor
company = "Unbranded Monitor"
@@ -91,7 +91,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/unbranded_tajaran
company = "Unbranded - Tajaran"
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
- suggested_species = SPECIES_TAJ
+ suggested_species = SPECIES_TAJARAN
desc = "A simple robotic limb with feline design. Seems rather stiff."
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_tajaran.dmi'
unavailable_to_build = 1
@@ -99,7 +99,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/unbranded_unathi
company = "Unbranded - Unathi"
- species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ZADDAT)
suggested_species = SPECIES_UNATHI
desc = "A simple robotic limb with reptilian design. Seems rather stiff."
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_unathi.dmi'
@@ -108,7 +108,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/unbranded_teshari
company = "Unbranded - Teshari"
- species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ZADDAT)
suggested_species = SPECIES_TESHARI
desc = "A simple robotic limb with a small, raptor-like design. Seems rather stiff."
icon = 'icons/mob/human_races/cyberlimbs/unbranded/unbranded_teshari.dmi'
@@ -125,14 +125,14 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "NanoTrasen"
desc = "A simple but efficient robotic limb, created by NanoTrasen."
icon = 'icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_main.dmi'
- species_alternates = list(SPECIES_TAJ = "NanoTrasen - Tajaran", SPECIES_UNATHI = "NanoTrasen - Unathi")
+ species_alternates = list(SPECIES_TAJARAN = "NanoTrasen - Tajaran", SPECIES_UNATHI = "NanoTrasen - Unathi")
modular_bodyparts = MODULAR_BODYPART_PROSTHETIC //VOREStation Edit - remove the restrictions
/datum/robolimb/nanotrasen_tajaran
company = "NanoTrasen - Tajaran"
species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
species_alternates = list(SPECIES_HUMAN = "NanoTrasen")
- suggested_species = SPECIES_TAJ
+ suggested_species = SPECIES_TAJARAN
desc = "A simple but efficient robotic limb, created by NanoTrasen."
icon = 'icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_tajaran.dmi'
unavailable_to_build = 1
@@ -140,7 +140,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/nanotrasen_unathi
company = "NanoTrasen - Unathi"
- species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ZADDAT)
species_alternates = list(SPECIES_HUMAN = "NanoTrasen")
suggested_species = SPECIES_UNATHI
desc = "A simple but efficient robotic limb, created by NanoTrasen."
@@ -150,7 +150,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/cenilimicybernetics_teshari
company = "Cenilimi Cybernetics"
- species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ZADDAT)
species_alternates = list(SPECIES_HUMAN = "NanoTrasen")
suggested_species = SPECIES_TESHARI
desc = "Made by a Teshari-owned company, for Teshari."
@@ -197,7 +197,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
blood_name = "synthetic ichor"
speech_bubble_appearance = "machine"
unavailable_to_build = 1
- species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_TAJ, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_TAJARAN, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_ZADDAT)
suggested_species = SPECIES_DIONA
// Dionaea are naturally very tanky, so the robotic limbs are actually far weaker than their normal bodies.
robo_brute_mod = 1.3
@@ -360,7 +360,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
unavailable_to_build = 1
lifelike = 1
skin_color = TRUE
- species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_TAJ, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_TAJARAN, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_ZADDAT)
blood_color = "#4451cf"
blood_name = "coolant"
speech_bubble_appearance = "normal"
@@ -455,7 +455,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
company = "Zeng-Hu"
desc = "This limb has a rubbery fleshtone covering with visible seams."
icon = 'icons/mob/human_races/cyberlimbs/zenghu/zenghu_main.dmi'
- species_alternates = list(SPECIES_TAJ = "Zeng-Hu - Tajaran")
+ species_alternates = list(SPECIES_TAJARAN = "Zeng-Hu - Tajaran")
unavailable_to_build = 1
skin_tone = 1
modular_bodyparts = MODULAR_BODYPART_PROSTHETIC //VOREStation Edit - remove the restrictions
@@ -478,7 +478,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/wooden/teshari
company = "Morgan Trading Co - Teshari"
icon = 'icons/mob/human_races/cyberlimbs/prosthesis/wooden_teshari.dmi'
- species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ZADDAT)
species_alternates = list(SPECIES_HUMAN = "Morgan Trading Co")
suggested_species = SPECIES_TESHARI
@@ -490,7 +490,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
/datum/robolimb/wooden/sif/teshari
company = "Morgan Trading Co - Sif wood - Teshari"
icon = 'icons/mob/human_races/cyberlimbs/prosthesis/wooden_sif_teshari.dmi'
- species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_ZADDAT)
+ species_cannot_use = list(SPECIES_UNATHI, SPECIES_PROMETHEAN, SPECIES_DIONA, SPECIES_HUMAN, SPECIES_VOX, SPECIES_HUMAN_VATBORN, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ZADDAT)
species_alternates = list(SPECIES_HUMAN = "Morgan Trading Co")
suggested_species = SPECIES_TESHARI
@@ -588,7 +588,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
species = SPECIES_UNATHI
/obj/item/disk/species/tajaran
- species = SPECIES_TAJ
+ species = SPECIES_TAJARAN
/obj/item/disk/species/teshari
species = SPECIES_TESHARI
diff --git a/code/modules/organs/robolimbs_custom.dm b/code/modules/organs/robolimbs_custom.dm
index 55d6e68ee4..af025b39a4 100644
--- a/code/modules/organs/robolimbs_custom.dm
+++ b/code/modules/organs/robolimbs_custom.dm
@@ -64,7 +64,7 @@
/*/datum/robolimb/dsi_tajaran/New()
species_cannot_use = GLOB.all_species.Copy()
- species_cannot_use -= SPECIES_TAJ
+ species_cannot_use -= SPECIES_TAJARAN
VS Edit - anyone can select these. */
/obj/item/disk/limb/dsi_tajaran
diff --git a/code/modules/organs/robolimbs_vr.dm b/code/modules/organs/robolimbs_vr.dm
index a3956a2bf9..9f21ba8421 100644
--- a/code/modules/organs/robolimbs_vr.dm
+++ b/code/modules/organs/robolimbs_vr.dm
@@ -91,7 +91,7 @@ var/const/cyberbeast_monitor_styles = "blank=cyber_blank;\
company = "Zeng-Hu Glacier"
desc = "This limb has a rubbery white covering with visible seams."
icon = 'icons/mob/human_races/cyberlimbs/zenghu/zenghu_glacier_main.dmi'
- species_alternates = list(SPECIES_TAJ = "Zeng-Hu - Tajaran")
+ species_alternates = list(SPECIES_TAJARAN = "Zeng-Hu - Tajaran")
unavailable_to_build = 1
skin_tone = 1
modular_bodyparts = MODULAR_BODYPART_PROSTHETIC
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 0794fecf38..c867fa71a8 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -272,7 +272,7 @@
switch(species_to_check)
if(SPECIES_HUMAN)
temp_img = icon('icons/obj/butts_vr.dmi', "human")
- if(SPECIES_TAJ)
+ if(SPECIES_TAJARAN)
temp_img = icon('icons/obj/butts_vr.dmi', "tajaran")
if(SPECIES_UNATHI)
temp_img = icon('icons/obj/butts_vr.dmi', "unathi")
diff --git a/code/modules/reagents/reagents/food_drinks_vr.dm b/code/modules/reagents/reagents/food_drinks_vr.dm
index 388031b2fe..e8892246f7 100644
--- a/code/modules/reagents/reagents/food_drinks_vr.dm
+++ b/code/modules/reagents/reagents/food_drinks_vr.dm
@@ -938,7 +938,8 @@
/datum/reagent/drink/coffee/nukie/mega/shrink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
- M.resize((M.size_multiplier - 0.01), uncapped = M.has_large_resize_bounds(), aura_animation = FALSE)
+ var/new_size = clamp((M.size_multiplier - 0.01), RESIZE_MINIMUM_DORMS, RESIZE_MAXIMUM_DORMS)
+ M.resize(new_size, uncapped = M.has_large_resize_bounds(), aura_animation = FALSE)
/datum/reagent/drink/coffee/nukie/mega/grow //Basically macrocillin but for ingesting
name = REAGENT_NUKIEMEGAGROWTH
@@ -948,4 +949,5 @@
/datum/reagent/drink/coffee/nukie/mega/grow/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
- M.resize((M.size_multiplier + 0.01), uncapped = M.has_large_resize_bounds(), aura_animation = FALSE)
+ var/new_size = clamp((M.size_multiplier + 0.01), RESIZE_MINIMUM_DORMS, RESIZE_MAXIMUM_DORMS)
+ M.resize(new_size, uncapped = M.has_large_resize_bounds(), aura_animation = FALSE)
diff --git a/code/modules/reagents/reagents/vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm
index 2b0ac6706d..f7581850db 100644
--- a/code/modules/reagents/reagents/vore_vr.dm
+++ b/code/modules/reagents/reagents/vore_vr.dm
@@ -13,7 +13,8 @@
mrate_static = TRUE
/datum/reagent/macrocillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
- M.resize(M.size_multiplier+0.01, uncapped = M.has_large_resize_bounds()) //Incrrease 1% per tick.
+ var/new_size = clamp((M.size_multiplier + 0.01), RESIZE_MINIMUM_DORMS, RESIZE_MAXIMUM_DORMS)
+ M.resize(new_size, uncapped = M.has_large_resize_bounds()) //Incrrease 1% per tick.
return
/datum/reagent/microcillin
@@ -26,7 +27,8 @@
mrate_static = TRUE
/datum/reagent/microcillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
- M.resize(M.size_multiplier-0.01, uncapped = M.has_large_resize_bounds()) //Decrease 1% per tick.
+ var/new_size = clamp((M.size_multiplier - 0.01), RESIZE_MINIMUM_DORMS, RESIZE_MAXIMUM_DORMS)
+ M.resize(new_size, uncapped = M.has_large_resize_bounds()) //Decrease 1% per tick.
return
diff --git a/code/modules/research/designs/circuits/disks.dm b/code/modules/research/designs/circuits/disks.dm
index 21a17f5fcd..42532486fc 100644
--- a/code/modules/research/designs/circuits/disks.dm
+++ b/code/modules/research/designs/circuits/disks.dm
@@ -25,7 +25,7 @@
sort_string = "DBAAA"
/datum/design/circuit/disk/tajprint
- name = SPECIES_TAJ
+ name = SPECIES_TAJARAN
id = "prosthetic_tajaran"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/disk/species/tajaran
diff --git a/code/modules/resleeving/designer.dm b/code/modules/resleeving/designer.dm
index 544021adda..6161cf08fe 100644
--- a/code/modules/resleeving/designer.dm
+++ b/code/modules/resleeving/designer.dm
@@ -24,6 +24,7 @@
var/obj/screen/south_preview = null
var/obj/screen/east_preview = null
var/obj/screen/west_preview = null
+ var/obj/screen/north_preview = null
// Mannequins are somewhat expensive to create, so cache it
var/mob/living/carbon/human/dummy/mannequin/mannequin = null
var/obj/item/disk/body_record/disk = null
@@ -41,13 +42,13 @@
south_preview.name = ""
south_preview.assigned_map = map_name
south_preview.del_on_map_removal = FALSE
- south_preview.screen_loc = "[map_name]:1,1"
+ south_preview.screen_loc = "[map_name]:2,1"
east_preview = new
east_preview.name = ""
east_preview.assigned_map = map_name
east_preview.del_on_map_removal = FALSE
- east_preview.screen_loc = "[map_name]:2,1"
+ east_preview.screen_loc = "[map_name]:4,1"
west_preview = new
west_preview.name = ""
@@ -55,6 +56,12 @@
west_preview.del_on_map_removal = FALSE
west_preview.screen_loc = "[map_name]:0,1"
+ north_preview = new
+ north_preview.name = ""
+ north_preview.assigned_map = map_name
+ north_preview.del_on_map_removal = FALSE
+ north_preview.screen_loc = "[map_name]:6,1"
+
our_db = SStranscore.db_by_key(db_key)
/obj/machinery/computer/transhuman/designer/Destroy()
@@ -125,17 +132,33 @@
data["activeBodyRecord"] = list(
"real_name" = active_br.mydna.name,
"speciesname" = active_br.speciesname ? active_br.speciesname : active_br.mydna.dna.species,
+ "blood_type" = active_br.mydna.dna.b_type,
+ "blood_color" = active_br.mydna.dna.blood_color,
+ "blood_reagents" = active_br.mydna.dna.blood_reagents,
+ "weight" = !isnull(active_br.weight) ? active_br.weight : 137, // 137 id default in code\modules\client\preference_setup\vore\02_size.dm
+ "flavors" = list(),
+ "scale_appearance" = active_br.mydna.dna.scale_appearance ? "Fuzzy" : "Sharp",
+ "offset_override" = active_br.mydna.dna.offset_override ? "Odd" : "Even",
+ "species_sound" = active_br.mydna.dna.species_sounds,
"gender" = active_br.bodygender,
"synthetic" = active_br.synthetic ? "Yes" : "No",
- "locked" = active_br.locked ? "Low" : "High",
+ "locked" = active_br.locked,
"scale" = player_size_name(active_br.sizemult),
"booc" = active_br.body_oocnotes,
"styles" = list()
)
+ var/list/flavors = data["activeBodyRecord"]["flavors"]
+ flavors += active_br.mydna.flavor.Copy()
+
var/list/styles = data["activeBodyRecord"]["styles"]
var/list/temp
+ if (mannequin.species && mannequin.species.selects_bodytype)
+ if (!mannequin.species.base_species)
+ mannequin.species.base_species = mannequin.species.name
+ styles["Bodytype"] = list("styleHref" = "custom_base", "style" = mannequin.species.base_species)
+
temp = list("styleHref" = "ear_style", "style" = "Normal")
if(mannequin.ear_style)
temp["style"] = mannequin.ear_style.name
@@ -145,6 +168,9 @@
if(mannequin.ear_style.extra_overlay)
temp["color2"] = MOB_HEX_COLOR(mannequin, ears2)
temp["colorHref2"] = "ear_color2"
+ if(mannequin.ear_style.extra_overlay2)
+ temp["color3"] = MOB_HEX_COLOR(mannequin, ears3)
+ temp["colorHref3"] = "ear_color3"
styles["Ears"] = temp
temp = list("styleHref" = "ear_style", "style" = "Normal")
@@ -167,6 +193,9 @@
if(mannequin.tail_style.extra_overlay)
temp["color2"] = MOB_HEX_COLOR(mannequin, tail2)
temp["colorHref2"] = "tail_color2"
+ if(mannequin.tail_style.extra_overlay2)
+ temp["color3"] = MOB_HEX_COLOR(mannequin, tail3)
+ temp["colorHref3"] = "tail_color3"
styles["Tail"] = temp
temp = list("styleHref" = "wing_style", "style" = "Normal")
@@ -178,6 +207,9 @@
if(mannequin.wing_style.extra_overlay)
temp["color2"] = MOB_HEX_COLOR(mannequin, wing2)
temp["colorHref2"] = "wing_color2"
+ if(mannequin.wing_style.extra_overlay2)
+ temp["color3"] = MOB_HEX_COLOR(mannequin, wing3)
+ temp["colorHref3"] = "wing_color3"
styles["Wing"] = temp
temp = list("styleHref" = "hair_style", "style" = mannequin.h_style)
@@ -198,11 +230,6 @@
if(mannequin.species && (mannequin.species.appearance_flags & HAS_SKIN_COLOR))
styles["Body Color"] = list("colorHref" = "skin_color", "color" = MOB_HEX_COLOR(mannequin, skin))
- if (mannequin.species && mannequin.species.selects_bodytype)
- if (!mannequin.species.base_species)
- mannequin.species.base_species = mannequin.species.name
- styles["Bodytype"] = list("styleHref" = "custom_base", "style" = mannequin.species.base_species)
-
var/datum/preferences/designer/P = new()
apply_markings_to_prefs(mannequin, P)
data["activeBodyRecord"]["markings"] = P.body_markings
@@ -266,11 +293,19 @@
menu = MENU_SPECIFICRECORD
if("savetodisk")
+ if(active_br.locked)
+ var/answer = tgui_alert(ui.user,"This body record will be written to a disk and allow any mind to inhabit it. This is against the current body owner's configured OOC preferences for body impersonation. Please confirm that you have permission to do this, and are sure! Admins will be notified.","Mind Compatability",list("No","Yes"))
+ if(!answer)
+ return
+ if(answer == "No")
+ to_chat(ui.user, span_warning("ERROR: This body record is restricted."))
+ return
+ else
+ message_admins("[ui.user] wrote an unlocked version of [active_br.mydna.name]'s bodyrecord to a disk. Their preferences do not allow body impersonation, but may be allowed with OOC consent.")
if(disk && active_br)
+ active_br.locked = FALSE // remove lock
disk.stored = new /datum/transhuman/body_record(active_br) // Saves a COPY!
disk.name = "[initial(disk.name)] ([active_br.mydna.name])"
- disk.forceMove(get_turf(src))
- disk = null
if("ejectdisk")
disk.forceMove(get_turf(src))
@@ -284,7 +319,7 @@
PrefHrefMiddleware(params, ui.user)
add_fingerprint(ui.user)
- return 1 // Return 1 to refresh UI
+ return TRUE // Return 1 to refresh UI
//
// Code below is for generating preview icons based on a body_record
@@ -301,21 +336,26 @@
var/mutable_appearance/MA = new(mannequin)
south_preview.appearance = MA
south_preview.dir = SOUTH
- south_preview.screen_loc = "[map_name]:1,1"
+ south_preview.screen_loc = "[map_name]:2,1"
south_preview.name = ""
east_preview.appearance = MA
east_preview.dir = EAST
- east_preview.screen_loc = "[map_name]:2,1"
+ east_preview.screen_loc = "[map_name]:4,1"
east_preview.name = ""
west_preview.appearance = MA
west_preview.dir = WEST
west_preview.screen_loc = "[map_name]:0,1"
west_preview.name = ""
+ north_preview.appearance = MA
+ north_preview.dir = NORTH
+ north_preview.screen_loc = "[map_name]:6,1"
+ north_preview.name = ""
/obj/machinery/computer/transhuman/designer/proc/give_client_previews(client/C)
C.register_map_obj(south_preview)
C.register_map_obj(east_preview)
C.register_map_obj(west_preview)
+ C.register_map_obj(north_preview)
/obj/machinery/computer/transhuman/designer/proc/update_preview_mob(var/mob/living/carbon/human/H)
@@ -364,6 +404,7 @@
// Apply DNA
H.dna = R.dna.Clone()
H.UpdateAppearance() // Update all appearance stuff from the DNA record
+ // H.sync_dna_traits(FALSE) // Traitgenes edit - Sync traits to genetics if needed // Currently not implemented
H.sync_organ_dna() // Do this because sprites depend on DNA-gender of organs (chest etc)
H.resize(active_br.sizemult, FALSE)
@@ -375,6 +416,13 @@
if(H.wing_style)
H.wing_style.em_block = FALSE
+ for(var/key in R.flavor)
+ H.flavor_texts[key] = R.flavor[key]
+ H.weight = active_br.weight
+ // stupid dupe vars
+ H.b_type = active_br.mydna.dna.b_type
+ H.blood_color = active_br.mydna.dna.blood_color
+
// And as for clothing...
// We don't actually dress them! This is a medical machine, handle the nakedness DOCTOR!
@@ -408,24 +456,28 @@
apply_markings_to_prefs(mannequin, P)
apply_ears_to_prefs(mannequin, P)
+ for(var/key in active_br.mydna.flavor)
+ P.flavor_texts[key] = active_br.mydna.flavor[key]
+ P.fuzzy = active_br.mydna.dna.scale_appearance
+ P.offset_override = active_br.mydna.dna.offset_override
+ // P.species_sound = active_br.mydna.dna.species_sounds // Currently not implemented on virgo
+
// Now we start using the player_setup objects to do stuff!
var/datum/category_collection/CC = P.player_setup
var/datum/category_group/CG = CC.categories_by_name["General"]
+
var/datum/category_item/player_setup_item/general/body/B = CG.items_by_name["Body"]
ASSERT(istype(B))
var/datum/category_item/player_setup_item/general/basic/G = CG.items_by_name["Basic"]
ASSERT(istype(G))
+ var/datum/category_item/player_setup_item/general/flavor/F = CG.items_by_name["Flavor"]
+ ASSERT(istype(F))
+ var/datum/category_item/player_setup_item/vore/size/S = CC.categories_by_name["VORE"].items_by_name["Size"]
+ ASSERT(istype(S))
var/datum/category_item/player_setup_item/vore/traits/V = CC.categories_by_name["VORE"].items_by_name["Traits"]
ASSERT(istype(V))
- var/list/use_different_category = list("custom_base" = V) //add more here if needed
+ var/list/use_different_category = list("rename" = G, "bio_gender" = G, "blood_reagents" = V, "custom_species" = V, "blood_color" = V, "custom_base" = V, "species_sound_options" = S, "toggle_fuzzy" = S, "toggle_offset_override" = S, "weight" = S, "flavor_text" = F) //add more here if needed
- if(params["target_href"] == "bio_gender")
- var/new_gender = tgui_input_list(user, "Choose your character's biological gender:", "Character Preference", G.get_genders())
- if(new_gender)
- active_br.bodygender = new_gender
- active_br.mydna.dna.SetUIState(DNA_UI_GENDER, new_gender!=MALE, 1)
- update_preview_icon()
- return 1
var/href_list = list()
href_list["src"] = "\ref[src]"
@@ -442,11 +494,64 @@
var/action = 0
action = to_use.OnTopic(list2params(href_list), href_list, user)
- if(action & TOPIC_UPDATE_PREVIEW && mannequin && active_br)
+ if((action & TOPIC_UPDATE_PREVIEW || action & TOPIC_REFRESH_UPDATE_PREVIEW || action & TOPIC_HANDLED || action & TOPIC_REFRESH) && mannequin && active_br) // Outpost 21 edit - Handled and Refreshes also count for check!
+ switch(params["target_href"])
+ if("rename")
+ active_br.mydna.name = P.real_name
+ active_br.mydna.dna.real_name = P.real_name
+ update_preview_icon()
+ return TRUE
+ if("bio_gender")
+ active_br.bodygender = P.biological_gender
+ active_br.mydna.dna.SetUIState(DNA_UI_GENDER, P.biological_gender!=MALE, 1)
+ update_preview_icon()
+ return TRUE
+ if("custom_species")
+ active_br.mydna.dna.custom_species = P.custom_species
+ active_br.speciesname = P.custom_species
+ update_preview_icon()
+ return TRUE
+ if("blood_color")
+ active_br.mydna.dna.blood_color = P.blood_color
+ update_preview_icon()
+ return TRUE
+ if("blood_type")
+ active_br.mydna.dna.b_type = P.b_type
+ update_preview_icon()
+ return TRUE
+ if("blood_reagents")
+ active_br.mydna.dna.blood_reagents = P.blood_reagents
+ update_preview_icon()
+ return TRUE
+ if("weight")
+ active_br.weight = P.weight_vr
+ update_preview_icon()
+ return TRUE
+ if("flavor_text")
+ to_use.copy_to_mob(mannequin)
+ for(var/key in mannequin.flavor_texts) // Get the flavors from the mob, which we just got from pref!
+ active_br.mydna.flavor[key] = mannequin.flavor_texts[key]
+ update_preview_icon()
+ return TRUE
+ if("toggle_fuzzy")
+ active_br.mydna.dna.scale_appearance = P.fuzzy
+ update_preview_icon()
+ return TRUE
+ if("toggle_offset_override")
+ active_br.mydna.dna.offset_override = P.offset_override
+ update_preview_icon()
+ return TRUE
+ if("species_sound_options")
+ /* Currently not implemented on virgo
+ active_br.mydna.dna.species_sounds = P.species_sound
+ update_preview_icon() */
+ return TRUE
to_use.copy_to_mob(mannequin)
+ mannequin.species.blood_color = active_br.mydna.dna.blood_color
+ mannequin.species.blood_reagents = active_br.mydna.dna.blood_reagents
active_br.mydna.dna.ResetUIFrom(mannequin)
update_preview_icon()
- return 1
+ return TRUE
// Fake subtype of preferences we can use to steal code from player_setup
/datum/preferences/designer/New()
diff --git a/code/modules/tgui_input/say_modal/typing.dm b/code/modules/tgui_input/say_modal/typing.dm
index f4f3a63b87..333632e3ce 100644
--- a/code/modules/tgui_input/say_modal/typing.dm
+++ b/code/modules/tgui_input/say_modal/typing.dm
@@ -13,6 +13,8 @@
cur_bubble_appearance = speech_bubble_appearance()
active_thinking_indicator = mutable_appearance('icons/mob/talk_vr.dmi', "[cur_bubble_appearance]_thinking", FLOAT_LAYER)
active_thinking_indicator.appearance_flags |= (RESET_COLOR|PIXEL_SCALE)
+ active_thinking_indicator.pixel_x = get_oversized_icon_offsets()["x"]
+ active_thinking_indicator.pixel_y = get_oversized_icon_offsets()["y"]
add_overlay(active_thinking_indicator)
/** Removes the thinking indicator over the mob. */
@@ -31,6 +33,8 @@
cur_bubble_appearance = speech_bubble_appearance()
active_typing_indicator = mutable_appearance('icons/mob/talk_vr.dmi', "[cur_bubble_appearance]_typing", ABOVE_MOB_LAYER)
active_typing_indicator.appearance_flags |= (RESET_COLOR|PIXEL_SCALE)
+ active_typing_indicator.pixel_x = get_oversized_icon_offsets()["x"]
+ active_typing_indicator.pixel_y = get_oversized_icon_offsets()["y"]
add_overlay(active_typing_indicator)
/** Removes the typing indicator over the mob. */
diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm
index 6bd4b09613..0e63c38c42 100644
--- a/code/modules/tgui_panel/tgui_panel.dm
+++ b/code/modules/tgui_panel/tgui_panel.dm
@@ -50,7 +50,7 @@
))
window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/fontawesome))
window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/tgfont))
- window.send_asset(get_asset_datum(/datum/asset/spritesheet/chat))
+ window.send_asset(get_asset_datum(/datum/asset/spritesheet_batched/chat))
// Other setup
request_telemetry()
addtimer(CALLBACK(src, PROC_REF(on_initialize_timed_out)), 5 SECONDS)
diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm
index 3fd14c2ec6..c74403a995 100644
--- a/code/modules/vore/eating/bellymodes_datum_vr.dm
+++ b/code/modules/vore/eating/bellymodes_datum_vr.dm
@@ -139,9 +139,9 @@ GLOBAL_LIST_INIT(digest_modes, list())
id = DM_SIZE_STEAL
/datum/digest_mode/drain/sizesteal/process_mob(obj/belly/B, mob/living/L)
- if(L.size_multiplier > B.shrink_grow_size && B.owner.size_multiplier < 2) //Grow until either pred is large or prey is small.
+ if(L.size_multiplier > B.shrink_grow_size && B.owner.size_multiplier < RESIZE_MAXIMUM) //Grow until either pred is large or prey is small.
B.owner.resize(B.owner.size_multiplier + 0.01) //Grow by 1% per tick.
- if(B.owner.size_multiplier >= 2) // Adds some feedback so the pred knows they can't grow anymore.
+ if(B.owner.size_multiplier >= RESIZE_MAXIMUM) // Adds some feedback so the pred knows they can't grow anymore.
to_chat(B.owner, span_vnotice("You feel you have grown as much as you can."))
L.resize(L.size_multiplier - 0.01) //Shrink by 1% per tick
if(L.size_multiplier <= B.shrink_grow_size) // Adds some feedback so the pred knows their prey has stopped shrinking.
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index e604fe5f39..2a55a0353b 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -111,6 +111,7 @@ magpiemayhem - Xenochimera
makkinindorn - Protean
marcobarko - Black-Eyed Shadekin
marcobarko - Protean
+maxine64 - Xenochimera
mewchild - Diona
mewchild - Vox
milu - Xenochimera
diff --git a/icons/mob/robot/combat_large.dmi b/icons/mob/robot/combat_large.dmi
index 7f654ef73e..7b38e7b584 100644
Binary files a/icons/mob/robot/combat_large.dmi and b/icons/mob/robot/combat_large.dmi differ
diff --git a/icons/mob/robot/lost_large.dmi b/icons/mob/robot/lost_large.dmi
index 981b301c38..aefc3fe5a1 100644
Binary files a/icons/mob/robot/lost_large.dmi and b/icons/mob/robot/lost_large.dmi differ
diff --git a/icons/mob/robot/syndie_large.dmi b/icons/mob/robot/syndie_large.dmi
index 90edf7aa89..12b34658d0 100644
Binary files a/icons/mob/robot/syndie_large.dmi and b/icons/mob/robot/syndie_large.dmi differ
diff --git a/icons/mob/tallborg/dullahans64x64.dmi b/icons/mob/tallborg/dullahans64x64.dmi
index fe06ae0645..b78f4d543b 100644
Binary files a/icons/mob/tallborg/dullahans64x64.dmi and b/icons/mob/tallborg/dullahans64x64.dmi differ
diff --git a/librust_g.so b/librust_g.so
index c7810fbf80..496d566ac2 100755
Binary files a/librust_g.so and b/librust_g.so differ
diff --git a/rust_g.dll b/rust_g.dll
index 9b400774fa..c377fd575e 100644
Binary files a/rust_g.dll and b/rust_g.dll differ
diff --git a/tgui/packages/tgui/interfaces/BodyDesigner/BodyDesignerSpecificRecord.tsx b/tgui/packages/tgui/interfaces/BodyDesigner/BodyDesignerSpecificRecord.tsx
index 2b020257a0..b6a76770ab 100644
--- a/tgui/packages/tgui/interfaces/BodyDesigner/BodyDesignerSpecificRecord.tsx
+++ b/tgui/packages/tgui/interfaces/BodyDesigner/BodyDesignerSpecificRecord.tsx
@@ -20,224 +20,407 @@ export const BodyDesignerSpecificRecord = (props: {
const { activeBodyRecord, mapRef } = props;
return activeBodyRecord ? (
-
- act('menu', { menu: 'Main' })}
- >
- Back
-
- }
- >
-
-
- {activeBodyRecord.real_name}
-
-
- {activeBodyRecord.speciesname}
-
-
-
-
-
- {activeBodyRecord.synthetic}
-
-
- {activeBodyRecord.locked}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {Object.keys(activeBodyRecord.styles).map((key) => {
- const style = activeBodyRecord.styles[key];
- return (
-
- {style.styleHref ? (
-
- ) : (
- ''
- )}
- {style.colorHref ? (
-
-
-
-
- ) : (
- ''
- )}
- {style.colorHref2 ? (
-
-
-
-
- ) : (
- ''
- )}
+ act('menu', { menu: 'Main' })}
+ >
+ Back
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
- );
- })}
-
-
-
-
-
-
- {Object.keys(activeBodyRecord.markings).map((key) => {
- const marking = activeBodyRecord.markings[key];
+
+
+
+
+
+
+
+ {activeBodyRecord.synthetic}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {activeBodyRecord.locked ? 'Low' : 'High'}
+
+
+
+
+
+
+ {Object.keys(activeBodyRecord.flavors).map((key) => {
return (
-
-
-
-
-
-
-
-
-
+
+
+
+ {activeBodyRecord.flavors[key]}
+
);
})}
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {Object.keys(activeBodyRecord.styles).map((key) => {
+ const style = activeBodyRecord.styles[key];
+ return (
+
+ {style.styleHref ? (
+
+ ) : (
+ ''
+ )}
+ {style.colorHref ? (
+
+
+
+
+ ) : (
+ ''
+ )}
+ {style.colorHref2 ? (
+
+
+
+
+ ) : (
+ ''
+ )}
+ {style.colorHref3 ? (
+
+
+
+
+ ) : (
+ ''
+ )}
+
+ );
+ })}
+
+
+
+ {Object.keys(activeBodyRecord.markings).map((key) => {
+ const marking = activeBodyRecord.markings[key];
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ })}
+
+
+
+
+
) : (
diff --git a/tgui/packages/tgui/interfaces/BodyDesigner/index.tsx b/tgui/packages/tgui/interfaces/BodyDesigner/index.tsx
index be2178696f..4486cb7fe0 100644
--- a/tgui/packages/tgui/interfaces/BodyDesigner/index.tsx
+++ b/tgui/packages/tgui/interfaces/BodyDesigner/index.tsx
@@ -39,31 +39,31 @@ export const BodyDesigner = (props) => {
let body = MenuToTemplate[menu];
return (
-
+
- {disk ? (
-
-
-
-
-
- ) : (
- ''
- )}
+
+
+
+
+
{body}
diff --git a/tgui/packages/tgui/interfaces/BodyDesigner/types.ts b/tgui/packages/tgui/interfaces/BodyDesigner/types.ts
index 56f1eae39d..bf4dc9d6cb 100644
--- a/tgui/packages/tgui/interfaces/BodyDesigner/types.ts
+++ b/tgui/packages/tgui/interfaces/BodyDesigner/types.ts
@@ -25,7 +25,7 @@ export type activeBodyRecord = {
speciesname: string;
gender: string;
synthetic: string;
- locked: string;
+ locked: BooleanLike;
scale: string;
booc: string;
digitigrade: BooleanLike;
@@ -41,6 +41,23 @@ export type activeBodyRecord = {
Bodytype: { styleHref: string; style: string };
};
markings: { name: Record }; // Record entries match BP regions
+ scale_appearance: string;
+ offset_override: string;
+ species_sound: string;
+ weight: string;
+ blood_type: string;
+ blood_color: string;
+ blood_reagents: string;
+ flavors: {
+ general: string;
+ head: string;
+ face: string;
+ eyes: string;
+ arms: string;
+ hands: string;
+ legs: string;
+ feet: string;
+ };
};
type colourableStyle = {
diff --git a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx
index 3fd39c36e1..cd1b1088b9 100644
--- a/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx
+++ b/tgui/packages/tgui/interfaces/RobotChoose/IconSection.tsx
@@ -1,3 +1,4 @@
+import { useState } from 'react';
import { useBackend } from 'tgui/backend';
import { Box, Button, Flex, Input, Section, Stack } from 'tgui-core/components';
import { classes } from 'tgui-core/react';
@@ -6,12 +7,14 @@ import { Tooltip } from '../../components';
export const IconSection = (props: {
currentName: string;
+ mindName: string;
isDefaultName: boolean;
sprite?: string | null;
size?: string | null;
}) => {
const { act } = useBackend();
- const { currentName, isDefaultName, sprite, size } = props;
+ const { currentName, mindName, isDefaultName, sprite, size } = props;
+ const [robotName, setRobotName] = useState(currentName);
return (
Name:
-
+
act('rename', { value })}
+ value={robotName}
+ onChange={(e, value) => {
+ act('rename', { value });
+ setRobotName(value);
+ }}
maxLength={52}
textColor={isDefaultName ? 'red' : undefined}
/>
+
+
{!!sprite && !!size && (
diff --git a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx
index 91d8dcb7d5..828d0a60da 100644
--- a/tgui/packages/tgui/interfaces/RobotChoose/index.tsx
+++ b/tgui/packages/tgui/interfaces/RobotChoose/index.tsx
@@ -17,6 +17,7 @@ export const RobotChoose = (props) => {
sprite_datum,
theme,
currentName,
+ mind_name,
isDefaultName,
sprite_datum_class,
sprite_datum_size,
@@ -38,6 +39,7 @@ export const RobotChoose = (props) => {
/>