[READY] Taursuits and Tail socks [IDB IGNORE] (#19611)
* Consolidation and Sorting Taurs There has been an excellent consolidation of taur bodies, but the taur.dm file still has the big legs and long tails in them... which these are not taur bodies and have been evicted. Taur bodies have been broken into multiple files to improve readability. Tails will be receiving a similar break up later. Some pathing was adjusted to make inheritence a lot easier. They've also been made alphabetical. Prelude to Taur suits. * Sorted Alphabetically now * Update taur_animal.dm * sprite maintenance Kitsune given triple color zones like fox taurs Feline sprites consistent for what they modify. Some of them were misaligned weirdly. Giant spider taurs have coloration where needed, and aren't colored, as are the CITADEL ported wolf taurs. * Make sure this gets cleaned up to avoid confus * actually y'know what, let's just do it. Tails sorted. Old, uncolored sprites removed: squirrel, orange/red stripe taj, brown bear, brow wisewolf wolf grey, green, black mouse pink Changed sprites: Cross fox (regular) has three color zones now Wolf has the tail tip colorable now Tucker0666 and HooDoo's snowflake stuff named to them * TaurClothingCutter tool and assorted assets Bastardized from the old Human Cutter tool made ages ago, permits cookie-cutting the custom sprited tauric suits (Made by Poojawa) into the taur shape, with padding to include certain extra details like bulk or Imperium Monk, etc. Bedsheet is to be added after. More info in .md * Begin Tailsock vars Also adding praliminary bunny taur cutouts, it'll be further trimmed for sock positioning. * We'll make the taur specific tailsock seperate snip snip snip! * unfucks feline taur sprites Turns out someone decided that feline taurs each needed uniquely identical sprites. and didn't bother to give the regular version a normal tail wag. Now it's just normal, normal (wag). Fat, fat (wag), Marking 1 (chest, belly, feet), Marking2 (chest and belly) and Marking2_2 (feet). Tiger simplified in the same way. * Copied some homework from RS this allows for the sock to appear, sometimes. * adjusting fox cutter * Batch actionable suit cutting Otie is prepped for this, but you shouldn't batch longs and shorts at the same time for sanity's sake. or if you do, just rename the short version sotie or something I guess Mobius suit moved from fullsuits to coats, preserves a lot more of the overcoat look like this * Fresh cutouts, moved relevant files Now we can bother people for review assistance. yay! * Update ATTRIBUTIONS.md Yeah! I think this is correct. I dunno. Seems like a good idea I guess. Gunlocker stuff is there because I'm gunna port that soon too. * actually getting it to compile * Tail sock toggle & sealed state for voidsuits I'm crashing out from how poorly upkept digitigrade suits are, but this needs to be fixed in a different PR, I'll leave my distracted regular human mob suits in here. When my legacy template is still in the files but it's missing like, 80% of suit sprites... probably a bunch of uniform sprites too. uhg. * scrape up the last few missing suits I'm absolutely going to end up doing digitigrade suits too. Fucking watch me. * I sorted mob and mob_digi.dmi Unused (returned nothing on a quick search) placed into mob_unsued just in case, but most of the digi ones are leftovers from my own work back at Citadel. Wew lad. * resolve compile issues * TODO: Strip out or Flick() emotes with old wag We no longer utilize the randomize system because it just never bloody worked right. And few people, if any, want to do NINE different wag animations for 200+ tails. Nah bro. Yeet. Now a player's chosen custom tail will be asked for, instead of the base species one. * lmao, belly suffication linter check.... * more sprite work, mostly to get socks rendering Added wag states for husky, deer, otie taurs, icon_sprite_tag hijacked for its use for tailsocks on taurs, which was previously only saddlebacks. The majority of the tails_animal base sprites have had their markings unified, the overlay is still drawn on top, but the base sprite needs to be whole or there's holes in the tailsock. It's ok. You can just layer your markings on top... * Update taur_animal.dm * Assign Tail sock colors and other vars * orite the item version needs to match name wise * Updates with missing suit sprites the missing ones are probably never used but someone might use 'em Adding batch action, single outfit option to the cutter that won't do the entire sprite sheet * Update TaurClothingCutter.dm * Adding ability to toggle the full suit or clipped Because I know people will grumble otherwise. pff. cleans up some of my mess too, how about that. * Adds blood sprites for taur suits * Update vorestation.dme * Poking at resolving North tailface being hidden Also preparing Bunny taur, Scoli, and Sloog sprites for taursuit conversion. polishing socks to exist accordingly. We'll figure things out, slowly ~ * apply_tailsock_layer(reducing Kesh blood pressure) <3 North facing works for regular tails, but not for taur tails, but that's fine, we're making exceptional progress. * Adding support for more taurs Bunny, Scoli, Sloog, Husky (and wolftg) taurs all now have working suit support. bunny and husky had some modified fluff on the chest/butt respectively to fit the premade suits. Sloog needs custom shoes to fix the six leg vs four leg sprites. but that's for another day. the sock will cover the missing pixels anyway. Fixed extra sprites for the spotted drake/lizard states, we really only ever need the single base sprite! also a more progress on getting the sock marking section updated for north facement layering. as well as the vars for proper icon states. added a 'none' state to avoid null icon issues. * Update taur_socks.dmi * Update taur_reptile.dm * few more tweaks * refractor tail render code to mutable_appearance Extremely overdue! I like this puzzle box of a project, honestly. also cleans up a lot of the procs related to tail generation, vore tails, and even wings get covered in tailsock now, tied to the toggle. * please for the love of fuck stop kidnapping taurs * fiddle fiddle... * fix missing markings. evicted surplus naga alt seriously, two alt naga types that are literally identical in shape and first overlay. why tho. * clipping code should work better now Improved some taur clipping masks like Giant Spiders and Husky removed extraneous bigsnaketail, smooth tail icons Adds adorable bubble helms to tailmaw (anthro and naga) socks! still fiddling with tailsock code. the amount of nonsense layer code is... * Purge snowflake species to default to mob.dmi Default support, tailsocks will render on space suits, digi suits won't hiccup. Snowflake icons in icons/inventory/suit/mob_<species>.dmi preserved if someone wants to adapt alternatives for the big Unathi shoulder pauldrons or whatever. No on-sprite tail needed! Teshari obviously excluded from these changes, as well as Altevian * ...fiddle increases * Update update_icons.dm * fiddle fiddle... fukkit bedtime * IT WORKS Yeet HIDETAIL, no longer needed!!!!! Custom tailsock states specific to uncolored tails + snowflake cleaned up tailsock marking overlays a bit better. Peacock tail moved to general use. Full backpacks still maximum layer appearance'd, don't know the fuck why. Use a sachel. Will impliment saddlebags at some point for every version of backpack. * Cleaning up added missing snaketail_stripes, makes sure do_coloration is respected for those bodies that won't need a sock Missing states, BEGON! Also we properly retire the old sprite_accessories_tail file. Shift bunny into taur_animal and the other rogue-star stuff into tails_long. * Fixing some byond mischief Sorted Update_icons a bit more, putting wing procs together, moving the flying proc checks to living_vr and human_powers_vr forcing suits to clear their taurized stat more aggressively on equip and dropping. Removing the flip-flop check for making something taurized. Also cleaning up single letter vars fixing a case of too-many-godamn-layers in the tailsock code. Also shoves north facing to actually drawing over backpacks on north face Unless body designer code calls for all equipment to be re-equipped upon exiting the various methods, there will need to be a manual on/off of modified clothes to fix 'em. But if you're nude then you won't have this issue. --------- Co-authored-by: Cameron Lennox <killer65311@gmail.com>
@@ -131,3 +131,28 @@
|
||||
**File:** `/sound/talksounds/looc_sound.ogg`<br>
|
||||
**Creator:** VerySoft<br>
|
||||
**License:** [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)<br>
|
||||
<br>
|
||||
**Files**:icons\inventory\suit\taursuits_wolf,<br>
|
||||
icons\inventory\suit\taursuits_fox,<br>
|
||||
icons\inventory\suit\taursuits_zorgoia,<br>
|
||||
icons\inventory\suit\taursuits_redpanda,<br>
|
||||
icons\inventory\suit\taursuits_lizard,<br>
|
||||
icons\inventory\suit\taursuits_drake,<br>
|
||||
icons\inventory\suit\taursuits_otie,<br>
|
||||
icons\inventory\suit\taursuits_noodle,<br>
|
||||
icons\inventory\suit\taursuits_horse,<br>
|
||||
icons\inventory\suit\taursuits_cow,<br>
|
||||
icons\inventory\suit\taursuits_skunk,<br>
|
||||
icons\inventory\suit\taursuits_sergal,<br>
|
||||
icons\inventory\suit\taursuits_rat,<br>
|
||||
icons\inventory\suit\taursuits_deer,<br>
|
||||
icons\inventory\suit\taursuits_feline<br>
|
||||
**Folder**:tools\TaurClothingCutter<br>
|
||||
**Notes:** All sprites other than the waist-up humanoid torso portions are fully created by Poojawa and as such must be credited if ported.<br>
|
||||
**File**: icons/obj/guncabinet.dmi<br>
|
||||
**Notes:** All sprites not appended with 'old' Are fully created by Poojawa.<br>
|
||||
**File**: icons/obj/machines/foodsynthesizer.dmi
|
||||
**Notes:** Original Sprite taken from Deep Space 13. Portable Synth, Screen Animations, East/West, Panel layering, and canisters, Are fully created by Poojawa.<br>
|
||||
**Creator:** Poojawa<br>
|
||||
**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)<br>
|
||||
<br>
|
||||
@@ -1,190 +1,190 @@
|
||||
// Default species get default sprites, VR species get VR sprites
|
||||
#define ALL_SPRITE_SHEETS_SUIT_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/suit/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/suit/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/suit/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/suit/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/suit/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/suit/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/suit/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/suit/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/suit/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/suit/mob_vulpkanin.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/suit/mob.dmi',\
|
||||
SPECIES_ALTEVIAN = 'icons/inventory/suit/mob_altevian.dmi')
|
||||
#define VR_SPECIES_SPRITE_SHEETS_HEAD_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/mob_vulpkanin.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_ALTEVIAN = 'icons/inventory/head/mob_altevian.dmi')
|
||||
#define VR_SPECIES_SPRITE_SHEETS_HANDS_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/mob_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/mob.dmi')
|
||||
#define VR_SPECIES_SPRITE_SHEETS_FEET_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/mob_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/mob.dmi')
|
||||
|
||||
#define SPECIES_SPRITE_SHEETS_SUIT_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/suit/item_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/suit/item_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/suit/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/suit/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/suit/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/suit/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/suit/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/suit/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/suit/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/suit/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/suit/item_vulpkanin.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/suit/item.dmi',\
|
||||
SPECIES_ALTEVIAN = 'icons/inventory/suit/item_altevian.dmi')
|
||||
#define VR_SPECIES_SPRITE_SHEETS_HEAD_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/item_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/item_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/head/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/item_vulpkanin.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_ALTEVIAN = 'icons/inventory/head/item_altevian.dmi')
|
||||
#define VR_SPECIES_SPRITE_SHEETS_HANDS_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/item_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/item_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/hands/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/item_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/item.dmi')
|
||||
#define VR_SPECIES_SPRITE_SHEETS_FEET_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/item_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/item_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/feet/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/item_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/item.dmi')
|
||||
#define ALL_VR_SPRITE_SHEETS_HEAD_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/head/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/mob_vulpkanin.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/mob.dmi',\
|
||||
SPECIES_ALTEVIAN = 'icons/inventory/head/mob_altevian.dmi')
|
||||
#define ALL_VR_SPRITE_SHEETS_HANDS_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/hands/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/mob_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/mob.dmi')
|
||||
#define ALL_VR_SPRITE_SHEETS_FEET_MOB list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/mob_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/mob_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/mob_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/feet/mob_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/mob_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/mob_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/mob_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/mob_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/mob_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/mob_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/mob_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/mob.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/mob.dmi')
|
||||
#define ALL_VR_SPRITE_SHEETS_HEAD_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/item_unathi.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/item_unathi.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/head/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/item_vulpkanin.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/head/item.dmi',\
|
||||
SPECIES_ALTEVIAN = 'icons/inventory/head/item_altevian.dmi')
|
||||
#define ALL_VR_SPRITE_SHEETS_HANDS_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/item_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/item_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/hands/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/item_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/hands/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/hands/item.dmi')
|
||||
#define ALL_VR_SPRITE_SHEETS_FEET_ITEM list(\
|
||||
SPECIES_HUMAN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/item_tajaran.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/item_skrell.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/item_unathi.dmi',\
|
||||
SPECIES_TAJARAN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_SKRELL = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_UNATHI = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_TESHARI = 'icons/inventory/feet/item_teshari.dmi',\
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/item_unathi.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/item_akula.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/item_sergal.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/item_sergal.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/item_vulpkanin.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item_vulpkanin.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/item_vulpkanin.dmi')
|
||||
SPECIES_XENOHYBRID = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_AKULA = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_SERGAL = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_NEVREAN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_VULPKANIN = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_ZORREN_HIGH = 'icons/inventory/feet/item.dmi',\
|
||||
SPECIES_FENNEC = 'icons/inventory/feet/item.dmi')
|
||||
|
||||
@@ -44,6 +44,10 @@
|
||||
#define TARGETED_LAYER 41 //'Aimed at' overlay layer
|
||||
#define TOTAL_LAYERS 41 // <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list.
|
||||
|
||||
/// Tail layering shortcuts
|
||||
#define TAUR_LAYERING BODY_LAYER+TAIL_UPPER_LAYER+1
|
||||
#define LOWER_TAIL_DIRS list(SOUTH, EAST, WEST)
|
||||
#define TAIL_LAYER_CLEARING list(TAIL_UPPER_LAYER, TAIL_UPPER_LAYER_HIGH, TAIL_UPPER_LAYER_LOW, TAIL_LOWER_LAYER)
|
||||
|
||||
//These two are only used for gargoyles currently
|
||||
#define HUMAN_BODY_LAYERS list(MUTATIONS_LAYER, TAIL_LOWER_LAYER, WING_LOWER_LAYER, BODYPARTS_LAYER, SKIN_LAYER, BLOOD_LAYER, MOB_DAM_LAYER, TAIL_UPPER_LAYER, HAIR_LAYER, HAIR_ACCESSORY_LAYER, EYES_LAYER, WING_LAYER, VORE_BELLY_LAYER, VORE_TAIL_LAYER, TAIL_UPPER_LAYER_HIGH, TAIL_UPPER_LAYER_LOW)
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
slowdown = 0.5
|
||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 80, bomb = 30, bio = 30, rad = 30)
|
||||
siemens_coefficient = 0
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
/obj/item/clothing/suit/space/cult/cultify()
|
||||
return
|
||||
|
||||
@@ -42,15 +42,14 @@
|
||||
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)
|
||||
@@ -987,14 +986,26 @@
|
||||
. = ..()
|
||||
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)
|
||||
@@ -1017,9 +1028,9 @@
|
||||
if(hood)
|
||||
hood.canremove = TRUE // This shouldn't matter anyways but just incase.
|
||||
if(ishuman(hood.loc))
|
||||
var/mob/living/carbon/H = hood.loc
|
||||
H.unEquip(hood, 1)
|
||||
H.update_inv_wear_suit()
|
||||
var/mob/living/carbon/Carbmob = hood.loc
|
||||
Carbmob.unEquip(hood, 1)
|
||||
Carbmob.update_inv_wear_suit()
|
||||
hood.forceMove(src)
|
||||
|
||||
/obj/item/clothing/suit/proc/ToggleHood()
|
||||
@@ -1029,69 +1040,64 @@
|
||||
RemoveHood()
|
||||
return
|
||||
if(ishuman(loc))
|
||||
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!"))
|
||||
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!"))
|
||||
return
|
||||
if(H.head)
|
||||
to_chat(H, span_warning("You're already wearing something on your head!"))
|
||||
if(Hoomie.head)
|
||||
to_chat(Hoomie, span_warning("You're already wearing something on your head!"))
|
||||
return
|
||||
else
|
||||
if(color != hood.color)
|
||||
hood.color = color
|
||||
H.equip_to_slot_if_possible(hood,slot_head,0,0,1)
|
||||
Hoomie.equip_to_slot_if_possible(hood,slot_head,0,0,1)
|
||||
hood_up = TRUE
|
||||
hood.canremove = FALSE
|
||||
update_icon()
|
||||
H.update_inv_wear_suit()
|
||||
Hoomie.update_inv_wear_suit()
|
||||
///Hood stuff end.
|
||||
|
||||
/obj/item/clothing/suit/update_clothing_icon()
|
||||
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 ..()
|
||||
if (ismob(loc))
|
||||
var/mob/Mobbie = loc
|
||||
Mobbie.update_inv_wear_suit()
|
||||
|
||||
///Establishes Icon overrides for taur bodies
|
||||
/obj/item/clothing/suit/proc/taurize(mob/living/carbon/human/taur, has_taur_tail = FALSE)
|
||||
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
|
||||
/// 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(!taurized)
|
||||
icon_override = initial(icon_override)
|
||||
taurized = FALSE
|
||||
taurized = TRUE
|
||||
|
||||
// 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)
|
||||
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)
|
||||
var/image/standing = ..()
|
||||
if(taurized) //Special snowflake var on suits
|
||||
if(!standing)
|
||||
return null
|
||||
|
||||
// Only apply the -16 offset when taurized AND showtaurbutts is FALSE
|
||||
if(taurized && !showtaurbutts && icon_override)
|
||||
standing.pixel_x = -16
|
||||
standing.layer = BODY_LAYER + TAIL_UPPER_LAYER + 1
|
||||
standing.layer = TAUR_LAYERING
|
||||
// but if we don't have an icon_override, we already have our offsets, set.
|
||||
return standing
|
||||
|
||||
/obj/item/clothing/suit/apply_accessories(image/standing)
|
||||
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 ..()
|
||||
. = ..()
|
||||
|
||||
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
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
@@ -1162,6 +1168,8 @@
|
||||
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))
|
||||
|
||||
@@ -24,6 +24,11 @@
|
||||
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/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state)
|
||||
bloodsies.color = blood_color
|
||||
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
|
||||
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|HIDETAIL
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
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 = HIDETAIL|HIDEHOLSTER
|
||||
flags_inv = 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|HIDETAIL
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|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,7 +77,8 @@
|
||||
|
||||
/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
|
||||
@@ -94,6 +95,8 @@
|
||||
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)
|
||||
@@ -181,6 +184,8 @@
|
||||
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]."))
|
||||
@@ -189,6 +194,8 @@
|
||||
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()
|
||||
|
||||
@@ -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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
drop_sound = 'sound/items/drop/leather.ogg'
|
||||
pickup_sound = 'sound/items/pickup/leather.ogg'
|
||||
|
||||
|
||||
@@ -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/mob/taursuits_wolf.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
|
||||
icon_state = "wolf_item"
|
||||
item_state = "heavy_wolf_armor"
|
||||
|
||||
|
||||
@@ -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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
//CMO's biosuit, blue stripe
|
||||
/obj/item/clothing/suit/bio_suit/cmo
|
||||
icon_state = "bio_cmo"
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
|
||||
@@ -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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|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/mob/taursuits_drake.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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/mob/taursuits_horse.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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/mob/taursuits_horse.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.dmi'
|
||||
body_parts_covered = CHEST
|
||||
pixel_x = -16
|
||||
|
||||
|
||||
@@ -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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEJUMPSUIT|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|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
item_flags = THICKMATERIAL
|
||||
|
||||
/obj/item/clothing/suit/radiation/Initialize(mapload)
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
//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"
|
||||
@@ -26,7 +26,7 @@
|
||||
key = "swish"
|
||||
|
||||
/datum/decl/emote/human/swish/do_emote(mob/living/carbon/human/user)
|
||||
user.animate_tail_once()
|
||||
user.animate_tail_start()
|
||||
|
||||
/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_fast()
|
||||
user.animate_tail_start()
|
||||
|
||||
/datum/decl/emote/human/fastsway
|
||||
key = "fastsway"
|
||||
|
||||
/datum/decl/emote/human/fastsway/do_emote(mob/living/carbon/human/user)
|
||||
user.animate_tail_fast()
|
||||
user.animate_tail_start()
|
||||
|
||||
/datum/decl/emote/human/swag
|
||||
key = "swag"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#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"
|
||||
@@ -84,17 +85,23 @@
|
||||
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 = rgb(50,50,50))
|
||||
/obj/item/remote_scene_tool/voodoo_doll/proc/generate_layer_image(image/input, matrix/newtransform, outline_width = 0, outline_color = DEFAULT_RGB_OUTLINE)
|
||||
if(input == null)
|
||||
return null
|
||||
|
||||
input.dir = SOUTH
|
||||
input.transform = newtransform
|
||||
input.layer = FLOAT_LAYER
|
||||
if(outline_width > 0)
|
||||
input.filters += filter(type="outline", size = outline_width, color = outline_color)
|
||||
// Please for the love of fuck stop kidnapping taur bodies.
|
||||
var/image/doll_img = image(input)
|
||||
|
||||
return 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!
|
||||
|
||||
if(outline_width > 0)
|
||||
doll_img.filters += filter(type="outline", size = outline_width, color = outline_color)
|
||||
|
||||
return doll_img
|
||||
|
||||
/obj/item/remote_scene_tool/voodoo_doll/update_icon()
|
||||
. = ..()
|
||||
@@ -124,26 +131,34 @@
|
||||
|
||||
if(no_fun_mode) return //no fun allowed
|
||||
|
||||
if(ishuman(owner)) //TODO, refactor the fuck out of this once I port the tgui filter manager stuff over.
|
||||
var/image/tail_image = null
|
||||
if(ishuman(owner)) //Am I a real boy now, papa?
|
||||
var/mob/living/carbon/human/buddy = owner
|
||||
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)
|
||||
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)
|
||||
|
||||
//tails need special attention because taurs
|
||||
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)
|
||||
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/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)
|
||||
// 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
|
||||
|
||||
//same kind of scenario for wings
|
||||
var/wingoutlinecolor = rgb(50,50,50)
|
||||
var/wingoutlinecolor = DEFAULT_RGB_OUTLINE
|
||||
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)
|
||||
@@ -177,6 +192,7 @@
|
||||
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,7 +305,10 @@
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/set_dir(new_dir)
|
||||
var/old_dir = dir
|
||||
. = ..()
|
||||
if(. && (species.tail || tail_style))
|
||||
//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))
|
||||
update_tail_showing()
|
||||
update_inv_wear_suit()
|
||||
|
||||
@@ -291,3 +291,8 @@
|
||||
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/taur)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that.
|
||||
if(tail_style.clip_mask)
|
||||
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.
|
||||
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,6 +613,8 @@ 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()
|
||||
@@ -631,30 +633,37 @@ 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 //Wearing a suit that prevents uniform rendering
|
||||
return
|
||||
|
||||
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/uniform_sprite
|
||||
if(istype(under) && !isnull(under.update_icon_define))
|
||||
uniform_sprite = under.update_icon_define
|
||||
else
|
||||
uniform_sprite = INV_W_UNIFORM_DEF_ICON
|
||||
var/icon/c_mask = null
|
||||
|
||||
//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)
|
||||
// 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
|
||||
)
|
||||
apply_layer(UNIFORM_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_id()
|
||||
@@ -849,31 +858,37 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
|
||||
|
||||
remove_layer(SUIT_LAYER)
|
||||
|
||||
//Hide/show other layers if necessary
|
||||
// Hide/show uniform & shoes
|
||||
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
|
||||
|
||||
if(istype(suit) && !isnull(suit.update_icon_define))
|
||||
suit_sprite = suit.update_icon_define
|
||||
else
|
||||
suit_sprite = INV_SUIT_DEF_ICON
|
||||
var/suit_sprite = (istype(suit) && !isnull(suit.update_icon_define)) ? suit.update_icon_define : 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
|
||||
|
||||
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)
|
||||
// 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])
|
||||
|
||||
// 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()
|
||||
@@ -986,11 +1001,13 @@ 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 = list(SOUTH, EAST, WEST) //Tail below clothing on side views too.
|
||||
if(tail_style)
|
||||
var/list/lower_layer_dirs = LOWER_TAIL_DIRS // Tail below clothing on side views too.
|
||||
if(!tail_style) // Sanity checks good checks.
|
||||
return
|
||||
else
|
||||
lower_layer_dirs = tail_style.lower_layer_dirs.Copy()
|
||||
|
||||
if(dir in lower_layer_dirs)
|
||||
if(istaurtail(tail_style) || (dir in lower_layer_dirs))
|
||||
return TAIL_LOWER_LAYER
|
||||
else
|
||||
return TAIL_UPPER_LAYER
|
||||
@@ -999,130 +1016,378 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
remove_layer(TAIL_UPPER_LAYER)
|
||||
remove_layer(TAIL_UPPER_LAYER_HIGH)
|
||||
remove_layer(TAIL_UPPER_LAYER_LOW)
|
||||
remove_layer(TAIL_LOWER_LAYER)
|
||||
// Clear previous tail layer assignments
|
||||
for(var/layers in TAIL_LAYER_CLEARING)
|
||||
remove_layer(layers)
|
||||
|
||||
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
|
||||
// Use default, let clip mask handle everything
|
||||
if(tail_style && tail_style.clip_mask_state && !istaurtail(tail_style))
|
||||
tail_layer = TAIL_UPPER_LAYER
|
||||
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)
|
||||
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()
|
||||
// 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)
|
||||
|
||||
//TODO: Is this the appropriate place for this, and not on species...?
|
||||
/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
|
||||
//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]"
|
||||
|
||||
return 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
|
||||
|
||||
/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()
|
||||
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]
|
||||
return overlays_standing[tail_layer]
|
||||
|
||||
remove_layer(TAIL_UPPER_LAYER)
|
||||
remove_layer(TAIL_UPPER_LAYER_HIGH)
|
||||
remove_layer(TAIL_UPPER_LAYER_LOW)
|
||||
remove_layer(TAIL_LOWER_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
|
||||
|
||||
if(tail_overlay)
|
||||
overlays_standing[tail_layer] = tail_overlay
|
||||
if(species.get_tail_animation(src))
|
||||
tail_overlay.icon_state = t_state
|
||||
. = tail_overlay
|
||||
// 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
|
||||
|
||||
apply_layer(tail_layer)
|
||||
return list(off_x, off_y)
|
||||
|
||||
//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
|
||||
/mob/living/carbon/human/proc/apply_tailsock_layer(image/tailoverlays, target_layer, apply_to_mob = TRUE)
|
||||
if(!tailoverlays)
|
||||
return null
|
||||
|
||||
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/obj/item/clothing/suit/socksuit = wear_suit
|
||||
var/datum/sprite_accessory/tail/tailtype = tail_style
|
||||
|
||||
var/image/tail_overlay = overlays_standing[tail_layer]
|
||||
if(tail_overlay && tail_overlay.icon_state == t_state)
|
||||
return //let the existing animation finish
|
||||
// Simplify our offset maths
|
||||
var/list/offsets = get_tail_offsets(socksuit, tailtype)
|
||||
var/total_off_x = offsets[1]
|
||||
var/total_off_y = offsets[2]
|
||||
|
||||
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()
|
||||
// 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
|
||||
|
||||
/mob/living/carbon/human/proc/animate_tail_start()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
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
|
||||
|
||||
set_tail_state("[species.get_tail(src)]_slow[rand(0,9)]")
|
||||
// Get our tailsock ready
|
||||
var/has_sock = FALSE
|
||||
var/icon/sock_icon = null
|
||||
var/sock_state = null
|
||||
|
||||
/mob/living/carbon/human/proc/animate_tail_fast()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
if(socksuit && socksuit.requires_tailsock && socksuit.tailsock_toggle && tailtype)
|
||||
has_sock = TRUE
|
||||
sock_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : socksuit.icon
|
||||
|
||||
set_tail_state("[species.get_tail(src)]_loop[rand(0,9)]")
|
||||
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))
|
||||
if(QDESTROYING(src) || !tail_style)
|
||||
return
|
||||
|
||||
if(stat != DEAD)
|
||||
set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]")
|
||||
if(stat == DEAD)
|
||||
set_tail_state(tail_style.icon_state)
|
||||
toggle_tail(FALSE) // Stop wagging on death
|
||||
else
|
||||
set_tail_state("[species.get_tail(src)]_static")
|
||||
toggle_tail(FALSE) //So tails stop when someone dies. TODO - Fix this hack ~Leshana
|
||||
// Resets tail state based on current wagging flag
|
||||
set_tail_state(wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)
|
||||
|
||||
/mob/living/carbon/human/proc/animate_tail_start()
|
||||
if(QDESTROYING(src) || !tail_style)
|
||||
return
|
||||
|
||||
toggle_tail(TRUE)
|
||||
if(tail_style.ani_state)
|
||||
set_tail_state(tail_style.ani_state)
|
||||
|
||||
/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
|
||||
|
||||
set_tail_state("[species.get_tail(src)]_static")
|
||||
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()
|
||||
|
||||
/mob/living/carbon/human/proc/update_wing_showing()
|
||||
if(QDESTROYING(src))
|
||||
@@ -1133,18 +1398,70 @@ 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
|
||||
wing_image.layer = BODY_LAYER + WING_LAYER
|
||||
if(wing_color)
|
||||
wing_image.color = wing_color
|
||||
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
|
||||
wing_image.layer = BODY_LAYER + WING_LOWER_LAYER
|
||||
if(wing_color)
|
||||
wing_image.color = wing_color
|
||||
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
|
||||
@@ -1220,49 +1537,6 @@ 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()
|
||||
@@ -1319,145 +1593,6 @@ 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,8 +1,14 @@
|
||||
/mob/living/Check_Shoegrip()
|
||||
if(flying)
|
||||
return 1
|
||||
return TRUE
|
||||
..()
|
||||
|
||||
/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"
|
||||
|
||||
@@ -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 = 1 // 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 = TRUE // 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
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/*
|
||||
////////////////////////////
|
||||
/ =--------------------= /
|
||||
/ == Tail Definitions == /
|
||||
/ =--------------------= /
|
||||
/ =OLD Tail Definitions= /
|
||||
/ =-FOR REFERENCE ONLY-= /
|
||||
////////////////////////////
|
||||
*/
|
||||
|
||||
/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 = list(SOUTH, WEST, EAST)
|
||||
var/list/lower_layer_dirs = LOWER_TAIL_DIRS
|
||||
var/icon_loaf = null
|
||||
|
||||
// Taur Vore
|
||||
@@ -281,6 +281,7 @@
|
||||
name = "xenomorph tail 2"
|
||||
desc = ""
|
||||
icon_state = "xenotail"
|
||||
do_colouration = FALSE
|
||||
|
||||
/datum/sprite_accessory/tail/eboop
|
||||
name = "EGN mech tail (dual color)"
|
||||
@@ -825,6 +826,7 @@
|
||||
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
|
||||
|
||||
@@ -1982,4 +1984,4 @@
|
||||
do_colouration = TRUE
|
||||
color_blend_mode = ICON_MULTIPLY
|
||||
extra_overlay = "chu_markings"
|
||||
extra_overlay2 = "chu_tipmarkings"
|
||||
extra_overlay2 = "chu_tipmarkings"*/
|
||||
@@ -8,7 +8,6 @@
|
||||
/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.
|
||||
@@ -34,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 = list(SOUTH, WEST, EAST)
|
||||
var/list/lower_layer_dirs = LOWER_TAIL_DIRS
|
||||
var/icon_loaf = null
|
||||
|
||||
// Taur Vore
|
||||
@@ -44,10 +43,42 @@
|
||||
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,12 +88,21 @@
|
||||
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)"
|
||||
@@ -101,6 +110,8 @@
|
||||
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"
|
||||
@@ -234,6 +245,7 @@
|
||||
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"
|
||||
@@ -331,6 +343,7 @@
|
||||
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"
|
||||
@@ -392,6 +405,7 @@
|
||||
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,6 +3,7 @@
|
||||
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 = "wagtail"
|
||||
icon_state = "nevreanwagtail"
|
||||
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 = "wagtail2_dc"
|
||||
icon_state = "nevreanwagtail2_dc"
|
||||
extra_overlay = "wagtail2_dc_mark"
|
||||
|
||||
/datum/sprite_accessory/tail/spade_color
|
||||
@@ -38,11 +38,14 @@
|
||||
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)"
|
||||
@@ -94,12 +97,15 @@
|
||||
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,14 +104,12 @@
|
||||
|
||||
/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,36 +24,28 @@
|
||||
icon_state = "bigsnaketail"
|
||||
ani_state = "bigsnaketail_w"
|
||||
|
||||
/datum/sprite_accessory/tail/bigsnaketailstripes
|
||||
/datum/sprite_accessory/tail/bigsnaketail/stripes
|
||||
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/bigsnaketailstripes_alt
|
||||
/datum/sprite_accessory/tail/bigsnaketail/stripes_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/bigsnaketaildual
|
||||
/datum/sprite_accessory/tail/bigsnaketail/dual
|
||||
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/bigsnaketailunder
|
||||
/datum/sprite_accessory/tail/bigsnaketail/under
|
||||
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
|
||||
@@ -62,11 +54,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)"
|
||||
@@ -112,6 +104,7 @@
|
||||
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,14 +5,8 @@
|
||||
ani_state = "peacocktail_red_w"
|
||||
ckeys_allowed = list("prettiebyrd")
|
||||
do_colouration = FALSE
|
||||
|
||||
/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")
|
||||
tailsock_iconstate = "peacocktail_red_sock"
|
||||
tailsock_wagicon = "peacocktail_red_w_sock"
|
||||
|
||||
/datum/sprite_accessory/tail/perrin_tentacles
|
||||
name = "octopus tentacles"
|
||||
@@ -20,6 +14,7 @@
|
||||
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"
|
||||
@@ -27,6 +22,7 @@
|
||||
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)"
|
||||
@@ -34,6 +30,7 @@
|
||||
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)"
|
||||
@@ -41,6 +38,7 @@
|
||||
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)"
|
||||
@@ -48,6 +46,7 @@
|
||||
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)"
|
||||
@@ -55,6 +54,7 @@
|
||||
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,6 +62,7 @@
|
||||
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)"
|
||||
@@ -69,6 +70,7 @@
|
||||
icon_state = "reika"
|
||||
ckeys_allowed = list("rikaru19xjenkins")
|
||||
do_colouration = FALSE
|
||||
tailsock_iconstate = "reika_sock"
|
||||
|
||||
/datum/sprite_accessory/tail/rosey
|
||||
name = "tritail kitsune tails (Rosey)"
|
||||
@@ -76,6 +78,7 @@
|
||||
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
|
||||
@@ -83,6 +86,15 @@
|
||||
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)"
|
||||
@@ -90,6 +102,7 @@
|
||||
icon_state = "scree"
|
||||
ckeys_allowed = list("scree")
|
||||
do_colouration = FALSE
|
||||
tailsock_iconstate = "scree_sock"
|
||||
|
||||
/datum/sprite_accessory/tail/aronai
|
||||
name = "aronai tail (Aronai)"
|
||||
@@ -97,6 +110,7 @@
|
||||
icon_state = "aronai"
|
||||
ckeys_allowed = list("arokha")
|
||||
do_colouration = FALSE
|
||||
tailsock_iconstate = "aronai_sock"
|
||||
|
||||
/datum/sprite_accessory/tail/cabletail
|
||||
name = "cabletail"
|
||||
@@ -104,6 +118,7 @@
|
||||
icon_state = "tuckercabletail"
|
||||
ckeys_allowed = list("tucker0666")
|
||||
do_colouration = FALSE
|
||||
tailsock_iconstate = "tuckercabletail_sock"
|
||||
|
||||
/datum/sprite_accessory/tail/featherfluff_tail
|
||||
name = "featherfluff_tail"
|
||||
@@ -111,6 +126,7 @@
|
||||
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)"
|
||||
@@ -118,3 +134,4 @@
|
||||
icon_state = "hoodootail"
|
||||
ckeys_allowed = list("hoodoo")
|
||||
do_colouration = FALSE
|
||||
tailsock_iconstate = "hoodootail_sock"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
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,6 +52,7 @@
|
||||
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,7 +27,8 @@
|
||||
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.
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy
|
||||
//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
|
||||
name = "Big Leggies"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi'
|
||||
icon_state = "bigleggy"
|
||||
@@ -36,46 +37,47 @@
|
||||
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/taur/bigleggy/canine
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/canine
|
||||
name = "Big Leggies (Canine Tail)"
|
||||
extra_overlay2 = "bigleggy_canine"
|
||||
extra_overlay2_w = "bigleggy_canine"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy/feline
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/feline
|
||||
name = "Big Leggies (Feline Tail)"
|
||||
extra_overlay2 = "bigleggy_feline"
|
||||
extra_overlay2_w = "bigleggy_feline"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy/reptile
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/reptile
|
||||
name = "Big Leggies (Reptile Tail)"
|
||||
extra_overlay2 = "bigleggy_reptile"
|
||||
extra_overlay2_w = "bigleggy_reptile"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy/snake
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/snake
|
||||
name = "Big Leggies (Snake Tail)"
|
||||
extra_overlay2 = "bigleggy_snake"
|
||||
extra_overlay2_w = "bigleggy_snake"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy/fox
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/fox
|
||||
name = "Big Leggies (Fox Tail)"
|
||||
extra_overlay2 = "bigleggy_vulpine"
|
||||
extra_overlay2_w = "bigleggy_vulpine"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy/bird
|
||||
/datum/sprite_accessory/tail/longtail/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/taur/bigleggy/plug
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/plug
|
||||
name = "Big Leggies (Plug Tail)"
|
||||
extra_overlay2 = "bigleggy_plug"
|
||||
extra_overlay2_w = "bigleggy_plug"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/bigleggy/AlienSlug
|
||||
/datum/sprite_accessory/tail/longtail/bigleggy/AlienSlug
|
||||
name = "Big Leggies (Alien Slug Tail)"
|
||||
icon_state = "bigleggy_full_alienslug"
|
||||
extra_overlay = "bigleggy_alienslug"
|
||||
|
||||
@@ -6,11 +6,12 @@
|
||||
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!
|
||||
@@ -41,6 +42,14 @@
|
||||
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.
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
/datum/sprite_accessory/tail/taur/bunny
|
||||
name = "Bunny (Taur, Fat vwag)"
|
||||
icon = 'icons/rogue-star/tails_64x32_rs.dmi'
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.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
|
||||
@@ -16,7 +20,7 @@
|
||||
name = "Cow (Taur)"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
|
||||
icon_state = "cow_s"
|
||||
suit_sprites = 'icons/mob/taursuits_cow.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_cow.dmi'
|
||||
icon_sprite_tag = "cow"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -41,19 +45,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!"
|
||||
@@ -75,7 +79,9 @@
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
|
||||
icon_state = "deer_s"
|
||||
extra_overlay = "deer_markings"
|
||||
suit_sprites = 'icons/mob/taursuits_deer.dmi'
|
||||
ani_state = "deer_w"
|
||||
extra_overlay_w = "deer_markings_w"
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_deer.dmi'
|
||||
icon_sprite_tag = "deer"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -104,6 +110,7 @@
|
||||
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)"
|
||||
@@ -114,7 +121,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/mob/taursuits_deer.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_feline.dmi'
|
||||
icon_sprite_tag = "feline"
|
||||
extra_overlay = "feline_markings"
|
||||
ani_state = "feline_w"
|
||||
@@ -125,10 +132,13 @@
|
||||
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"
|
||||
@@ -138,12 +148,15 @@
|
||||
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
|
||||
@@ -154,7 +167,6 @@
|
||||
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
|
||||
@@ -162,19 +174,16 @@
|
||||
extra_overlay = "feline2_markings"
|
||||
extra_overlay2 = "feline2_markings_2"
|
||||
ani_state = "fatfeline_s"
|
||||
extra_overlay = "fatfeline2_markings"
|
||||
extra_overlay2 = "fatfeline2_markings_2"
|
||||
extra_overlay_w = "fatfeline2_markings"
|
||||
extra_overlay2_w = "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
|
||||
@@ -183,21 +192,25 @@
|
||||
/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"
|
||||
@@ -210,6 +223,7 @@
|
||||
/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"
|
||||
|
||||
@@ -223,8 +237,8 @@
|
||||
name = "Horse (Taur)"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
|
||||
icon_state = "horse_s"
|
||||
under_sprites = 'icons/mob/taursuits_horse.dmi'
|
||||
suit_sprites = 'icons/mob/taursuits_horse.dmi'
|
||||
under_sprites = 'icons/inventory/suit/taursuits_horse.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_horse.dmi'
|
||||
icon_sprite_tag = "horse"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -250,12 +264,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)"
|
||||
@@ -263,7 +277,10 @@
|
||||
icon_state = "otie_s"
|
||||
extra_overlay = "otie_markings"
|
||||
extra_overlay2 = "otie_markings_2"
|
||||
suit_sprites = 'icons/mob/taursuits_otie.dmi'
|
||||
ani_state = "otie_w"
|
||||
extra_overlay_w = "otie_markings_w"
|
||||
extra_overlay2_w = "otie_markings_2w"
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_otie.dmi'
|
||||
icon_sprite_tag = "otie"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -271,10 +288,15 @@
|
||||
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"
|
||||
@@ -283,18 +305,22 @@
|
||||
/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 = "wolf"
|
||||
icon_sprite_tag = "sergal"
|
||||
vore_tail_sprite_variant = "N"
|
||||
fullness_icons = 3
|
||||
struggle_anim = TRUE
|
||||
@@ -302,7 +328,6 @@
|
||||
/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
|
||||
@@ -312,7 +337,7 @@
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
|
||||
icon_state = "sergwheat"
|
||||
extra_overlay = "sergwheat_markings"
|
||||
icon_sprite_tag = "wolf"
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_sergal.dmi'
|
||||
vore_tail_sprite_variant = "N"
|
||||
fullness_icons = 3
|
||||
struggle_anim = TRUE
|
||||
@@ -321,7 +346,6 @@
|
||||
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
|
||||
@@ -332,6 +356,7 @@
|
||||
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'
|
||||
@@ -344,8 +369,8 @@
|
||||
name = "Wolf (Taur)"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
|
||||
icon_state = "wolf_s"
|
||||
under_sprites = 'icons/mob/taursuits_wolf.dmi'
|
||||
suit_sprites = 'icons/mob/taursuits_wolf.dmi'
|
||||
under_sprites = 'icons/inventory/suit/taursuits_wolf.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_wolf.dmi'
|
||||
icon_sprite_tag = "wolf"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -358,75 +383,96 @@
|
||||
name = "Fat Wolf (Taur)"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi'
|
||||
icon_state = "fatwolf_s"
|
||||
icon_sprite_tag = "wolf" //This could be modified later.
|
||||
icon_sprite_tag = "fatwolf"
|
||||
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"
|
||||
|
||||
/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
|
||||
|
||||
/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 = "wolf"
|
||||
tailsock_wagicon = "fatwolf_s"
|
||||
|
||||
/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"
|
||||
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)"
|
||||
icon_state = "wolf2_s"
|
||||
extra_overlay = "wolf2_markings"
|
||||
extra_overlay2 = "wolf2_markings_2"
|
||||
ani_state = "fatwolf_s"
|
||||
extra_overlay_w = "fatwolf2_markings"
|
||||
extra_overlay2_w = "fatwolf2_markings_2"
|
||||
ani_state = "fatwolf2_s"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wolf/fat/wolf_2c
|
||||
name = "Fat Wolf 3-color (Taur)"
|
||||
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
|
||||
name = "Fat Wolf 3-color-alt (Taur)"
|
||||
extra_overlay = "fatwolfalt_markings1"
|
||||
extra_overlay2 = "fatwolfalt_markings2"
|
||||
icon_sprite_tag = "fatwolf"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/wolf/wolf_3
|
||||
name = "WolfTG (Taur)" //It's Citadel, not TG. :V
|
||||
icon_state = "wolf3_s"
|
||||
icon_state = "wolftg"
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_husky.dmi'
|
||||
clip_mask_state = "taur_clip_mask_husky"
|
||||
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 = "huskyf_s"
|
||||
icon_state = "fathusky_s"
|
||||
extra_overlay = "husky_markings"
|
||||
ani_state = "fathusky_w"
|
||||
extra_overlay_w = "husky_markings_w"
|
||||
icon_sprite_tag = "fathusky"
|
||||
|
||||
/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)"
|
||||
extra_overlay = "zorgoia_fat2"
|
||||
icon_state = "zorgoia_fat"
|
||||
extra_overlay = "zorgoia_fat_fluff"
|
||||
icon_sprite_tag = "zorgoia_fat"
|
||||
|
||||
/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_overlay"
|
||||
extra_overlay = "zorgoia_new_fat_fluff"
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
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!"
|
||||
@@ -43,42 +42,38 @@
|
||||
/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 = "wasp"
|
||||
icon_sprite_tag = "ant"
|
||||
do_colouration = TRUE
|
||||
|
||||
/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)"
|
||||
@@ -121,22 +116,23 @@
|
||||
|
||||
/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/mob/taursuits_spider.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_spider.dmi'
|
||||
icon_sprite_tag = "spider"
|
||||
|
||||
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
|
||||
@@ -157,6 +153,7 @@
|
||||
/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"
|
||||
@@ -166,7 +163,6 @@
|
||||
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
|
||||
@@ -200,15 +196,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 = 0
|
||||
can_ride = FALSE
|
||||
|
||||
msg_prey_stepunder = "You run between %prey's tentacles."
|
||||
msg_owner_stepunder = "%owner runs between your tentacles."
|
||||
@@ -241,6 +237,7 @@
|
||||
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
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above.
|
||||
/datum/sprite_accessory/tail/taur/drake
|
||||
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/mob/taursuits_drake.dmi'
|
||||
suit_sprites = 'icons/mob/taursuits_drake_ch.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_drake.dmi'
|
||||
icon_sprite_tag = "drake"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -17,98 +16,71 @@
|
||||
name = "Fat Drake (Taur)"
|
||||
icon_state = "fatdrake_s"
|
||||
extra_overlay = "fatdrake_markings"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
icon_sprite_tag = "fatdrake"
|
||||
vore_tail_sprite_variant = "FatDrake"
|
||||
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 = "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.
|
||||
extra_overlay2_w = "spotteddrake_markings"
|
||||
loaf_offset = 6
|
||||
|
||||
/datum/sprite_accessory/tail/taur/drake/fat/spotty
|
||||
name = "Fat Spotted Drake (Taur, Tricolor)"
|
||||
vore_tail_sprite_variant = "FatDrake"
|
||||
icon_state = "fatspotteddrake_s"
|
||||
extra_overlay = "fatspotteddrake_markings"
|
||||
extra_overlay_w = "fatspotteddrake_markings"
|
||||
extra_overlay2 = "fatspotteddrake_markings_2"
|
||||
extra_overlay2_w = "fatspotteddrake_markings_2"
|
||||
extra_overlay2 = "fatspotteddrake_markings"
|
||||
extra_overlay2_w = "fatspotteddrake_markings"
|
||||
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/extended_alt
|
||||
/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
|
||||
name = "Drake Extended (Taur)"
|
||||
vore_tail_sprite_variant = "Drake"
|
||||
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"
|
||||
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"
|
||||
fullness_icons = 3
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
loaf_offset = 5
|
||||
|
||||
/datum/sprite_accessory/tail/taur/drake/extended_alt/spotted
|
||||
/datum/sprite_accessory/tail/taur/drake/extended/spotted
|
||||
name = "Spotted Drake Extended (Taur)"
|
||||
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
|
||||
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"
|
||||
|
||||
/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/mob/taursuits_lizard_ch.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_lizard.dmi'
|
||||
icon_sprite_tag = "lizard"
|
||||
can_loaf = TRUE
|
||||
icon_loaf = 'icons/mob/vore/taurs_loaf.dmi'
|
||||
@@ -116,36 +88,16 @@
|
||||
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/lizard_2c
|
||||
/datum/sprite_accessory/tail/taur/lizard/twocolor
|
||||
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/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
|
||||
/datum/sprite_accessory/tail/taur/lizard/twocolor_wag
|
||||
name = "Fat Lizard (Taur, dual-color, Fat vwag)"
|
||||
icon_state = "lizard_s"
|
||||
extra_overlay = "lizard_markings"
|
||||
@@ -154,32 +106,40 @@
|
||||
|
||||
/datum/sprite_accessory/tail/taur/lizard/spotty
|
||||
name = "Spotted Lizard (Taur, Tricolor)"
|
||||
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
|
||||
extra_overlay2 = "spottedlizard_markings"
|
||||
extra_overlay2_w = "spottedlizard_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/lizard/spotty_fat
|
||||
name = "Fat Spotted Lizard (Taur, Tricolor)"
|
||||
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.
|
||||
/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
|
||||
name = "Fat Spotted Lizard (Taur, Tricolor)"
|
||||
extra_overlay = "fatlizard_markings"
|
||||
extra_overlay_w = "fatlizard_markings"
|
||||
extra_overlay2 = "fatspottedlizard_markings"
|
||||
extra_overlay2_w = "fatspottedlizard_markings"
|
||||
|
||||
/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/mob/taursuits_naga.dmi'
|
||||
//icon_sprite_tag = "naga"
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_naga.dmi'
|
||||
icon_sprite_tag = "naga"
|
||||
vore_tail_sprite_variant = "Naga"
|
||||
fullness_icons = 1
|
||||
|
||||
@@ -214,51 +174,41 @@
|
||||
name = "Naga (Taur, Fat, dual color)"
|
||||
icon_state = "fatnaga_s"
|
||||
extra_overlay = "fatnaga_markings"
|
||||
suit_sprites = null
|
||||
icon_sprite_tag = "fatnaga"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/naga/naga_2c
|
||||
/datum/sprite_accessory/tail/taur/naga/naga_twocolor
|
||||
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 = "naga_alt_s"
|
||||
icon_state = "altnaga_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/second
|
||||
name = "Naga dual-color alt (Taur)"
|
||||
extra_overlay = "naga_alt_markings"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/naga/alt_2c
|
||||
/datum/sprite_accessory/tail/taur/naga/alt/twocolor
|
||||
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_3c
|
||||
/datum/sprite_accessory/tail/taur/naga/alt/threecolor
|
||||
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_3c_rattler
|
||||
/datum/sprite_accessory/tail/taur/naga/alt/threecolor_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_3c_tailmaw
|
||||
/datum/sprite_accessory/tail/taur/naga/alt/threecolor_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)"
|
||||
@@ -266,7 +216,7 @@
|
||||
icon_state = "noodle_s"
|
||||
extra_overlay = "noodle_markings"
|
||||
extra_overlay2 = "noodle_markings_2"
|
||||
suit_sprites = 'icons/mob/taursuits_noodle.dmi'
|
||||
suit_sprites = 'icons/inventory/suit/taursuits_noodle.dmi'
|
||||
clip_mask_state = "taur_clip_mask_noodle"
|
||||
icon_sprite_tag = "noodle"
|
||||
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
// 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)"
|
||||
@@ -19,6 +7,7 @@
|
||||
can_ride = TRUE
|
||||
do_colouration = FALSE
|
||||
ckeys_allowed = list("grallstonefist")
|
||||
tailsock_markings = "orcamermaid_marking"
|
||||
|
||||
//wickedtemp: Chakat Tempest
|
||||
/datum/sprite_accessory/tail/taur/feline/tempest
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
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"
|
||||
@@ -10,6 +11,7 @@
|
||||
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!"
|
||||
@@ -26,21 +28,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/sect_drone/drone_wag
|
||||
/datum/sprite_accessory/tail/taur/sectdrone/drone_wag
|
||||
name = "Sect Drone (Taur, Fat vwag)"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
|
||||
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"
|
||||
icon_state = "sectdrone"
|
||||
extra_overlay = "sectdrone_markings"
|
||||
ani_state = "fatsectdrone"
|
||||
extra_overlay_w = "fatsectdrone_markings"
|
||||
icon_sprite_tag = "sectdrone"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/sect_drone/fat
|
||||
/datum/sprite_accessory/tail/taur/sectdrone/fat
|
||||
name = "Fat Sect Drone (Taur)"
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
|
||||
icon_state = "fat_sect_drone"
|
||||
extra_overlay = "fat_sect_drone_markings"
|
||||
icon_sprite_tag = "sect_drone"
|
||||
icon_state = "fatsectdrone"
|
||||
extra_overlay = "fatsectdrone_markings"
|
||||
icon_sprite_tag = "sectdrone"
|
||||
|
||||
/datum/sprite_accessory/tail/taur/horse/synthhorse
|
||||
name = "SynthHorse dual-color (Taur)"
|
||||
@@ -48,7 +50,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
|
||||
@@ -59,7 +61,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
|
||||
@@ -70,6 +72,7 @@
|
||||
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
|
||||
@@ -78,6 +81,7 @@
|
||||
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"
|
||||
@@ -88,6 +92,7 @@
|
||||
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"
|
||||
@@ -95,7 +100,8 @@
|
||||
/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_s"
|
||||
icon_state = "synthtaur1_fat_s"
|
||||
icon_sprite_tag = "synthtaur1_fat"
|
||||
extra_overlay = "synthtaur1_fat_markings"
|
||||
extra_overlay2 = "synthtaur1_glow"
|
||||
clip_mask_state = "taur_clip_mask_synthtaur1"
|
||||
@@ -104,9 +110,10 @@
|
||||
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_s"
|
||||
ani_state = "synthtaur1_fat_s"
|
||||
extra_overlay_w = "synthtaur1_fat_markings"
|
||||
extra_overlay2_w = "synthtaur1_glow"
|
||||
clip_mask_state = "taur_clip_mask_synthtaur1"
|
||||
@@ -115,9 +122,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
|
||||
@@ -128,6 +135,7 @@
|
||||
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
|
||||
@@ -138,6 +146,7 @@
|
||||
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"
|
||||
@@ -148,6 +157,7 @@
|
||||
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
|
||||
@@ -155,21 +165,22 @@
|
||||
icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi'
|
||||
icon_state = "longvirus_s"
|
||||
extra_overlay = "longvirus_markings"
|
||||
icon_sprite_tag = "virus"
|
||||
icon_sprite_tag = "longvirus"
|
||||
|
||||
/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
|
||||
@@ -177,6 +188,7 @@
|
||||
/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/mob/taursuits_wolf.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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/mob/taursuits_wolf.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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/mob/taursuits_wolf.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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/mob/taursuits_lizard.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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/mob/taursuits_wolf.dmi'
|
||||
icon = 'icons/inventory/suit/taursuits_snowflake.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.
|
||||
|
||||
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 292 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 781 KiB After Width: | Height: | Size: 797 KiB |
|
Before Width: | Height: | Size: 352 KiB After Width: | Height: | Size: 217 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 697 KiB |
|
After Width: | Height: | Size: 692 KiB |
|
After Width: | Height: | Size: 689 KiB |
|
After Width: | Height: | Size: 751 KiB |
|
After Width: | Height: | Size: 697 KiB |
|
After Width: | Height: | Size: 692 KiB |
|
After Width: | Height: | Size: 687 KiB |
|
After Width: | Height: | Size: 676 KiB |
|
After Width: | Height: | Size: 698 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 783 KiB |
|
After Width: | Height: | Size: 760 KiB |
|
After Width: | Height: | Size: 768 KiB |
|
After Width: | Height: | Size: 690 KiB |
|
After Width: | Height: | Size: 749 KiB |
|
After Width: | Height: | Size: 700 KiB |
|
After Width: | Height: | Size: 699 KiB |
|
After Width: | Height: | Size: 692 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 696 KiB |
|
After Width: | Height: | Size: 736 KiB |
@@ -0,0 +1,9 @@
|
||||
Looking to add a new tail? Issue with one?
|
||||
|
||||
Due to limitations with Byond, we have to essentially copypasta all tail sections to avoid ghosts or layering issues. The current overlay system expects all four directions to be present and on the same layer. If you try to force a north only, but your sprite still contains all four directionals, then they'll be all four directions. And so, only the exposed tail markings will be shown.
|
||||
|
||||
Yes it's very silly but it was tried so many times to only get the north face of the main sprite to lay atop of things...
|
||||
|
||||
Tailsocks layer on top of tails. Suits without a tailsock will apply their markings and still layer over clothing. HIDETAIL clothing tag is removed as a result of these changes, the verb to hide your tail works anyway if that's your choice!
|
||||
|
||||
Snowflake colored tails (usually do_coloration = FALSE ones) need to have a whitescaled version of themselves added appended with _sock, as well as tailsock_iconstate = "[icon_state]_sock" in order to properly get a unique, tailsock colorized overlay. Tailmaws are another example, they've been given little space suit bubble helmets!
|
||||
|
Before Width: | Height: | Size: 809 B After Width: | Height: | Size: 826 B |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 312 B |
|
After Width: | Height: | Size: 10 KiB |