Revert "[READY] Taursuits and Tail socks [IDB IGNORE] (#19611)" (#19661)

This reverts commit 3e28b73e01.
This commit is contained in:
Kashargul
2026-08-14 17:32:53 +02:00
committed by GitHub
parent 4f1cadcb78
commit d872e9607a
125 changed files with 822 additions and 1741 deletions
+48 -56
View File
@@ -42,14 +42,15 @@
src.attach_accessory(null, tie)
set_clothing_index()
//VOREStation edit start
if(polychromic)
verbs |= /obj/item/clothing/proc/change_color
//VOREStation edit start
/obj/item/clothing/update_icon()
cut_overlays() //This removes all the overlays on the sprite and then goes down a checklist adding them as required.
if(forensic_data?.has_blooddna())
add_blood()
//TODO: strip out redundant icons like labcoats with an overlay badge, security uniforms with the trim, winter coats, etc etc.
. = ..()
/obj/item/clothing/equipped(mob/user,slot)
@@ -986,26 +987,14 @@
. = ..()
if(has_hood_sprite) //If we have a special hood_sprite, great, let's use it! Only used by /obj/item/clothing/suit/storage/hooded atm.
icon_state = "[toggleicon][hood_up ? "_t" : ""]"
update_clothing_icon()
/obj/item/clothing/suit/equipped(mob/user, slot)
//Let's make sure we're extra aggressive with taur settings.
icon_override = initial(icon_override)
taurized = FALSE
if(slot != slot_wear_suit)
RemoveHood()
if(ishuman(user))
var/mob/living/carbon/human/Hoomie = user
var/taurtail = istaurtail(Hoomie.tail_style)
if(taurtail)
taurize(Hoomie, taurtail)
update_clothing_icon()
..()
/obj/item/clothing/suit/dropped(mob/user, equipping, slot)
RemoveHood()
update_clothing_icon()
..()
/obj/item/clothing/suit/ui_action_click(mob/user, actiontype)
@@ -1028,9 +1017,9 @@
if(hood)
hood.canremove = TRUE // This shouldn't matter anyways but just incase.
if(ishuman(hood.loc))
var/mob/living/carbon/Carbmob = hood.loc
Carbmob.unEquip(hood, 1)
Carbmob.update_inv_wear_suit()
var/mob/living/carbon/H = hood.loc
H.unEquip(hood, 1)
H.update_inv_wear_suit()
hood.forceMove(src)
/obj/item/clothing/suit/proc/ToggleHood()
@@ -1040,64 +1029,69 @@
RemoveHood()
return
if(ishuman(loc))
var/mob/living/carbon/human/Hoomie = src.loc
if(Hoomie.wear_suit != src)
to_chat(Hoomie, span_warning("You must be wearing [src] to put up the hood!"))
var/mob/living/carbon/human/H = src.loc
if(H.wear_suit != src)
to_chat(H, span_warning("You must be wearing [src] to put up the hood!"))
return
if(Hoomie.head)
to_chat(Hoomie, span_warning("You're already wearing something on your head!"))
if(H.head)
to_chat(H, span_warning("You're already wearing something on your head!"))
return
else
if(color != hood.color)
hood.color = color
Hoomie.equip_to_slot_if_possible(hood,slot_head,0,0,1)
H.equip_to_slot_if_possible(hood,slot_head,0,0,1)
hood_up = TRUE
hood.canremove = FALSE
update_icon()
Hoomie.update_inv_wear_suit()
H.update_inv_wear_suit()
///Hood stuff end.
/obj/item/clothing/suit/update_clothing_icon()
if (ismob(loc))
var/mob/Mobbie = loc
Mobbie.update_inv_wear_suit()
if (ismob(src.loc))
var/mob/M = src.loc
M.update_inv_wear_suit()
/obj/item/clothing/suit/equipped(mob/user, slot)
if(ishuman(user))
var/mob/living/carbon/human/H = user
var/taurtail = istaurtail(H.tail_style)
if((taurized && !taurtail) || (!taurized && taurtail))
taurize(user, taurtail)
return ..()
///Establishes Icon overrides for taur bodies
/obj/item/clothing/suit/proc/taurize(mob/living/carbon/human/taur, has_taur_tail = FALSE)
/// We've already confirmed that we have a taur tail during equipped, this is just makes sure we get the correct icon override.
if(!has_taur_tail)
return
if(has_taur_tail)
var/datum/sprite_accessory/tail/taur/taurtail = taur.tail_style
if(taurtail.suit_sprites && (icon_exists(taurtail.suit_sprites, get_worn_icon_state(slot_wear_suit_str))))
icon_override = taurtail.suit_sprites
taurized = TRUE
// means that if a taur puts on an already taurized suit without a taur sprite
// for their taur type, but the previous taur type had a sprite, it stays
// taurized and they end up with that taur style which is funny
else
taurized = FALSE
taurized = TRUE
if(!taurized)
icon_override = initial(icon_override)
taurized = FALSE
if(showtaurbutts) //We don't want the override icons if we're being asked to show that booty
return
// if we're not showing butts, then let's apply the proper overrides
var/datum/sprite_accessory/tail/taur/taurtail = taur.tail_style
if(taurtail?.suit_sprites && icon_exists(taurtail.suit_sprites, get_worn_icon_state(slot_wear_suit_str)))
icon_override = taurtail.suit_sprites
// Taur suits need to be shifted so it's centered on their taur half.
/obj/item/clothing/suit/make_worn_icon(body_type, slot_name, inhands, default_icon, default_layer = 0, icon/clip_mask)
// Taur suits need to be shifted so its centered on their taur half.
/obj/item/clothing/suit/make_worn_icon(body_type,slot_name,inhands,default_icon,default_layer = 0,icon/clip_mask)
var/image/standing = ..()
if(!standing)
return null
// Only apply the -16 offset when taurized AND showtaurbutts is FALSE
if(taurized && !showtaurbutts && icon_override)
if(taurized) //Special snowflake var on suits
standing.pixel_x = -16
standing.layer = TAUR_LAYERING
// but if we don't have an icon_override, we already have our offsets, set.
standing.layer = BODY_LAYER + TAIL_UPPER_LAYER + 1
return standing
/obj/item/clothing/suit/apply_accessories(image/standing)
. = ..()
if(LAZYLEN(accessories) && taurized && !showtaurbutts && standing)
// account for the offset of our standing image
for(var/image/I in standing.overlays)
I.pixel_x += 16
if(LAZYLEN(accessories) && taurized)
for(var/obj/item/clothing/accessory/A in accessories)
var/image/I = new(A.get_mob_overlay())
I.pixel_x = 16 //Opposite of the pixel_x on the suit (-16) from taurization to cancel it out and puts the accessory in the correct place on the body.
standing.add_overlay(I)
else
return ..()
///////////////////////////////////////////////////////////////////////
@@ -1168,8 +1162,6 @@
var/icon/rolled_down_sleeves_icon = 'icons/inventory/uniform/mob_sleeves_rolled.dmi'
update_icon_define_digi = "icons/inventory/uniform/mob_digi.dmi"
/// hehe, soon.
var/taurized = FALSE
/obj/item/clothing/under/attack_hand(mob/user)
if(LAZYLEN(accessories))
+2 -7
View File
@@ -24,11 +24,6 @@
if(forensic_data?.has_blooddna() && blood_sprite_state && ishuman(loc))
var/mob/living/carbon/human/H = loc
blood_sprite_state = "[blood_overlay_type]blood"
var/datum/sprite_accessory/tail/taur/taurtail = H.tail_style
var/image/bloodsies
if(taurized && taurtail.suit_sprites)
bloodsies = image(icon = taurtail.suit_sprites, icon_state = blood_sprite_state)
else
bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state)
bloodsies.color = blood_color
var/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state)
bloodsies.color = blood_color
standing.add_overlay(bloodsies)
@@ -21,7 +21,7 @@
allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, POCKET_SECURITY)
slowdown = 1.5
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
min_pressure_protection = 0
max_pressure_protection = 2 * ONE_ATMOSPHERE
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
@@ -87,7 +87,7 @@
slowdown = 0
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
siemens_coefficient = 0.9
flags_inv = HIDEHOLSTER
flags_inv = HIDETAIL|HIDEHOLSTER
body_parts_covered = UPPER_TORSO|ARMS
//Orange emergency space suit
@@ -47,7 +47,7 @@
body_parts_covered = CHEST|LEGS|ARMS
heat_protection = CHEST|LEGS|ARMS
cold_protection = CHEST|LEGS|ARMS
flags_inv = HIDEJUMPSUIT
flags_inv = HIDEJUMPSUIT|HIDETAIL
item_flags = THICKMATERIAL | AIRTIGHT
slowdown = 0
//will reach 10 breach damage after 25 laser carbine blasts, 3 revolver hits, or ~1 PTR hit. Completely immune to smg or sts hits.
@@ -80,7 +80,7 @@
allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, POCKET_SUIT_REGULATORS)
slowdown = 1.5
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
cold_protection = CHEST|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
@@ -77,8 +77,7 @@
/obj/item/clothing/suit/space/void/equipped(mob/M)
..()
/// for sealable void suits using the rig sprites like Engineering
icon_state = "[initial(icon_state)]"
var/mob/living/carbon/human/H = M
if(!istype(H)) return
@@ -95,8 +94,6 @@
to_chat(M, "You are unable to deploy your suit's helmet as \the [H.head] is in the way.")
else if (H.equip_to_slot_if_possible(hood, slot_head))
to_chat(M, "Your suit's helmet deploys with a hiss.")
if(sealable)
icon_state = "[initial(icon_state)]_sealed"
hood.canremove = FALSE
if(cooler)
@@ -184,8 +181,6 @@
H.drop_from_inventory(hood)
hood.forceMove(src)
playsound(src.loc, 'sound/machines/click2.ogg', 75, 1)
if(sealable)
icon_state = "[initial(icon_state)]"
else
if(H.head)
to_chat(H, span_danger("You cannot deploy your helmet while wearing \the [H.head]."))
@@ -194,8 +189,6 @@
hood.canremove = FALSE
to_chat(H, span_info("You deploy your suit helmet, sealing you off from the world."))
playsound(src.loc, 'sound/machines/click2.ogg', 75, 1)
if(sealable)
icon_state = "[initial(icon_state)]_sealed"
/obj/item/clothing/suit/space/void/click_alt(mob/living/user)
eject_tank()
+1 -1
View File
@@ -3,7 +3,7 @@
desc = "A traditional Zhan-Khazan garment."
icon_state = "zhan_furs"
body_parts_covered = CHEST|LEGS|FEET|ARMS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
drop_sound = 'sound/items/drop/leather.ogg'
pickup_sound = 'sound/items/pickup/leather.ogg'
+1 -1
View File
@@ -15,7 +15,7 @@
name = "wolf-taur armor vest"
desc = "An armored vest that protects against some damage. It appears to be created for a wolf-taur."
species_restricted = null //Species restricted since all it cares about is a taur half
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_wolf.dmi'
icon_state = "wolf_item"
item_state = "heavy_wolf_armor"
+8 -8
View File
@@ -26,7 +26,7 @@
slowdown = 1.0
allowed = list(POCKET_GENERIC, POCKET_EMERGENCY)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
siemens_coefficient = 0.9
flags = PHORONGUARD
item_flags = THICKMATERIAL
@@ -41,7 +41,7 @@
/obj/item/clothing/suit/bio_suit/general
icon_state = "bio_general"
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Virology biosuit, green stripe
/obj/item/clothing/head/bio_hood/virology
@@ -49,7 +49,7 @@
/obj/item/clothing/suit/bio_suit/virology
icon_state = "bio_virology"
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Security biosuit, grey with red stripe across the chest
/obj/item/clothing/head/bio_hood/security
@@ -57,7 +57,7 @@
/obj/item/clothing/suit/bio_suit/security
icon_state = "bio_security"
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Janitor's biosuit, grey with purple arms
/obj/item/clothing/head/bio_hood/janitor
@@ -65,7 +65,7 @@
/obj/item/clothing/suit/bio_suit/janitor
icon_state = "bio_janitor"
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//Scientist's biosuit, white with a pink-ish hue
/obj/item/clothing/head/bio_hood/scientist
@@ -73,12 +73,12 @@
/obj/item/clothing/suit/bio_suit/scientist
icon_state = "bio_scientist"
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
//CMO's biosuit, blue stripe
/obj/item/clothing/suit/bio_suit/cmo
icon_state = "bio_cmo"
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
/obj/item/clothing/head/bio_hood/cmo
icon_state = "bio_cmo"
@@ -89,4 +89,4 @@
desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses."
icon_state = "plaguedoctor"
item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio")
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
+2 -2
View File
@@ -128,7 +128,7 @@
desc = "A plastic replica of a mercenary combat space suit, you'll look just like a real bloodthirsty mercenary in this! This is a toy, it is not made for use in space!"
w_class = ITEMSIZE_NORMAL
allowed = list(POCKET_GENERIC, POCKET_EMERGENCY)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
body_parts_covered = CHEST|ARMS|HANDS|LEGS|FEET
/obj/item/clothing/suit/hastur
@@ -258,7 +258,7 @@
desc = "A suit that completely restrains the wearer."
icon_state = "straight_jacket"
body_parts_covered = CHEST|LEGS|FEET|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
var/resist_time = 4800 // Eight minutes.
@@ -24,7 +24,7 @@
/obj/item/clothing/suit/drake_cloak
name = "drake cloak"
desc = "A simple cloak for drake-taurs."
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_drake.dmi'
icon_state = "cloak"
item_state_slots = list(slot_r_hand_str = "capjacket", slot_l_hand_str = "capjacket")
body_parts_covered = UPPER_TORSO|ARMS
@@ -41,7 +41,7 @@
/obj/item/clothing/suit/barding
name = DEVELOPER_WARNING_NAME
description_info = "You need to be a horsy to wear that."
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_horse.dmi'
item_state_slots = list(slot_r_hand_str = "capjacket", slot_l_hand_str = "capjacket")
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS
pixel_x = -16
@@ -73,7 +73,7 @@
/obj/item/clothing/suit/taur
name = DEVELOPER_WARNING_NAME
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_horse.dmi'
body_parts_covered = CHEST
pixel_x = -16
+3 -3
View File
@@ -20,7 +20,7 @@
body_parts_covered = CHEST|LEGS|FEET|ARMS|HANDS
allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, /obj/item/extinguisher)
slowdown = 1.0
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
item_flags = 0
heat_protection = CHEST|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -63,7 +63,7 @@
permeability_coefficient = 0.01
slowdown = 2
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
heat_protection = CHEST|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -107,7 +107,7 @@
allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, /obj/item/clothing/head/radiation)
slowdown = 1.5
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
item_flags = THICKMATERIAL
/obj/item/clothing/suit/radiation/Initialize(mapload)
-284
View File
@@ -1,284 +0,0 @@
//This file contains the vars used to give taur and tail socks a baseline color, using their base sprite, upon the various suits and space suits that require them
// I've tried to reasonably color match to the vibes of the overall sprite just to be sure. - Pooj
// Rig Suits deploy a clothing path'd suit, so we just need to keep that in mind for sealed/unsealed related applications.
// These are all stored seperately because I don't really want to edit all the clothing paths myself and change a bunch of files. plays nicer with downstreams too.alist
/obj/item/clothing/suit
///does the suit require a full-envelop suit sock? Spacesuits, bio suits, rad suits, etc.
var/requires_tailsock = FALSE
/// what color is the tailsock going to be? Defaults to a nice, dark grey that usually matches everything.
var/tailsock_color = "#1F1F1F"
/// toggle tailsock options
var/tailsock_toggle = TRUE
/// toggle taur extending for the sprites, for people who want their butts to be shown off, default false
var/showtaurbutts = FALSE
/obj/item/clothing/suit/space
/// unrelated to tailsocks directly, buuuuuut, taur suits have dedicated sealed/unsealed variants and that should be applied, too.
var/sealable = FALSE
requires_tailsock = TRUE
///This is purely for player preference.
/obj/item/clothing/suit/verb/toggletailsock()
set name = "Toggle Tail Sock"
set category = "Object"
set desc = "Toggle the tail sock on your suit."
toggle_tailsock(usr)
/obj/item/clothing/suit/proc/toggle_tailsock(mob/user)
if(!user || !ishuman(user))
return
var/mob/living/carbon/human/H = user
if(H.wear_suit != src)
to_chat(user, span_warning("You must be wearing \the [src] to adjust the tail sock."))
return
if(!requires_tailsock)
to_chat(user, span_notice("\The [src] does not have a tail sock extruder."))
return
if(showtaurbutts)
to_chat(user, span_notice("You must enable full body taur sheathing on \the [src] first."))
return
tailsock_toggle = !tailsock_toggle
to_chat(user, span_notice("You toggle \the [src]'s dynamic tail sheath [tailsock_toggle ? "ON" : "OFF"]."))
H.update_inv_wear_suit()
H.update_tail_showing()
/obj/item/clothing/suit/verb/toggletaursuit()
set name = "Toggle Taur Extension"
set category = "Object"
set desc = "Toggle the full body taur sprite on your suit."
toggle_taurextender(usr)
/obj/item/clothing/suit/proc/toggle_taurextender(mob/user)
if(!user || !ishuman(user))
return
var/mob/living/carbon/human/H = user
if(H.wear_suit != src)
to_chat(user, span_warning("You must be wearing \the [src] to adjust the taur extension."))
return
var/taurtail = istaurtail(H.tail_style)
if(!taurtail)
to_chat(user, span_warning("\The [src]'s taur extension requires a taur body."))
return
showtaurbutts = !showtaurbutts
if(showtaurbutts)
// Classic Mode: turn off suit tailsock sleeve
tailsock_toggle = FALSE
to_chat(user, span_notice("You disable full body sheathing on \the [src] (Classic mode)."))
else
// Modern Taur Mode: Enable suit override & tail sheath
tailsock_toggle = TRUE
to_chat(user, span_notice("You enable full body taur sheathing on \the [src]."))
taurize(H, taurtail)
H.update_inv_wear_suit()
H.update_tail_showing()
/obj/item/clothing/suit/examine(mob/user)
. = ..()
///It's a little thing, but feedback can help someone wondering why a suit isn't hinding their tails/butt.
. += span_notice("The dynamic sheathing toggle is [tailsock_toggle ? "enabled" : "disabled"].")
//The following for specific sock colors more than anything.
//Fire suits
/obj/item/clothing/suit/fire
requires_tailsock = TRUE
tailsock_color = "#343442"
/obj/item/clothing/suit/fire/firefighter
tailsock_color = "#3F3F3F"
/obj/item/clothing/suit/fire/heavy
tailsock_color = "#3F3F3F"
//Bomb suits
/obj/item/clothing/suit/bomb_suit
requires_tailsock = TRUE
tailsock_color = "#9C8956"
/obj/item/clothing/suit/bomb_suit/security
tailsock_color = "#4A4A2F"
// Bio suits
/obj/item/clothing/suit/bio_suit
requires_tailsock = TRUE
tailsock_color = "#BBBBBB"
/obj/item/clothing/suit/bio_suit/security
tailsock_color = "#5F615E"
/obj/item/clothing/suit/bio_suit/janitor
tailsock_color = "#5F615E"
/obj/item/clothing/suit/bio_suit/scientist
tailsock_color = "#CCB8A8"
// Radiation
/obj/item/clothing/suit/radiation
requires_tailsock = TRUE
// Misc suits
/obj/item/clothing/suit/straight_jacket
requires_tailsock = TRUE
tailsock_color = "#AAAAAA"
//Station Void Space Suits
/obj/item/clothing/suit/space/void/makeshift
tailsock_color = "#573226"
/obj/item/clothing/suit/space/void/refurb
tailsock_color = "#293f61"
/obj/item/clothing/suit/space/void/captain
tailsock_color = "#7F7F7F"
/obj/item/clothing/suit/space/void/security/prototype
tailsock_color = "#7F7F7F"
/obj/item/clothing/suit/space/void/pilot
tailsock_color = "#6B5E52"
/obj/item/clothing/suit/space/void/exploration/alt
tailsock_color = "#6B5E52"
/obj/item/clothing/suit/space/void/engineering
sealable = TRUE
tailsock_color = "#4E4139"
/obj/item/clothing/suit/space/void/engineering/salvage
tailsock_color = "#3E3823"
/obj/item/clothing/suit/space/void/atmos
sealable = TRUE
tailsock_color = "#6B5E52"
/obj/item/clothing/suit/space/void/mining
sealable = TRUE
tailsock_color = "#6B5E52"
/obj/item/clothing/suit/space/void/mining/alt
sealable = TRUE
tailsock_color = "#5F615E"
/obj/item/clothing/suit/space/void/medical
sealable = TRUE
tailsock_color = "#645C56"
/obj/item/clothing/suit/space/void/security
sealable = TRUE
tailsock_color = "#39342D"
/obj/item/clothing/suit/space/void/security/riot
sealable = TRUE
tailsock_color = "#660000"
/obj/item/clothing/suit/space/void/security/alt
sealable = TRUE
tailsock_color = "#1D1D1D"
/obj/item/clothing/suit/armor/captain
requires_tailsock = TRUE
tailsock_color = "#1E3E50"
/obj/item/clothing/suit/space/emergency
tailsock_color = "#282828"
//Bay ported Station Suits
/obj/item/clothing/suit/space/void/engineering/alt2
sealable = FALSE
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/void/atmos/alt2
sealable = FALSE
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/void/captain/alt
sealable = FALSE
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/void/medical/alt2
sealable = FALSE
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/void/exploration/alt2
sealable = FALSE
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/void/mining/alt2
sealable = FALSE
tailsock_color = "#2B3440"
/obj/item/clothing/suit/space/anomaly/alt
sealable = FALSE
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/void/security/riot/alt
sealable = FALSE
tailsock_color = "#1C222B"
//Event Space Suits
/obj/item/clothing/suit/space/void/hev
tailsock_color = "#2D313C"
/obj/item/clothing/suit/space/void/aether
tailsock_color = "#423F4F"
/obj/item/clothing/suit/space/void/custodian
tailsock_color = "#453542"
/obj/item/clothing/suit/space/void/excelsior
tailsock_color = "#6D6D6B"
//Antag Space suits
/obj/item/clothing/suit/space/syndicate
tailsock_color = "#282828"
/obj/item/clothing/suit/space/void/merc
sealable = TRUE
tailsock_color = "#851e0e"
/obj/item/clothing/suit/space/void/merc/fire
sealable = TRUE
tailsock_color = "#483031"
/obj/item/clothing/suit/space/void/wizard
sealable = TRUE
tailsock_color = "#493955"
//snowflake species suits
/obj/item/clothing/suit/space/vox
requires_tailsock = FALSE
/obj/item/clothing/suit/space/void/altevian_heartbreaker
requires_tailsock = FALSE
/obj/item/clothing/suit/space/void/zaddat
requires_tailsock = FALSE
//RIG's space suits
/obj/item/clothing/suit/space/rig/zero
tailsock_color = "#232226"
/obj/item/clothing/suit/space/rig/baymed
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/rig/pathfinder
tailsock_color = "#1C222B"
/obj/item/clothing/suit/space/rig/advsuit
tailsock_color = "#6B5E52"
/obj/item/clothing/suit/space/rig/focalpoint
tailsock_color = "#303B40"
/obj/item/clothing/suit/space/rig/hephaestus
tailsock_color = "#2D253E"
+3 -3
View File
@@ -26,7 +26,7 @@
key = "swish"
/datum/decl/emote/human/swish/do_emote(mob/living/carbon/human/user)
user.animate_tail_start()
user.animate_tail_once()
/datum/decl/emote/human/wag
key = "wag"
@@ -44,13 +44,13 @@
key = "qwag"
/datum/decl/emote/human/qwag/do_emote(mob/living/carbon/human/user)
user.animate_tail_start()
user.animate_tail_fast()
/datum/decl/emote/human/fastsway
key = "fastsway"
/datum/decl/emote/human/fastsway/do_emote(mob/living/carbon/human/user)
user.animate_tail_start()
user.animate_tail_fast()
/datum/decl/emote/human/swag
key = "swag"
@@ -2,7 +2,6 @@
#define DATA_X_OFFSET "x"
#define DATA_Y_OFFSET "y"
#define DATA_ROTATION "rotation"
#define DEFAULT_RGB_OUTLINE rgb(50,50,50)
/obj/item/remote_scene_tool/voodoo_doll
name = "voodoo doll"
@@ -85,23 +84,17 @@
output.Scale(data[DATA_SCALE], data[DATA_SCALE])
return output
/obj/item/remote_scene_tool/voodoo_doll/proc/generate_layer_image(image/input, matrix/newtransform, outline_width = 0, outline_color = DEFAULT_RGB_OUTLINE)
/obj/item/remote_scene_tool/voodoo_doll/proc/generate_layer_image(image/input, matrix/newtransform, outline_width = 0, outline_color = rgb(50,50,50))
if(input == null)
return null
// Please for the love of fuck stop kidnapping taur bodies.
var/image/doll_img = image(input)
doll_img.dir = SOUTH
doll_img.transform = newtransform
doll_img.layer = FLOAT_LAYER
doll_img.plane = FLOAT_PLANE // Strip PLANE_CH_STOMACH or mob-specific planes!
doll_img.appearance_flags = NONE // Strip RESET_PLANE / KEEP_TOGETHER flags!
input.dir = SOUTH
input.transform = newtransform
input.layer = FLOAT_LAYER
if(outline_width > 0)
doll_img.filters += filter(type="outline", size = outline_width, color = outline_color)
input.filters += filter(type="outline", size = outline_width, color = outline_color)
return doll_img
return input
/obj/item/remote_scene_tool/voodoo_doll/update_icon()
. = ..()
@@ -131,34 +124,26 @@
if(no_fun_mode) return //no fun allowed
var/image/tail_image = null
if(ishuman(owner)) //Am I a real boy now, papa?
if(ishuman(owner)) //TODO, refactor the fuck out of this once I port the tgui filter manager stuff over.
var/mob/living/carbon/human/buddy = owner
var/datum/sprite_accessory/tail/tail_style = buddy.tail_style
var/is_tail_taur = istaurtail(tail_style)
var/icon/displacement_map = icon(src.icon, is_tail_taur ? "taurdisplacement" : "displacement", SOUTH)
var/image/displacement_rendered = get_humanoid_displacement_map_image(buddy, discarded_layer_indicies, displacement_map, 2, null)
var/is_tail_taur = istaurtail(buddy.tail_style)
var/icon/displacement_map = icon(src.icon,is_tail_taur ? "taurdisplacement" : "displacement",SOUTH)
var/image/displacement_rendered = get_humanoid_displacement_map_image(buddy,discarded_layer_indicies,displacement_map,2,null)
//tails need special attention because taurs
var/tailoutlinecolor = DEFAULT_RGB_OUTLINE //default to a grey, otherwise we use a darker version of one of the tail colors
if(tail_style?.do_colouration)
tailoutlinecolor = get_outline_color(buddy.r_tail, buddy.g_tail, buddy.b_tail, buddy.a_tail)
var/tailoutlinecolor = rgb(50,50,50) //default to a grey, otherwise we use a darker version of one of the tail colors
if(buddy.tail_style?.do_colouration)
tailoutlinecolor = get_outline_color(buddy.r_tail,buddy.g_tail,buddy.b_tail,buddy.a_tail)
// Let's get the tail image, checks species and custom tail!
var/image/raw_tail = buddy.get_tail_image()
if(raw_tail)
var/image/full_tail = buddy.apply_tailsock_layer(raw_tail, apply_to_mob = FALSE)
var/matrix/target_matrix = generate_layer_matrix(is_tail_taur ? taur_data : tail_data)
var/image/cooked_tail = generate_layer_image(full_tail, target_matrix, outline_size, tailoutlinecolor)
if(is_tail_taur && cooked_tail)
cooked_tail.filters += filter(type="alpha", flags = MASK_INVERSE)
tail_image = cooked_tail
var/image/tail_image = buddy.get_tail_image()
if(is_tail_taur)
tail_image = generate_layer_image(buddy.get_tail_image(),generate_layer_matrix(taur_data),outline_size,tailoutlinecolor)
tail_image.filters += filter(type="alpha", flags = MASK_INVERSE)
else
tail_image = generate_layer_image(buddy.get_tail_image(),generate_layer_matrix(tail_data),outline_size,tailoutlinecolor)
//same kind of scenario for wings
var/wingoutlinecolor = DEFAULT_RGB_OUTLINE
var/wingoutlinecolor = rgb(50,50,50)
if(buddy.wing_style?.do_colouration)
wingoutlinecolor = get_outline_color(buddy.r_wing,buddy.g_wing,buddy.b_wing,buddy.a_wing)
var/image/wing_image = generate_layer_image(buddy.get_wing_image(FALSE),generate_layer_matrix(wing_data),outline_size,wingoutlinecolor)
@@ -192,7 +177,6 @@
rotateMatrix.Turn(2) //very slight blur. this is unironically the best way to do it, any of the blur filters are just way too strong at a minimum value.
transform = rotateMatrix
#undef DEFAULT_RGB_OUTLINE
#undef DATA_X_OFFSET
#undef DATA_Y_OFFSET
#undef DATA_SCALE
@@ -305,10 +305,7 @@
return
/mob/living/carbon/human/set_dir(new_dir)
var/old_dir = dir
. = ..()
//we already check our tail through these procs now, tailsock/taur tail overlay needs higher priority to be updated correctly.
//this has specifically been updated to mutable_appearance and is not as costly as it used to be.
if(. && old_dir != new_dir && (old_dir == NORTH || new_dir == NORTH))
if(. && (species.tail || tail_style))
update_tail_showing()
update_inv_wear_suit()
@@ -291,8 +291,3 @@
holder.remove_status_indicator("dead")
holder.visible_message(span_warning("\The [src] literally just dies!"))
..()
//Moved flying logic out of update_icons
/mob/living/carbon/human/stop_flying()
if((. = ..()))
update_wing_showing()
@@ -287,8 +287,8 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/icon_x_offset = 0
var/icon_y_offset = 0
if(istype(tail_style, /datum/sprite_accessory/tail)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that.
if(tail_style.clip_mask) // trim it if we need to, for taur body types that don't have sprite sheets at all.
if(istype(tail_style, /datum/sprite_accessory/tail/taur)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that.
if(tail_style.clip_mask)
Cutter = new(icon = (tail_style.clip_mask_icon ? tail_style.clip_mask_icon : tail_style.icon), icon_state = tail_style.clip_mask_state)
Cutter.Blend("#000000", ICON_MULTIPLY) // Make it all black.
@@ -613,8 +613,6 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
update_inv_belt()
update_inv_back()
update_inv_wear_suit()
//check for tail related layers, mainly to resolve roundstart/spawn issues
update_tail_showing()
update_inv_r_hand()
update_inv_l_hand()
update_inv_handcuffed()
@@ -633,37 +631,30 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
remove_layer(UNIFORM_LAYER)
// Shoes can be affected by uniform being drawn onto them
//Shoes can be affected by uniform being drawn onto them
update_inv_shoes()
if(!w_uniform)
return
// Wearing a suit that prevents uniform rendering (e.g. non-RIG full suits)
if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space/rig))
return
return //Wearing a suit that prevents uniform rendering
var/obj/item/clothing/under/under = w_uniform
var/uniform_sprite = (istype(under) && !isnull(under.update_icon_define)) ? under.update_icon_define : INV_W_UNIFORM_DEF_ICON
var/icon/c_mask = null
var/uniform_sprite
if(istype(under) && !isnull(under.update_icon_define))
uniform_sprite = under.update_icon_define
else
uniform_sprite = INV_W_UNIFORM_DEF_ICON
// Check if a taur body is active on the mob
var/tail_is_rendered = (overlays_standing[get_tail_layer()] || overlays_standing[TAIL_UPPER_LAYER_HIGH])
// Clip uniform pants/legs off at the waist IF:
// Taur body with a mask and not fitted for taurs. Which is basically all of them lmaooo.
if(tail_is_rendered && tail_style?.clip_mask && (istype(under) && !under.taurized))
c_mask = tail_style.clip_mask
// Build uniform sprite with clip mask applied
overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(
body_type = species.get_bodytype(src),
slot_name = slot_w_uniform_str,
default_icon = uniform_sprite,
default_layer = UNIFORM_LAYER,
clip_mask = c_mask
)
//Build a uniform sprite
var/icon/c_mask = tail_style?.clip_mask
if(c_mask)
var/obj/item/clothing/suit/S = wear_suit
if((wear_suit?.flags_inv & HIDETAIL) || (istype(S) && S.taurized)) // Reasons to not mask: 1. If you're wearing a suit that hides the tail or if you're wearing a taurized suit.
c_mask = null
overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER, clip_mask = c_mask)
apply_layer(UNIFORM_LAYER)
/mob/living/carbon/human/update_inv_wear_id()
@@ -858,37 +849,31 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
remove_layer(SUIT_LAYER)
// Hide/show uniform & shoes
//Hide/show other layers if necessary
update_inv_w_uniform()
update_inv_shoes()
// Always ensure tail/taur states are updated so overlay existence is current
update_tail_showing()
update_wing_showing()
if(!wear_suit)
return // No point, no suit.
return //No point, no suit.
var/obj/item/clothing/suit/suit = wear_suit
var/suit_sprite = (istype(suit) && !isnull(suit.update_icon_define)) ? suit.update_icon_define : INV_SUIT_DEF_ICON
var/suit_sprite
if(istype(suit) && !isnull(suit.update_icon_define))
suit_sprite = suit.update_icon_define
else
suit_sprite = INV_SUIT_DEF_ICON
var/icon/c_mask = null
var/tail_is_rendered = overlays_standing[TAIL_LOWER_LAYER] || overlays_standing[tail_layering]
var/valid_clip_mask = tail_style?.clip_mask
// Check if a taur body is active and requires clipping the lower half of the suit off
var/tail_is_rendered = (overlays_standing[get_tail_layer()] || overlays_standing[TAIL_UPPER_LAYER_HIGH])
if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden.
c_mask = valid_clip_mask
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER, clip_mask = c_mask)
// Apply the clip mask to trim our suit for taur body fitting
if(tail_is_rendered && tail_style?.clip_mask && !(istype(suit) && suit.taurized))
c_mask = tail_style.clip_mask
// Generate suit overlay
overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(
body_type = species.get_bodytype(src),
slot_name = slot_wear_suit_str,
default_icon = suit_sprite,
default_layer = SUIT_LAYER,
clip_mask = c_mask
)
apply_layer(SUIT_LAYER)
/mob/living/carbon/human/update_inv_pockets()
@@ -1001,13 +986,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
apply_layer(L_HAND_LAYER)
/mob/living/carbon/human/proc/get_tail_layer()
var/list/lower_layer_dirs = LOWER_TAIL_DIRS // Tail below clothing on side views too.
if(!tail_style) // Sanity checks good checks.
return
else
var/list/lower_layer_dirs = list(SOUTH, EAST, WEST) //Tail below clothing on side views too.
if(tail_style)
lower_layer_dirs = tail_style.lower_layer_dirs.Copy()
if(istaurtail(tail_style) || (dir in lower_layer_dirs))
if(dir in lower_layer_dirs)
return TAIL_LOWER_LAYER
else
return TAIL_UPPER_LAYER
@@ -1016,378 +999,130 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
if(QDESTROYING(src))
return
// Clear previous tail layer assignments
for(var/layers in TAIL_LAYER_CLEARING)
remove_layer(layers)
remove_layer(TAIL_UPPER_LAYER)
remove_layer(TAIL_UPPER_LAYER_HIGH)
remove_layer(TAIL_UPPER_LAYER_LOW)
remove_layer(TAIL_LOWER_LAYER)
var/tail_layer = get_tail_layer()
// Use default, let clip mask handle everything
if(tail_style && tail_style.clip_mask_state && !istaurtail(tail_style))
tail_layer = TAIL_UPPER_LAYER
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
if(tail_layer == TAIL_UPPER_LAYER)
tail_layer = tail_layering
update_vore_tail_sprite()
var/obj/item/organ/external/chest = organs_by_name[BP_TORSO]
var/image/tail_image = get_tail_image()
if(tail_image)
// Process tailsock & North-facing layer overrides
// apply_tailsock_layer is our heavy lifter for tail applying!
tail_image = apply_tailsock_layer(tail_image, tail_layer, apply_to_mob = TRUE)
tail_image.layer = BODY_LAYER+tail_layer
overlays_standing[tail_layer] = tail_image
apply_layer(tail_layer)
return
var/species_tail = species?.get_tail(src) // Species tail icon_state prefix.
//This one is actually not that bad I guess.
if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL))
var/icon/tail_s = get_tail_icon()
tail_image = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+tail_layer)
tail_image.alpha = chest?.transparent ? 180 : 255
overlays_standing[tail_layer] = tail_image
animate_tail_reset()
//TODO: Is this the appropriate place for this, and not on species...?
//Yes, and we can make it better too.
/mob/living/carbon/human/proc/get_tail_image_species()
var/race_key = species.get_race_key(src)
var/icon_key = "[race_key]_[r_skin]_[g_skin]_[b_skin]_[r_hair]_[g_hair]_[b_hair]"
/mob/living/carbon/human/proc/get_tail_icon()
var/icon_key = "[species.get_race_key(src)][r_skin][g_skin][b_skin][r_hair][g_hair][b_hair]"
var/icon/tail_icon = GLOB.tail_icon_cache[icon_key]
if(!tail_icon)
//generate a new one
var/species_tail_anim = species.get_tail_animation(src)
if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //Allow override of file for non-animated tails
if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi'
tail_icon = new/icon(species_tail_anim)
tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
// The following will not work with animated tails.
var/use_species_tail = species.get_tail_hair(src)
if(use_species_tail)
var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]")
hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult
tail_icon.Blend(hair_icon, ICON_OVERLAY)
GLOB.tail_icon_cache[icon_key] = tail_icon
var/mutable_appearance/tail_app = GLOB.tail_icon_cache[icon_key]
if(tail_app)
return image(tail_app)
var/species_tail_anim = species.get_tail_animation(src)
if(!species_tail_anim && species.icobase_tail)
species_tail_anim = species.icobase
if(!species_tail_anim)
species_tail_anim = 'icons/effects/species.dmi'
// Base tail appearance
tail_app = mutable_appearance(species_tail_anim, "[tail_style]")
tail_app.color = rgb(r_skin, g_skin, b_skin)
tail_app.blend_mode = species.color_mult ? BLEND_MULTIPLY : BLEND_ADD
// Hair / Secondary overlay
var/use_species_tail = species.get_tail_hair(src)
if(use_species_tail)
var/tail_species_state = "[species.get_tail(src)]_[use_species_tail]"
var/mutable_appearance/hair_app = mutable_appearance('icons/effects/species.dmi', tail_species_state)
hair_app.color = rgb(r_hair, g_hair, b_hair)
hair_app.blend_mode = species.color_mult ? BLEND_MULTIPLY : BLEND_ADD
tail_app.overlays += hair_app
// Cache the tail for later use
GLOB.tail_icon_cache[icon_key] = tail_app
return image(tail_app)
/mob/living/carbon/human/proc/get_tail_image()
// Pull torso alpha channel information
var/torso_alpha = 255
var/obj/item/organ/external/chest = organs_by_name[BP_TORSO]
if(chest)
torso_alpha = chest.alpha
// Synthetic check
var/datum/robolimb/model = isSynthetic()
if(istype(model) && model.includes_tail && !tail_style && !tail_hidden)
var/mutable_appearance/syn_tail = mutable_appearance(synthetic.icon, "tail")
syn_tail.color = rgb(r_skin, g_skin, b_skin)
var/image/syn_img = image(syn_tail)
syn_img.alpha = torso_alpha
return syn_img
// Custom tail check
if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden)
var/target_icon = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon
var/target_state = (wagging && tail_style.ani_state) ? tail_style.ani_state : tail_style.icon_state
// arrange our taur loafing effects
if(tail_style.can_loaf && !is_shifted)
pixel_y = resting ? -tail_style.loaf_offset * size_multiplier : default_pixel_y
// base tail appearance
var/mutable_appearance/base_tail = mutable_appearance(target_icon, target_state)
if(tail_style.do_colouration)
base_tail.color = rgb(r_tail, g_tail, b_tail)
// basic tail image to build upon
var/image/working = image(icon = target_icon, icon_state = null)
working.overlays += base_tail
if(tail_style.extra_overlay)
var/ex1_state = (wagging && tail_style.ani_state) ? tail_style.extra_overlay_w : tail_style.extra_overlay
var/mutable_appearance/ex1 = mutable_appearance(target_icon, ex1_state)
ex1.color = rgb(r_tail2, g_tail2, b_tail2)
working.overlays += ex1
if(tail_style.extra_overlay2)
var/ex2_state = (wagging && tail_style.ani_state) ? tail_style.extra_overlay2_w : tail_style.extra_overlay2
var/mutable_appearance/ex2 = mutable_appearance(target_icon, ex2_state)
ex2.color = rgb(r_tail3, g_tail3, b_tail3)
working.overlays += ex2
if(tail_style.em_block)
working.overlays += em_block_image_generic(working)
if(istaurtail(tail_style) || islongtail(tail_style))
working.pixel_x = tail_style.offset_x
working.pixel_y = tail_style.offset_y
if(istaurtail(tail_style))
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
if(taurtype.can_ride && !riding_datum)
riding_datum = new /datum/riding/taur(src)
add_verb(src, /mob/living/carbon/human/proc/taur_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
// Combine custom tail alpha variable with the torso's alpha channel
working.alpha = (a_tail != null) ? min(a_tail, torso_alpha) : torso_alpha
return working
// no custom tail? let's get the species default then
if(species && tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !tail_hidden)
var/image/species_tail_img = get_tail_image_species()
if(species_tail_img)
species_tail_img.alpha = torso_alpha
return species_tail_img
return null
return tail_icon
/mob/living/carbon/human/proc/set_tail_state(t_state)
if(QDESTROYING(src) || !tail_style)
return null
// wag compatibility check
if(tail_style.ani_state)
wagging = (t_state == tail_style.ani_state)
else
wagging = FALSE
// refresh our tail, please ~
update_tail_showing()
var/tail_layer = get_tail_layer()
return overlays_standing[tail_layer]
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
if(tail_layer == TAIL_UPPER_LAYER)
tail_layer = tail_layering
var/image/tail_overlay = overlays_standing[tail_layer]
//rather than repeatedly trying to assert offsets while rendering the code, let's kick this out into a more managable proc shall we
/mob/living/carbon/human/proc/get_tail_offsets(obj/item/clothing/suit/socksuit, datum/sprite_accessory/tail/tailtype)
var/off_x = tailtype ? tailtype.offset_x : 0
var/off_y = tailtype ? tailtype.offset_y : 0
remove_layer(TAIL_UPPER_LAYER)
remove_layer(TAIL_UPPER_LAYER_HIGH)
remove_layer(TAIL_UPPER_LAYER_LOW)
remove_layer(TAIL_LOWER_LAYER)
// Add suit offset if the suit isn't using an icon override
if(socksuit && !socksuit.icon_override)
off_x += socksuit.pixel_x
off_y += socksuit.pixel_y
if(tail_overlay)
overlays_standing[tail_layer] = tail_overlay
if(species.get_tail_animation(src))
tail_overlay.icon_state = t_state
. = tail_overlay
return list(off_x, off_y)
apply_layer(tail_layer)
/mob/living/carbon/human/proc/apply_tailsock_layer(image/tailoverlays, target_layer, apply_to_mob = TRUE)
if(!tailoverlays)
return null
var/obj/item/clothing/suit/socksuit = wear_suit
var/datum/sprite_accessory/tail/tailtype = tail_style
// Simplify our offset maths
var/list/offsets = get_tail_offsets(socksuit, tailtype)
var/total_off_x = offsets[1]
var/total_off_y = offsets[2]
// Fallback in case target_layer wasn't passed by the parent proc
if(!target_layer)
target_layer = get_tail_layer()
if(!target_layer)
target_layer = tail_layering
var/image/tail_img = image(tailoverlays)
tail_img.layer = target_layer
tail_img.pixel_x = total_off_x
tail_img.pixel_y = total_off_y
// Get our tailsock ready
var/has_sock = FALSE
var/icon/sock_icon = null
var/sock_state = null
if(socksuit && socksuit.requires_tailsock && socksuit.tailsock_toggle && tailtype)
has_sock = TRUE
sock_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : socksuit.icon
if(wagging && tailtype.tailsock_wagicon)
sock_state = tailtype.tailsock_wagicon
else if(tailtype.tailsock_iconstate)
sock_state = tailtype.tailsock_iconstate
else if(socksuit.item_state)
sock_state = socksuit.item_state
var/image/upper_sock_img = null
//whack on our lower layer directional tailsock, if needed
if(has_sock && sock_icon && sock_state)
upper_sock_img = image(icon = sock_icon, icon_state = sock_state)
upper_sock_img.alpha = socksuit.alpha
if(socksuit.tailsock_color)
upper_sock_img.color = socksuit.tailsock_color
if(target_layer != TAIL_LOWER_LAYER)
var/mutable_appearance/sock_overlay = mutable_appearance(sock_icon, sock_state)
if(socksuit.tailsock_color)
sock_overlay.color = socksuit.tailsock_color
//allow sneaky suits to have sneaky suit socks too
sock_overlay.alpha = socksuit.alpha
sock_overlay.layer = FLOAT_LAYER + 0.1
tail_img.overlays += sock_overlay
//we don't need a sock, so let's make a fake tail to appear on top of our clothes because that looks nicer
//We basically have every sock given their markings at this point. If your tail shows, it has its markings too.
else if(tailtype)
//just in case we have a null tailsock_icon somehow
var/icon/sock_mark_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : tailtype.icon
// If we don't need a sock, and we're not worrying about coloring (snowflake)
if(!tail_style.do_colouration)
var/n_state = (wagging && tailtype.ani_state) ? tailtype.ani_state : tailtype.icon_state
//we'll just get our default as our bonus layer
upper_sock_img = image(icon = tailtype.icon, icon_state = n_state)
// Generate the snipped base tail using the dedicated tailsock icon states instead of the full body state
else
var/n_state = (wagging && tailtype.tailsock_wagicon) ? tailtype.tailsock_wagicon : tailtype.tailsock_iconstate
upper_sock_img = image(icon = sock_mark_icon, icon_state = n_state)
var/mutable_appearance/base_north = mutable_appearance(sock_mark_icon, n_state)
if(tailtype.do_colouration)
base_north.color = rgb(r_tail, g_tail, b_tail)
upper_sock_img.overlays += base_north
// Attach secondary markings if present
if(tailtype.tailsock_markings)
var/m1_nstate = (wagging) ? tailtype.tailsock_wagmarkings : tailtype.tailsock_markings
var/mutable_appearance/m1_north = mutable_appearance(sock_mark_icon, m1_nstate)
m1_north.color = rgb(r_tail2, g_tail2, b_tail2)
m1_north.layer = FLOAT_LAYER + 0.01
upper_sock_img.overlays += m1_north
if(tailtype.tailsock_markings2)
var/m2_nstate = (wagging) ? tailtype.tailsock_wagmarkings2 : tailtype.tailsock_markings2
var/mutable_appearance/m2_north = mutable_appearance(sock_mark_icon, m2_nstate)
m2_north.color = rgb(r_tail3, g_tail3, b_tail3)
m2_north.layer = FLOAT_LAYER + 0.02
upper_sock_img.overlays += m2_north
//voodoo protection of butt theft
if(apply_to_mob)
//paste normal tail on their intended level
overlays_standing[target_layer] = tail_img
apply_layer(target_layer)
// apply our taur sock to its correct layer, voodoo is south only so should be fine... right?? Right byond?????
if(upper_sock_img)
//backpacks render over everything north face unless this is specifically set higher on the image.layer - even if it's in the higher index....
//have I mentioned how much I hate this system??
upper_sock_img.layer = TAIL_UPPER_LAYER_HIGH
upper_sock_img.pixel_x = total_off_x
upper_sock_img.pixel_y = total_off_y
overlays_standing[TAIL_UPPER_LAYER_HIGH] = upper_sock_img
apply_layer(TAIL_UPPER_LAYER_HIGH)
return tail_img
/mob/living/carbon/human/proc/animate_tail_reset()
if(QDESTROYING(src) || !tail_style)
//Not really once, since BYOND can't do that.
//Update this if the ability to flick() images or make looping animation start at the first frame is ever added.
//You can sort of flick images now with flick_overlay -Aro
/mob/living/carbon/human/proc/animate_tail_once()
if(QDESTROYING(src))
return
if(stat == DEAD)
set_tail_state(tail_style.icon_state)
toggle_tail(FALSE) // Stop wagging on death
else
// Resets tail state based on current wagging flag
set_tail_state(wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)
var/t_state = "[species.get_tail(src)]_once"
var/tail_layer = get_tail_layer()
if(src.tail_style && src.tail_style.clip_mask_state)
tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything
var/image/tail_overlay = overlays_standing[tail_layer]
if(tail_overlay && tail_overlay.icon_state == t_state)
return //let the existing animation finish
tail_overlay = set_tail_state(t_state) // Calls remove_layer & apply_layer
if(tail_overlay)
spawn(20)
//check that the animation hasn't changed in the meantime
if(overlays_standing[tail_layer] == tail_overlay && tail_overlay.icon_state == t_state)
animate_tail_stop()
/mob/living/carbon/human/proc/animate_tail_start()
if(QDESTROYING(src) || !tail_style)
if(QDESTROYING(src))
return
toggle_tail(TRUE)
if(tail_style.ani_state)
set_tail_state(tail_style.ani_state)
set_tail_state("[species.get_tail(src)]_slow[rand(0,9)]")
/mob/living/carbon/human/proc/animate_tail_fast()
if(QDESTROYING(src))
return
set_tail_state("[species.get_tail(src)]_loop[rand(0,9)]")
/mob/living/carbon/human/proc/animate_tail_reset()
if(QDESTROYING(src))
return
if(stat != DEAD)
set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]")
else
set_tail_state("[species.get_tail(src)]_static")
toggle_tail(FALSE) //So tails stop when someone dies. TODO - Fix this hack ~Leshana
/mob/living/carbon/human/proc/animate_tail_stop()
if(QDESTROYING(src) || !tail_style)
return
toggle_tail(FALSE)
set_tail_state(tail_style.icon_state)
/mob/living/carbon/human/proc/update_vore_belly_sprite()
if(QDESTROYING(src))
return
remove_layer(VORE_BELLY_LAYER)
var/image/vore_belly_image = get_vore_belly_image()
if(vore_belly_image)
vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER
overlays_standing[VORE_BELLY_LAYER] = vore_belly_image
vore_belly_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT.
vore_belly_image.appearance_flags = appearance_flags
apply_layer(VORE_BELLY_LAYER)
/mob/living/carbon/human/proc/get_vore_belly_image()
if(!(wear_suit && wear_suit.flags_inv & HIDETAIL))
var/vs_fullness = vore_fullness_ex["stomach"]
var/icon/vorebelly_s = new/icon(icon = 'icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]")
vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD)
var/image/working = image(vorebelly_s)
working.overlays += em_block_image_generic(working)
return working
return null
/mob/living/carbon/human/proc/vore_belly_animation()
if(!struggle_anim_stomach)
struggle_anim_stomach = TRUE
update_vore_belly_sprite()
spawn(1.2 SECONDS)
struggle_anim_stomach = FALSE
update_vore_belly_sprite()
/mob/living/carbon/human/proc/update_vore_tail_sprite()
if(QDESTROYING(src))
return
remove_layer(VORE_TAIL_LAYER)
var/image/vore_tail_image = get_vore_tail_image()
if(vore_tail_image)
vore_tail_image.layer = BODY_LAYER + VORE_TAIL_LAYER
// This one line of code. THIS ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT.
vore_tail_image.plane = PLANE_CH_STOMACH
vore_tail_image.appearance_flags = appearance_flags
overlays_standing[VORE_TAIL_LAYER] = vore_tail_image
apply_layer(VORE_TAIL_LAYER)
/mob/living/carbon/human/proc/get_vore_tail_image()
if(!tail_style || !istaurtail(tail_style) || !tail_style.vore_tail_sprite_variant)
return null
var/vs_fullness = vore_fullness_ex["taur belly"]
var/loaf_alt = lying && tail_style.belly_variant_when_loaf
var/fullness_icons = min(tail_style.fullness_icons, vs_fullness)
var/target_state = "Taur[tail_style.vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]"
//optimizing this with mutable_appearance, since it includes support for animations!
var/mutable_appearance/vorebelly_ma = mutable_appearance(tail_style.bellies_icon_path, target_state)
var/obj/item/clothing/suit/sockable = wear_suit
//scootchin' on by here to tailsock the tummy since it's important.
if(sockable && sockable.tailsock_toggle && sockable.tailsock_color)
vorebelly_ma.color = sockable.tailsock_color
else
var/base_color = vore_sprite_color["taur belly"]
vorebelly_ma.color = base_color
var/image/working = image(vorebelly_ma)
working.pixel_x = -16
if(tail_style.em_block) // Let 'em glow still
working.overlays += em_block_image_generic(working)
return working
/mob/living/carbon/human/proc/vore_tail_animation()
if(tail_style.struggle_anim && !struggle_anim_taur)
struggle_anim_taur = TRUE
update_vore_tail_sprite()
spawn(12)
// Prevent runtimes if the mob is destroyed while the animation timer was ticking
if(!src || QDESTROYING(src))
return
struggle_anim_taur = FALSE
update_vore_tail_sprite()
set_tail_state("[species.get_tail(src)]_static")
/mob/living/carbon/human/proc/update_wing_showing()
if(QDESTROYING(src))
@@ -1398,70 +1133,18 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
var/image/wing_image = get_wing_image(FALSE)
// Fetch wear_suit and check for tailsock coloration, because it makes sense to.
var/obj/item/clothing/suit/socksuit = wear_suit
var/wing_color = (istype(socksuit) && socksuit.requires_tailsock && socksuit.tailsock_toggle && socksuit.tailsock_color) ? socksuit.tailsock_color : null
if(wing_image)
wing_image.layer = BODY_LAYER + WING_LAYER
if(wing_color)
wing_image.color = wing_color
wing_image.layer = BODY_LAYER+WING_LAYER
overlays_standing[WING_LAYER] = wing_image
if(wing_style && wing_style.multi_dir)
wing_image = get_wing_image(TRUE)
if(wing_image)
wing_image.layer = BODY_LAYER + WING_LOWER_LAYER
if(wing_color)
wing_image.color = wing_color
wing_image.layer = BODY_LAYER+WING_LOWER_LAYER
overlays_standing[WING_LOWER_LAYER] = wing_image
apply_layer(WING_LAYER)
apply_layer(WING_LOWER_LAYER)
/mob/living/carbon/human/proc/get_wing_image(under_layer)
if(QDESTROYING(src))
return
//If you are FBP with wing style and didn't set a custom one
if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden)
var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing?
wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
var/image/working = image(wing_s)
working.overlays += em_block_image_generic(working) // Leaving this as overlays +=
return working
//If you have custom wings selected
if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden)
var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state
if(wing_style.multi_dir)
wing_state += "_[under_layer ? "back" : "front"]"
var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state)
if(wing_style.do_colouration)
wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode)
if(wing_style.extra_overlay)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay)
overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
if(wing_style.extra_overlay2)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2)
if(wing_style.ani_state)
overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w)
overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
else
overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
var/image/working = image(wing_s)
working.alpha = src.a_wing
if(wing_style.em_block)
working.overlays += em_block_image_generic(working) // Leaving this as overlays +=
working.pixel_x -= wing_style.wing_offset
return working
/mob/living/carbon/human/update_modifier_visuals()
if(QDESTROYING(src))
return
@@ -1537,6 +1220,49 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
overlays_standing[SURGERY_LAYER] = total
apply_layer(SURGERY_LAYER)
/mob/living/carbon/human/proc/get_wing_image(under_layer)
if(QDESTROYING(src))
return
//If you are FBP with wing style and didn't set a custom one
if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden)
var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing?
wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
var/image/working = image(wing_s)
working.overlays += em_block_image_generic(working) // Leaving this as overlays +=
return working
//If you have custom wings selected
if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden)
var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state
if(wing_style.multi_dir)
wing_state += "_[under_layer ? "back" : "front"]"
var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state)
if(wing_style.do_colouration)
wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode)
if(wing_style.extra_overlay)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay)
overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
if(wing_style.extra_overlay2)
var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2)
if(wing_style.ani_state)
overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w)
overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
else
overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode)
wing_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
var/image/working = image(wing_s)
working.alpha = src.a_wing
if(wing_style.em_block)
working.overlays += em_block_image_generic(working) // Leaving this as overlays +=
working.pixel_x -= wing_style.wing_offset
return working
/mob/living/carbon/human/proc/get_ears_overlay()
//If you are FBP with ear style and didn't set a custom one
var/datum/robolimb/model = isSynthetic()
@@ -1593,6 +1319,145 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
return rendered
/mob/living/carbon/human/proc/get_tail_image()
//If you are FBP with tail style and didn't set a custom one
var/datum/robolimb/model = isSynthetic()
if(istype(model) && model.includes_tail && !tail_style && !tail_hidden)
var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail")
tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
return image(tail_s)
//If you have a custom tail selected
if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden)
var/icon/tail_s = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state))
if(tail_style.can_loaf && !is_shifted)
pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly. Taur Loafing
if(tail_style.do_colouration)
tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode)
if(tail_style.extra_overlay)
var/icon/overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay)
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay_w)
overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
else
overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode)
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
if(tail_style.extra_overlay2)
var/icon/overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2)
if(wagging && tail_style.ani_state)
overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2_w)
overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode)
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
else
overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode)
tail_s.Blend(overlay, ICON_OVERLAY)
qdel(overlay)
var/image/working = image(tail_s)
if(tail_style.em_block)
working.overlays += em_block_image_generic(working) // Leaving this as overlays +=
if(istaurtail(tail_style))
var/datum/sprite_accessory/tail/taur/taurtype = tail_style
working.pixel_x = tail_style.offset_x
working.pixel_y = tail_style.offset_y
if(taurtype.can_ride && !riding_datum)
riding_datum = new /datum/riding/taur(src)
add_verb(src, /mob/living/carbon/human/proc/taur_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
else if(islongtail(tail_style))
working.pixel_x = tail_style.offset_x
working.pixel_y = tail_style.offset_y
working.alpha = src.a_tail
return working
return null
// TODO - Move this to where it should go ~Leshana
/mob/living/proc/stop_flying()
if(QDESTROYING(src))
return
flying = FALSE
return 1
/mob/living/carbon/human/stop_flying()
if((. = ..()))
update_wing_showing()
/mob/living/carbon/human/proc/update_vore_belly_sprite()
if(QDESTROYING(src))
return
remove_layer(VORE_BELLY_LAYER)
var/image/vore_belly_image = get_vore_belly_image()
if(vore_belly_image)
vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER
overlays_standing[VORE_BELLY_LAYER] = vore_belly_image
vore_belly_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT.
vore_belly_image.appearance_flags = appearance_flags
apply_layer(VORE_BELLY_LAYER)
/mob/living/carbon/human/proc/get_vore_belly_image()
if(!(wear_suit && wear_suit.flags_inv & HIDETAIL))
var/vs_fullness = vore_fullness_ex["stomach"]
var/icon/vorebelly_s = new/icon(icon = 'icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]")
vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD)
var/image/working = image(vorebelly_s)
working.overlays += em_block_image_generic(working)
return working
return null
/mob/living/carbon/human/proc/vore_belly_animation()
if(!struggle_anim_stomach)
struggle_anim_stomach = TRUE
update_vore_belly_sprite()
spawn(12)
struggle_anim_stomach = FALSE
update_vore_belly_sprite()
/mob/living/carbon/human/proc/update_vore_tail_sprite()
if(QDESTROYING(src))
return
remove_layer(VORE_TAIL_LAYER)
var/image/vore_tail_image = get_vore_tail_image()
if(vore_tail_image)
vore_tail_image.layer = BODY_LAYER+VORE_TAIL_LAYER
overlays_standing[VORE_TAIL_LAYER] = vore_tail_image
vore_tail_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT.
vore_tail_image.appearance_flags = appearance_flags
apply_layer(VORE_TAIL_LAYER)
/mob/living/carbon/human/proc/get_vore_tail_image()
if(tail_style && istaurtail(tail_style) && tail_style.vore_tail_sprite_variant)
var/vs_fullness = vore_fullness_ex["taur belly"]
var/loaf_alt = lying && tail_style.belly_variant_when_loaf
var/fullness_icons = min(tail_style.fullness_icons, vs_fullness)
var/icon/vorebelly_s = new/icon(icon = tail_style.bellies_icon_path, icon_state = "Taur[tail_style.vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]")
vorebelly_s.Blend(vore_sprite_color["taur belly"], vore_sprite_multiply["taur belly"] ? ICON_MULTIPLY : ICON_ADD)
var/image/working = image(vorebelly_s)
working.pixel_x = -16
if(tail_style.em_block)
working.overlays += em_block_image_generic(working)
return working
return null
/mob/living/carbon/human/proc/vore_tail_animation()
if(tail_style.struggle_anim && !struggle_anim_taur)
struggle_anim_taur = TRUE
update_vore_tail_sprite()
spawn(12)
struggle_anim_taur = FALSE
update_vore_tail_sprite()
/mob/living/carbon/human/proc/GetAppearanceFromPrefs(flavourtext, oocnotes)
/* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob.
Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/
+1 -7
View File
@@ -1,14 +1,8 @@
/mob/living/Check_Shoegrip()
if(flying)
return TRUE
return 1
..()
/mob/living/proc/stop_flying()
if(QDESTROYING(src))
return
flying = FALSE
return TRUE
/mob/living/verb/customsay()
set category = "IC.Settings"
set name = "Customize Speech Verbs"
@@ -1,10 +1,10 @@
/*
////////////////////////////
/ =--------------------= /
/ =OLD Tail Definitions= /
/ =-FOR REFERENCE ONLY-= /
/ == Tail Definitions == /
/ =--------------------= /
////////////////////////////
*/
/datum/sprite_accessory/tail
name = DEVELOPER_WARNING_NAME
icon = 'icons/mob/human_races/sprite_accessories/tails.dmi'
@@ -33,7 +33,7 @@
///ADDITIONALLY, IF YOU ADD A SPECIAL VWAG, YOU NEED TO INCLUDE ani_state, extra_overlay_w, and extra_overlay2_w INTO icon_loaf TOO!
var/can_loaf = FALSE
var/loaf_offset = 0
var/list/lower_layer_dirs = LOWER_TAIL_DIRS
var/list/lower_layer_dirs = list(SOUTH, WEST, EAST)
var/icon_loaf = null
// Taur Vore
@@ -281,7 +281,6 @@
name = "xenomorph tail 2"
desc = ""
icon_state = "xenotail"
do_colouration = FALSE
/datum/sprite_accessory/tail/eboop
name = "EGN mech tail (dual color)"
@@ -826,7 +825,6 @@
name = "Zeng-Hu Tajaran Synth tail"
desc = ""
icon_state = "zenghu_taj"
do_colouration = FALSE
//Taurs moved to a separate file due to extra code around them
@@ -1984,4 +1982,4 @@
do_colouration = TRUE
color_blend_mode = ICON_MULTIPLY
extra_overlay = "chu_markings"
extra_overlay2 = "chu_tipmarkings"*/
extra_overlay2 = "chu_tipmarkings"
@@ -14,7 +14,7 @@
em_block = TRUE
var/extra_overlay // Icon state of an additional overlay to blend in.
var/extra_overlay2 //Tertiary.
var/clothing_can_hide = TRUE // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings.
var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings.
// var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana
var/desc = DEVELOPER_WARNING_NAME
var/ani_state // State when flapping/animated
@@ -8,6 +8,7 @@
/datum/sprite_accessory/tail
name = DEVELOPER_WARNING_NAME
var/desc = DEVELOPER_WARNING_NAME
// icon = 'icons/mob/human_races/sprite_accessories/tails.dmi'
do_colouration = TRUE //Set to FALSE to disable coloration using the tail color.
/// Only appliciable if do_coloration = TRUE, ICON_MULTIPLY is a white bias, ICON_ADD is a black bias for colorations of sprites.
/// Virtually all sprites now are white-biased greyscale. The ones that aren't are pre-colored, typically donator snowflake.
@@ -33,7 +34,7 @@
///ADDITIONALLY, IF YOU ADD A SPECIAL VWAG, YOU NEED TO INCLUDE ani_state, extra_overlay_w, and extra_overlay2_w INTO icon_loaf TOO!
var/can_loaf = FALSE
var/loaf_offset = 0
var/list/lower_layer_dirs = LOWER_TAIL_DIRS
var/list/lower_layer_dirs = list(SOUTH, WEST, EAST)
var/icon_loaf = null
// Taur Vore
@@ -43,42 +44,10 @@
var/struggle_anim = FALSE
var/bellies_icon_path = 'icons/mob/vore/Taur_Bellies.dmi'
// Tail Socks
/// This can usually be the default icon, since the base icon is a complete unit.
/// Taur tails are snipped off to account for the butt positioning being easier to deal with.
var/tailsock_icon
var/tailsock_iconstate
/// Same for wag states, we just need the sprite itself, not any of the custom overlays
/// Fat Taur additions are just the belly variant, we layer this one before the vore one to account for that too.
var/tailsock_wagicon
// Vore belly overlays are handled in update_icons, because we just overlay the tummy colored to the tailsock if we're wearing a suit and it has a sock enabled.
// For north facing taur tails, using the sock + whatever tail related markings are visible when not in a sock but need to be drawn higher up.
// These are set to "none" to prevent null icon state issues
var/tailsock_markings = "none"
var/tailsock_markings2 = "none"
var/tailsock_wagmarkings = "none"
var/tailsock_wagmarkings2 = "none"
/datum/sprite_accessory/tail/New()
. = ..()
if(clip_mask_state)
clip_mask = icon(icon = (clip_mask_icon ? clip_mask_icon : icon), icon_state = clip_mask_state)
//because the compiler doesn't like this being preset I guess whatever loser.
if(!tailsock_icon)
tailsock_icon = initial(icon)
if(!tailsock_iconstate)
tailsock_iconstate = initial(icon_state)
if(!tailsock_wagicon)
tailsock_wagicon = initial(ani_state)
//use the same naming conventions, these are for north face stuff. follows the icon file anyway, so tail_whatever, tail_sock
if(extra_overlay)
tailsock_markings = extra_overlay
if(extra_overlay2)
tailsock_markings2 = extra_overlay2
if(extra_overlay_w)
tailsock_wagmarkings = extra_overlay_w
if(extra_overlay2_w)
tailsock_wagmarkings2 = extra_overlay2_w
// Default invis tail
/datum/sprite_accessory/tail/invisible
@@ -88,21 +88,12 @@
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi'
icon_state = "wagtail"
/datum/sprite_accessory/tail/peacocktail //it's been a long enough while, I'm gunna go ahead and just...
name = "Peacock tail, colorable (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi'
icon_state = "peacocktail"
ani_state = "peacocktail_w"
do_colouration = TRUE
/datum/sprite_accessory/tail/ketrai_wag
name = "fennix tail (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi'
icon_state = "ketraitail"
ani_state = "ketraitail_w"
do_colouration = FALSE
tailsock_iconstate = "ketraitail_sock"
tailsock_wagicon = "ketraitail_w_sock"
/datum/sprite_accessory/tail/ketrainew_wag
name = "new fennix tail (vwag)"
@@ -110,8 +101,6 @@
icon_state = "ketraitailnew"
ani_state = "ketraitailnew_w"
do_colouration = FALSE
tailsock_iconstate = "ketraitailnew_sock"
tailsock_wagicon = "ketraitailnew_w_sock"
/datum/sprite_accessory/tail/redpanda
name = "red panda"
@@ -245,7 +234,6 @@
name = "Kitsune 2 tails, colorable"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi'
icon_state = "doublekitsune"
extra_overlay = "doublekitsune-tips"
/datum/sprite_accessory/tail/doublekitsunealt
name = "Kitsune 2 tails, colorable, alt"
@@ -343,7 +331,6 @@
name = "turkey"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi'
icon_state = "turkey"
do_colouration = FALSE
/datum/sprite_accessory/tail/shark_markings
name = "akula tail, colorable, tail and fins"
@@ -405,7 +392,6 @@
name = "Raccoon gray tail"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi'
icon_state = "raccoon_tail"
tailsock_iconstate = "raccoon_tail_sock"
do_colouration = FALSE
/datum/sprite_accessory/tail/striped_tail
@@ -3,7 +3,6 @@
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_bug.dmi'
icon_state = "beethorax"
do_colouration = FALSE
tailsock_iconstate = "beethorax_sock"
/datum/sprite_accessory/tail/buggo
name = "Bug abdomen, colorable"
@@ -13,13 +13,13 @@
/datum/sprite_accessory/tail/nevreanwagdc
name = "nevrean wagtail, dual-color"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi'
icon_state = "nevreanwagtail"
icon_state = "wagtail"
extra_overlay = "wagtail_dc_tail"
/datum/sprite_accessory/tail/nevreanwagdc_alt
name = "nevrean wagtail, marked, dual-color"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi'
icon_state = "nevreanwagtail2_dc"
icon_state = "wagtail2_dc"
extra_overlay = "wagtail2_dc_mark"
/datum/sprite_accessory/tail/spade_color
@@ -38,14 +38,11 @@
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi'
icon_state = "snag"
do_colouration = FALSE
tailsock_iconstate = "snag_sock"
/datum/sprite_accessory/tail/xenotail
name = "xenomorph tail 2"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi'
icon_state = "xenotail"
do_colouration = FALSE
tailsock_iconstate = "xenotail_sock"
/datum/sprite_accessory/tail/xenotail_fullcolour
name = "xenomorph tail (fully colourable)"
@@ -97,15 +94,12 @@
name = "tailmaw, colorable"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi'
icon_state = "tailmaw"
tailsock_iconstate = "tailmaw_sock"
/datum/sprite_accessory/tail/newtailmaw
name = "new tailmaw (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi'
icon_state = "newtailmaw"
tailsock_iconstate = "tailmaw_sock"
ani_state = "newtailmaw_w"
tailsock_wagicon = "tailmaw_w_sock"
/datum/sprite_accessory/tail/shadekin_short
name = "Shadekin Short Tail, colorable"
@@ -104,12 +104,14 @@
/datum/sprite_accessory/tail/longtail/flagtail
name = "Flagtail"
icon = 'icons/rogue-star/tails_64x32_rs.dmi'
icon_state = "flagtail"
extra_overlay = "flagtail-1"
extra_overlay2 = "flagtail-2"
/datum/sprite_accessory/tail/longtail/chonksqrl
name = "Squirrel (Big)"
icon = 'icons/rogue-star/tails_64x32_rs.dmi'
icon_state = "chonksqrl"
extra_overlay = "chonksqrl-m1"
extra_overlay2 = "chonksqrl-m2"
@@ -24,28 +24,36 @@
icon_state = "bigsnaketail"
ani_state = "bigsnaketail_w"
/datum/sprite_accessory/tail/bigsnaketail/stripes
/datum/sprite_accessory/tail/bigsnaketailstripes
name = "large snake tail, striped (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi'
icon_state = "bigsnaketailstripes"
extra_overlay = "bigsnaketailstripes-tips"
ani_state = "bigsnaketailstripes_w"
extra_overlay_w = "bigsnaketailstripes-tips_w"
/datum/sprite_accessory/tail/bigsnaketail/stripes_alt
/datum/sprite_accessory/tail/bigsnaketailstripes_alt
name = "large snake tail, striped, alt (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi'
icon_state = "bigsnaketailstripesalt"
extra_overlay = "bigsnaketailstripesalt-tips"
ani_state = "bigsnaketailstripesalt_w"
extra_overlay_w = "bigsnaketailstripesalt-tips_w"
/datum/sprite_accessory/tail/bigsnaketail/dual
/datum/sprite_accessory/tail/bigsnaketaildual
name = "large snake tail, dual color (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi'
icon_state = "bigsnaketaildual"
extra_overlay = "bigsnaketaildual-tips"
ani_state = "bigsnaketaildual_w"
extra_overlay_w = "bigsnaketaildual-tips_w"
/datum/sprite_accessory/tail/bigsnaketail/under
/datum/sprite_accessory/tail/bigsnaketailunder
name = "large snake tail, under (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi'
icon_state = "bigsnaketailunder"
extra_overlay = "bigsnaketailunder-tips"
ani_state = "bigsnaketailunder_w"
extra_overlay_w = "bigsnaketailunder-tips_w"
/datum/sprite_accessory/tail/tail_smooth
@@ -54,11 +62,11 @@
icon_state = "tail_smooth"
ani_state = "tail_smooth_w"
/datum/sprite_accessory/tail/tail_smooth/dual
/datum/sprite_accessory/tail/tail_smooth_dual
name = "Smooth Lizard Tail, dual color"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi'
icon_state = "tail_smooth"
extra_overlay = "tail_smooth_markings"
extra_overlay_w = "tail_smooth_w_markings"
/datum/sprite_accessory/tail/Easterntail
name = "Eastern Dragon (Animated)"
@@ -104,7 +112,6 @@
name = "kururak tail"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi'
icon_state = "kururak"
do_colouration = FALSE
/datum/sprite_accessory/tail/snaketail_stripes
name = "snake tail with stripes, dual-color"
@@ -5,8 +5,14 @@
ani_state = "peacocktail_red_w"
ckeys_allowed = list("prettiebyrd")
do_colouration = FALSE
tailsock_iconstate = "peacocktail_red_sock"
tailsock_wagicon = "peacocktail_red_w_sock"
/datum/sprite_accessory/tail/peacocktail //ditto
name = "Peacock tail, colorable (vwag)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_snowflake.dmi'
icon_state = "peacocktail"
ani_state = "peacocktail_w"
do_colouration = FALSE
ckeys_allowed = list("prettiebyrd")
/datum/sprite_accessory/tail/perrin_tentacles
name = "octopus tentacles"
@@ -14,7 +20,6 @@
icon_state = "perrintentacles"
ckeys_allowed = list("codeme", "siennaathens")
do_colouration = FALSE
tailsock_iconstate = "perrintentacles_sock"
/datum/sprite_accessory/tail/kara //SatinIsle fluff item
name = "Pterokara Tail"
@@ -22,7 +27,6 @@
icon_state = "kara_tail"
ckeys_allowed = list("satinisle")
do_colouration = FALSE
tailsock_iconstate = "kara_tail_sock"
/datum/sprite_accessory/tail/molenar_kitsune
name = "quintail kitsune tails (Molenar)"
@@ -30,7 +34,6 @@
icon_state = "molenar-kitsune"
ckeys_allowed = list("molenar")
do_colouration = FALSE
tailsock_iconstate = "molenar-kitsune_sock"
/datum/sprite_accessory/tail/miria_fluffdragon
name = "fluffdragon tail (Miria Masters)"
@@ -38,7 +41,6 @@
icon_state = "miria-fluffdragontail"
ckeys_allowed = list("miriamasters")
do_colouration = FALSE
tailsock_iconstate = "miria-fluffdragontail_sock"
/datum/sprite_accessory/tail/miria_kitsune
name = "Black kitsune tails (Miria Masters)"
@@ -46,7 +48,6 @@
icon_state = "miria-kitsunetail"
ckeys_allowed = list("miriamasters")
do_colouration = FALSE
tailsock_iconstate = "miria-kitsunetail_sock"
/datum/sprite_accessory/tail/molenar_deathclaw
name = "deathclaw bits (Molenar)"
@@ -54,7 +55,6 @@
icon_state = "molenar-deathclaw"
ckeys_allowed = list("molenar","silvertalismen","jertheace")
do_colouration = FALSE
tailsock_iconstate = "molenar-deathclaw_sock"
/datum/sprite_accessory/tail/runac
name = "fennecsune tails (Runac)"
@@ -62,7 +62,6 @@
icon_state = "runac"
ckeys_allowed = list("rebcom1807")
do_colouration = FALSE
tailsock_iconstate = "runac_sock"
/datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail.
name = "fox tail (+ beewings) (Reika)"
@@ -70,7 +69,6 @@
icon_state = "reika"
ckeys_allowed = list("rikaru19xjenkins")
do_colouration = FALSE
tailsock_iconstate = "reika_sock"
/datum/sprite_accessory/tail/rosey
name = "tritail kitsune tails (Rosey)"
@@ -78,7 +76,6 @@
icon_state = "rosey_three"
ckeys_allowed = list("joey4298")
do_colouration = FALSE
tailsock_iconstate = "rosey_three_sock"
/datum/sprite_accessory/tail/rosey2
name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK
@@ -86,15 +83,6 @@
icon_state = "rosey_five"
do_colouration = FALSE
ckeys_allowed = list("joey4298")
tailsock_iconstate = "rosey_five_sock"
/datum/sprite_accessory/tail/longtail/roiz_long_lizard
name = "Long Lizard Tail (Roiz Lizden)"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_long.dmi'
icon_state = "roiz_tail_s"
do_colouration = FALSE
ckeys_allowed = list("spoopylizz")
tailsock_iconstate = "roiz_tail_sock"
/datum/sprite_accessory/tail/scree
name = "green taj tail (Scree)"
@@ -102,7 +90,6 @@
icon_state = "scree"
ckeys_allowed = list("scree")
do_colouration = FALSE
tailsock_iconstate = "scree_sock"
/datum/sprite_accessory/tail/aronai
name = "aronai tail (Aronai)"
@@ -110,7 +97,6 @@
icon_state = "aronai"
ckeys_allowed = list("arokha")
do_colouration = FALSE
tailsock_iconstate = "aronai_sock"
/datum/sprite_accessory/tail/cabletail
name = "cabletail"
@@ -118,7 +104,6 @@
icon_state = "tuckercabletail"
ckeys_allowed = list("tucker0666")
do_colouration = FALSE
tailsock_iconstate = "tuckercabletail_sock"
/datum/sprite_accessory/tail/featherfluff_tail
name = "featherfluff_tail"
@@ -126,7 +111,6 @@
icon_state = "tuckerfeather_tail"
ckeys_allowed = list("tucker0666")
do_colouration = FALSE
tailsock_iconstate = "tuckerfeather_tail_sock"
/datum/sprite_accessory/tail/holly
name = "tigress tail (Holly)"
@@ -134,4 +118,3 @@
icon_state = "hoodootail"
ckeys_allowed = list("hoodoo")
do_colouration = FALSE
tailsock_iconstate = "hoodootail_sock"
@@ -8,7 +8,6 @@
name = "Zeng-Hu Tajaran Synth tail"
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_synth.dmi'
icon_state = "zenghu_taj"
do_colouration = FALSE
/datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts
name = "Ward-Takahashi Tail"
@@ -52,7 +52,6 @@
icon = 'icons/mob/human_races/sprite_accessories/tails/tails_teshari.dmi'
icon_state = "beethorax_tesh"
do_colouration = FALSE
tailsock_iconstate = "beethorax_tesh_sock"
/datum/sprite_accessory/tail/teshbuggo
name = "Teshari bug abdomen, colorable"
@@ -27,8 +27,7 @@
clip_mask_icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi'
clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
//By making big leggy a subtype of longtail, it gets the offset but doesn't conflict with taur specific settings.
/datum/sprite_accessory/tail/longtail/bigleggy
/datum/sprite_accessory/tail/taur/bigleggy
name = "Big Leggies"
icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi'
icon_state = "bigleggy"
@@ -37,47 +36,46 @@
fullness_icons = 3
ani_state = "bigleggy_stanced"
extra_overlay_w = "bigleggy_markings_stanced"
clip_mask_icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi'
clip_mask_state = "taur_clip_mask_def" //Leaving this here to make it clear it it's INTENTIONAL it shows above clothes. Use the marking if you want it to show UNDER clothes!
/datum/sprite_accessory/tail/longtail/bigleggy/canine
/datum/sprite_accessory/tail/taur/bigleggy/canine
name = "Big Leggies (Canine Tail)"
extra_overlay2 = "bigleggy_canine"
extra_overlay2_w = "bigleggy_canine"
/datum/sprite_accessory/tail/longtail/bigleggy/feline
/datum/sprite_accessory/tail/taur/bigleggy/feline
name = "Big Leggies (Feline Tail)"
extra_overlay2 = "bigleggy_feline"
extra_overlay2_w = "bigleggy_feline"
/datum/sprite_accessory/tail/longtail/bigleggy/reptile
/datum/sprite_accessory/tail/taur/bigleggy/reptile
name = "Big Leggies (Reptile Tail)"
extra_overlay2 = "bigleggy_reptile"
extra_overlay2_w = "bigleggy_reptile"
/datum/sprite_accessory/tail/longtail/bigleggy/snake
/datum/sprite_accessory/tail/taur/bigleggy/snake
name = "Big Leggies (Snake Tail)"
extra_overlay2 = "bigleggy_snake"
extra_overlay2_w = "bigleggy_snake"
/datum/sprite_accessory/tail/longtail/bigleggy/fox
/datum/sprite_accessory/tail/taur/bigleggy/fox
name = "Big Leggies (Fox Tail)"
extra_overlay2 = "bigleggy_vulpine"
extra_overlay2_w = "bigleggy_vulpine"
/datum/sprite_accessory/tail/longtail/bigleggy/bird
/datum/sprite_accessory/tail/taur/bigleggy/bird
name = "Big Leggies (Bird)"
extra_overlay = "bigleggy_m_bird"
extra_overlay2 = "bigleggy_bird"
extra_overlay_w = "bigleggy_m_bird_stanced"
extra_overlay2_w = "bigleggy_bird"
/datum/sprite_accessory/tail/longtail/bigleggy/plug
/datum/sprite_accessory/tail/taur/bigleggy/plug
name = "Big Leggies (Plug Tail)"
extra_overlay2 = "bigleggy_plug"
extra_overlay2_w = "bigleggy_plug"
/datum/sprite_accessory/tail/longtail/bigleggy/AlienSlug
/datum/sprite_accessory/tail/taur/bigleggy/AlienSlug
name = "Big Leggies (Alien Slug Tail)"
icon_state = "bigleggy_full_alienslug"
extra_overlay = "bigleggy_alienslug"
@@ -6,12 +6,11 @@
var/can_ride = TRUE //whether we're real rideable taur or just in that category
offset_x = -16
em_block = TRUE
/// Suit sprites are stored in icons/inventory/suit/taursuits_[name]
var/icon/suit_sprites = null //File for suit sprites, if any.
var/icon/under_sprites = null
var/icon_sprite_tag // This is where we put stuff like _Horse, so we can assign icons easier.
tailsock_icon = 'icons/mob/human_races/sprite_accessories/taurs/taur_socks.dmi'
//Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to
//duplicate all the messages, and it starts getting awkward. These are singletons, anyway!
@@ -42,14 +41,6 @@
hide_body_parts = list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT) //Exclude pelvis just in case.
clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms.
/datum/sprite_accessory/tail/taur/New()
. = ..()
//give us the default sprite state, hijacking icon_sprite_tag that was only ever used for saddlebags.
if(icon_sprite_tag)
tailsock_iconstate = "[icon_sprite_tag]_sock"
///few taurs have working tailwags, but to ensure future proofing and no null icons the taur_sock.dmi file has these prepared.
tailsock_wagicon = "[icon_sprite_tag]_w_sock"
/datum/riding/taur
keytype = /obj/item/material/twohanded/riding_crop // Crack!
nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
+53 -99
View File
@@ -1,17 +1,13 @@
/datum/sprite_accessory/tail/taur/bunny
name = "Bunny (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon = 'icons/rogue-star/tails_64x32_rs.dmi'
icon_state = "bnytr"
suit_sprites = 'icons/inventory/suit/taursuits_bnytr.dmi'
icon_sprite_tag = "bnytr"
extra_overlay = "bnytr-m1"
extra_overlay2 = "bnytr-m2"
ani_state = "bnytr-f"
extra_overlay_w = "bnytr-m1"
extra_overlay2_w = "bnytr-f-m2"
tailsock_wagicon = "bnytr-f_sock"
tailsock_wagmarkings = "bnytr-m1"
tailsock_wagmarkings2 = "bnytr-f-m2"
can_loaf = TRUE
icon_loaf = 'icons/rogue-star/loafs_64x32.dmi'
loaf_offset = 4
@@ -20,7 +16,7 @@
name = "Cow (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "cow_s"
suit_sprites = 'icons/inventory/suit/taursuits_cow.dmi'
suit_sprites = 'icons/mob/taursuits_cow.dmi'
icon_sprite_tag = "cow"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -45,19 +41,19 @@
/datum/sprite_accessory/tail/taur/cow/fat
name = "Fat Cow (Taur)"
icon_sprite_tag = "fatcow"
icon_state = "fatcow_s"
/datum/sprite_accessory/tail/taur/cow/fat_wag
name = "Cow (Taur, Fat vwag)"
icon_state = "cow_s"
ani_state = "fatcow_s"
tailsock_wagicon = "fatcow_sock"
/datum/sprite_accessory/tail/taur/cow/paw // this grabs suit sprites from the normal cow, the outline is the same
name = "Cow w/ paws (Taur)"
icon_state = "pawcow_s"
icon_sprite_tag = "pawcow" //little suit booties in place of the hoof cutouts.
extra_overlay = "pawcow_markings"
suit_sprites = 'icons/mob/taursuits_cow.dmi'
icon_sprite_tag = "cow"
msg_owner_disarm_run = "You quickly push %prey to the ground with your paw!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their paw!"
@@ -79,9 +75,7 @@
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "deer_s"
extra_overlay = "deer_markings"
ani_state = "deer_w"
extra_overlay_w = "deer_markings_w"
suit_sprites = 'icons/inventory/suit/taursuits_deer.dmi'
suit_sprites = 'icons/mob/taursuits_deer.dmi'
icon_sprite_tag = "deer"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -110,7 +104,6 @@
icon_state = "deer_s"
ani_state = "fatdeer_s"
extra_overlay_w = "fatdeer_markings"
tailsock_wagicon = "fatdeer_sock"
/datum/sprite_accessory/tail/taur/deer/fatdeer
name = "Fat Deer (Dual-color Taur)"
@@ -121,7 +114,7 @@
name = "Feline (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "feline_s" //I just want to talk to whomever thought every feline varient needed this same sprite but uniquely renamed...
suit_sprites = 'icons/inventory/suit/taursuits_feline.dmi'
suit_sprites = 'icons/mob/taursuits_deer.dmi'
icon_sprite_tag = "feline"
extra_overlay = "feline_markings"
ani_state = "feline_w"
@@ -132,13 +125,10 @@
vore_tail_sprite_variant = "Feline"
belly_variant_when_loaf = TRUE
fullness_icons = 1
tailsock_markings = "none"
tailsock_wagmarkings = "none"
/datum/sprite_accessory/tail/taur/feline/fat
name = "Fat Feline (Taur)"
icon_state = "fatfeline_s"
icon_sprite_tag = "fatfeline"
extra_overlay = "fatfeline_markings" //feet, belly, and chest
ani_state = "fatfeline_w"
extra_overlay_w = "fatfeline_markings"
@@ -148,15 +138,12 @@
name = "Fat Feline (Taur, Fat vwag)"
ani_state = "fatfeline_s" //static fat sprite
can_loaf = TRUE
icon_sprite_tag = "fatfeline"
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
tailsock_wagicon = "fatfeline_sock"
/datum/sprite_accessory/tail/taur/feline/fatfeline_2c
name = "Fat Feline 3-color (Taur)"
icon_state = "fatfeline_s"
icon_sprite_tag = "fatfeline"
extra_overlay = "fatfeline2_markings" // chest and belly
extra_overlay2 = "fatfeline2_markings_2" // feet
can_loaf = TRUE
@@ -167,6 +154,7 @@
icon_state = "feline_s"
extra_overlay = "feline2_markings"
extra_overlay2 = "feline2_markings_2"
//icon_sprite_tag = "feline2c"
can_loaf = TRUE
/datum/sprite_accessory/tail/taur/feline/feline_2c_wag
@@ -174,16 +162,19 @@
extra_overlay = "feline2_markings"
extra_overlay2 = "feline2_markings_2"
ani_state = "fatfeline_s"
extra_overlay_w = "fatfeline2_markings"
extra_overlay2_w = "fatfeline2_markings_2"
extra_overlay = "fatfeline2_markings"
extra_overlay2 = "fatfeline2_markings_2"
loaf_offset = 3
/datum/sprite_accessory/tail/taur/feline/tiger
name = "Tiger (Taur)"
suit_sprites = 'icons/mob/taursuits_deer.dmi'
icon_sprite_tag = "feline"
extra_overlay = "feline_markings"
extra_overlay2 = "tiger_markings"
extra_overlay2_w = "tiger_markings_w"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 5
vore_tail_sprite_variant = "Feline"
belly_variant_when_loaf = TRUE
@@ -192,25 +183,21 @@
/datum/sprite_accessory/tail/taur/feline/tiger/fat
name = "Fat Tiger (Taur)"
icon_state = "fatfeline_s"
icon_sprite_tag = "fatfeline"
extra_overlay = "fatfeline_markings"
extra_overlay2 = "fattiger_markings"
extra_overlay2_w = "fattiger_markings_w"
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
tailsock_markings2 = "tiger_markings"
tailsock_wagmarkings2 = "tiger_markings_w"
/datum/sprite_accessory/tail/taur/feline/tiger/fat_vwag
name = "Tiger (Taur, Fat vwag)"
ani_state = "fatfeline_s"
extra_overlay_w = "fatfeline_markings"
extra_overlay2_w = "fattiger_markings"
tailsock_wagicon = "fatfeline_sock"
/datum/sprite_accessory/tail/taur/fox
name = "Fox (Taur, 3-color)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_fox.dmi'
icon_state = "fox"
extra_overlay = "fox_markings"
extra_overlay2 = "fox_markings2"
@@ -223,7 +210,6 @@
/datum/sprite_accessory/tail/taur/fox/kitsune
name = "Kitsune (Taur)"
icon_state = "kitsune"
icon_sprite_tag = "kitsune"
extra_overlay = "kitsune_markings"
extra_overlay2 = "kitsune_markings2"
@@ -237,8 +223,8 @@
name = "Horse (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "horse_s"
under_sprites = 'icons/inventory/suit/taursuits_horse.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_horse.dmi'
under_sprites = 'icons/mob/taursuits_horse.dmi'
suit_sprites = 'icons/mob/taursuits_horse.dmi'
icon_sprite_tag = "horse"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -264,12 +250,12 @@
/datum/sprite_accessory/tail/taur/horse/big
name = "Kentauri (Taur)"
icon_state = "kentauri_s"
icon_sprite_tag = "kentauri"
extra_overlay = "kentauri_markings"
/datum/sprite_accessory/tail/taur/horse/horse_2c
name = "Horse & colorable tail (Taur)"
extra_overlay = "horse_markings"
//icon_sprite_tag = "wolf2c"
/datum/sprite_accessory/tail/taur/otie
name = "Otie (Taur)"
@@ -277,10 +263,7 @@
icon_state = "otie_s"
extra_overlay = "otie_markings"
extra_overlay2 = "otie_markings_2"
ani_state = "otie_w"
extra_overlay_w = "otie_markings_w"
extra_overlay2_w = "otie_markings_2w"
suit_sprites = 'icons/inventory/suit/taursuits_otie.dmi'
suit_sprites = 'icons/mob/taursuits_otie.dmi'
icon_sprite_tag = "otie"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -288,15 +271,10 @@
vore_tail_sprite_variant = "Otie"
belly_variant_when_loaf = TRUE
fullness_icons = 1
tailsock_markings = "none"
tailsock_wagmarkings = "none"
tailsock_markings2 = "otie_markings"
tailsock_wagmarkings2 = "otie_markings_w"
/datum/sprite_accessory/tail/taur/rat
name = "Rat (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_rat.dmi'
icon_state = "rat_s"
extra_overlay = "rat_markings"
clip_mask_state = "taur_clip_mask_rat"
@@ -305,22 +283,18 @@
/datum/sprite_accessory/tail/taur/redpanda
name = "Red Panda (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_redpanda.dmi'
icon_state = "redpanda"
icon_sprite_tag = "redpanda"
/datum/sprite_accessory/tail/taur/redpanda/dc
name = "Red Panda (Taur dual-color)"
icon_state = "redpanda_dc"
extra_overlay = "redpanda_dc_markings"
tailsock_markings = "redpanda_markings"
/datum/sprite_accessory/tail/taur/sergal/wheaties
name = "Sergal (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_sergal.dmi'
icon_state = "sergwheat"
icon_sprite_tag = "sergal"
icon_sprite_tag = "wolf"
vore_tail_sprite_variant = "N"
fullness_icons = 3
struggle_anim = TRUE
@@ -328,6 +302,7 @@
/datum/sprite_accessory/tail/taur/sergal/wheaties/fat
name = "Fat Sergal (Taur)"
icon_state = "fatsergal"
icon_sprite_tag = "wolf"
vore_tail_sprite_variant = "N"
fullness_icons = 3
struggle_anim = TRUE
@@ -337,7 +312,7 @@
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "sergwheat"
extra_overlay = "sergwheat_markings"
suit_sprites = 'icons/inventory/suit/taursuits_sergal.dmi'
icon_sprite_tag = "wolf"
vore_tail_sprite_variant = "N"
fullness_icons = 3
struggle_anim = TRUE
@@ -346,6 +321,7 @@
name = "Fat Sergal (Taur, dual-color)"
icon_state = "fatsergal"
extra_overlay = "sergwheat_markings"
icon_sprite_tag = "wolf"
vore_tail_sprite_variant = "N"
fullness_icons = 3
struggle_anim = TRUE
@@ -356,7 +332,6 @@
icon_state = "skunk_s"
extra_overlay = "skunk_markings"
extra_overlay2 = "skunk_markings_2"
suit_sprites = 'icons/inventory/suit/taursuits_skunk.dmi'
icon_sprite_tag = "skunk"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -369,8 +344,8 @@
name = "Wolf (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "wolf_s"
under_sprites = 'icons/inventory/suit/taursuits_wolf.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_wolf.dmi'
under_sprites = 'icons/mob/taursuits_wolf.dmi'
suit_sprites = 'icons/mob/taursuits_wolf.dmi'
icon_sprite_tag = "wolf"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -383,96 +358,75 @@
name = "Fat Wolf (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "fatwolf_s"
icon_sprite_tag = "fatwolf"
icon_sprite_tag = "wolf" //This could be modified later.
loaf_offset = 3
/datum/sprite_accessory/tail/taur/wolf/fat_wag
name = "Wolf (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "wolf_s"
ani_state = "fatwolf_s"
tailsock_wagicon = "fatwolf_s"
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf 3-color (Taur)"
extra_overlay = "wolf2_markings"
extra_overlay2 = "wolf2_markings_2"
/datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag
name = "Wolf 3-color (Taur, Fat vwag)"
extra_overlay = "wolf2_markings"
extra_overlay2 = "wolf2_markings_2"
ani_state = "fatwolf_s"
extra_overlay_w = "fatwolf2_markings"
extra_overlay2_w = "fatwolf2_markings_2"
/datum/sprite_accessory/tail/taur/wolf/fat/wolf_2c
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c
name = "Fat Wolf 3-color (Taur)"
icon_state = "fatwolf2_s"
extra_overlay = "fatwolf2_markings"
extra_overlay2 = "fatwolf2_markings_2"
loaf_offset = 3
icon_sprite_tag = "fatwolf"
/datum/sprite_accessory/tail/taur/wolf/fat/altwolf_2c
/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c/fatwolfalt
name = "Fat Wolf 3-color-alt (Taur)"
icon_state = "fatwolfalt_s"
extra_overlay = "fatwolfalt_markings1"
extra_overlay2 = "fatwolfalt_markings2"
icon_sprite_tag = "fatwolf"
icon_sprite_tag = "wolf"
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf 3-color (Taur)"
icon_state = "wolf_s"
extra_overlay = "wolf_markings"
extra_overlay2 = "wolf_markings_2"
//icon_sprite_tag = "wolf2c"
/datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag
name = "Wolf 3-color (Taur, Fat vwag)"
icon_state = "wolf2_s"
extra_overlay = "wolf2_markings"
extra_overlay2 = "wolf2_markings_2"
extra_overlay_w = "fatwolf2_markings"
extra_overlay2_w = "fatwolf2_markings_2"
ani_state = "fatwolf2_s"
/datum/sprite_accessory/tail/taur/wolf/wolf_3
name = "WolfTG (Taur)" //It's Citadel, not TG. :V
icon_state = "wolftg"
suit_sprites = 'icons/inventory/suit/taursuits_husky.dmi'
clip_mask_state = "taur_clip_mask_husky"
icon_state = "wolf3_s"
do_colouration = FALSE //this is already pre-colored.
tailsock_markings = "wolftg"
tailsock_wagmarkings = "wolftg_w"
icon_sprite_tag = "wolftg"
/datum/sprite_accessory/tail/taur/wolf/husky
name = "Husky (Taur)"
suit_sprites = 'icons/inventory/suit/taursuits_husky.dmi'
clip_mask_state = "taur_clip_mask_husky"
icon_state = "husky_s"
extra_overlay = "husky_markings" //Only affects the black back / tail fluff sections, so it works for the fat one too
ani_state = "husky_w"
extra_overlay_w = "husky_markings_w"
icon_sprite_tag = "husky"
/datum/sprite_accessory/tail/taur/wolf/huskyfat
name = "Fat Husky (Taur)"
icon_state = "fathusky_s"
extra_overlay = "husky_markings"
ani_state = "fathusky_w"
extra_overlay_w = "husky_markings_w"
icon_sprite_tag = "fathusky"
icon_state = "huskyf_s"
/datum/sprite_accessory/tail/taur/zorgoia
name = "Zorgoia (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "zorgoia"
extra_overlay = "zorgoia_fluff"
icon_sprite_tag = "zorgoia"
suit_sprites = 'icons/inventory/suit/taursuits_zorgoia.dmi'
/datum/sprite_accessory/tail/taur/zorgoia/fat
name = "Zorgoia (Fat Taur)"
icon_state = "zorgoia_fat"
extra_overlay = "zorgoia_fat_fluff"
icon_sprite_tag = "zorgoia_fat"
extra_overlay = "zorgoia_fat2"
/datum/sprite_accessory/tail/taur/zorgoia_new
name = "Zorgoia (Taur) (New)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
icon_state = "zorgoia_new"
icon_sprite_tag = "zorgoia_new"
extra_overlay = "zorgoia_new_fluff"
suit_sprites = 'icons/inventory/suit/taursuits_zorgoia.dmi'
/datum/sprite_accessory/tail/taur/zorgoia_new/fatvwag
name = "Zorgoia (Taur, vwag) (New)"
ani_state = "zorgoia_new_fat"
extra_overlay_w = "zorgoia_new_fat_fluff"
/datum/sprite_accessory/tail/taur/zorgoia_new/fat
name = "Zorgoia (Fat Taur) (New)"
icon_state = "zorgoia_new_fat"
extra_overlay = "zorgoia_new_fat_fluff"
extra_overlay = "zorgoia_new_fat_overlay"
+13 -10
View File
@@ -15,6 +15,7 @@
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
icon_state = "giantspidertaur"
do_colouration = FALSE
extra_overlay = null
icon_sprite_tag = "giantspidertaur"
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
@@ -42,38 +43,42 @@
/datum/sprite_accessory/tail/taur/giantspider/carrier
name = "Carrier Spider (Taur)"
icon_state = "carrierspidertaur"
extra_overlay = null
icon_sprite_tag = "carrierspidertaur"
/datum/sprite_accessory/tail/taur/giantspider/phoron
name = "Phorogenic Spider (Taur)"
icon_state = "phoronspidertaur"
extra_overlay = null
icon_sprite_tag = "phoronspidertaur"
/datum/sprite_accessory/tail/taur/giantspider/spark
name = "Voltaic Spider (Taur)"
icon_state = "sparkspidertaur"
extra_overlay = null
icon_sprite_tag = "sparkspidertaur"
/datum/sprite_accessory/tail/taur/giantspider/frost
name = "Frost Spider (Taur)"
icon_state = "frostspidertaur"
extra_overlay = null
icon_sprite_tag = "frostspidertaur"
/datum/sprite_accessory/tail/taur/giantspider/ant //technically not a spider, but it inherits the same messages
name = "Ant (dual color)"
icon_state = "ant_s"
do_colouration = TRUE
extra_overlay = "ant_markings"
clip_mask_state = "taur_clip_mask_wasp"
icon_sprite_tag = "ant"
do_colouration = TRUE
icon_sprite_tag = "wasp"
/datum/sprite_accessory/tail/taur/giantspider/wasp //same as above, but for wasps
name = "Wasp (dual color)"
icon_state = "wasp_s"
do_colouration = TRUE
extra_overlay = "wasp_markings"
clip_mask_state = "taur_clip_mask_wasp"
icon_sprite_tag = "wasp"
do_colouration = TRUE
/datum/sprite_accessory/tail/taur/mermaid
name = "Mermaid (Taur)"
@@ -116,23 +121,22 @@
/datum/sprite_accessory/tail/taur/mermaid/alt/marked
name = "Mermaid Koi (Taur)"
icon_state = "altmermaid_s"
extra_overlay = "altmermaid_markings"
extra_overlay2 = "altmermaid_markings2"
/datum/sprite_accessory/tail/taur/horse/scoli
name = "Scolipede (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_scoli.dmi'
icon_state = "scoli_s"
extra_overlay = "scoli_markings1"
extra_overlay2 = "scoli_markings2"
icon_sprite_tag = "scoli"
/datum/sprite_accessory/tail/taur/spider
name = "Spider (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
icon_state = "spider_s"
suit_sprites = 'icons/inventory/suit/taursuits_spider.dmi'
suit_sprites = 'icons/mob/taursuits_spider.dmi'
icon_sprite_tag = "spider"
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
@@ -153,7 +157,6 @@
/datum/sprite_accessory/tail/taur/sloog
name = "Sloog (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
suit_sprites = 'icons/inventory/suit/taursuits_sloog.dmi'
icon_state = "sloog"
extra_overlay = "sloog_glowstripe"
extra_overlay_w = "sloog_glowstripe"
@@ -163,6 +166,7 @@
name = "Slug (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
icon_state = "slug_s"
suit_sprites = 'icons/mob/taursuits_deer.dmi' //Yes it sounds odd, but they share the same sprites.
icon_sprite_tag = "slug"
vore_tail_sprite_variant = "Slug"
fullness_icons = 1
@@ -196,15 +200,15 @@
/datum/sprite_accessory/tail/taur/slug/snail
name = "Snail (Taur)"
icon_state = "slug_s"
extra_overlay = "snail_shell_marking"
icon_sprite_tag = "snail"
/datum/sprite_accessory/tail/taur/tents
name = "Tentacles (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
icon_state = "tent_s"
icon_sprite_tag = "tentacle"
can_ride = FALSE
can_ride = 0
msg_prey_stepunder = "You run between %prey's tentacles."
msg_owner_stepunder = "%owner runs between your tentacles."
@@ -237,7 +241,6 @@
name = "Tree Roots (Oak)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi'
icon_state = "tree_oak_roots"
icon_sprite_tag = "tree_oak_roots"
can_ride = FALSE
/*
+129 -79
View File
@@ -1,9 +1,10 @@
/datum/sprite_accessory/tail/taur/drake
/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above.
name = "Drake (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi'
icon_state = "drake_s"
extra_overlay = "drake_markings"
suit_sprites = 'icons/inventory/suit/taursuits_drake.dmi'
/// suit_sprites = 'icons/mob/taursuits_drake.dmi'
suit_sprites = 'icons/mob/taursuits_drake_ch.dmi'
icon_sprite_tag = "drake"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -16,71 +17,98 @@
name = "Fat Drake (Taur)"
icon_state = "fatdrake_s"
extra_overlay = "fatdrake_markings"
icon_sprite_tag = "fatdrake"
vore_tail_sprite_variant = "FatDrake"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 6
/datum/sprite_accessory/tail/taur/drake/drake_vwag
name = "Drake (Taur, Fat vwag)"
icon_state = "drake_s"
extra_overlay = "drake_markings"
ani_state = "fatdrake_s"
extra_overlay_w = "fatdrake_markings"
can_loaf = TRUE
/datum/sprite_accessory/tail/taur/drake/extended
name = "Fat Drake Extended (Taur)"
icon_state = "extended_fatdrake"
extra_overlay = "extended_fatdrake_markings"
extra_overlay2 = "extended_fatdrake_markings2"
fullness_icons = 2
can_loaf = TRUE //Soon //Actually, NOW
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 5
/datum/sprite_accessory/tail/taur/drake/extended/spotty
name = "Fat Spotted Drake Extended (Taur)"
vore_tail_sprite_variant = "FatDrake"
icon_state = "spottedextended_fatdrake"
extra_overlay = "spottedextended_fatdrake_markings"
extra_overlay_w = "spottedextended_fatdrake_markings"
extra_overlay2 = "spottedextended_fatdrake_markings_2"
extra_overlay2_w = "spottedextended_fatdrake_markings_2"
fullness_icons = 2
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 5
/datum/sprite_accessory/tail/taur/drake/spotty
name = "Spotted Drake (Taur, Tricolor)"
icon_state = "spotteddrake_s"
extra_overlay = "spotteddrake_markings"
extra_overlay_w = "spotteddrake_markings"
extra_overlay2_w = "spotteddrake_markings"
extra_overlay2 = "spotteddrake_markings_2"
extra_overlay2_w = "spotteddrake_markings_2"
suit_sprites = 'icons/mob/taursuits_drake_ch.dmi'
icon_sprite_tag = "drake"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 6
/datum/sprite_accessory/tail/taur/drake/fat/spotty
name = "Fat Spotted Drake (Taur, Tricolor)"
vore_tail_sprite_variant = "FatDrake"
extra_overlay2 = "fatspotteddrake_markings"
extra_overlay2_w = "fatspotteddrake_markings"
icon_state = "fatspotteddrake_s"
extra_overlay = "fatspotteddrake_markings"
extra_overlay_w = "fatspotteddrake_markings"
extra_overlay2 = "fatspotteddrake_markings_2"
extra_overlay2_w = "fatspotteddrake_markings_2"
fullness_icons = 2
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 6
/datum/sprite_accessory/tail/taur/drake/drake_vwag/spotty
name = "Spotted Drake (Taur, Tricolor, Fat vwag)"
extra_overlay2 = "spotteddrake_markings"
extra_overlay2_w = "fatspotteddrake_markings"
loaf_offset = 6
/datum/sprite_accessory/tail/taur/drake/extended
/datum/sprite_accessory/tail/taur/drake/extended_alt
name = "Drake Extended (Taur)"
vore_tail_sprite_variant = "Drake"
icon_state = "extendeddrake"
extra_overlay = "extendeddrake_markings"
extra_overlay_w = "extendeddrake_markings"
extra_overlay2 = "extendeddrake_markings_2"
extra_overlay2_w = "extendeddrake_markings_2"
icon_sprite_tag = "extendeddrake"
icon_state = "extended_drake"
extra_overlay = "extended_drake_markings"
extra_overlay_w = "extended_drake_markings"
extra_overlay2 = "extended_drake_markings_2"
extra_overlay2_w = "extended_drake_markings_2"
fullness_icons = 3
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 5
/datum/sprite_accessory/tail/taur/drake/extended/spotted
/datum/sprite_accessory/tail/taur/drake/extended_alt/spotted
name = "Spotted Drake Extended (Taur)"
extra_overlay2 = "spottedextendeddrake_markings"
extra_overlay2_w = "spottedextendeddrake_markings"
/datum/sprite_accessory/tail/taur/drake/extended/fat
name = "Fat Drake Extended (Taur)"
icon_state = "extendedfatdrake"
extra_overlay = "extendedfatdrake_markings"
extra_overlay2 = "extendedfatdrake_markings_2"
icon_sprite_tag = "extendedfatdrake"
vore_tail_sprite_variant = "FatDrake"
fullness_icons = 2
/datum/sprite_accessory/tail/taur/drake/extended/fat/spotty
name = "Fat Spotted Drake Extended (Taur)"
extra_overlay2 = "spottedextendedfatdrake_markings"
extra_overlay2_w = "spottedextendedfatdrake_markings"
vore_tail_sprite_variant = "Drake"
icon_state = "spottedextended_drake"
extra_overlay = "spottedextended_drake_markings"
extra_overlay_w = "spottedextended_drake_markings"
extra_overlay2 = "spottedextended_drake_markings_2"
extra_overlay2_w = "spottedextended_drake_markings_2"
fullness_icons = 3
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 5
/datum/sprite_accessory/tail/taur/lizard
name = "Lizard (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi'
icon_state = "lizard_s"
suit_sprites = 'icons/inventory/suit/taursuits_lizard.dmi'
suit_sprites = 'icons/mob/taursuits_lizard_ch.dmi'
icon_sprite_tag = "lizard"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
@@ -88,16 +116,36 @@
vore_tail_sprite_variant = "Lizard"
fullness_icons = 1
/datum/sprite_accessory/tail/taur/lizard/fatlizard
name = "Fat Lizard (Taur)"
icon_state = "fatlizard_s"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/lizard_wag
name = "Lizard (Taur, Fat vwag)"
icon_state = "lizard_s"
ani_state = "fatlizard_s"
/datum/sprite_accessory/tail/taur/lizard/twocolor
/datum/sprite_accessory/tail/taur/lizard/lizard_2c
name = "Lizard dual-color (Taur)"
icon_state = "lizard_s"
extra_overlay = "lizard_markings"
//icon_sprite_tag = "lizard2c"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 5
/datum/sprite_accessory/tail/taur/lizard/twocolor_wag
/datum/sprite_accessory/tail/taur/lizard/fatlizard_2c
name = "Fat Lizard (Taur, dual-color)"
icon_state = "fatlizard_s"
extra_overlay = "fatlizard_markings"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/lizard_2c_wag
name = "Fat Lizard (Taur, dual-color, Fat vwag)"
icon_state = "lizard_s"
extra_overlay = "lizard_markings"
@@ -106,40 +154,32 @@
/datum/sprite_accessory/tail/taur/lizard/spotty
name = "Spotted Lizard (Taur, Tricolor)"
extra_overlay2 = "spottedlizard_markings"
extra_overlay2_w = "spottedlizard_markings"
icon_state = "spottedlizard_s"
extra_overlay = "spottedlizard_markings"
extra_overlay_w = "spottedlizard_markings"
extra_overlay2 = "spottedlizard_markings_2"
extra_overlay2_w = "spottedlizard_markings_2"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 5
/datum/sprite_accessory/tail/taur/lizard/spotty_wag
name = "Spotted Lizard (Taur, Tricolor, Fat vwag)"
ani_state = "fatlizard_s"
extra_overlay_w = "fatlizard_markings"
extra_overlay2 = "fatspottedlizard_markings"
extra_overlay2_w = "fatspottedlizard_markings"
/datum/sprite_accessory/tail/taur/lizard/fatlizard
name = "Fat Lizard (Taur)"
icon_state = "fatlizard_s"
icon_sprite_tag = "fatlizard"
loaf_offset = 3
/datum/sprite_accessory/tail/taur/lizard/fatlizard/twocolor
name = "Fat Lizard (Taur, dual-color)"
extra_overlay = "fatlizard_markings"
/datum/sprite_accessory/tail/taur/lizard/fatlizard/spotty
/datum/sprite_accessory/tail/taur/lizard/spotty_fat
name = "Fat Spotted Lizard (Taur, Tricolor)"
extra_overlay = "fatlizard_markings"
extra_overlay_w = "fatlizard_markings"
extra_overlay2 = "fatspottedlizard_markings"
extra_overlay2_w = "fatspottedlizard_markings"
icon_state = "fatspottedlizard_s"
extra_overlay = "fatspottedlizard_markings"
extra_overlay_w = "fatspottedlizard_markings"
extra_overlay2 = "fatspottedlizard_markings_2"
extra_overlay2_w = "fatspottedlizard_markings_2"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file.
loaf_offset = 3
/datum/sprite_accessory/tail/taur/naga
name = "Naga (Taur)"
//TODO: MOAR NAGA SUITS
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi'
icon_state = "naga_s"
suit_sprites = 'icons/inventory/suit/taursuits_naga.dmi'
icon_sprite_tag = "naga"
suit_sprites = 'icons/mob/taursuits_naga.dmi'
//icon_sprite_tag = "naga"
vore_tail_sprite_variant = "Naga"
fullness_icons = 1
@@ -174,41 +214,51 @@
name = "Naga (Taur, Fat, dual color)"
icon_state = "fatnaga_s"
extra_overlay = "fatnaga_markings"
icon_sprite_tag = "fatnaga"
suit_sprites = null
/datum/sprite_accessory/tail/taur/naga/naga_twocolor
/datum/sprite_accessory/tail/taur/naga/naga_2c
name = "Naga dual-color (Taur)"
icon_state = "naga_s"
extra_overlay = "naga_markings"
//icon_sprite_tag = "naga2c"
//should really be called 'thin naga'
/datum/sprite_accessory/tail/taur/naga/alt
name = "Naga alt (Taur)"
icon_state = "altnaga_s"
icon_state = "naga_alt_s"
vore_tail_sprite_variant = "NagaAlt"
suit_sprites = 'icons/inventory/suit/taursuits_naga_alt.dmi'
fullness_icons = 1
icon_sprite_tag = "altnaga"
/datum/sprite_accessory/tail/taur/naga/alt/twocolor
/datum/sprite_accessory/tail/taur/naga/alt/second
name = "Naga dual-color alt (Taur)"
extra_overlay = "naga_alt_markings"
/datum/sprite_accessory/tail/taur/naga/alt_2c
name = "Naga alt style dual-color (Taur)"
suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT.
icon_state = "altnaga_s"
extra_overlay = "altnaga_markings"
//icon_sprite_tag = "altnaga2c"
/datum/sprite_accessory/tail/taur/naga/alt/threecolor
/datum/sprite_accessory/tail/taur/naga/alt_3c
name = "Naga alt style tri-color (Taur)"
suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT.
icon_state = "altnaga_s"
extra_overlay = "altnaga_markings"
extra_overlay2 = "altnaga_stripes"
/datum/sprite_accessory/tail/taur/naga/alt/threecolor_rattler
/datum/sprite_accessory/tail/taur/naga/alt_3c_rattler
name = "Naga alt style tri-color, rattler (Taur)"
suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT.
icon_state = "altnaga_s"
extra_overlay = "altnaga_markings"
extra_overlay2 = "altnaga_rattler"
/datum/sprite_accessory/tail/taur/naga/alt/threecolor_tailmaw
/datum/sprite_accessory/tail/taur/naga/alt_3c_tailmaw
name = "Naga alt style tri-color, tailmaw (Taur)"
suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT.
icon_state = "altnagatailmaw_s"
extra_overlay = "altnagatailmaw_markings"
extra_overlay2 = "altnagatailmaw_eyes"
icon_sprite_tag = "altnagatailmaw"
/datum/sprite_accessory/tail/taur/noodle
name = "Eastern Dragon (Taur)"
@@ -216,7 +266,7 @@
icon_state = "noodle_s"
extra_overlay = "noodle_markings"
extra_overlay2 = "noodle_markings_2"
suit_sprites = 'icons/inventory/suit/taursuits_noodle.dmi'
suit_sprites = 'icons/mob/taursuits_noodle.dmi'
clip_mask_state = "taur_clip_mask_noodle"
icon_sprite_tag = "noodle"
@@ -1,4 +1,16 @@
// Special snowflake tails/taurhalves
//spoopylizz: Roiz Lizden
/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 64x32 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite.
name = "Long Lizard Tail (Roiz Lizden)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_snowflake.dmi'
icon_state = "roiz_tail_s"
do_colouration = FALSE
ckeys_allowed = list("spoopylizz")
hide_body_parts = null
clip_mask_icon = null
clip_mask_state = null
//grallstonefist: Ranihrönn Skrolk
/datum/sprite_accessory/tail/taur/altmermaid/orcamermaid
name = "Mermaid Orca (Taur)"
@@ -7,7 +19,6 @@
can_ride = TRUE
do_colouration = FALSE
ckeys_allowed = list("grallstonefist")
tailsock_markings = "orcamermaid_marking"
//wickedtemp: Chakat Tempest
/datum/sprite_accessory/tail/taur/feline/tempest
+17 -29
View File
@@ -3,7 +3,6 @@
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "sectdrone"
extra_overlay = "sectdrone_markings"
icon_sprite_tag = "sectdrone"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
vore_tail_sprite_variant = "SectDrone"
@@ -11,7 +10,6 @@
struggle_anim = TRUE
loaf_offset = 3
fullness_icons = 3
clip_mask_state = "taur_clip_mask_sectdrone"
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
@@ -28,21 +26,21 @@
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/sectdrone/drone_wag
/datum/sprite_accessory/tail/taur/sect_drone/drone_wag
name = "Sect Drone (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "sectdrone"
extra_overlay = "sectdrone_markings"
ani_state = "fatsectdrone"
extra_overlay_w = "fatsectdrone_markings"
icon_sprite_tag = "sectdrone"
icon_state = "sect_drone"
extra_overlay = "sect_drone_markings"
ani_state = "fat_sect_drone"
extra_overlay_w = "fat_sect_drone_markings"
icon_sprite_tag = "sect_drone"
/datum/sprite_accessory/tail/taur/sectdrone/fat
/datum/sprite_accessory/tail/taur/sect_drone/fat
name = "Fat Sect Drone (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "fatsectdrone"
extra_overlay = "fatsectdrone_markings"
icon_sprite_tag = "sectdrone"
icon_state = "fat_sect_drone"
extra_overlay = "fat_sect_drone_markings"
icon_sprite_tag = "sect_drone"
/datum/sprite_accessory/tail/taur/horse/synthhorse
name = "SynthHorse dual-color (Taur)"
@@ -50,7 +48,7 @@
icon_state = "synthhorse_s"
extra_overlay = "synthhorse_markings"
extra_overlay2 = "synthhorse_glow"
icon_sprite_tag = "synthhorse"
//icon_sprite_tag = "synthhorse"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
@@ -61,7 +59,7 @@
icon_state = "synthfeline_s"
extra_overlay = "synthfeline_markings"
extra_overlay2 = "synthfeline_glow"
icon_sprite_tag = "synthfeline"
//icon_sprite_tag = "synthfeline"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
@@ -72,7 +70,6 @@
icon_state = "fatsynthfeline_s"
extra_overlay = "fatsynthfeline_markings"
extra_overlay2 = "fatsynthfeline_glow"
icon_sprite_tag = "fatsynthfeline"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
@@ -81,7 +78,6 @@
name = "SynthFeline dual-color (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthfeline_s"
icon_sprite_tag = "synthfeline"
extra_overlay = "synthfeline_markings"
extra_overlay2 = "synthfeline_glow"
ani_state = "fatsynthfeline_s"
@@ -92,7 +88,6 @@
name = "Synthetic chassis - agile (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthtaur1_s"
icon_sprite_tag = "synthtaur1"
extra_overlay = "synthtaur1_markings"
extra_overlay2 = "synthtaur1_glow"
clip_mask_state = "taur_clip_mask_synthtaur1"
@@ -100,8 +95,7 @@
/datum/sprite_accessory/tail/taur/synthetic/syntheticagi_fat
name = "Synthetic chassis - agile (Taur, Fat)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthtaur1_fat_s"
icon_sprite_tag = "synthtaur1_fat"
icon_state = "synthtaur1_s"
extra_overlay = "synthtaur1_fat_markings"
extra_overlay2 = "synthtaur1_glow"
clip_mask_state = "taur_clip_mask_synthtaur1"
@@ -110,10 +104,9 @@
name = "Synthetic chassis - agile (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthtaur1_s"
icon_sprite_tag = "synthtaur1"
extra_overlay = "synthtaur1_markings"
extra_overlay2 = "synthtaur1_glow"
ani_state = "synthtaur1_fat_s"
ani_state = "synthtaur1_s"
extra_overlay_w = "synthtaur1_fat_markings"
extra_overlay2_w = "synthtaur1_glow"
clip_mask_state = "taur_clip_mask_synthtaur1"
@@ -122,9 +115,9 @@
name = "SynthLizard dual-color (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthlizard_s"
icon_sprite_tag = "synthlizard"
extra_overlay = "synthlizard_markings"
extra_overlay2 = "synthlizard_glow"
//icon_sprite_tag = "synthlizard"
can_loaf = TRUE
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
loaf_offset = 3
@@ -135,7 +128,6 @@
name = "Fat SynthLizard dual-color (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "fatsynthlizard_s"
icon_sprite_tag = "fatsynthlizard"
extra_overlay = "fatsynthlizard_markings"
extra_overlay2 = "fatsynthlizard_glow"
can_loaf = TRUE
@@ -146,7 +138,6 @@
name = "SynthLizard dual-color (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthlizard_s"
icon_sprite_tag = "fatsynthlizard"
extra_overlay = "synthlizard_markings"
extra_overlay2 = "synthlizard_glow"
ani_state = "fatsynthlizard_s"
@@ -157,7 +148,6 @@
name = "Synthetic Naga dual-color (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthnaga"
icon_sprite_tag = "synthnaga"
extra_overlay = "synthnaga_belly"
/datum/sprite_accessory/tail/taur/longvirus
@@ -165,22 +155,21 @@
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "longvirus_s"
extra_overlay = "longvirus_markings"
icon_sprite_tag = "longvirus"
icon_sprite_tag = "virus"
/datum/sprite_accessory/tail/taur/wolf/synthwolf
name = "SynthWolf dual-color (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "synthwolf_s"
icon_sprite_tag = "synthwolf"
extra_overlay = "synthwolf_markings"
extra_overlay2 = "synthwolf_glow"
//icon_sprite_tag = "synthwolf"
loaf_offset = 3
/datum/sprite_accessory/tail/taur/wolf/fatsynthwolf
name = "Fat SynthWolf dual-color (Taur)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_state = "fatsynthwolf_s"
icon_sprite_tag = "fatsynthwolf"
extra_overlay = "fatsynthwolf_markings"
extra_overlay2 = "fatsynthwolf_glow"
loaf_offset = 3
@@ -188,7 +177,6 @@
/datum/sprite_accessory/tail/taur/wolf/fatsynthwolf_wag
name = "SynthWolf dual-color (Taur, Fat vwag)"
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
icon_sprite_tag = "synthwolf"
icon_state = "synthwolf_s"
extra_overlay = "synthwolf_markings"
extra_overlay2 = "synthwolf_glow"
@@ -1147,7 +1147,7 @@ Departamental Swimsuits, for general use
/obj/item/clothing/suit/storage/hooded/wintercoat/jessie
name = "Handmade Winter Suit"
desc = "A durable, but somewhat ragged lower portion of a snow suit fitted for a wolftaur."
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_wolf.dmi'
icon_state = "jessiecoat"
/obj/item/clothing/suit/storage/hooded/wintercoat/jessie/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE)
@@ -1163,7 +1163,7 @@ Departamental Swimsuits, for general use
name = "Kat's Fox Taur Armor"
desc = "A set of security armor, light weight and easy to run in for a Taur, this item protects the \
entire body."
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_wolf.dmi'
icon_state = "katesuit"
item_state_slots = null
@@ -1181,7 +1181,7 @@ Departamental Swimsuits, for general use
desc = "Taur engineering voidsuit. Recolored navy blue and white. Slightly tweaked as well to \
get close to having security voidsuit protection as possible with a slight reduction in movement \
speed to compensate for custom padding and armor Kateryna made herself."
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_wolf.dmi'
icon_state = "lilithsuit"
species_restricted = null
armor = list(melee = 40, bullet = 20, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
@@ -1534,7 +1534,7 @@ Departamental Swimsuits, for general use
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
desc = "A series of armor plates painted black, deployed from a back-mounted module. They fit smoothly over the unit's armor plates and projects a skintight bubble shield over the unit's uncovered parts. Faceplate and coolant unit not included."
species_restricted = null
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_lizard.dmi'
icon_state = "hasd_suit"
pixel_x = -16
@@ -452,7 +452,7 @@
name = "custom security cuirass"
desc = "An armored vest that protects against some damage. It appears to be created for a wolfhound. The name 'Serdykov L. Antoz' is written on a tag inside one of the haunchplates."
species_restricted = null //Species restricted since all it cares about is a taur half
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
icon = 'icons/mob/taursuits_wolf.dmi'
icon_state = "serdy_armor"
item_state = "serdy_armor"
body_parts_covered = CHEST|LEGS|ARMS //It's a full body suit, minus hands and feet. Arms and legs should be protected, not just the torso. Retains normal security armor values still.