diff --git a/ATTRIBUTIONS.md b/ATTRIBUTIONS.md index 84db59f22a..4e4af5cc4e 100644 --- a/ATTRIBUTIONS.md +++ b/ATTRIBUTIONS.md @@ -131,28 +131,3 @@ **File:** `/sound/talksounds/looc_sound.ogg`
**Creator:** VerySoft
**License:** [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/)
-
-**Files**:icons\inventory\suit\taursuits_wolf,
-icons\inventory\suit\taursuits_fox,
-icons\inventory\suit\taursuits_zorgoia,
-icons\inventory\suit\taursuits_redpanda,
-icons\inventory\suit\taursuits_lizard,
-icons\inventory\suit\taursuits_drake,
-icons\inventory\suit\taursuits_otie,
-icons\inventory\suit\taursuits_noodle,
-icons\inventory\suit\taursuits_horse,
-icons\inventory\suit\taursuits_cow,
-icons\inventory\suit\taursuits_skunk,
-icons\inventory\suit\taursuits_sergal,
-icons\inventory\suit\taursuits_rat,
-icons\inventory\suit\taursuits_deer,
-icons\inventory\suit\taursuits_feline
-**Folder**:tools\TaurClothingCutter
-**Notes:** All sprites other than the waist-up humanoid torso portions are fully created by Poojawa and as such must be credited if ported.
-**File**: icons/obj/guncabinet.dmi
-**Notes:** All sprites not appended with 'old' Are fully created by Poojawa.
-**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.
-**Creator:** Poojawa
-**License:** [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)
-
\ No newline at end of file diff --git a/code/__defines/sprite_sheets.dm b/code/__defines/sprite_sheets.dm index eae70d0b91..e615dcb134 100644 --- a/code/__defines/sprite_sheets.dm +++ b/code/__defines/sprite_sheets.dm @@ -1,191 +1,191 @@ // 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.dmi',\ -SPECIES_SKRELL = 'icons/inventory/suit/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/suit/mob_teshari.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_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_ALTEVIAN = 'icons/inventory/suit/mob_altevian.dmi',\ -SPECIES_XENOMORPH_HYBRID = 'icons/inventory/suit/mob.dmi') //CHOMPEdit - Adding Xenohybrid +SPECIES_XENOMORPH_HYBRID = 'modular_chomp/icons/inventory/suit/mob_xenomorph_hybrid.dmi') //CHOMPEdit - Adding Xenohybrid #define VR_SPECIES_SPRITE_SHEETS_HEAD_MOB list(\ SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/head/mob.dmi',\ -SPECIES_SKRELL = 'icons/inventory/head/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/head/mob_teshari.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_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_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.dmi',\ -SPECIES_SKRELL = 'icons/inventory/hands/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/hands/mob_teshari.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') +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') #define VR_SPECIES_SPRITE_SHEETS_FEET_MOB list(\ SPECIES_HUMAN = 'icons/inventory/feet/mob.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/feet/mob.dmi',\ -SPECIES_SKRELL = 'icons/inventory/feet/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/feet/mob_teshari.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') +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') #define SPECIES_SPRITE_SHEETS_SUIT_ITEM list(\ SPECIES_HUMAN = 'icons/inventory/suit/item.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/suit/item.dmi',\ -SPECIES_SKRELL = 'icons/inventory/suit/item.dmi',\ -SPECIES_UNATHI = 'icons/inventory/suit/item.dmi',\ +SPECIES_TAJARAN = 'icons/inventory/suit/item_tajaran.dmi',\ +SPECIES_SKRELL = 'icons/inventory/suit/item_skrell.dmi',\ +SPECIES_UNATHI = 'icons/inventory/suit/item_unathi.dmi',\ SPECIES_TESHARI = 'icons/inventory/suit/item_teshari.dmi',\ -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_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_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.dmi',\ -SPECIES_SKRELL = 'icons/inventory/head/item.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/head/item_teshari.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_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_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.dmi',\ -SPECIES_SKRELL = 'icons/inventory/hands/item.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/hands/item_teshari.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') +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') #define VR_SPECIES_SPRITE_SHEETS_FEET_ITEM list(\ SPECIES_HUMAN = 'icons/inventory/feet/item.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/feet/item.dmi',\ -SPECIES_SKRELL = 'icons/inventory/feet/item.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/feet/item_teshari.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') +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') #define ALL_VR_SPRITE_SHEETS_HEAD_MOB list(\ SPECIES_HUMAN = 'icons/inventory/head/mob.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/head/mob.dmi',\ -SPECIES_SKRELL = 'icons/inventory/head/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/head/mob_teshari.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_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_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.dmi',\ -SPECIES_SKRELL = 'icons/inventory/hands/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/hands/mob_teshari.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') +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') #define ALL_VR_SPRITE_SHEETS_FEET_MOB list(\ SPECIES_HUMAN = 'icons/inventory/feet/mob.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/feet/mob.dmi',\ -SPECIES_SKRELL = 'icons/inventory/feet/mob.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/feet/mob_teshari.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') +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') #define ALL_VR_SPRITE_SHEETS_HEAD_ITEM list(\ SPECIES_HUMAN = 'icons/inventory/head/item.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/head/item.dmi',\ -SPECIES_SKRELL = 'icons/inventory/head/item.dmi',\ -SPECIES_UNATHI = 'icons/inventory/head/item.dmi',\ +SPECIES_TAJARAN = 'icons/inventory/head/item_unathi.dmi',\ +SPECIES_SKRELL = 'icons/inventory/head/item_unathi.dmi',\ +SPECIES_UNATHI = 'icons/inventory/head/item_unathi.dmi',\ SPECIES_TESHARI = 'icons/inventory/head/item_teshari.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_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_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.dmi',\ -SPECIES_SKRELL = 'icons/inventory/hands/item.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/hands/item_teshari.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') +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') #define ALL_VR_SPRITE_SHEETS_FEET_ITEM list(\ SPECIES_HUMAN = 'icons/inventory/feet/item.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/feet/item.dmi',\ -SPECIES_SKRELL = 'icons/inventory/feet/item.dmi',\ -SPECIES_UNATHI = '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_TESHARI = 'icons/inventory/feet/item_teshari.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') +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') diff --git a/code/__defines/update_icons.dm b/code/__defines/update_icons.dm index dacd2faabc..8846756a37 100644 --- a/code/__defines/update_icons.dm +++ b/code/__defines/update_icons.dm @@ -45,10 +45,6 @@ #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) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 5d975b2602..dbfe8343af 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -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|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER /obj/item/clothing/suit/space/cult/cultify() return diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 09516a9e36..8e2d39db2f 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -42,14 +42,15 @@ src.attach_accessory(null, tie) set_clothing_index() + //VOREStation edit start if(polychromic) verbs |= /obj/item/clothing/proc/change_color + //VOREStation edit start /obj/item/clothing/update_icon() cut_overlays() //This removes all the overlays on the sprite and then goes down a checklist adding them as required. if(forensic_data?.has_blooddna()) add_blood() - //TODO: strip out redundant icons like labcoats with an overlay badge, security uniforms with the trim, winter coats, etc etc. . = ..() /obj/item/clothing/equipped(mob/user,slot) @@ -994,26 +995,14 @@ . = ..() if(has_hood_sprite) //If we have a special hood_sprite, great, let's use it! Only used by /obj/item/clothing/suit/storage/hooded atm. icon_state = "[toggleicon][hood_up ? "_t" : ""]" - update_clothing_icon() /obj/item/clothing/suit/equipped(mob/user, slot) - //Let's make sure we're extra aggressive with taur settings. - icon_override = initial(icon_override) - taurized = FALSE if(slot != slot_wear_suit) RemoveHood() - if(ishuman(user)) - var/mob/living/carbon/human/Hoomie = user - var/taurtail = istaurtail(Hoomie.tail_style) - if(taurtail) - taurize(Hoomie, taurtail) - - update_clothing_icon() ..() /obj/item/clothing/suit/dropped(mob/user, equipping, slot) RemoveHood() - update_clothing_icon() ..() /obj/item/clothing/suit/ui_action_click(mob/user, actiontype) @@ -1036,9 +1025,9 @@ if(hood) hood.canremove = TRUE // This shouldn't matter anyways but just incase. if(ishuman(hood.loc)) - var/mob/living/carbon/Carbmob = hood.loc - Carbmob.unEquip(hood, 1) - Carbmob.update_inv_wear_suit() + var/mob/living/carbon/H = hood.loc + H.unEquip(hood, 1) + H.update_inv_wear_suit() hood.forceMove(src) /obj/item/clothing/suit/proc/ToggleHood() @@ -1048,64 +1037,69 @@ RemoveHood() return if(ishuman(loc)) - var/mob/living/carbon/human/Hoomie = src.loc - if(Hoomie.wear_suit != src) - to_chat(Hoomie, span_warning("You must be wearing [src] to put up the hood!")) + var/mob/living/carbon/human/H = src.loc + if(H.wear_suit != src) + to_chat(H, span_warning("You must be wearing [src] to put up the hood!")) return - if(Hoomie.head) - to_chat(Hoomie, span_warning("You're already wearing something on your head!")) + if(H.head) + to_chat(H, span_warning("You're already wearing something on your head!")) return else if(color != hood.color) hood.color = color - Hoomie.equip_to_slot_if_possible(hood,slot_head,0,0,1) + H.equip_to_slot_if_possible(hood,slot_head,0,0,1) hood_up = TRUE hood.canremove = FALSE update_icon() - Hoomie.update_inv_wear_suit() + H.update_inv_wear_suit() ///Hood stuff end. /obj/item/clothing/suit/update_clothing_icon() - if (ismob(loc)) - var/mob/Mobbie = loc - Mobbie.update_inv_wear_suit() + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_wear_suit() + +/obj/item/clothing/suit/equipped(mob/user, slot) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/taurtail = istaurtail(H.tail_style) + if((taurized && !taurtail) || (!taurized && taurtail)) + taurize(user, taurtail) + + return ..() -///Establishes Icon overrides for taur bodies /obj/item/clothing/suit/proc/taurize(mob/living/carbon/human/taur, has_taur_tail = FALSE) - /// We've already confirmed that we have a taur tail during equipped, this is just makes sure we get the correct icon override. - if(!has_taur_tail) - return + if(has_taur_tail) + var/datum/sprite_accessory/tail/taur/taurtail = taur.tail_style + if(taurtail.suit_sprites && (icon_exists(taurtail.suit_sprites, get_worn_icon_state(slot_wear_suit_str)))) + icon_override = taurtail.suit_sprites + taurized = TRUE + // means that if a taur puts on an already taurized suit without a taur sprite + // for their taur type, but the previous taur type had a sprite, it stays + // taurized and they end up with that taur style which is funny + else + taurized = FALSE - taurized = TRUE + if(!taurized) + icon_override = initial(icon_override) + taurized = FALSE - if(showtaurbutts) //We don't want the override icons if we're being asked to show that booty - return - - // if we're not showing butts, then let's apply the proper overrides - var/datum/sprite_accessory/tail/taur/taurtail = taur.tail_style - if(taurtail?.suit_sprites && icon_exists(taurtail.suit_sprites, get_worn_icon_state(slot_wear_suit_str))) - icon_override = taurtail.suit_sprites - -// Taur suits need to be shifted so it's centered on their taur half. -/obj/item/clothing/suit/make_worn_icon(body_type, slot_name, inhands, default_icon, default_layer = 0, icon/clip_mask) +// Taur suits need to be shifted so its centered on their taur half. +/obj/item/clothing/suit/make_worn_icon(body_type,slot_name,inhands,default_icon,default_layer = 0,icon/clip_mask) var/image/standing = ..() - if(!standing) - return null - - // Only apply the -16 offset when taurized AND showtaurbutts is FALSE - if(taurized && !showtaurbutts && icon_override) + if(taurized) //Special snowflake var on suits standing.pixel_x = -16 - standing.layer = TAUR_LAYERING - // but if we don't have an icon_override, we already have our offsets, set. + standing.layer = BODY_LAYER + TAIL_UPPER_LAYER + 1 return standing /obj/item/clothing/suit/apply_accessories(image/standing) - . = ..() - - if(LAZYLEN(accessories) && taurized && !showtaurbutts && standing) - // account for the offset of our standing image - for(var/image/I in standing.overlays) - I.pixel_x += 16 + if(LAZYLEN(accessories) && taurized) + for(var/obj/item/clothing/accessory/A in accessories) + var/image/I = new(A.get_mob_overlay()) + I.pixel_x = 16 //Opposite of the pixel_x on the suit (-16) from taurization to cancel it out and puts the accessory in the correct place on the body. + standing.add_overlay(I) + else + return ..() /////////////////////////////////////////////////////////////////////// @@ -1176,8 +1170,6 @@ var/icon/rolled_down_sleeves_icon = 'icons/inventory/uniform/mob_sleeves_rolled.dmi' update_icon_define_digi = "icons/inventory/uniform/mob_digi.dmi" - /// hehe, soon. - var/taurized = FALSE /obj/item/clothing/under/attack_hand(mob/user) if(LAZYLEN(accessories)) diff --git a/code/modules/clothing/clothing_icons.dm b/code/modules/clothing/clothing_icons.dm index 11a4c48671..59483df42e 100644 --- a/code/modules/clothing/clothing_icons.dm +++ b/code/modules/clothing/clothing_icons.dm @@ -24,11 +24,6 @@ if(forensic_data?.has_blooddna() && blood_sprite_state && ishuman(loc)) var/mob/living/carbon/human/H = loc blood_sprite_state = "[blood_overlay_type]blood" - var/datum/sprite_accessory/tail/taur/taurtail = H.tail_style - var/image/bloodsies - if(taurized && taurtail.suit_sprites) - bloodsies = image(icon = taurtail.suit_sprites, icon_state = blood_sprite_state) - else - bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state) - bloodsies.color = blood_color + var/image/bloodsies = image(icon = H.species.get_blood_mask(H), icon_state = blood_sprite_state) + bloodsies.color = blood_color standing.add_overlay(bloodsies) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index c33c2b9169..2b8f8e1ed8 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -21,7 +21,7 @@ allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, POCKET_SECURITY) slowdown = 1.5 armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL min_pressure_protection = 0 max_pressure_protection = 2 * ONE_ATMOSPHERE cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS @@ -87,7 +87,7 @@ slowdown = 0 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0.9 - flags_inv = HIDEHOLSTER + flags_inv = HIDETAIL|HIDEHOLSTER body_parts_covered = UPPER_TORSO|ARMS //Orange emergency space suit diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index 3991026f12..d869d6e9f9 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -47,7 +47,7 @@ body_parts_covered = CHEST|LEGS|ARMS heat_protection = CHEST|LEGS|ARMS cold_protection = CHEST|LEGS|ARMS - flags_inv = HIDEJUMPSUIT + flags_inv = HIDEJUMPSUIT|HIDETAIL item_flags = THICKMATERIAL | AIRTIGHT slowdown = 0 //will reach 10 breach damage after 25 laser carbine blasts, 3 revolver hits, or ~1 PTR hit. Completely immune to smg or sts hits. diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index 4353a570f4..280622ac33 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -80,7 +80,7 @@ allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, POCKET_SUIT_REGULATORS) slowdown = 1 // CHOMPedit: 1.5 to 1. More sane movespeed delay. Voidsuits are still faster. armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER cold_protection = CHEST|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|LEGS|FEET|ARMS|HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 839ab8df24..f0482200ef 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -77,8 +77,7 @@ /obj/item/clothing/suit/space/void/equipped(mob/M) ..() - /// for sealable void suits using the rig sprites like Engineering - icon_state = "[initial(icon_state)]" + var/mob/living/carbon/human/H = M if(!istype(H)) return @@ -95,8 +94,6 @@ to_chat(M, "You are unable to deploy your suit's helmet as \the [H.head] is in the way.") else if (H.equip_to_slot_if_possible(hood, slot_head)) to_chat(M, "Your suit's helmet deploys with a hiss.") - if(sealable) - icon_state = "[initial(icon_state)]_sealed" hood.canremove = FALSE if(cooler) @@ -184,8 +181,6 @@ H.drop_from_inventory(hood) hood.forceMove(src) playsound(src.loc, 'sound/machines/click2.ogg', 75, 1) - if(sealable) - icon_state = "[initial(icon_state)]" else if(H.head) to_chat(H, span_danger("You cannot deploy your helmet while wearing \the [H.head].")) @@ -194,8 +189,6 @@ hood.canremove = FALSE to_chat(H, span_info("You deploy your suit helmet, sealing you off from the world.")) playsound(src.loc, 'sound/machines/click2.ogg', 75, 1) - if(sealable) - icon_state = "[initial(icon_state)]_sealed" /obj/item/clothing/suit/space/void/click_alt(mob/living/user) eject_tank() diff --git a/code/modules/clothing/suits/aliens/tajara.dm b/code/modules/clothing/suits/aliens/tajara.dm index 1c1e793d50..280fe5dd0b 100644 --- a/code/modules/clothing/suits/aliens/tajara.dm +++ b/code/modules/clothing/suits/aliens/tajara.dm @@ -3,7 +3,7 @@ desc = "A traditional Zhan-Khazan garment." icon_state = "zhan_furs" body_parts_covered = CHEST|LEGS|FEET|ARMS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER drop_sound = 'sound/items/drop/leather.ogg' pickup_sound = 'sound/items/pickup/leather.ogg' diff --git a/code/modules/clothing/suits/armor_vr.dm b/code/modules/clothing/suits/armor_vr.dm index 7b0ea2582a..d666cf4e82 100644 --- a/code/modules/clothing/suits/armor_vr.dm +++ b/code/modules/clothing/suits/armor_vr.dm @@ -15,7 +15,7 @@ name = "wolf-taur armor vest" desc = "An armored vest that protects against some damage. It appears to be created for a wolf-taur." species_restricted = null //Species restricted since all it cares about is a taur half - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "wolf_item" item_state = "heavy_wolf_armor" diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 335ff8ceb4..5ef36ce227 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -26,7 +26,7 @@ slowdown = 1.0 allowed = list(POCKET_GENERIC, POCKET_EMERGENCY) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER siemens_coefficient = 0.9 flags = PHORONGUARD item_flags = THICKMATERIAL @@ -41,7 +41,7 @@ /obj/item/clothing/suit/bio_suit/general icon_state = "bio_general" item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio") - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER //Virology biosuit, green stripe /obj/item/clothing/head/bio_hood/virology @@ -49,7 +49,7 @@ /obj/item/clothing/suit/bio_suit/virology icon_state = "bio_virology" - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER //Security biosuit, grey with red stripe across the chest /obj/item/clothing/head/bio_hood/security @@ -57,7 +57,7 @@ /obj/item/clothing/suit/bio_suit/security icon_state = "bio_security" - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER //Janitor's biosuit, grey with purple arms /obj/item/clothing/head/bio_hood/janitor @@ -65,7 +65,7 @@ /obj/item/clothing/suit/bio_suit/janitor icon_state = "bio_janitor" - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER //Scientist's biosuit, white with a pink-ish hue /obj/item/clothing/head/bio_hood/scientist @@ -73,12 +73,12 @@ /obj/item/clothing/suit/bio_suit/scientist icon_state = "bio_scientist" - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER //CMO's biosuit, blue stripe /obj/item/clothing/suit/bio_suit/cmo icon_state = "bio_cmo" - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER /obj/item/clothing/head/bio_hood/cmo icon_state = "bio_cmo" @@ -89,4 +89,4 @@ desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses." icon_state = "plaguedoctor" item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio") - flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 7f00c7cb84..6d258c2bfc 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -128,7 +128,7 @@ desc = "A plastic replica of a mercenary combat space suit, you'll look just like a real bloodthirsty mercenary in this! This is a toy, it is not made for use in space!" w_class = ITEMSIZE_NORMAL allowed = list(POCKET_GENERIC, POCKET_EMERGENCY) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER body_parts_covered = CHEST|ARMS|HANDS|LEGS|FEET /obj/item/clothing/suit/hastur @@ -258,7 +258,7 @@ desc = "A suit that completely restrains the wearer." icon_state = "straight_jacket" body_parts_covered = CHEST|LEGS|FEET|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER var/resist_time = 4800 // Eight minutes. diff --git a/code/modules/clothing/suits/miscellaneous_vr.dm b/code/modules/clothing/suits/miscellaneous_vr.dm index 867a86518c..3e06ea8644 100644 --- a/code/modules/clothing/suits/miscellaneous_vr.dm +++ b/code/modules/clothing/suits/miscellaneous_vr.dm @@ -24,7 +24,7 @@ /obj/item/clothing/suit/drake_cloak name = "drake cloak" desc = "A simple cloak for drake-taurs." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_drake.dmi' icon_state = "cloak" item_state_slots = list(slot_r_hand_str = "capjacket", slot_l_hand_str = "capjacket") body_parts_covered = UPPER_TORSO|ARMS @@ -41,7 +41,7 @@ /obj/item/clothing/suit/barding name = DEVELOPER_WARNING_NAME description_info = "You need to be a horsy to wear that." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_horse.dmi' item_state_slots = list(slot_r_hand_str = "capjacket", slot_l_hand_str = "capjacket") body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS pixel_x = -16 @@ -73,7 +73,7 @@ /obj/item/clothing/suit/taur name = DEVELOPER_WARNING_NAME - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_horse.dmi' body_parts_covered = CHEST pixel_x = -16 diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index dff237afba..8c0a1ec48b 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -20,7 +20,7 @@ body_parts_covered = CHEST|LEGS|FEET|ARMS|HANDS allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, /obj/item/extinguisher) slowdown = 1.0 - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER item_flags = 0 heat_protection = CHEST|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE @@ -63,7 +63,7 @@ permeability_coefficient = 0.01 slowdown = 2 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0) - flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER heat_protection = CHEST|LEGS|FEET|ARMS|HANDS cold_protection = CHEST|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE @@ -107,7 +107,7 @@ allowed = list(POCKET_GENERIC, POCKET_EMERGENCY, /obj/item/clothing/head/radiation) slowdown = 1.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) - flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER item_flags = THICKMATERIAL /obj/item/clothing/suit/radiation/Initialize(mapload) diff --git a/code/modules/clothing/tail_sock.dm b/code/modules/clothing/tail_sock.dm deleted file mode 100644 index 2d115ace51..0000000000 --- a/code/modules/clothing/tail_sock.dm +++ /dev/null @@ -1,284 +0,0 @@ -//This file contains the vars used to give taur and tail socks a baseline color, using their base sprite, upon the various suits and space suits that require them -// I've tried to reasonably color match to the vibes of the overall sprite just to be sure. - Pooj -// Rig Suits deploy a clothing path'd suit, so we just need to keep that in mind for sealed/unsealed related applications. -// These are all stored seperately because I don't really want to edit all the clothing paths myself and change a bunch of files. plays nicer with downstreams too.alist - -/obj/item/clothing/suit - ///does the suit require a full-envelop suit sock? Spacesuits, bio suits, rad suits, etc. - var/requires_tailsock = FALSE - /// what color is the tailsock going to be? Defaults to a nice, dark grey that usually matches everything. - var/tailsock_color = "#1F1F1F" - /// toggle tailsock options - var/tailsock_toggle = TRUE - /// toggle taur extending for the sprites, for people who want their butts to be shown off, default false - var/showtaurbutts = FALSE - -/obj/item/clothing/suit/space - /// unrelated to tailsocks directly, buuuuuut, taur suits have dedicated sealed/unsealed variants and that should be applied, too. - var/sealable = FALSE - requires_tailsock = TRUE - -///This is purely for player preference. -/obj/item/clothing/suit/verb/toggletailsock() - set name = "Toggle Tail Sock" - set category = "Object" - set desc = "Toggle the tail sock on your suit." - toggle_tailsock(usr) - -/obj/item/clothing/suit/proc/toggle_tailsock(mob/user) - if(!user || !ishuman(user)) - return - var/mob/living/carbon/human/H = user - if(H.wear_suit != src) - to_chat(user, span_warning("You must be wearing \the [src] to adjust the tail sock.")) - return - - if(!requires_tailsock) - to_chat(user, span_notice("\The [src] does not have a tail sock extruder.")) - return - - if(showtaurbutts) - to_chat(user, span_notice("You must enable full body taur sheathing on \the [src] first.")) - return - - tailsock_toggle = !tailsock_toggle - to_chat(user, span_notice("You toggle \the [src]'s dynamic tail sheath [tailsock_toggle ? "ON" : "OFF"].")) - - H.update_inv_wear_suit() - H.update_tail_showing() - -/obj/item/clothing/suit/verb/toggletaursuit() - set name = "Toggle Taur Extension" - set category = "Object" - set desc = "Toggle the full body taur sprite on your suit." - toggle_taurextender(usr) - -/obj/item/clothing/suit/proc/toggle_taurextender(mob/user) - if(!user || !ishuman(user)) - return - - var/mob/living/carbon/human/H = user - if(H.wear_suit != src) - to_chat(user, span_warning("You must be wearing \the [src] to adjust the taur extension.")) - return - - var/taurtail = istaurtail(H.tail_style) - if(!taurtail) - to_chat(user, span_warning("\The [src]'s taur extension requires a taur body.")) - return - - showtaurbutts = !showtaurbutts - - if(showtaurbutts) - // Classic Mode: turn off suit tailsock sleeve - tailsock_toggle = FALSE - to_chat(user, span_notice("You disable full body sheathing on \the [src] (Classic mode).")) - else - // Modern Taur Mode: Enable suit override & tail sheath - tailsock_toggle = TRUE - to_chat(user, span_notice("You enable full body taur sheathing on \the [src].")) - - taurize(H, taurtail) - H.update_inv_wear_suit() - H.update_tail_showing() - -/obj/item/clothing/suit/examine(mob/user) - . = ..() - ///It's a little thing, but feedback can help someone wondering why a suit isn't hinding their tails/butt. - . += span_notice("The dynamic sheathing toggle is [tailsock_toggle ? "enabled" : "disabled"].") - -//The following for specific sock colors more than anything. - -//Fire suits -/obj/item/clothing/suit/fire - requires_tailsock = TRUE - tailsock_color = "#343442" - -/obj/item/clothing/suit/fire/firefighter - tailsock_color = "#3F3F3F" - -/obj/item/clothing/suit/fire/heavy - tailsock_color = "#3F3F3F" - -//Bomb suits -/obj/item/clothing/suit/bomb_suit - requires_tailsock = TRUE - tailsock_color = "#9C8956" - -/obj/item/clothing/suit/bomb_suit/security - tailsock_color = "#4A4A2F" - -// Bio suits -/obj/item/clothing/suit/bio_suit - requires_tailsock = TRUE - tailsock_color = "#BBBBBB" - -/obj/item/clothing/suit/bio_suit/security - tailsock_color = "#5F615E" - -/obj/item/clothing/suit/bio_suit/janitor - tailsock_color = "#5F615E" - -/obj/item/clothing/suit/bio_suit/scientist - tailsock_color = "#CCB8A8" - -// Radiation -/obj/item/clothing/suit/radiation - requires_tailsock = TRUE - -// Misc suits -/obj/item/clothing/suit/straight_jacket - requires_tailsock = TRUE - tailsock_color = "#AAAAAA" - -//Station Void Space Suits -/obj/item/clothing/suit/space/void/makeshift - tailsock_color = "#573226" - -/obj/item/clothing/suit/space/void/refurb - tailsock_color = "#293f61" - -/obj/item/clothing/suit/space/void/captain - tailsock_color = "#7F7F7F" - -/obj/item/clothing/suit/space/void/security/prototype - tailsock_color = "#7F7F7F" - -/obj/item/clothing/suit/space/void/pilot - tailsock_color = "#6B5E52" - -/obj/item/clothing/suit/space/void/exploration/alt - tailsock_color = "#6B5E52" - -/obj/item/clothing/suit/space/void/engineering - sealable = TRUE - tailsock_color = "#4E4139" - -/obj/item/clothing/suit/space/void/engineering/salvage - tailsock_color = "#3E3823" - -/obj/item/clothing/suit/space/void/atmos - sealable = TRUE - tailsock_color = "#6B5E52" - -/obj/item/clothing/suit/space/void/mining - sealable = TRUE - tailsock_color = "#6B5E52" - -/obj/item/clothing/suit/space/void/mining/alt - sealable = TRUE - tailsock_color = "#5F615E" - -/obj/item/clothing/suit/space/void/medical - sealable = TRUE - tailsock_color = "#645C56" - -/obj/item/clothing/suit/space/void/security - sealable = TRUE - tailsock_color = "#39342D" - -/obj/item/clothing/suit/space/void/security/riot - sealable = TRUE - tailsock_color = "#660000" - -/obj/item/clothing/suit/space/void/security/alt - sealable = TRUE - tailsock_color = "#1D1D1D" - -/obj/item/clothing/suit/armor/captain - requires_tailsock = TRUE - tailsock_color = "#1E3E50" - -/obj/item/clothing/suit/space/emergency - tailsock_color = "#282828" - -//Bay ported Station Suits -/obj/item/clothing/suit/space/void/engineering/alt2 - sealable = FALSE - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/void/atmos/alt2 - sealable = FALSE - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/void/captain/alt - sealable = FALSE - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/void/medical/alt2 - sealable = FALSE - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/void/exploration/alt2 - sealable = FALSE - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/void/mining/alt2 - sealable = FALSE - tailsock_color = "#2B3440" - -/obj/item/clothing/suit/space/anomaly/alt - sealable = FALSE - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/void/security/riot/alt - sealable = FALSE - tailsock_color = "#1C222B" - -//Event Space Suits -/obj/item/clothing/suit/space/void/hev - tailsock_color = "#2D313C" - -/obj/item/clothing/suit/space/void/aether - tailsock_color = "#423F4F" - -/obj/item/clothing/suit/space/void/custodian - tailsock_color = "#453542" - -/obj/item/clothing/suit/space/void/excelsior - tailsock_color = "#6D6D6B" - -//Antag Space suits -/obj/item/clothing/suit/space/syndicate - tailsock_color = "#282828" - -/obj/item/clothing/suit/space/void/merc - sealable = TRUE - tailsock_color = "#851e0e" - -/obj/item/clothing/suit/space/void/merc/fire - sealable = TRUE - tailsock_color = "#483031" - -/obj/item/clothing/suit/space/void/wizard - sealable = TRUE - tailsock_color = "#493955" - -//snowflake species suits -/obj/item/clothing/suit/space/vox - requires_tailsock = FALSE - -/obj/item/clothing/suit/space/void/altevian_heartbreaker - requires_tailsock = FALSE - -/obj/item/clothing/suit/space/void/zaddat - requires_tailsock = FALSE - -//RIG's space suits -/obj/item/clothing/suit/space/rig/zero - tailsock_color = "#232226" - -/obj/item/clothing/suit/space/rig/baymed - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/rig/pathfinder - tailsock_color = "#1C222B" - -/obj/item/clothing/suit/space/rig/advsuit - tailsock_color = "#6B5E52" - -/obj/item/clothing/suit/space/rig/focalpoint - tailsock_color = "#303B40" - -/obj/item/clothing/suit/space/rig/hephaestus - tailsock_color = "#2D253E" diff --git a/code/modules/emotes/definitions/human.dm b/code/modules/emotes/definitions/human.dm index 3b06372812..1d540964d9 100644 --- a/code/modules/emotes/definitions/human.dm +++ b/code/modules/emotes/definitions/human.dm @@ -26,7 +26,7 @@ key = "swish" /datum/decl/emote/human/swish/do_emote(mob/living/carbon/human/user) - user.animate_tail_start() + user.animate_tail_once() /datum/decl/emote/human/wag key = "wag" @@ -44,13 +44,13 @@ key = "qwag" /datum/decl/emote/human/qwag/do_emote(mob/living/carbon/human/user) - user.animate_tail_start() + user.animate_tail_fast() /datum/decl/emote/human/fastsway key = "fastsway" /datum/decl/emote/human/fastsway/do_emote(mob/living/carbon/human/user) - user.animate_tail_start() + user.animate_tail_fast() /datum/decl/emote/human/swag key = "swag" diff --git a/code/modules/maint_recycler/code/vendor_goodies/remote_scene_tools/voodoo.dm b/code/modules/maint_recycler/code/vendor_goodies/remote_scene_tools/voodoo.dm index 727261c56a..b485b6efef 100644 --- a/code/modules/maint_recycler/code/vendor_goodies/remote_scene_tools/voodoo.dm +++ b/code/modules/maint_recycler/code/vendor_goodies/remote_scene_tools/voodoo.dm @@ -2,7 +2,6 @@ #define DATA_X_OFFSET "x" #define DATA_Y_OFFSET "y" #define DATA_ROTATION "rotation" -#define DEFAULT_RGB_OUTLINE rgb(50,50,50) /obj/item/remote_scene_tool/voodoo_doll name = "voodoo doll" @@ -85,23 +84,17 @@ output.Scale(data[DATA_SCALE], data[DATA_SCALE]) return output -/obj/item/remote_scene_tool/voodoo_doll/proc/generate_layer_image(image/input, matrix/newtransform, outline_width = 0, outline_color = DEFAULT_RGB_OUTLINE) +/obj/item/remote_scene_tool/voodoo_doll/proc/generate_layer_image(image/input, matrix/newtransform, outline_width = 0, outline_color = rgb(50,50,50)) if(input == null) return null - // Please for the love of fuck stop kidnapping taur bodies. - var/image/doll_img = image(input) - - doll_img.dir = SOUTH - doll_img.transform = newtransform - doll_img.layer = FLOAT_LAYER - doll_img.plane = FLOAT_PLANE // Strip PLANE_CH_STOMACH or mob-specific planes! - doll_img.appearance_flags = NONE // Strip RESET_PLANE / KEEP_TOGETHER flags! - + input.dir = SOUTH + input.transform = newtransform + input.layer = FLOAT_LAYER if(outline_width > 0) - doll_img.filters += filter(type="outline", size = outline_width, color = outline_color) + input.filters += filter(type="outline", size = outline_width, color = outline_color) - return doll_img + return input /obj/item/remote_scene_tool/voodoo_doll/update_icon() . = ..() @@ -131,34 +124,26 @@ if(no_fun_mode) return //no fun allowed - var/image/tail_image = null - if(ishuman(owner)) //Am I a real boy now, papa? + if(ishuman(owner)) //TODO, refactor the fuck out of this once I port the tgui filter manager stuff over. var/mob/living/carbon/human/buddy = owner - var/datum/sprite_accessory/tail/tail_style = buddy.tail_style - var/is_tail_taur = istaurtail(tail_style) - - var/icon/displacement_map = icon(src.icon, is_tail_taur ? "taurdisplacement" : "displacement", SOUTH) - var/image/displacement_rendered = get_humanoid_displacement_map_image(buddy, discarded_layer_indicies, displacement_map, 2, null) + var/is_tail_taur = istaurtail(buddy.tail_style) + var/icon/displacement_map = icon(src.icon,is_tail_taur ? "taurdisplacement" : "displacement",SOUTH) + var/image/displacement_rendered = get_humanoid_displacement_map_image(buddy,discarded_layer_indicies,displacement_map,2,null) //tails need special attention because taurs - var/tailoutlinecolor = DEFAULT_RGB_OUTLINE //default to a grey, otherwise we use a darker version of one of the tail colors - if(tail_style?.do_colouration) - tailoutlinecolor = get_outline_color(buddy.r_tail, buddy.g_tail, buddy.b_tail, buddy.a_tail) + var/tailoutlinecolor = rgb(50,50,50) //default to a grey, otherwise we use a darker version of one of the tail colors + if(buddy.tail_style?.do_colouration) + tailoutlinecolor = get_outline_color(buddy.r_tail,buddy.g_tail,buddy.b_tail,buddy.a_tail) - // Let's get the tail image, checks species and custom tail! - var/image/raw_tail = buddy.get_tail_image() - if(raw_tail) - var/image/full_tail = buddy.apply_tailsock_layer(raw_tail, apply_to_mob = FALSE) - var/matrix/target_matrix = generate_layer_matrix(is_tail_taur ? taur_data : tail_data) - var/image/cooked_tail = generate_layer_image(full_tail, target_matrix, outline_size, tailoutlinecolor) - - if(is_tail_taur && cooked_tail) - cooked_tail.filters += filter(type="alpha", flags = MASK_INVERSE) - - tail_image = cooked_tail + var/image/tail_image = buddy.get_tail_image() + if(is_tail_taur) + tail_image = generate_layer_image(buddy.get_tail_image(),generate_layer_matrix(taur_data),outline_size,tailoutlinecolor) + tail_image.filters += filter(type="alpha", flags = MASK_INVERSE) + else + tail_image = generate_layer_image(buddy.get_tail_image(),generate_layer_matrix(tail_data),outline_size,tailoutlinecolor) //same kind of scenario for wings - var/wingoutlinecolor = DEFAULT_RGB_OUTLINE + var/wingoutlinecolor = rgb(50,50,50) if(buddy.wing_style?.do_colouration) wingoutlinecolor = get_outline_color(buddy.r_wing,buddy.g_wing,buddy.b_wing,buddy.a_wing) var/image/wing_image = generate_layer_image(buddy.get_wing_image(FALSE),generate_layer_matrix(wing_data),outline_size,wingoutlinecolor) @@ -192,7 +177,6 @@ rotateMatrix.Turn(2) //very slight blur. this is unironically the best way to do it, any of the blur filters are just way too strong at a minimum value. transform = rotateMatrix -#undef DEFAULT_RGB_OUTLINE #undef DATA_X_OFFSET #undef DATA_Y_OFFSET #undef DATA_SCALE diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 5447a13b54..f75125eee8 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -305,10 +305,7 @@ return /mob/living/carbon/human/set_dir(new_dir) - var/old_dir = dir . = ..() - //we already check our tail through these procs now, tailsock/taur tail overlay needs higher priority to be updated correctly. - //this has specifically been updated to mutable_appearance and is not as costly as it used to be. - if(. && old_dir != new_dir && (old_dir == NORTH || new_dir == NORTH)) + if(. && (species.tail || tail_style)) update_tail_showing() update_inv_wear_suit() diff --git a/code/modules/mob/living/carbon/human/human_powers_vr.dm b/code/modules/mob/living/carbon/human/human_powers_vr.dm index e8ed4d3d86..fcb0bda92a 100644 --- a/code/modules/mob/living/carbon/human/human_powers_vr.dm +++ b/code/modules/mob/living/carbon/human/human_powers_vr.dm @@ -291,8 +291,3 @@ holder.remove_status_indicator("dead") holder.visible_message(span_warning("\The [src] literally just dies!")) ..() - -//Moved flying logic out of update_icons -/mob/living/carbon/human/stop_flying() - if((. = ..())) - update_wing_showing() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index d01b971662..eeeceeb5cc 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -293,8 +293,8 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() var/icon_x_offset = 0 var/icon_y_offset = 0 - if(istype(tail_style, /datum/sprite_accessory/tail)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that. - if(tail_style.clip_mask) // trim it if we need to, for taur body types that don't have sprite sheets at all. + if(istype(tail_style, /datum/sprite_accessory/tail/taur)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that. + if(tail_style.clip_mask) Cutter = new(icon = (tail_style.clip_mask_icon ? tail_style.clip_mask_icon : tail_style.icon), icon_state = tail_style.clip_mask_state) Cutter.Blend("#000000", ICON_MULTIPLY) // Make it all black. @@ -619,8 +619,6 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() update_inv_belt() update_inv_back() update_inv_wear_suit() - //check for tail related layers, mainly to resolve roundstart/spawn issues - update_tail_showing() update_inv_r_hand() update_inv_l_hand() update_inv_handcuffed() @@ -639,37 +637,30 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() remove_layer(UNIFORM_LAYER) - // Shoes can be affected by uniform being drawn onto them + //Shoes can be affected by uniform being drawn onto them update_inv_shoes() if(!w_uniform) return - // Wearing a suit that prevents uniform rendering (e.g. non-RIG full suits) if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space/rig)) - return + return //Wearing a suit that prevents uniform rendering var/obj/item/clothing/under/under = w_uniform - var/uniform_sprite = (istype(under) && !isnull(under.update_icon_define)) ? under.update_icon_define : INV_W_UNIFORM_DEF_ICON - var/icon/c_mask = null + var/uniform_sprite + if(istype(under) && !isnull(under.update_icon_define)) + uniform_sprite = under.update_icon_define + else + uniform_sprite = INV_W_UNIFORM_DEF_ICON - // Check if a taur body is active on the mob - var/tail_is_rendered = (overlays_standing[get_tail_layer()] || overlays_standing[TAIL_UPPER_LAYER_HIGH]) - - // Clip uniform pants/legs off at the waist IF: - // Taur body with a mask and not fitted for taurs. Which is basically all of them lmaooo. - if(tail_is_rendered && tail_style?.clip_mask && (istype(under) && !under.taurized)) - c_mask = tail_style.clip_mask - - // Build uniform sprite with clip mask applied - overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon( - body_type = species.get_bodytype(src), - slot_name = slot_w_uniform_str, - default_icon = uniform_sprite, - default_layer = UNIFORM_LAYER, - clip_mask = c_mask - ) + //Build a uniform sprite + var/icon/c_mask = tail_style?.clip_mask + if(c_mask) + var/obj/item/clothing/suit/S = wear_suit + if((wear_suit?.flags_inv & HIDETAIL) || (istype(S) && S.taurized)) // Reasons to not mask: 1. If you're wearing a suit that hides the tail or if you're wearing a taurized suit. + c_mask = null + overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER, clip_mask = c_mask) apply_layer(UNIFORM_LAYER) /mob/living/carbon/human/update_inv_wear_id() @@ -864,37 +855,31 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() remove_layer(SUIT_LAYER) - // Hide/show uniform & shoes + //Hide/show other layers if necessary update_inv_w_uniform() update_inv_shoes() - - // Always ensure tail/taur states are updated so overlay existence is current update_tail_showing() update_wing_showing() if(!wear_suit) - return // No point, no suit. + return //No point, no suit. var/obj/item/clothing/suit/suit = wear_suit - var/suit_sprite = (istype(suit) && !isnull(suit.update_icon_define)) ? suit.update_icon_define : INV_SUIT_DEF_ICON + var/suit_sprite + + if(istype(suit) && !isnull(suit.update_icon_define)) + suit_sprite = suit.update_icon_define + else + suit_sprite = INV_SUIT_DEF_ICON var/icon/c_mask = null + var/tail_is_rendered = overlays_standing[TAIL_LOWER_LAYER] || overlays_standing[tail_layering] + var/valid_clip_mask = tail_style?.clip_mask - // Check if a taur body is active and requires clipping the lower half of the suit off - var/tail_is_rendered = (overlays_standing[get_tail_layer()] || overlays_standing[TAIL_UPPER_LAYER_HIGH]) + if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden. + c_mask = valid_clip_mask + overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER, clip_mask = c_mask) - // Apply the clip mask to trim our suit for taur body fitting - if(tail_is_rendered && tail_style?.clip_mask && !(istype(suit) && suit.taurized)) - c_mask = tail_style.clip_mask - - // Generate suit overlay - overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon( - body_type = species.get_bodytype(src), - slot_name = slot_wear_suit_str, - default_icon = suit_sprite, - default_layer = SUIT_LAYER, - clip_mask = c_mask - ) apply_layer(SUIT_LAYER) /mob/living/carbon/human/update_inv_pockets() @@ -1007,13 +992,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() apply_layer(L_HAND_LAYER) /mob/living/carbon/human/proc/get_tail_layer() - var/list/lower_layer_dirs = LOWER_TAIL_DIRS // Tail below clothing on side views too. - if(!tail_style) // Sanity checks good checks. - return - else + var/list/lower_layer_dirs = list(SOUTH, EAST, WEST) //Tail below clothing on side views too. + if(tail_style) lower_layer_dirs = tail_style.lower_layer_dirs.Copy() - if(istaurtail(tail_style) || (dir in lower_layer_dirs)) + if(dir in lower_layer_dirs) return TAIL_LOWER_LAYER else return TAIL_UPPER_LAYER @@ -1022,378 +1005,130 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() if(QDESTROYING(src)) return - // Clear previous tail layer assignments - for(var/layers in TAIL_LAYER_CLEARING) - remove_layer(layers) + remove_layer(TAIL_UPPER_LAYER) + remove_layer(TAIL_UPPER_LAYER_HIGH) + remove_layer(TAIL_UPPER_LAYER_LOW) + remove_layer(TAIL_LOWER_LAYER) var/tail_layer = get_tail_layer() - // Use default, let clip mask handle everything - if(tail_style && tail_style.clip_mask_state && !istaurtail(tail_style)) - tail_layer = TAIL_UPPER_LAYER + if(src.tail_style && src.tail_style.clip_mask_state) + tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything if(tail_layer == TAIL_UPPER_LAYER) tail_layer = tail_layering update_vore_tail_sprite() + var/obj/item/organ/external/chest = organs_by_name[BP_TORSO] + var/image/tail_image = get_tail_image() if(tail_image) - // Process tailsock & North-facing layer overrides - // apply_tailsock_layer is our heavy lifter for tail applying! - tail_image = apply_tailsock_layer(tail_image, tail_layer, apply_to_mob = TRUE) + tail_image.layer = BODY_LAYER+tail_layer + overlays_standing[tail_layer] = tail_image + apply_layer(tail_layer) + return + + var/species_tail = species?.get_tail(src) // Species tail icon_state prefix. + + //This one is actually not that bad I guess. + if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) + var/icon/tail_s = get_tail_icon() + tail_image = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+tail_layer) + tail_image.alpha = chest?.transparent ? 180 : 255 + overlays_standing[tail_layer] = tail_image + animate_tail_reset() //TODO: Is this the appropriate place for this, and not on species...? -//Yes, and we can make it better too. -/mob/living/carbon/human/proc/get_tail_image_species() - var/race_key = species.get_race_key(src) - var/icon_key = "[race_key]_[r_skin]_[g_skin]_[b_skin]_[r_hair]_[g_hair]_[b_hair]" +/mob/living/carbon/human/proc/get_tail_icon() + var/icon_key = "[species.get_race_key(src)][r_skin][g_skin][b_skin][r_hair][g_hair][b_hair]" + var/icon/tail_icon = GLOB.tail_icon_cache[icon_key] + if(!tail_icon) + //generate a new one + var/species_tail_anim = species.get_tail_animation(src) + if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //Allow override of file for non-animated tails + if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi' + tail_icon = new/icon(species_tail_anim) + tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) + // The following will not work with animated tails. + var/use_species_tail = species.get_tail_hair(src) + if(use_species_tail) + var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]") + hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult + tail_icon.Blend(hair_icon, ICON_OVERLAY) + GLOB.tail_icon_cache[icon_key] = tail_icon - var/mutable_appearance/tail_app = GLOB.tail_icon_cache[icon_key] - if(tail_app) - return image(tail_app) - - var/species_tail_anim = species.get_tail_animation(src) - if(!species_tail_anim && species.icobase_tail) - species_tail_anim = species.icobase - if(!species_tail_anim) - species_tail_anim = 'icons/effects/species.dmi' - - // Base tail appearance - tail_app = mutable_appearance(species_tail_anim, "[tail_style]") - tail_app.color = rgb(r_skin, g_skin, b_skin) - tail_app.blend_mode = species.color_mult ? BLEND_MULTIPLY : BLEND_ADD - - // Hair / Secondary overlay - var/use_species_tail = species.get_tail_hair(src) - if(use_species_tail) - var/tail_species_state = "[species.get_tail(src)]_[use_species_tail]" - var/mutable_appearance/hair_app = mutable_appearance('icons/effects/species.dmi', tail_species_state) - hair_app.color = rgb(r_hair, g_hair, b_hair) - hair_app.blend_mode = species.color_mult ? BLEND_MULTIPLY : BLEND_ADD - - tail_app.overlays += hair_app - - // Cache the tail for later use - GLOB.tail_icon_cache[icon_key] = tail_app - return image(tail_app) - -/mob/living/carbon/human/proc/get_tail_image() - // Pull torso alpha channel information - var/torso_alpha = 255 - var/obj/item/organ/external/chest = organs_by_name[BP_TORSO] - if(chest) - torso_alpha = chest.alpha - - // Synthetic check - var/datum/robolimb/model = isSynthetic() - if(istype(model) && model.includes_tail && !tail_style && !tail_hidden) - var/mutable_appearance/syn_tail = mutable_appearance(synthetic.icon, "tail") - syn_tail.color = rgb(r_skin, g_skin, b_skin) - var/image/syn_img = image(syn_tail) - syn_img.alpha = torso_alpha - return syn_img - - // Custom tail check - if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden) - var/target_icon = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon - var/target_state = (wagging && tail_style.ani_state) ? tail_style.ani_state : tail_style.icon_state - - // arrange our taur loafing effects - if(tail_style.can_loaf && !is_shifted) - pixel_y = resting ? -tail_style.loaf_offset * size_multiplier : default_pixel_y - - // base tail appearance - var/mutable_appearance/base_tail = mutable_appearance(target_icon, target_state) - if(tail_style.do_colouration) - base_tail.color = rgb(r_tail, g_tail, b_tail) - - // basic tail image to build upon - var/image/working = image(icon = target_icon, icon_state = null) - working.overlays += base_tail - - if(tail_style.extra_overlay) - var/ex1_state = (wagging && tail_style.ani_state) ? tail_style.extra_overlay_w : tail_style.extra_overlay - var/mutable_appearance/ex1 = mutable_appearance(target_icon, ex1_state) - ex1.color = rgb(r_tail2, g_tail2, b_tail2) - working.overlays += ex1 - - if(tail_style.extra_overlay2) - var/ex2_state = (wagging && tail_style.ani_state) ? tail_style.extra_overlay2_w : tail_style.extra_overlay2 - var/mutable_appearance/ex2 = mutable_appearance(target_icon, ex2_state) - ex2.color = rgb(r_tail3, g_tail3, b_tail3) - working.overlays += ex2 - - if(tail_style.em_block) - working.overlays += em_block_image_generic(working) - - if(istaurtail(tail_style) || islongtail(tail_style)) - working.pixel_x = tail_style.offset_x - working.pixel_y = tail_style.offset_y - - if(istaurtail(tail_style)) - var/datum/sprite_accessory/tail/taur/taurtype = tail_style - if(taurtype.can_ride && !riding_datum) - riding_datum = new /datum/riding/taur(src) - add_verb(src, /mob/living/carbon/human/proc/taur_mount) - add_verb(src, /mob/living/proc/toggle_rider_reins) - - // Combine custom tail alpha variable with the torso's alpha channel - working.alpha = (a_tail != null) ? min(a_tail, torso_alpha) : torso_alpha - return working - - // no custom tail? let's get the species default then - if(species && tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !tail_hidden) - var/image/species_tail_img = get_tail_image_species() - if(species_tail_img) - species_tail_img.alpha = torso_alpha - return species_tail_img - return null + return tail_icon /mob/living/carbon/human/proc/set_tail_state(t_state) - if(QDESTROYING(src) || !tail_style) - return null - - // wag compatibility check - if(tail_style.ani_state) - wagging = (t_state == tail_style.ani_state) - else - wagging = FALSE - - // refresh our tail, please ~ - update_tail_showing() - var/tail_layer = get_tail_layer() - return overlays_standing[tail_layer] + if(src.tail_style && src.tail_style.clip_mask_state) + tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything + if(tail_layer == TAIL_UPPER_LAYER) + tail_layer = tail_layering + var/image/tail_overlay = overlays_standing[tail_layer] -//rather than repeatedly trying to assert offsets while rendering the code, let's kick this out into a more managable proc shall we -/mob/living/carbon/human/proc/get_tail_offsets(obj/item/clothing/suit/socksuit, datum/sprite_accessory/tail/tailtype) - var/off_x = tailtype ? tailtype.offset_x : 0 - var/off_y = tailtype ? tailtype.offset_y : 0 + remove_layer(TAIL_UPPER_LAYER) + remove_layer(TAIL_UPPER_LAYER_HIGH) + remove_layer(TAIL_UPPER_LAYER_LOW) + remove_layer(TAIL_LOWER_LAYER) - // Add suit offset if the suit isn't using an icon override - if(socksuit && !socksuit.icon_override) - off_x += socksuit.pixel_x - off_y += socksuit.pixel_y + if(tail_overlay) + overlays_standing[tail_layer] = tail_overlay + if(species.get_tail_animation(src)) + tail_overlay.icon_state = t_state + . = tail_overlay - return list(off_x, off_y) + apply_layer(tail_layer) -/mob/living/carbon/human/proc/apply_tailsock_layer(image/tailoverlays, target_layer, apply_to_mob = TRUE) - if(!tailoverlays) - return null - - var/obj/item/clothing/suit/socksuit = wear_suit - var/datum/sprite_accessory/tail/tailtype = tail_style - - // Simplify our offset maths - var/list/offsets = get_tail_offsets(socksuit, tailtype) - var/total_off_x = offsets[1] - var/total_off_y = offsets[2] - - // Fallback in case target_layer wasn't passed by the parent proc - if(!target_layer) - target_layer = get_tail_layer() - if(!target_layer) - target_layer = tail_layering - - var/image/tail_img = image(tailoverlays) - tail_img.layer = target_layer - tail_img.pixel_x = total_off_x - tail_img.pixel_y = total_off_y - - // Get our tailsock ready - var/has_sock = FALSE - var/icon/sock_icon = null - var/sock_state = null - - if(socksuit && socksuit.requires_tailsock && socksuit.tailsock_toggle && tailtype) - has_sock = TRUE - sock_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : socksuit.icon - - if(wagging && tailtype.tailsock_wagicon) - sock_state = tailtype.tailsock_wagicon - else if(tailtype.tailsock_iconstate) - sock_state = tailtype.tailsock_iconstate - else if(socksuit.item_state) - sock_state = socksuit.item_state - - var/image/upper_sock_img = null - - //whack on our lower layer directional tailsock, if needed - if(has_sock && sock_icon && sock_state) - upper_sock_img = image(icon = sock_icon, icon_state = sock_state) - upper_sock_img.alpha = socksuit.alpha - if(socksuit.tailsock_color) - upper_sock_img.color = socksuit.tailsock_color - - if(target_layer != TAIL_LOWER_LAYER) - var/mutable_appearance/sock_overlay = mutable_appearance(sock_icon, sock_state) - if(socksuit.tailsock_color) - sock_overlay.color = socksuit.tailsock_color - //allow sneaky suits to have sneaky suit socks too - sock_overlay.alpha = socksuit.alpha - sock_overlay.layer = FLOAT_LAYER + 0.1 - tail_img.overlays += sock_overlay - - //we don't need a sock, so let's make a fake tail to appear on top of our clothes because that looks nicer - //We basically have every sock given their markings at this point. If your tail shows, it has its markings too. - else if(tailtype) - //just in case we have a null tailsock_icon somehow - var/icon/sock_mark_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : tailtype.icon - // If we don't need a sock, and we're not worrying about coloring (snowflake) - if(!tail_style.do_colouration) - var/n_state = (wagging && tailtype.ani_state) ? tailtype.ani_state : tailtype.icon_state - //we'll just get our default as our bonus layer - upper_sock_img = image(icon = tailtype.icon, icon_state = n_state) - // Generate the snipped base tail using the dedicated tailsock icon states instead of the full body state - else - var/n_state = (wagging && tailtype.tailsock_wagicon) ? tailtype.tailsock_wagicon : tailtype.tailsock_iconstate - upper_sock_img = image(icon = sock_mark_icon, icon_state = n_state) - var/mutable_appearance/base_north = mutable_appearance(sock_mark_icon, n_state) - if(tailtype.do_colouration) - base_north.color = rgb(r_tail, g_tail, b_tail) - upper_sock_img.overlays += base_north - - // Attach secondary markings if present - if(tailtype.tailsock_markings) - var/m1_nstate = (wagging) ? tailtype.tailsock_wagmarkings : tailtype.tailsock_markings - var/mutable_appearance/m1_north = mutable_appearance(sock_mark_icon, m1_nstate) - m1_north.color = rgb(r_tail2, g_tail2, b_tail2) - m1_north.layer = FLOAT_LAYER + 0.01 - upper_sock_img.overlays += m1_north - - if(tailtype.tailsock_markings2) - var/m2_nstate = (wagging) ? tailtype.tailsock_wagmarkings2 : tailtype.tailsock_markings2 - var/mutable_appearance/m2_north = mutable_appearance(sock_mark_icon, m2_nstate) - m2_north.color = rgb(r_tail3, g_tail3, b_tail3) - m2_north.layer = FLOAT_LAYER + 0.02 - upper_sock_img.overlays += m2_north - - //voodoo protection of butt theft - if(apply_to_mob) - //paste normal tail on their intended level - overlays_standing[target_layer] = tail_img - apply_layer(target_layer) - - // apply our taur sock to its correct layer, voodoo is south only so should be fine... right?? Right byond????? - if(upper_sock_img) - //backpacks render over everything north face unless this is specifically set higher on the image.layer - even if it's in the higher index.... - //have I mentioned how much I hate this system?? - upper_sock_img.layer = TAIL_UPPER_LAYER_HIGH - upper_sock_img.pixel_x = total_off_x - upper_sock_img.pixel_y = total_off_y - overlays_standing[TAIL_UPPER_LAYER_HIGH] = upper_sock_img - apply_layer(TAIL_UPPER_LAYER_HIGH) - - return tail_img - -/mob/living/carbon/human/proc/animate_tail_reset() - if(QDESTROYING(src) || !tail_style) +//Not really once, since BYOND can't do that. +//Update this if the ability to flick() images or make looping animation start at the first frame is ever added. +//You can sort of flick images now with flick_overlay -Aro +/mob/living/carbon/human/proc/animate_tail_once() + if(QDESTROYING(src)) return - if(stat == DEAD) - set_tail_state(tail_style.icon_state) - toggle_tail(FALSE) // Stop wagging on death - else - // Resets tail state based on current wagging flag - set_tail_state(wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state) + var/t_state = "[species.get_tail(src)]_once" + var/tail_layer = get_tail_layer() + if(src.tail_style && src.tail_style.clip_mask_state) + tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything + + var/image/tail_overlay = overlays_standing[tail_layer] + if(tail_overlay && tail_overlay.icon_state == t_state) + return //let the existing animation finish + + tail_overlay = set_tail_state(t_state) // Calls remove_layer & apply_layer + if(tail_overlay) + spawn(20) + //check that the animation hasn't changed in the meantime + if(overlays_standing[tail_layer] == tail_overlay && tail_overlay.icon_state == t_state) + animate_tail_stop() /mob/living/carbon/human/proc/animate_tail_start() - if(QDESTROYING(src) || !tail_style) + if(QDESTROYING(src)) return - toggle_tail(TRUE) - if(tail_style.ani_state) - set_tail_state(tail_style.ani_state) + set_tail_state("[species.get_tail(src)]_slow[rand(0,9)]") + +/mob/living/carbon/human/proc/animate_tail_fast() + if(QDESTROYING(src)) + return + + set_tail_state("[species.get_tail(src)]_loop[rand(0,9)]") + +/mob/living/carbon/human/proc/animate_tail_reset() + if(QDESTROYING(src)) + return + + if(stat != DEAD) + set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]") + else + set_tail_state("[species.get_tail(src)]_static") + toggle_tail(FALSE) //So tails stop when someone dies. TODO - Fix this hack ~Leshana /mob/living/carbon/human/proc/animate_tail_stop() - if(QDESTROYING(src) || !tail_style) - return - - toggle_tail(FALSE) - set_tail_state(tail_style.icon_state) - -/mob/living/carbon/human/proc/update_vore_belly_sprite() if(QDESTROYING(src)) return - remove_layer(VORE_BELLY_LAYER) - - var/image/vore_belly_image = get_vore_belly_image() - if(vore_belly_image) - vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER - overlays_standing[VORE_BELLY_LAYER] = vore_belly_image - //CHOMPEdit Disabling this until someone comes up with a less destructive approach. //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. - //CHOMPEdit Disabling this until someone comes up with a less destructive approach. //vore_tail_image.plane = PLANE_CH_STOMACH - vore_tail_image.appearance_flags = appearance_flags - overlays_standing[VORE_TAIL_LAYER] = vore_tail_image - apply_layer(VORE_TAIL_LAYER) - -/mob/living/carbon/human/proc/get_vore_tail_image() - if(!tail_style || !istaurtail(tail_style) || !tail_style.vore_tail_sprite_variant) - return null - - var/vs_fullness = vore_fullness_ex["taur belly"] - var/loaf_alt = lying && tail_style.belly_variant_when_loaf - var/fullness_icons = min(tail_style.fullness_icons, vs_fullness) - var/target_state = "Taur[tail_style.vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]" - //optimizing this with mutable_appearance, since it includes support for animations! - var/mutable_appearance/vorebelly_ma = mutable_appearance(tail_style.bellies_icon_path, target_state) - var/obj/item/clothing/suit/sockable = wear_suit - //scootchin' on by here to tailsock the tummy since it's important. - if(sockable && sockable.tailsock_toggle && sockable.tailsock_color) - vorebelly_ma.color = sockable.tailsock_color - else - var/base_color = vore_sprite_color["taur belly"] - vorebelly_ma.color = base_color - - var/image/working = image(vorebelly_ma) - working.pixel_x = -16 - - if(tail_style.em_block) // Let 'em glow still - working.overlays += em_block_image_generic(working) - - return working - -/mob/living/carbon/human/proc/vore_tail_animation() - if(tail_style.struggle_anim && !struggle_anim_taur) - struggle_anim_taur = TRUE - update_vore_tail_sprite() - spawn(12) - // Prevent runtimes if the mob is destroyed while the animation timer was ticking - if(!src || QDESTROYING(src)) - return - struggle_anim_taur = FALSE - update_vore_tail_sprite() + set_tail_state("[species.get_tail(src)]_static") /mob/living/carbon/human/proc/update_wing_showing() if(QDESTROYING(src)) @@ -1404,70 +1139,18 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() var/image/wing_image = get_wing_image(FALSE) - // Fetch wear_suit and check for tailsock coloration, because it makes sense to. - var/obj/item/clothing/suit/socksuit = wear_suit - var/wing_color = (istype(socksuit) && socksuit.requires_tailsock && socksuit.tailsock_toggle && socksuit.tailsock_color) ? socksuit.tailsock_color : null - if(wing_image) - wing_image.layer = BODY_LAYER + WING_LAYER - if(wing_color) - wing_image.color = wing_color + wing_image.layer = BODY_LAYER+WING_LAYER overlays_standing[WING_LAYER] = wing_image - if(wing_style && wing_style.multi_dir) wing_image = get_wing_image(TRUE) if(wing_image) - wing_image.layer = BODY_LAYER + WING_LOWER_LAYER - if(wing_color) - wing_image.color = wing_color + wing_image.layer = BODY_LAYER+WING_LOWER_LAYER overlays_standing[WING_LOWER_LAYER] = wing_image apply_layer(WING_LAYER) apply_layer(WING_LOWER_LAYER) -/mob/living/carbon/human/proc/get_wing_image(under_layer) - if(QDESTROYING(src)) - return - - //If you are FBP with wing style and didn't set a custom one - if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden) - var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing? - wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) - var/image/working = image(wing_s) - working.overlays += em_block_image_generic(working) // Leaving this as overlays += - return working - - //If you have custom wings selected - if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden) - var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state - if(wing_style.multi_dir) - wing_state += "_[under_layer ? "back" : "front"]" - var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state) - if(wing_style.do_colouration) - wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode) - if(wing_style.extra_overlay) - var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay) - overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode) - wing_s.Blend(overlay, ICON_OVERLAY) - qdel(overlay) - if(wing_style.extra_overlay2) - var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2) - if(wing_style.ani_state) - overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w) - overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) - wing_s.Blend(overlay, ICON_OVERLAY) - qdel(overlay) - else - overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) - wing_s.Blend(overlay, ICON_OVERLAY) - qdel(overlay) - var/image/working = image(wing_s) - working.alpha = src.a_wing - if(wing_style.em_block) - working.overlays += em_block_image_generic(working) // Leaving this as overlays += - working.pixel_x -= wing_style.wing_offset - return working - /mob/living/carbon/human/update_modifier_visuals() if(QDESTROYING(src)) return @@ -1543,6 +1226,49 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() overlays_standing[SURGERY_LAYER] = total apply_layer(SURGERY_LAYER) +/mob/living/carbon/human/proc/get_wing_image(under_layer) + if(QDESTROYING(src)) + return + + //If you are FBP with wing style and didn't set a custom one + if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden) + var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing? + wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) + var/image/working = image(wing_s) + working.overlays += em_block_image_generic(working) // Leaving this as overlays += + return working + + //If you have custom wings selected + if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden) + var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state + if(wing_style.multi_dir) + wing_state += "_[under_layer ? "back" : "front"]" + var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state) + if(wing_style.do_colouration) + wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode) + if(wing_style.extra_overlay) + var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay) + overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode) + wing_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + if(wing_style.extra_overlay2) + var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2) + if(wing_style.ani_state) + overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w) + overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) + wing_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + else + overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) + wing_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + var/image/working = image(wing_s) + working.alpha = src.a_wing + if(wing_style.em_block) + working.overlays += em_block_image_generic(working) // Leaving this as overlays += + working.pixel_x -= wing_style.wing_offset + return working + /mob/living/carbon/human/proc/get_ears_overlay() //If you are FBP with ear style and didn't set a custom one var/datum/robolimb/model = isSynthetic() @@ -1599,6 +1325,145 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() return rendered +/mob/living/carbon/human/proc/get_tail_image() + //If you are FBP with tail style and didn't set a custom one + var/datum/robolimb/model = isSynthetic() + if(istype(model) && model.includes_tail && !tail_style && !tail_hidden) + var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail") + tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) + return image(tail_s) + + //If you have a custom tail selected + if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden) + var/icon/tail_s = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) + if(tail_style.can_loaf && !is_shifted) + pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly. Taur Loafing + if(tail_style.do_colouration) + tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode) + if(tail_style.extra_overlay) + var/icon/overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay) + if(wagging && tail_style.ani_state) + overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay_w) + overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + else + overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + + if(tail_style.extra_overlay2) + var/icon/overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2) + if(wagging && tail_style.ani_state) + overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2_w) + overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + else + overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + + var/image/working = image(tail_s) + if(tail_style.em_block) + working.overlays += em_block_image_generic(working) // Leaving this as overlays += + + if(istaurtail(tail_style)) + var/datum/sprite_accessory/tail/taur/taurtype = tail_style + working.pixel_x = tail_style.offset_x + working.pixel_y = tail_style.offset_y + if(taurtype.can_ride && !riding_datum) + riding_datum = new /datum/riding/taur(src) + add_verb(src, /mob/living/carbon/human/proc/taur_mount) + add_verb(src, /mob/living/proc/toggle_rider_reins) + else if(islongtail(tail_style)) + working.pixel_x = tail_style.offset_x + working.pixel_y = tail_style.offset_y + working.alpha = src.a_tail + return working + return null + +// TODO - Move this to where it should go ~Leshana +/mob/living/proc/stop_flying() + if(QDESTROYING(src)) + return + flying = FALSE + return 1 + +/mob/living/carbon/human/stop_flying() + if((. = ..())) + update_wing_showing() + +/mob/living/carbon/human/proc/update_vore_belly_sprite() + if(QDESTROYING(src)) + return + + remove_layer(VORE_BELLY_LAYER) + + var/image/vore_belly_image = get_vore_belly_image() + if(vore_belly_image) + vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER + overlays_standing[VORE_BELLY_LAYER] = vore_belly_image + //CHOMPEdit Disabling this until someone comes up with a less destructive approach. //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 = 'modular_chomp/icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]") //CHOMPEdit + 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 + //CHOMPEdit Disabling this until someone comes up with a less destructive approach. //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.*/ diff --git a/code/modules/mob/living/living_vr.dm b/code/modules/mob/living/living_vr.dm index 5b9a006830..977f02f354 100644 --- a/code/modules/mob/living/living_vr.dm +++ b/code/modules/mob/living/living_vr.dm @@ -1,14 +1,8 @@ /mob/living/Check_Shoegrip() if(flying) - return TRUE + return 1 ..() -/mob/living/proc/stop_flying() - if(QDESTROYING(src)) - return - flying = FALSE - return TRUE - /mob/living/verb/customsay() set category = "IC.Settings" set name = "Customize Speech Verbs" diff --git a/code/modules/mob/new_player/tails/old_tail_accessories.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm similarity index 99% rename from code/modules/mob/new_player/tails/old_tail_accessories.dm rename to code/modules/mob/new_player/sprite_accessories_tail.dm index 484159b705..ed739dbee1 100644 --- a/code/modules/mob/new_player/tails/old_tail_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -1,10 +1,10 @@ /* //////////////////////////// / =--------------------= / -/ =OLD Tail Definitions= / -/ =-FOR REFERENCE ONLY-= / +/ == Tail Definitions == / +/ =--------------------= / //////////////////////////// - +*/ /datum/sprite_accessory/tail name = DEVELOPER_WARNING_NAME icon = 'icons/mob/human_races/sprite_accessories/tails.dmi' @@ -33,7 +33,7 @@ ///ADDITIONALLY, IF YOU ADD A SPECIAL VWAG, YOU NEED TO INCLUDE ani_state, extra_overlay_w, and extra_overlay2_w INTO icon_loaf TOO! var/can_loaf = FALSE var/loaf_offset = 0 - var/list/lower_layer_dirs = LOWER_TAIL_DIRS + var/list/lower_layer_dirs = list(SOUTH, WEST, EAST) var/icon_loaf = null // Taur Vore @@ -281,7 +281,6 @@ name = "xenomorph tail 2" desc = "" icon_state = "xenotail" - do_colouration = FALSE /datum/sprite_accessory/tail/eboop name = "EGN mech tail (dual color)" @@ -826,7 +825,6 @@ name = "Zeng-Hu Tajaran Synth tail" desc = "" icon_state = "zenghu_taj" - do_colouration = FALSE //Taurs moved to a separate file due to extra code around them @@ -2009,4 +2007,4 @@ do_colouration = TRUE color_blend_mode = ICON_MULTIPLY extra_overlay = "chu_markings" - extra_overlay2 = "chu_tipmarkings"*/ + extra_overlay2 = "chu_tipmarkings" diff --git a/code/modules/mob/new_player/sprite_accessories_wing.dm b/code/modules/mob/new_player/sprite_accessories_wing.dm index 1083df9e1f..b6c4ceb7cf 100644 --- a/code/modules/mob/new_player/sprite_accessories_wing.dm +++ b/code/modules/mob/new_player/sprite_accessories_wing.dm @@ -14,7 +14,7 @@ em_block = TRUE var/extra_overlay // Icon state of an additional overlay to blend in. var/extra_overlay2 //Tertiary. - var/clothing_can_hide = TRUE // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings. + var/clothing_can_hide = 1 // If true, clothing with HIDETAIL hides it. If the clothing is bulky enough to hide a tail, it should also hide wings. // var/show_species_tail = 1 // Just so // TODO - Seems not needed ~Leshana var/desc = DEVELOPER_WARNING_NAME var/ani_state // State when flapping/animated diff --git a/code/modules/mob/new_player/tails/sprite_accessories_tail.dm b/code/modules/mob/new_player/tails/sprite_accessories_tail.dm index 35ab52019a..e7e411d504 100644 --- a/code/modules/mob/new_player/tails/sprite_accessories_tail.dm +++ b/code/modules/mob/new_player/tails/sprite_accessories_tail.dm @@ -8,6 +8,7 @@ /datum/sprite_accessory/tail name = DEVELOPER_WARNING_NAME var/desc = DEVELOPER_WARNING_NAME +// icon = 'icons/mob/human_races/sprite_accessories/tails.dmi' do_colouration = TRUE //Set to FALSE to disable coloration using the tail color. /// Only appliciable if do_coloration = TRUE, ICON_MULTIPLY is a white bias, ICON_ADD is a black bias for colorations of sprites. /// Virtually all sprites now are white-biased greyscale. The ones that aren't are pre-colored, typically donator snowflake. @@ -33,7 +34,7 @@ ///ADDITIONALLY, IF YOU ADD A SPECIAL VWAG, YOU NEED TO INCLUDE ani_state, extra_overlay_w, and extra_overlay2_w INTO icon_loaf TOO! var/can_loaf = FALSE var/loaf_offset = 0 - var/list/lower_layer_dirs = LOWER_TAIL_DIRS + var/list/lower_layer_dirs = list(SOUTH, WEST, EAST) var/icon_loaf = null // Taur Vore @@ -43,42 +44,10 @@ var/struggle_anim = FALSE var/bellies_icon_path = 'icons/mob/vore/Taur_Bellies.dmi' - // Tail Socks - /// This can usually be the default icon, since the base icon is a complete unit. - /// Taur tails are snipped off to account for the butt positioning being easier to deal with. - var/tailsock_icon - var/tailsock_iconstate - /// Same for wag states, we just need the sprite itself, not any of the custom overlays - /// Fat Taur additions are just the belly variant, we layer this one before the vore one to account for that too. - var/tailsock_wagicon - // Vore belly overlays are handled in update_icons, because we just overlay the tummy colored to the tailsock if we're wearing a suit and it has a sock enabled. - // For north facing taur tails, using the sock + whatever tail related markings are visible when not in a sock but need to be drawn higher up. - // These are set to "none" to prevent null icon state issues - var/tailsock_markings = "none" - var/tailsock_markings2 = "none" - var/tailsock_wagmarkings = "none" - var/tailsock_wagmarkings2 = "none" - /datum/sprite_accessory/tail/New() . = ..() if(clip_mask_state) clip_mask = icon(icon = (clip_mask_icon ? clip_mask_icon : icon), icon_state = clip_mask_state) - //because the compiler doesn't like this being preset I guess whatever loser. - if(!tailsock_icon) - tailsock_icon = initial(icon) - if(!tailsock_iconstate) - tailsock_iconstate = initial(icon_state) - if(!tailsock_wagicon) - tailsock_wagicon = initial(ani_state) - //use the same naming conventions, these are for north face stuff. follows the icon file anyway, so tail_whatever, tail_sock - if(extra_overlay) - tailsock_markings = extra_overlay - if(extra_overlay2) - tailsock_markings2 = extra_overlay2 - if(extra_overlay_w) - tailsock_wagmarkings = extra_overlay_w - if(extra_overlay2_w) - tailsock_wagmarkings2 = extra_overlay2_w // Default invis tail /datum/sprite_accessory/tail/invisible diff --git a/code/modules/mob/new_player/tails/tails_animal.dm b/code/modules/mob/new_player/tails/tails_animal.dm index d3b7c90674..c138e337ae 100644 --- a/code/modules/mob/new_player/tails/tails_animal.dm +++ b/code/modules/mob/new_player/tails/tails_animal.dm @@ -88,21 +88,12 @@ icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi' icon_state = "wagtail" -/datum/sprite_accessory/tail/peacocktail //it's been a long enough while, I'm gunna go ahead and just... - name = "Peacock tail, colorable (vwag)" - icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi' - icon_state = "peacocktail" - ani_state = "peacocktail_w" - do_colouration = TRUE - /datum/sprite_accessory/tail/ketrai_wag name = "fennix tail (vwag)" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi' icon_state = "ketraitail" ani_state = "ketraitail_w" do_colouration = FALSE - tailsock_iconstate = "ketraitail_sock" - tailsock_wagicon = "ketraitail_w_sock" /datum/sprite_accessory/tail/ketrainew_wag name = "new fennix tail (vwag)" @@ -110,8 +101,6 @@ icon_state = "ketraitailnew" ani_state = "ketraitailnew_w" do_colouration = FALSE - tailsock_iconstate = "ketraitailnew_sock" - tailsock_wagicon = "ketraitailnew_w_sock" /datum/sprite_accessory/tail/redpanda name = "red panda" @@ -245,7 +234,6 @@ name = "Kitsune 2 tails, colorable" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi' icon_state = "doublekitsune" - extra_overlay = "doublekitsune-tips" /datum/sprite_accessory/tail/doublekitsunealt name = "Kitsune 2 tails, colorable, alt" @@ -343,7 +331,6 @@ name = "turkey" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi' icon_state = "turkey" - do_colouration = FALSE /datum/sprite_accessory/tail/shark_markings name = "akula tail, colorable, tail and fins" @@ -405,7 +392,6 @@ name = "Raccoon gray tail" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi' icon_state = "raccoon_tail" - tailsock_iconstate = "raccoon_tail_sock" do_colouration = FALSE /datum/sprite_accessory/tail/striped_tail diff --git a/code/modules/mob/new_player/tails/tails_bug.dm b/code/modules/mob/new_player/tails/tails_bug.dm index d4a8e83c17..2597826bbb 100644 --- a/code/modules/mob/new_player/tails/tails_bug.dm +++ b/code/modules/mob/new_player/tails/tails_bug.dm @@ -3,7 +3,6 @@ icon = 'icons/mob/human_races/sprite_accessories/tails/tails_bug.dmi' icon_state = "beethorax" do_colouration = FALSE - tailsock_iconstate = "beethorax_sock" /datum/sprite_accessory/tail/buggo name = "Bug abdomen, colorable" diff --git a/code/modules/mob/new_player/tails/tails_exotic.dm b/code/modules/mob/new_player/tails/tails_exotic.dm index 0bc0029f58..cc890c2920 100644 --- a/code/modules/mob/new_player/tails/tails_exotic.dm +++ b/code/modules/mob/new_player/tails/tails_exotic.dm @@ -13,13 +13,13 @@ /datum/sprite_accessory/tail/nevreanwagdc name = "nevrean wagtail, dual-color" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi' - icon_state = "nevreanwagtail" + icon_state = "wagtail" extra_overlay = "wagtail_dc_tail" /datum/sprite_accessory/tail/nevreanwagdc_alt name = "nevrean wagtail, marked, dual-color" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi' - icon_state = "nevreanwagtail2_dc" + icon_state = "wagtail2_dc" extra_overlay = "wagtail2_dc_mark" /datum/sprite_accessory/tail/spade_color @@ -38,14 +38,11 @@ icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi' icon_state = "snag" do_colouration = FALSE - tailsock_iconstate = "snag_sock" /datum/sprite_accessory/tail/xenotail name = "xenomorph tail 2" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi' icon_state = "xenotail" - do_colouration = FALSE - tailsock_iconstate = "xenotail_sock" /datum/sprite_accessory/tail/xenotail_fullcolour name = "xenomorph tail (fully colourable)" @@ -97,15 +94,12 @@ name = "tailmaw, colorable" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi' icon_state = "tailmaw" - tailsock_iconstate = "tailmaw_sock" /datum/sprite_accessory/tail/newtailmaw name = "new tailmaw (vwag)" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi' icon_state = "newtailmaw" - tailsock_iconstate = "tailmaw_sock" ani_state = "newtailmaw_w" - tailsock_wagicon = "tailmaw_w_sock" /datum/sprite_accessory/tail/shadekin_short name = "Shadekin Short Tail, colorable" diff --git a/code/modules/mob/new_player/tails/tails_long.dm b/code/modules/mob/new_player/tails/tails_long.dm index 56c70365a2..6c72ce7295 100644 --- a/code/modules/mob/new_player/tails/tails_long.dm +++ b/code/modules/mob/new_player/tails/tails_long.dm @@ -104,12 +104,14 @@ /datum/sprite_accessory/tail/longtail/flagtail name = "Flagtail" + icon = 'icons/rogue-star/tails_64x32_rs.dmi' icon_state = "flagtail" extra_overlay = "flagtail-1" extra_overlay2 = "flagtail-2" /datum/sprite_accessory/tail/longtail/chonksqrl name = "Squirrel (Big)" + icon = 'icons/rogue-star/tails_64x32_rs.dmi' icon_state = "chonksqrl" extra_overlay = "chonksqrl-m1" extra_overlay2 = "chonksqrl-m2" diff --git a/code/modules/mob/new_player/tails/tails_reptile.dm b/code/modules/mob/new_player/tails/tails_reptile.dm index 8c2260cf0b..4a583dea90 100644 --- a/code/modules/mob/new_player/tails/tails_reptile.dm +++ b/code/modules/mob/new_player/tails/tails_reptile.dm @@ -24,28 +24,36 @@ icon_state = "bigsnaketail" ani_state = "bigsnaketail_w" -/datum/sprite_accessory/tail/bigsnaketail/stripes +/datum/sprite_accessory/tail/bigsnaketailstripes name = "large snake tail, striped (vwag)" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi' + icon_state = "bigsnaketailstripes" extra_overlay = "bigsnaketailstripes-tips" + ani_state = "bigsnaketailstripes_w" extra_overlay_w = "bigsnaketailstripes-tips_w" -/datum/sprite_accessory/tail/bigsnaketail/stripes_alt +/datum/sprite_accessory/tail/bigsnaketailstripes_alt name = "large snake tail, striped, alt (vwag)" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi' + icon_state = "bigsnaketailstripesalt" extra_overlay = "bigsnaketailstripesalt-tips" + ani_state = "bigsnaketailstripesalt_w" extra_overlay_w = "bigsnaketailstripesalt-tips_w" -/datum/sprite_accessory/tail/bigsnaketail/dual +/datum/sprite_accessory/tail/bigsnaketaildual name = "large snake tail, dual color (vwag)" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi' + icon_state = "bigsnaketaildual" extra_overlay = "bigsnaketaildual-tips" + ani_state = "bigsnaketaildual_w" extra_overlay_w = "bigsnaketaildual-tips_w" -/datum/sprite_accessory/tail/bigsnaketail/under +/datum/sprite_accessory/tail/bigsnaketailunder name = "large snake tail, under (vwag)" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi' + icon_state = "bigsnaketailunder" extra_overlay = "bigsnaketailunder-tips" + ani_state = "bigsnaketailunder_w" extra_overlay_w = "bigsnaketailunder-tips_w" /datum/sprite_accessory/tail/tail_smooth @@ -54,11 +62,11 @@ icon_state = "tail_smooth" ani_state = "tail_smooth_w" -/datum/sprite_accessory/tail/tail_smooth/dual +/datum/sprite_accessory/tail/tail_smooth_dual name = "Smooth Lizard Tail, dual color" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi' + icon_state = "tail_smooth" extra_overlay = "tail_smooth_markings" - extra_overlay_w = "tail_smooth_w_markings" /datum/sprite_accessory/tail/Easterntail name = "Eastern Dragon (Animated)" @@ -104,7 +112,6 @@ name = "kururak tail" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi' icon_state = "kururak" - do_colouration = FALSE /datum/sprite_accessory/tail/snaketail_stripes name = "snake tail with stripes, dual-color" diff --git a/code/modules/mob/new_player/tails/tails_snowflake.dm b/code/modules/mob/new_player/tails/tails_snowflake.dm index 9a13699db2..ec68ac78ba 100644 --- a/code/modules/mob/new_player/tails/tails_snowflake.dm +++ b/code/modules/mob/new_player/tails/tails_snowflake.dm @@ -5,8 +5,14 @@ ani_state = "peacocktail_red_w" ckeys_allowed = list("prettiebyrd") do_colouration = FALSE - tailsock_iconstate = "peacocktail_red_sock" - tailsock_wagicon = "peacocktail_red_w_sock" + +/datum/sprite_accessory/tail/peacocktail //ditto + name = "Peacock tail, colorable (vwag)" + icon = 'icons/mob/human_races/sprite_accessories/tails/tails_snowflake.dmi' + icon_state = "peacocktail" + ani_state = "peacocktail_w" + do_colouration = FALSE + ckeys_allowed = list("prettiebyrd") /datum/sprite_accessory/tail/perrin_tentacles name = "octopus tentacles" @@ -14,7 +20,6 @@ icon_state = "perrintentacles" ckeys_allowed = list("codeme", "siennaathens") do_colouration = FALSE - tailsock_iconstate = "perrintentacles_sock" /datum/sprite_accessory/tail/kara //SatinIsle fluff item name = "Pterokara Tail" @@ -22,7 +27,6 @@ icon_state = "kara_tail" ckeys_allowed = list("satinisle") do_colouration = FALSE - tailsock_iconstate = "kara_tail_sock" /datum/sprite_accessory/tail/molenar_kitsune name = "quintail kitsune tails (Molenar)" @@ -30,7 +34,6 @@ icon_state = "molenar-kitsune" ckeys_allowed = list("molenar") do_colouration = FALSE - tailsock_iconstate = "molenar-kitsune_sock" /datum/sprite_accessory/tail/miria_fluffdragon name = "fluffdragon tail (Miria Masters)" @@ -38,7 +41,6 @@ icon_state = "miria-fluffdragontail" ckeys_allowed = list("miriamasters") do_colouration = FALSE - tailsock_iconstate = "miria-fluffdragontail_sock" /datum/sprite_accessory/tail/miria_kitsune name = "Black kitsune tails (Miria Masters)" @@ -46,7 +48,6 @@ icon_state = "miria-kitsunetail" ckeys_allowed = list("miriamasters") do_colouration = FALSE - tailsock_iconstate = "miria-kitsunetail_sock" /datum/sprite_accessory/tail/molenar_deathclaw name = "deathclaw bits (Molenar)" @@ -54,7 +55,6 @@ icon_state = "molenar-deathclaw" ckeys_allowed = list("molenar","silvertalismen","jertheace") do_colouration = FALSE - tailsock_iconstate = "molenar-deathclaw_sock" /datum/sprite_accessory/tail/runac name = "fennecsune tails (Runac)" @@ -62,7 +62,6 @@ icon_state = "runac" ckeys_allowed = list("rebcom1807") do_colouration = FALSE - tailsock_iconstate = "runac_sock" /datum/sprite_accessory/tail/reika //Leaving this since it was too hard to split the wings from the tail. name = "fox tail (+ beewings) (Reika)" @@ -70,7 +69,6 @@ icon_state = "reika" ckeys_allowed = list("rikaru19xjenkins") do_colouration = FALSE - tailsock_iconstate = "reika_sock" /datum/sprite_accessory/tail/rosey name = "tritail kitsune tails (Rosey)" @@ -78,7 +76,6 @@ icon_state = "rosey_three" ckeys_allowed = list("joey4298") do_colouration = FALSE - tailsock_iconstate = "rosey_three_sock" /datum/sprite_accessory/tail/rosey2 name = "pentatail kitsune tails (Rosey)" //I predict seven tails next. ~CK @@ -86,15 +83,6 @@ icon_state = "rosey_five" do_colouration = FALSE ckeys_allowed = list("joey4298") - tailsock_iconstate = "rosey_five_sock" - -/datum/sprite_accessory/tail/longtail/roiz_long_lizard - name = "Long Lizard Tail (Roiz Lizden)" - icon = 'icons/mob/human_races/sprite_accessories/tails/tails_long.dmi' - icon_state = "roiz_tail_s" - do_colouration = FALSE - ckeys_allowed = list("spoopylizz") - tailsock_iconstate = "roiz_tail_sock" /datum/sprite_accessory/tail/scree name = "green taj tail (Scree)" @@ -102,7 +90,6 @@ icon_state = "scree" ckeys_allowed = list("scree") do_colouration = FALSE - tailsock_iconstate = "scree_sock" /datum/sprite_accessory/tail/aronai name = "aronai tail (Aronai)" @@ -110,7 +97,6 @@ icon_state = "aronai" ckeys_allowed = list("arokha") do_colouration = FALSE - tailsock_iconstate = "aronai_sock" /datum/sprite_accessory/tail/cabletail name = "cabletail" @@ -118,7 +104,6 @@ icon_state = "tuckercabletail" ckeys_allowed = list("tucker0666") do_colouration = FALSE - tailsock_iconstate = "tuckercabletail_sock" /datum/sprite_accessory/tail/featherfluff_tail name = "featherfluff_tail" @@ -126,7 +111,6 @@ icon_state = "tuckerfeather_tail" ckeys_allowed = list("tucker0666") do_colouration = FALSE - tailsock_iconstate = "tuckerfeather_tail_sock" /datum/sprite_accessory/tail/holly name = "tigress tail (Holly)" @@ -134,4 +118,3 @@ icon_state = "hoodootail" ckeys_allowed = list("hoodoo") do_colouration = FALSE - tailsock_iconstate = "hoodootail_sock" diff --git a/code/modules/mob/new_player/tails/tails_synth.dm b/code/modules/mob/new_player/tails/tails_synth.dm index 1ec6eae95b..bc415996b1 100644 --- a/code/modules/mob/new_player/tails/tails_synth.dm +++ b/code/modules/mob/new_player/tails/tails_synth.dm @@ -8,7 +8,6 @@ name = "Zeng-Hu Tajaran Synth tail" icon = 'icons/mob/human_races/sprite_accessories/tails/tails_synth.dmi' icon_state = "zenghu_taj" - do_colouration = FALSE /datum/sprite_accessory/tail/wartacosushi_tail //brightened +20RGB from matching roboparts name = "Ward-Takahashi Tail" diff --git a/code/modules/mob/new_player/tails/tails_teshari.dm b/code/modules/mob/new_player/tails/tails_teshari.dm index 96804dc412..f91700389d 100644 --- a/code/modules/mob/new_player/tails/tails_teshari.dm +++ b/code/modules/mob/new_player/tails/tails_teshari.dm @@ -52,7 +52,6 @@ icon = 'icons/mob/human_races/sprite_accessories/tails/tails_teshari.dmi' icon_state = "beethorax_tesh" do_colouration = FALSE - tailsock_iconstate = "beethorax_tesh_sock" /datum/sprite_accessory/tail/teshbuggo name = "Teshari bug abdomen, colorable" diff --git a/code/modules/mob/new_player/taur/not_taur_legs.dm b/code/modules/mob/new_player/taur/not_taur_legs.dm index ab636977a6..ec7838b308 100644 --- a/code/modules/mob/new_player/taur/not_taur_legs.dm +++ b/code/modules/mob/new_player/taur/not_taur_legs.dm @@ -27,8 +27,7 @@ clip_mask_icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi' clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms. -//By making big leggy a subtype of longtail, it gets the offset but doesn't conflict with taur specific settings. -/datum/sprite_accessory/tail/longtail/bigleggy +/datum/sprite_accessory/tail/taur/bigleggy name = "Big Leggies" icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi' icon_state = "bigleggy" @@ -37,47 +36,46 @@ fullness_icons = 3 ani_state = "bigleggy_stanced" extra_overlay_w = "bigleggy_markings_stanced" - clip_mask_icon = 'icons/mob/human_races/sprite_accessories/biglegs.dmi' clip_mask_state = "taur_clip_mask_def" //Leaving this here to make it clear it it's INTENTIONAL it shows above clothes. Use the marking if you want it to show UNDER clothes! -/datum/sprite_accessory/tail/longtail/bigleggy/canine +/datum/sprite_accessory/tail/taur/bigleggy/canine name = "Big Leggies (Canine Tail)" extra_overlay2 = "bigleggy_canine" extra_overlay2_w = "bigleggy_canine" -/datum/sprite_accessory/tail/longtail/bigleggy/feline +/datum/sprite_accessory/tail/taur/bigleggy/feline name = "Big Leggies (Feline Tail)" extra_overlay2 = "bigleggy_feline" extra_overlay2_w = "bigleggy_feline" -/datum/sprite_accessory/tail/longtail/bigleggy/reptile +/datum/sprite_accessory/tail/taur/bigleggy/reptile name = "Big Leggies (Reptile Tail)" extra_overlay2 = "bigleggy_reptile" extra_overlay2_w = "bigleggy_reptile" -/datum/sprite_accessory/tail/longtail/bigleggy/snake +/datum/sprite_accessory/tail/taur/bigleggy/snake name = "Big Leggies (Snake Tail)" extra_overlay2 = "bigleggy_snake" extra_overlay2_w = "bigleggy_snake" -/datum/sprite_accessory/tail/longtail/bigleggy/fox +/datum/sprite_accessory/tail/taur/bigleggy/fox name = "Big Leggies (Fox Tail)" extra_overlay2 = "bigleggy_vulpine" extra_overlay2_w = "bigleggy_vulpine" -/datum/sprite_accessory/tail/longtail/bigleggy/bird +/datum/sprite_accessory/tail/taur/bigleggy/bird name = "Big Leggies (Bird)" extra_overlay = "bigleggy_m_bird" extra_overlay2 = "bigleggy_bird" extra_overlay_w = "bigleggy_m_bird_stanced" extra_overlay2_w = "bigleggy_bird" -/datum/sprite_accessory/tail/longtail/bigleggy/plug +/datum/sprite_accessory/tail/taur/bigleggy/plug name = "Big Leggies (Plug Tail)" extra_overlay2 = "bigleggy_plug" extra_overlay2_w = "bigleggy_plug" -/datum/sprite_accessory/tail/longtail/bigleggy/AlienSlug +/datum/sprite_accessory/tail/taur/bigleggy/AlienSlug name = "Big Leggies (Alien Slug Tail)" icon_state = "bigleggy_full_alienslug" extra_overlay = "bigleggy_alienslug" diff --git a/code/modules/mob/new_player/taur/sprite_accessories_taur.dm b/code/modules/mob/new_player/taur/sprite_accessories_taur.dm index 272ee18b0a..fad0baa2b9 100644 --- a/code/modules/mob/new_player/taur/sprite_accessories_taur.dm +++ b/code/modules/mob/new_player/taur/sprite_accessories_taur.dm @@ -6,12 +6,11 @@ var/can_ride = TRUE //whether we're real rideable taur or just in that category offset_x = -16 em_block = TRUE - /// Suit sprites are stored in icons/inventory/suit/taursuits_[name] + var/icon/suit_sprites = null //File for suit sprites, if any. var/icon/under_sprites = null var/icon_sprite_tag // This is where we put stuff like _Horse, so we can assign icons easier. - tailsock_icon = 'icons/mob/human_races/sprite_accessories/taurs/taur_socks.dmi' //Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to //duplicate all the messages, and it starts getting awkward. These are singletons, anyway! @@ -42,14 +41,6 @@ hide_body_parts = list(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT) //Exclude pelvis just in case. clip_mask_state = "taur_clip_mask_def" //Used to clip off the lower part of suits & uniforms. -/datum/sprite_accessory/tail/taur/New() - . = ..() - //give us the default sprite state, hijacking icon_sprite_tag that was only ever used for saddlebags. - if(icon_sprite_tag) - tailsock_iconstate = "[icon_sprite_tag]_sock" - ///few taurs have working tailwags, but to ensure future proofing and no null icons the taur_sock.dmi file has these prepared. - tailsock_wagicon = "[icon_sprite_tag]_w_sock" - /datum/riding/taur keytype = /obj/item/material/twohanded/riding_crop // Crack! nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs. diff --git a/code/modules/mob/new_player/taur/taur_animal.dm b/code/modules/mob/new_player/taur/taur_animal.dm index 7bbc944f76..0aba39e842 100644 --- a/code/modules/mob/new_player/taur/taur_animal.dm +++ b/code/modules/mob/new_player/taur/taur_animal.dm @@ -1,17 +1,13 @@ /datum/sprite_accessory/tail/taur/bunny name = "Bunny (Taur, Fat vwag)" - icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' + icon = 'icons/rogue-star/tails_64x32_rs.dmi' icon_state = "bnytr" - suit_sprites = 'icons/inventory/suit/taursuits_bnytr.dmi' - icon_sprite_tag = "bnytr" extra_overlay = "bnytr-m1" extra_overlay2 = "bnytr-m2" ani_state = "bnytr-f" extra_overlay_w = "bnytr-m1" extra_overlay2_w = "bnytr-f-m2" - tailsock_wagicon = "bnytr-f_sock" - tailsock_wagmarkings = "bnytr-m1" - tailsock_wagmarkings2 = "bnytr-f-m2" + can_loaf = TRUE icon_loaf = 'icons/rogue-star/loafs_64x32.dmi' loaf_offset = 4 @@ -20,7 +16,7 @@ name = "Cow (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "cow_s" - suit_sprites = 'icons/inventory/suit/taursuits_cow.dmi' + suit_sprites = 'icons/mob/taursuits_cow.dmi' icon_sprite_tag = "cow" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -45,19 +41,19 @@ /datum/sprite_accessory/tail/taur/cow/fat name = "Fat Cow (Taur)" - icon_sprite_tag = "fatcow" icon_state = "fatcow_s" /datum/sprite_accessory/tail/taur/cow/fat_wag name = "Cow (Taur, Fat vwag)" + icon_state = "cow_s" ani_state = "fatcow_s" - tailsock_wagicon = "fatcow_sock" /datum/sprite_accessory/tail/taur/cow/paw // this grabs suit sprites from the normal cow, the outline is the same name = "Cow w/ paws (Taur)" icon_state = "pawcow_s" - icon_sprite_tag = "pawcow" //little suit booties in place of the hoof cutouts. extra_overlay = "pawcow_markings" + suit_sprites = 'icons/mob/taursuits_cow.dmi' + icon_sprite_tag = "cow" msg_owner_disarm_run = "You quickly push %prey to the ground with your paw!" msg_prey_disarm_run = "%owner pushes you down to the ground with their paw!" @@ -79,9 +75,7 @@ icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "deer_s" extra_overlay = "deer_markings" - ani_state = "deer_w" - extra_overlay_w = "deer_markings_w" - suit_sprites = 'icons/inventory/suit/taursuits_deer.dmi' + suit_sprites = 'icons/mob/taursuits_deer.dmi' icon_sprite_tag = "deer" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -110,7 +104,6 @@ icon_state = "deer_s" ani_state = "fatdeer_s" extra_overlay_w = "fatdeer_markings" - tailsock_wagicon = "fatdeer_sock" /datum/sprite_accessory/tail/taur/deer/fatdeer name = "Fat Deer (Dual-color Taur)" @@ -121,7 +114,7 @@ name = "Feline (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "feline_s" //I just want to talk to whomever thought every feline varient needed this same sprite but uniquely renamed... - suit_sprites = 'icons/inventory/suit/taursuits_feline.dmi' + suit_sprites = 'icons/mob/taursuits_deer.dmi' icon_sprite_tag = "feline" extra_overlay = "feline_markings" ani_state = "feline_w" @@ -132,13 +125,10 @@ vore_tail_sprite_variant = "Feline" belly_variant_when_loaf = TRUE fullness_icons = 1 - tailsock_markings = "none" - tailsock_wagmarkings = "none" /datum/sprite_accessory/tail/taur/feline/fat name = "Fat Feline (Taur)" icon_state = "fatfeline_s" - icon_sprite_tag = "fatfeline" extra_overlay = "fatfeline_markings" //feet, belly, and chest ani_state = "fatfeline_w" extra_overlay_w = "fatfeline_markings" @@ -148,15 +138,12 @@ name = "Fat Feline (Taur, Fat vwag)" ani_state = "fatfeline_s" //static fat sprite can_loaf = TRUE - icon_sprite_tag = "fatfeline" icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 3 - tailsock_wagicon = "fatfeline_sock" /datum/sprite_accessory/tail/taur/feline/fatfeline_2c name = "Fat Feline 3-color (Taur)" icon_state = "fatfeline_s" - icon_sprite_tag = "fatfeline" extra_overlay = "fatfeline2_markings" // chest and belly extra_overlay2 = "fatfeline2_markings_2" // feet can_loaf = TRUE @@ -167,6 +154,7 @@ icon_state = "feline_s" extra_overlay = "feline2_markings" extra_overlay2 = "feline2_markings_2" + //icon_sprite_tag = "feline2c" can_loaf = TRUE /datum/sprite_accessory/tail/taur/feline/feline_2c_wag @@ -174,16 +162,19 @@ extra_overlay = "feline2_markings" extra_overlay2 = "feline2_markings_2" ani_state = "fatfeline_s" - extra_overlay_w = "fatfeline2_markings" - extra_overlay2_w = "fatfeline2_markings_2" + extra_overlay = "fatfeline2_markings" + extra_overlay2 = "fatfeline2_markings_2" loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/tiger name = "Tiger (Taur)" + suit_sprites = 'icons/mob/taursuits_deer.dmi' icon_sprite_tag = "feline" + extra_overlay = "feline_markings" extra_overlay2 = "tiger_markings" extra_overlay2_w = "tiger_markings_w" can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 5 vore_tail_sprite_variant = "Feline" belly_variant_when_loaf = TRUE @@ -192,25 +183,21 @@ /datum/sprite_accessory/tail/taur/feline/tiger/fat name = "Fat Tiger (Taur)" icon_state = "fatfeline_s" - icon_sprite_tag = "fatfeline" extra_overlay = "fatfeline_markings" extra_overlay2 = "fattiger_markings" extra_overlay2_w = "fattiger_markings_w" + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 3 - tailsock_markings2 = "tiger_markings" - tailsock_wagmarkings2 = "tiger_markings_w" /datum/sprite_accessory/tail/taur/feline/tiger/fat_vwag name = "Tiger (Taur, Fat vwag)" ani_state = "fatfeline_s" extra_overlay_w = "fatfeline_markings" extra_overlay2_w = "fattiger_markings" - tailsock_wagicon = "fatfeline_sock" /datum/sprite_accessory/tail/taur/fox name = "Fox (Taur, 3-color)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_fox.dmi' icon_state = "fox" extra_overlay = "fox_markings" extra_overlay2 = "fox_markings2" @@ -223,7 +210,6 @@ /datum/sprite_accessory/tail/taur/fox/kitsune name = "Kitsune (Taur)" icon_state = "kitsune" - icon_sprite_tag = "kitsune" extra_overlay = "kitsune_markings" extra_overlay2 = "kitsune_markings2" @@ -237,8 +223,8 @@ name = "Horse (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "horse_s" - under_sprites = 'icons/inventory/suit/taursuits_horse.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_horse.dmi' + under_sprites = 'icons/mob/taursuits_horse.dmi' + suit_sprites = 'icons/mob/taursuits_horse.dmi' icon_sprite_tag = "horse" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -264,12 +250,12 @@ /datum/sprite_accessory/tail/taur/horse/big name = "Kentauri (Taur)" icon_state = "kentauri_s" - icon_sprite_tag = "kentauri" extra_overlay = "kentauri_markings" /datum/sprite_accessory/tail/taur/horse/horse_2c name = "Horse & colorable tail (Taur)" extra_overlay = "horse_markings" + //icon_sprite_tag = "wolf2c" /datum/sprite_accessory/tail/taur/otie name = "Otie (Taur)" @@ -277,10 +263,7 @@ icon_state = "otie_s" extra_overlay = "otie_markings" extra_overlay2 = "otie_markings_2" - ani_state = "otie_w" - extra_overlay_w = "otie_markings_w" - extra_overlay2_w = "otie_markings_2w" - suit_sprites = 'icons/inventory/suit/taursuits_otie.dmi' + suit_sprites = 'icons/mob/taursuits_otie.dmi' icon_sprite_tag = "otie" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -288,15 +271,10 @@ vore_tail_sprite_variant = "Otie" belly_variant_when_loaf = TRUE fullness_icons = 1 - tailsock_markings = "none" - tailsock_wagmarkings = "none" - tailsock_markings2 = "otie_markings" - tailsock_wagmarkings2 = "otie_markings_w" /datum/sprite_accessory/tail/taur/rat name = "Rat (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_rat.dmi' icon_state = "rat_s" extra_overlay = "rat_markings" clip_mask_state = "taur_clip_mask_rat" @@ -305,22 +283,18 @@ /datum/sprite_accessory/tail/taur/redpanda name = "Red Panda (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_redpanda.dmi' icon_state = "redpanda" - icon_sprite_tag = "redpanda" /datum/sprite_accessory/tail/taur/redpanda/dc name = "Red Panda (Taur dual-color)" icon_state = "redpanda_dc" extra_overlay = "redpanda_dc_markings" - tailsock_markings = "redpanda_markings" /datum/sprite_accessory/tail/taur/sergal/wheaties name = "Sergal (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_sergal.dmi' icon_state = "sergwheat" - icon_sprite_tag = "sergal" + icon_sprite_tag = "wolf" vore_tail_sprite_variant = "N" fullness_icons = 3 struggle_anim = TRUE @@ -328,6 +302,7 @@ /datum/sprite_accessory/tail/taur/sergal/wheaties/fat name = "Fat Sergal (Taur)" icon_state = "fatsergal" + icon_sprite_tag = "wolf" vore_tail_sprite_variant = "N" fullness_icons = 3 struggle_anim = TRUE @@ -337,7 +312,7 @@ icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "sergwheat" extra_overlay = "sergwheat_markings" - suit_sprites = 'icons/inventory/suit/taursuits_sergal.dmi' + icon_sprite_tag = "wolf" vore_tail_sprite_variant = "N" fullness_icons = 3 struggle_anim = TRUE @@ -346,6 +321,7 @@ name = "Fat Sergal (Taur, dual-color)" icon_state = "fatsergal" extra_overlay = "sergwheat_markings" + icon_sprite_tag = "wolf" vore_tail_sprite_variant = "N" fullness_icons = 3 struggle_anim = TRUE @@ -356,7 +332,6 @@ icon_state = "skunk_s" extra_overlay = "skunk_markings" extra_overlay2 = "skunk_markings_2" - suit_sprites = 'icons/inventory/suit/taursuits_skunk.dmi' icon_sprite_tag = "skunk" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -369,8 +344,8 @@ name = "Wolf (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "wolf_s" - under_sprites = 'icons/inventory/suit/taursuits_wolf.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_wolf.dmi' + under_sprites = 'icons/mob/taursuits_wolf.dmi' + suit_sprites = 'icons/mob/taursuits_wolf.dmi' icon_sprite_tag = "wolf" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -383,96 +358,75 @@ name = "Fat Wolf (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "fatwolf_s" - icon_sprite_tag = "fatwolf" + icon_sprite_tag = "wolf" //This could be modified later. loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/fat_wag name = "Wolf (Taur, Fat vwag)" + icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' + icon_state = "wolf_s" ani_state = "fatwolf_s" - tailsock_wagicon = "fatwolf_s" -/datum/sprite_accessory/tail/taur/wolf/wolf_2c - name = "Wolf 3-color (Taur)" - extra_overlay = "wolf2_markings" - extra_overlay2 = "wolf2_markings_2" - -/datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag - name = "Wolf 3-color (Taur, Fat vwag)" - extra_overlay = "wolf2_markings" - extra_overlay2 = "wolf2_markings_2" - ani_state = "fatwolf_s" - extra_overlay_w = "fatwolf2_markings" - extra_overlay2_w = "fatwolf2_markings_2" - -/datum/sprite_accessory/tail/taur/wolf/fat/wolf_2c +/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c name = "Fat Wolf 3-color (Taur)" + icon_state = "fatwolf2_s" extra_overlay = "fatwolf2_markings" extra_overlay2 = "fatwolf2_markings_2" loaf_offset = 3 - icon_sprite_tag = "fatwolf" -/datum/sprite_accessory/tail/taur/wolf/fat/altwolf_2c +/datum/sprite_accessory/tail/taur/wolf/fatwolf_2c/fatwolfalt name = "Fat Wolf 3-color-alt (Taur)" + icon_state = "fatwolfalt_s" extra_overlay = "fatwolfalt_markings1" extra_overlay2 = "fatwolfalt_markings2" - icon_sprite_tag = "fatwolf" + icon_sprite_tag = "wolf" + +/datum/sprite_accessory/tail/taur/wolf/wolf_2c + name = "Wolf 3-color (Taur)" + icon_state = "wolf_s" + extra_overlay = "wolf_markings" + extra_overlay2 = "wolf_markings_2" + //icon_sprite_tag = "wolf2c" + +/datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag + name = "Wolf 3-color (Taur, Fat vwag)" + icon_state = "wolf2_s" + extra_overlay = "wolf2_markings" + extra_overlay2 = "wolf2_markings_2" + extra_overlay_w = "fatwolf2_markings" + extra_overlay2_w = "fatwolf2_markings_2" + ani_state = "fatwolf2_s" /datum/sprite_accessory/tail/taur/wolf/wolf_3 name = "WolfTG (Taur)" //It's Citadel, not TG. :V - icon_state = "wolftg" - suit_sprites = 'icons/inventory/suit/taursuits_husky.dmi' - clip_mask_state = "taur_clip_mask_husky" + icon_state = "wolf3_s" do_colouration = FALSE //this is already pre-colored. - tailsock_markings = "wolftg" - tailsock_wagmarkings = "wolftg_w" - icon_sprite_tag = "wolftg" /datum/sprite_accessory/tail/taur/wolf/husky name = "Husky (Taur)" - suit_sprites = 'icons/inventory/suit/taursuits_husky.dmi' - clip_mask_state = "taur_clip_mask_husky" icon_state = "husky_s" - extra_overlay = "husky_markings" //Only affects the black back / tail fluff sections, so it works for the fat one too - ani_state = "husky_w" - extra_overlay_w = "husky_markings_w" - icon_sprite_tag = "husky" /datum/sprite_accessory/tail/taur/wolf/huskyfat name = "Fat Husky (Taur)" - icon_state = "fathusky_s" - extra_overlay = "husky_markings" - ani_state = "fathusky_w" - extra_overlay_w = "husky_markings_w" - icon_sprite_tag = "fathusky" + icon_state = "huskyf_s" /datum/sprite_accessory/tail/taur/zorgoia name = "Zorgoia (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "zorgoia" extra_overlay = "zorgoia_fluff" - icon_sprite_tag = "zorgoia" - suit_sprites = 'icons/inventory/suit/taursuits_zorgoia.dmi' /datum/sprite_accessory/tail/taur/zorgoia/fat name = "Zorgoia (Fat Taur)" - icon_state = "zorgoia_fat" - extra_overlay = "zorgoia_fat_fluff" - icon_sprite_tag = "zorgoia_fat" + extra_overlay = "zorgoia_fat2" /datum/sprite_accessory/tail/taur/zorgoia_new name = "Zorgoia (Taur) (New)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi' icon_state = "zorgoia_new" - icon_sprite_tag = "zorgoia_new" extra_overlay = "zorgoia_new_fluff" - suit_sprites = 'icons/inventory/suit/taursuits_zorgoia.dmi' - -/datum/sprite_accessory/tail/taur/zorgoia_new/fatvwag - name = "Zorgoia (Taur, vwag) (New)" - ani_state = "zorgoia_new_fat" - extra_overlay_w = "zorgoia_new_fat_fluff" /datum/sprite_accessory/tail/taur/zorgoia_new/fat name = "Zorgoia (Fat Taur) (New)" icon_state = "zorgoia_new_fat" - extra_overlay = "zorgoia_new_fat_fluff" + extra_overlay = "zorgoia_new_fat_overlay" diff --git a/code/modules/mob/new_player/taur/taur_exotic.dm b/code/modules/mob/new_player/taur/taur_exotic.dm index cc55fd769e..97f0ec4b78 100644 --- a/code/modules/mob/new_player/taur/taur_exotic.dm +++ b/code/modules/mob/new_player/taur/taur_exotic.dm @@ -15,6 +15,7 @@ icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' icon_state = "giantspidertaur" do_colouration = FALSE + extra_overlay = null icon_sprite_tag = "giantspidertaur" msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" @@ -42,38 +43,42 @@ /datum/sprite_accessory/tail/taur/giantspider/carrier name = "Carrier Spider (Taur)" icon_state = "carrierspidertaur" + extra_overlay = null icon_sprite_tag = "carrierspidertaur" /datum/sprite_accessory/tail/taur/giantspider/phoron name = "Phorogenic Spider (Taur)" icon_state = "phoronspidertaur" + extra_overlay = null icon_sprite_tag = "phoronspidertaur" /datum/sprite_accessory/tail/taur/giantspider/spark name = "Voltaic Spider (Taur)" icon_state = "sparkspidertaur" + extra_overlay = null icon_sprite_tag = "sparkspidertaur" /datum/sprite_accessory/tail/taur/giantspider/frost name = "Frost Spider (Taur)" icon_state = "frostspidertaur" + extra_overlay = null icon_sprite_tag = "frostspidertaur" /datum/sprite_accessory/tail/taur/giantspider/ant //technically not a spider, but it inherits the same messages name = "Ant (dual color)" icon_state = "ant_s" + do_colouration = TRUE extra_overlay = "ant_markings" clip_mask_state = "taur_clip_mask_wasp" - icon_sprite_tag = "ant" - do_colouration = TRUE + icon_sprite_tag = "wasp" /datum/sprite_accessory/tail/taur/giantspider/wasp //same as above, but for wasps name = "Wasp (dual color)" icon_state = "wasp_s" + do_colouration = TRUE extra_overlay = "wasp_markings" clip_mask_state = "taur_clip_mask_wasp" icon_sprite_tag = "wasp" - do_colouration = TRUE /datum/sprite_accessory/tail/taur/mermaid name = "Mermaid (Taur)" @@ -116,23 +121,22 @@ /datum/sprite_accessory/tail/taur/mermaid/alt/marked name = "Mermaid Koi (Taur)" + icon_state = "altmermaid_s" extra_overlay = "altmermaid_markings" extra_overlay2 = "altmermaid_markings2" /datum/sprite_accessory/tail/taur/horse/scoli name = "Scolipede (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_scoli.dmi' icon_state = "scoli_s" extra_overlay = "scoli_markings1" extra_overlay2 = "scoli_markings2" - icon_sprite_tag = "scoli" /datum/sprite_accessory/tail/taur/spider name = "Spider (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' icon_state = "spider_s" - suit_sprites = 'icons/inventory/suit/taursuits_spider.dmi' + suit_sprites = 'icons/mob/taursuits_spider.dmi' icon_sprite_tag = "spider" msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" @@ -153,7 +157,6 @@ /datum/sprite_accessory/tail/taur/sloog name = "Sloog (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' - suit_sprites = 'icons/inventory/suit/taursuits_sloog.dmi' icon_state = "sloog" extra_overlay = "sloog_glowstripe" extra_overlay_w = "sloog_glowstripe" @@ -163,6 +166,7 @@ name = "Slug (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' icon_state = "slug_s" + suit_sprites = 'icons/mob/taursuits_deer.dmi' //Yes it sounds odd, but they share the same sprites. icon_sprite_tag = "slug" vore_tail_sprite_variant = "Slug" fullness_icons = 1 @@ -196,15 +200,15 @@ /datum/sprite_accessory/tail/taur/slug/snail name = "Snail (Taur)" + icon_state = "slug_s" extra_overlay = "snail_shell_marking" - icon_sprite_tag = "snail" /datum/sprite_accessory/tail/taur/tents name = "Tentacles (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' icon_state = "tent_s" icon_sprite_tag = "tentacle" - can_ride = FALSE + can_ride = 0 msg_prey_stepunder = "You run between %prey's tentacles." msg_owner_stepunder = "%owner runs between your tentacles." @@ -237,7 +241,6 @@ name = "Tree Roots (Oak)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi' icon_state = "tree_oak_roots" - icon_sprite_tag = "tree_oak_roots" can_ride = FALSE /* diff --git a/code/modules/mob/new_player/taur/taur_reptile.dm b/code/modules/mob/new_player/taur/taur_reptile.dm index 00697207c1..aef6dd538d 100644 --- a/code/modules/mob/new_player/taur/taur_reptile.dm +++ b/code/modules/mob/new_player/taur/taur_reptile.dm @@ -1,9 +1,10 @@ -/datum/sprite_accessory/tail/taur/drake +/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above. name = "Drake (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi' icon_state = "drake_s" extra_overlay = "drake_markings" - suit_sprites = 'icons/inventory/suit/taursuits_drake.dmi' +/// suit_sprites = 'icons/mob/taursuits_drake.dmi' + suit_sprites = 'icons/mob/taursuits_drake_ch.dmi' icon_sprite_tag = "drake" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -16,71 +17,98 @@ name = "Fat Drake (Taur)" icon_state = "fatdrake_s" extra_overlay = "fatdrake_markings" - icon_sprite_tag = "fatdrake" - vore_tail_sprite_variant = "FatDrake" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 6 /datum/sprite_accessory/tail/taur/drake/drake_vwag name = "Drake (Taur, Fat vwag)" + icon_state = "drake_s" + extra_overlay = "drake_markings" ani_state = "fatdrake_s" extra_overlay_w = "fatdrake_markings" + can_loaf = TRUE + +/datum/sprite_accessory/tail/taur/drake/extended + name = "Fat Drake Extended (Taur)" + icon_state = "extended_fatdrake" + extra_overlay = "extended_fatdrake_markings" + extra_overlay2 = "extended_fatdrake_markings2" + fullness_icons = 2 + can_loaf = TRUE //Soon //Actually, NOW + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. + loaf_offset = 5 + +/datum/sprite_accessory/tail/taur/drake/extended/spotty + name = "Fat Spotted Drake Extended (Taur)" + vore_tail_sprite_variant = "FatDrake" + icon_state = "spottedextended_fatdrake" + extra_overlay = "spottedextended_fatdrake_markings" + extra_overlay_w = "spottedextended_fatdrake_markings" + extra_overlay2 = "spottedextended_fatdrake_markings_2" + extra_overlay2_w = "spottedextended_fatdrake_markings_2" + fullness_icons = 2 + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. + loaf_offset = 5 /datum/sprite_accessory/tail/taur/drake/spotty name = "Spotted Drake (Taur, Tricolor)" + icon_state = "spotteddrake_s" + extra_overlay = "spotteddrake_markings" extra_overlay_w = "spotteddrake_markings" - extra_overlay2_w = "spotteddrake_markings" + extra_overlay2 = "spotteddrake_markings_2" + extra_overlay2_w = "spotteddrake_markings_2" + suit_sprites = 'icons/mob/taursuits_drake_ch.dmi' + icon_sprite_tag = "drake" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. loaf_offset = 6 /datum/sprite_accessory/tail/taur/drake/fat/spotty name = "Fat Spotted Drake (Taur, Tricolor)" vore_tail_sprite_variant = "FatDrake" - extra_overlay2 = "fatspotteddrake_markings" - extra_overlay2_w = "fatspotteddrake_markings" + icon_state = "fatspotteddrake_s" + extra_overlay = "fatspotteddrake_markings" + extra_overlay_w = "fatspotteddrake_markings" + extra_overlay2 = "fatspotteddrake_markings_2" + extra_overlay2_w = "fatspotteddrake_markings_2" fullness_icons = 2 + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. loaf_offset = 6 -/datum/sprite_accessory/tail/taur/drake/drake_vwag/spotty - name = "Spotted Drake (Taur, Tricolor, Fat vwag)" - extra_overlay2 = "spotteddrake_markings" - extra_overlay2_w = "fatspotteddrake_markings" - loaf_offset = 6 - -/datum/sprite_accessory/tail/taur/drake/extended +/datum/sprite_accessory/tail/taur/drake/extended_alt name = "Drake Extended (Taur)" vore_tail_sprite_variant = "Drake" - icon_state = "extendeddrake" - extra_overlay = "extendeddrake_markings" - extra_overlay_w = "extendeddrake_markings" - extra_overlay2 = "extendeddrake_markings_2" - extra_overlay2_w = "extendeddrake_markings_2" - icon_sprite_tag = "extendeddrake" + icon_state = "extended_drake" + extra_overlay = "extended_drake_markings" + extra_overlay_w = "extended_drake_markings" + extra_overlay2 = "extended_drake_markings_2" + extra_overlay2_w = "extended_drake_markings_2" fullness_icons = 3 + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 5 -/datum/sprite_accessory/tail/taur/drake/extended/spotted +/datum/sprite_accessory/tail/taur/drake/extended_alt/spotted name = "Spotted Drake Extended (Taur)" - extra_overlay2 = "spottedextendeddrake_markings" - extra_overlay2_w = "spottedextendeddrake_markings" - -/datum/sprite_accessory/tail/taur/drake/extended/fat - name = "Fat Drake Extended (Taur)" - icon_state = "extendedfatdrake" - extra_overlay = "extendedfatdrake_markings" - extra_overlay2 = "extendedfatdrake_markings_2" - icon_sprite_tag = "extendedfatdrake" - vore_tail_sprite_variant = "FatDrake" - fullness_icons = 2 - -/datum/sprite_accessory/tail/taur/drake/extended/fat/spotty - name = "Fat Spotted Drake Extended (Taur)" - extra_overlay2 = "spottedextendedfatdrake_markings" - extra_overlay2_w = "spottedextendedfatdrake_markings" + vore_tail_sprite_variant = "Drake" + icon_state = "spottedextended_drake" + extra_overlay = "spottedextended_drake_markings" + extra_overlay_w = "spottedextended_drake_markings" + extra_overlay2 = "spottedextended_drake_markings_2" + extra_overlay2_w = "spottedextended_drake_markings_2" + fullness_icons = 3 + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. + loaf_offset = 5 /datum/sprite_accessory/tail/taur/lizard name = "Lizard (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi' icon_state = "lizard_s" - suit_sprites = 'icons/inventory/suit/taursuits_lizard.dmi' + suit_sprites = 'icons/mob/taursuits_lizard_ch.dmi' icon_sprite_tag = "lizard" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' @@ -88,16 +116,36 @@ vore_tail_sprite_variant = "Lizard" fullness_icons = 1 +/datum/sprite_accessory/tail/taur/lizard/fatlizard + name = "Fat Lizard (Taur)" + icon_state = "fatlizard_s" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' + loaf_offset = 3 + /datum/sprite_accessory/tail/taur/lizard/lizard_wag name = "Lizard (Taur, Fat vwag)" icon_state = "lizard_s" ani_state = "fatlizard_s" -/datum/sprite_accessory/tail/taur/lizard/twocolor +/datum/sprite_accessory/tail/taur/lizard/lizard_2c name = "Lizard dual-color (Taur)" + icon_state = "lizard_s" extra_overlay = "lizard_markings" + //icon_sprite_tag = "lizard2c" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' + loaf_offset = 5 -/datum/sprite_accessory/tail/taur/lizard/twocolor_wag +/datum/sprite_accessory/tail/taur/lizard/fatlizard_2c + name = "Fat Lizard (Taur, dual-color)" + icon_state = "fatlizard_s" + extra_overlay = "fatlizard_markings" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' + loaf_offset = 3 + +/datum/sprite_accessory/tail/taur/lizard/lizard_2c_wag name = "Fat Lizard (Taur, dual-color, Fat vwag)" icon_state = "lizard_s" extra_overlay = "lizard_markings" @@ -106,40 +154,32 @@ /datum/sprite_accessory/tail/taur/lizard/spotty name = "Spotted Lizard (Taur, Tricolor)" - extra_overlay2 = "spottedlizard_markings" - extra_overlay2_w = "spottedlizard_markings" + icon_state = "spottedlizard_s" + extra_overlay = "spottedlizard_markings" + extra_overlay_w = "spottedlizard_markings" + extra_overlay2 = "spottedlizard_markings_2" + extra_overlay2_w = "spottedlizard_markings_2" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. + loaf_offset = 5 -/datum/sprite_accessory/tail/taur/lizard/spotty_wag - name = "Spotted Lizard (Taur, Tricolor, Fat vwag)" - ani_state = "fatlizard_s" - extra_overlay_w = "fatlizard_markings" - extra_overlay2 = "fatspottedlizard_markings" - extra_overlay2_w = "fatspottedlizard_markings" - -/datum/sprite_accessory/tail/taur/lizard/fatlizard - name = "Fat Lizard (Taur)" - icon_state = "fatlizard_s" - icon_sprite_tag = "fatlizard" - loaf_offset = 3 - -/datum/sprite_accessory/tail/taur/lizard/fatlizard/twocolor - name = "Fat Lizard (Taur, dual-color)" - extra_overlay = "fatlizard_markings" - -/datum/sprite_accessory/tail/taur/lizard/fatlizard/spotty +/datum/sprite_accessory/tail/taur/lizard/spotty_fat name = "Fat Spotted Lizard (Taur, Tricolor)" - extra_overlay = "fatlizard_markings" - extra_overlay_w = "fatlizard_markings" - extra_overlay2 = "fatspottedlizard_markings" - extra_overlay2_w = "fatspottedlizard_markings" + icon_state = "fatspottedlizard_s" + extra_overlay = "fatspottedlizard_markings" + extra_overlay_w = "fatspottedlizard_markings" + extra_overlay2 = "fatspottedlizard_markings_2" + extra_overlay2_w = "fatspottedlizard_markings_2" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' //This file needs to be nuked during the removal of 'taurs_ch_loaf.dmi' into the normal loaf file. + loaf_offset = 3 /datum/sprite_accessory/tail/taur/naga name = "Naga (Taur)" - //TODO: MOAR NAGA SUITS icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi' icon_state = "naga_s" - suit_sprites = 'icons/inventory/suit/taursuits_naga.dmi' - icon_sprite_tag = "naga" + suit_sprites = 'icons/mob/taursuits_naga.dmi' + //icon_sprite_tag = "naga" vore_tail_sprite_variant = "Naga" fullness_icons = 1 @@ -174,41 +214,51 @@ name = "Naga (Taur, Fat, dual color)" icon_state = "fatnaga_s" extra_overlay = "fatnaga_markings" - icon_sprite_tag = "fatnaga" + suit_sprites = null -/datum/sprite_accessory/tail/taur/naga/naga_twocolor +/datum/sprite_accessory/tail/taur/naga/naga_2c name = "Naga dual-color (Taur)" + icon_state = "naga_s" extra_overlay = "naga_markings" + //icon_sprite_tag = "naga2c" -//should really be called 'thin naga' /datum/sprite_accessory/tail/taur/naga/alt name = "Naga alt (Taur)" - icon_state = "altnaga_s" + icon_state = "naga_alt_s" vore_tail_sprite_variant = "NagaAlt" - suit_sprites = 'icons/inventory/suit/taursuits_naga_alt.dmi' fullness_icons = 1 - icon_sprite_tag = "altnaga" -/datum/sprite_accessory/tail/taur/naga/alt/twocolor +/datum/sprite_accessory/tail/taur/naga/alt/second + name = "Naga dual-color alt (Taur)" + extra_overlay = "naga_alt_markings" + +/datum/sprite_accessory/tail/taur/naga/alt_2c name = "Naga alt style dual-color (Taur)" + suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT. + icon_state = "altnaga_s" extra_overlay = "altnaga_markings" + //icon_sprite_tag = "altnaga2c" -/datum/sprite_accessory/tail/taur/naga/alt/threecolor +/datum/sprite_accessory/tail/taur/naga/alt_3c name = "Naga alt style tri-color (Taur)" + suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT. + icon_state = "altnaga_s" extra_overlay = "altnaga_markings" extra_overlay2 = "altnaga_stripes" -/datum/sprite_accessory/tail/taur/naga/alt/threecolor_rattler +/datum/sprite_accessory/tail/taur/naga/alt_3c_rattler name = "Naga alt style tri-color, rattler (Taur)" + suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT. + icon_state = "altnaga_s" extra_overlay = "altnaga_markings" extra_overlay2 = "altnaga_rattler" -/datum/sprite_accessory/tail/taur/naga/alt/threecolor_tailmaw +/datum/sprite_accessory/tail/taur/naga/alt_3c_tailmaw name = "Naga alt style tri-color, tailmaw (Taur)" + suit_sprites = 'icons/mob/taursuits_naga.dmi' //TODO: PORT CHOMPS NAGA_ALT AND MAKE THESE NAGA_ALT. icon_state = "altnagatailmaw_s" extra_overlay = "altnagatailmaw_markings" extra_overlay2 = "altnagatailmaw_eyes" - icon_sprite_tag = "altnagatailmaw" /datum/sprite_accessory/tail/taur/noodle name = "Eastern Dragon (Taur)" @@ -216,7 +266,7 @@ icon_state = "noodle_s" extra_overlay = "noodle_markings" extra_overlay2 = "noodle_markings_2" - suit_sprites = 'icons/inventory/suit/taursuits_noodle.dmi' + suit_sprites = 'icons/mob/taursuits_noodle.dmi' clip_mask_state = "taur_clip_mask_noodle" icon_sprite_tag = "noodle" diff --git a/code/modules/mob/new_player/taur/taur_snowflake.dm b/code/modules/mob/new_player/taur/taur_snowflake.dm index 542102bd2c..a199be1101 100644 --- a/code/modules/mob/new_player/taur/taur_snowflake.dm +++ b/code/modules/mob/new_player/taur/taur_snowflake.dm @@ -1,4 +1,16 @@ // Special snowflake tails/taurhalves + +//spoopylizz: Roiz Lizden +/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 64x32 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite. + name = "Long Lizard Tail (Roiz Lizden)" + icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_snowflake.dmi' + icon_state = "roiz_tail_s" + do_colouration = FALSE + ckeys_allowed = list("spoopylizz") + hide_body_parts = null + clip_mask_icon = null + clip_mask_state = null + //grallstonefist: Ranihrönn Skrolk /datum/sprite_accessory/tail/taur/altmermaid/orcamermaid name = "Mermaid Orca (Taur)" @@ -7,7 +19,6 @@ can_ride = TRUE do_colouration = FALSE ckeys_allowed = list("grallstonefist") - tailsock_markings = "orcamermaid_marking" //wickedtemp: Chakat Tempest /datum/sprite_accessory/tail/taur/feline/tempest diff --git a/code/modules/mob/new_player/taur/taur_synth.dm b/code/modules/mob/new_player/taur/taur_synth.dm index 485a1e96ad..dfa1da1ec0 100644 --- a/code/modules/mob/new_player/taur/taur_synth.dm +++ b/code/modules/mob/new_player/taur/taur_synth.dm @@ -3,7 +3,6 @@ icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "sectdrone" extra_overlay = "sectdrone_markings" - icon_sprite_tag = "sectdrone" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' vore_tail_sprite_variant = "SectDrone" @@ -11,7 +10,6 @@ struggle_anim = TRUE loaf_offset = 3 fullness_icons = 3 - clip_mask_state = "taur_clip_mask_sectdrone" msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" @@ -28,21 +26,21 @@ msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" -/datum/sprite_accessory/tail/taur/sectdrone/drone_wag +/datum/sprite_accessory/tail/taur/sect_drone/drone_wag name = "Sect Drone (Taur, Fat vwag)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' - icon_state = "sectdrone" - extra_overlay = "sectdrone_markings" - ani_state = "fatsectdrone" - extra_overlay_w = "fatsectdrone_markings" - icon_sprite_tag = "sectdrone" + icon_state = "sect_drone" + extra_overlay = "sect_drone_markings" + ani_state = "fat_sect_drone" + extra_overlay_w = "fat_sect_drone_markings" + icon_sprite_tag = "sect_drone" -/datum/sprite_accessory/tail/taur/sectdrone/fat +/datum/sprite_accessory/tail/taur/sect_drone/fat name = "Fat Sect Drone (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' - icon_state = "fatsectdrone" - extra_overlay = "fatsectdrone_markings" - icon_sprite_tag = "sectdrone" + icon_state = "fat_sect_drone" + extra_overlay = "fat_sect_drone_markings" + icon_sprite_tag = "sect_drone" /datum/sprite_accessory/tail/taur/horse/synthhorse name = "SynthHorse dual-color (Taur)" @@ -50,7 +48,7 @@ icon_state = "synthhorse_s" extra_overlay = "synthhorse_markings" extra_overlay2 = "synthhorse_glow" - icon_sprite_tag = "synthhorse" + //icon_sprite_tag = "synthhorse" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 3 @@ -61,7 +59,7 @@ icon_state = "synthfeline_s" extra_overlay = "synthfeline_markings" extra_overlay2 = "synthfeline_glow" - icon_sprite_tag = "synthfeline" + //icon_sprite_tag = "synthfeline" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 3 @@ -72,7 +70,6 @@ icon_state = "fatsynthfeline_s" extra_overlay = "fatsynthfeline_markings" extra_overlay2 = "fatsynthfeline_glow" - icon_sprite_tag = "fatsynthfeline" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 3 @@ -81,7 +78,6 @@ name = "SynthFeline dual-color (Taur, Fat vwag)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthfeline_s" - icon_sprite_tag = "synthfeline" extra_overlay = "synthfeline_markings" extra_overlay2 = "synthfeline_glow" ani_state = "fatsynthfeline_s" @@ -92,7 +88,6 @@ name = "Synthetic chassis - agile (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthtaur1_s" - icon_sprite_tag = "synthtaur1" extra_overlay = "synthtaur1_markings" extra_overlay2 = "synthtaur1_glow" clip_mask_state = "taur_clip_mask_synthtaur1" @@ -100,8 +95,7 @@ /datum/sprite_accessory/tail/taur/synthetic/syntheticagi_fat name = "Synthetic chassis - agile (Taur, Fat)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' - icon_state = "synthtaur1_fat_s" - icon_sprite_tag = "synthtaur1_fat" + icon_state = "synthtaur1_s" extra_overlay = "synthtaur1_fat_markings" extra_overlay2 = "synthtaur1_glow" clip_mask_state = "taur_clip_mask_synthtaur1" @@ -110,10 +104,9 @@ name = "Synthetic chassis - agile (Taur, Fat vwag)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthtaur1_s" - icon_sprite_tag = "synthtaur1" extra_overlay = "synthtaur1_markings" extra_overlay2 = "synthtaur1_glow" - ani_state = "synthtaur1_fat_s" + ani_state = "synthtaur1_s" extra_overlay_w = "synthtaur1_fat_markings" extra_overlay2_w = "synthtaur1_glow" clip_mask_state = "taur_clip_mask_synthtaur1" @@ -122,9 +115,9 @@ name = "SynthLizard dual-color (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthlizard_s" - icon_sprite_tag = "synthlizard" extra_overlay = "synthlizard_markings" extra_overlay2 = "synthlizard_glow" + //icon_sprite_tag = "synthlizard" can_loaf = TRUE icon_loaf = 'icons/mob/vore/taurs_loaf.dmi' loaf_offset = 3 @@ -135,7 +128,6 @@ name = "Fat SynthLizard dual-color (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "fatsynthlizard_s" - icon_sprite_tag = "fatsynthlizard" extra_overlay = "fatsynthlizard_markings" extra_overlay2 = "fatsynthlizard_glow" can_loaf = TRUE @@ -146,7 +138,6 @@ name = "SynthLizard dual-color (Taur, Fat vwag)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthlizard_s" - icon_sprite_tag = "fatsynthlizard" extra_overlay = "synthlizard_markings" extra_overlay2 = "synthlizard_glow" ani_state = "fatsynthlizard_s" @@ -157,7 +148,6 @@ name = "Synthetic Naga dual-color (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthnaga" - icon_sprite_tag = "synthnaga" extra_overlay = "synthnaga_belly" /datum/sprite_accessory/tail/taur/longvirus @@ -165,22 +155,21 @@ icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "longvirus_s" extra_overlay = "longvirus_markings" - icon_sprite_tag = "longvirus" + icon_sprite_tag = "virus" /datum/sprite_accessory/tail/taur/wolf/synthwolf name = "SynthWolf dual-color (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "synthwolf_s" - icon_sprite_tag = "synthwolf" extra_overlay = "synthwolf_markings" extra_overlay2 = "synthwolf_glow" + //icon_sprite_tag = "synthwolf" loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/fatsynthwolf name = "Fat SynthWolf dual-color (Taur)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' icon_state = "fatsynthwolf_s" - icon_sprite_tag = "fatsynthwolf" extra_overlay = "fatsynthwolf_markings" extra_overlay2 = "fatsynthwolf_glow" loaf_offset = 3 @@ -188,7 +177,6 @@ /datum/sprite_accessory/tail/taur/wolf/fatsynthwolf_wag name = "SynthWolf dual-color (Taur, Fat vwag)" icon = 'icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi' - icon_sprite_tag = "synthwolf" icon_state = "synthwolf_s" extra_overlay = "synthwolf_markings" extra_overlay2 = "synthwolf_glow" diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index b788d30f21..9c87cd036a 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1145,7 +1145,7 @@ Departamental Swimsuits, for general use /obj/item/clothing/suit/storage/hooded/wintercoat/jessie name = "Handmade Winter Suit" desc = "A durable, but somewhat ragged lower portion of a snow suit fitted for a wolftaur." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "jessiecoat" /obj/item/clothing/suit/storage/hooded/wintercoat/jessie/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE) @@ -1161,7 +1161,7 @@ Departamental Swimsuits, for general use name = "Kat's Fox Taur Armor" desc = "A set of security armor, light weight and easy to run in for a Taur, this item protects the \ entire body." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "katesuit" item_state_slots = null @@ -1179,7 +1179,7 @@ Departamental Swimsuits, for general use desc = "Taur engineering voidsuit. Recolored navy blue and white. Slightly tweaked as well to \ get close to having security voidsuit protection as possible with a slight reduction in movement \ speed to compensate for custom padding and armor Kateryna made herself." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "lilithsuit" species_restricted = null armor = list(melee = 40, bullet = 20, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20) @@ -1532,7 +1532,7 @@ Departamental Swimsuits, for general use armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) desc = "A series of armor plates painted black, deployed from a back-mounted module. They fit smoothly over the unit's armor plates and projects a skintight bubble shield over the unit's uncovered parts. Faceplate and coolant unit not included." species_restricted = null - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_lizard.dmi' icon_state = "hasd_suit" pixel_x = -16 diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 8a2ec96e3f..0ac24569a3 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -455,7 +455,7 @@ name = "custom security cuirass" desc = "An armored vest that protects against some damage. It appears to be created for a wolfhound. The name 'Serdykov L. Antoz' is written on a tag inside one of the haunchplates." species_restricted = null //Species restricted since all it cares about is a taur half - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "serdy_armor" item_state = "serdy_armor" body_parts_covered = CHEST|LEGS|ARMS //It's a full body suit, minus hands and feet. Arms and legs should be protected, not just the torso. Retains normal security armor values still. diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index a3a8320552..48df8ecf52 100644 Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ diff --git a/icons/inventory/suit/item_teshari.dmi b/icons/inventory/suit/item_teshari.dmi index 87649e0b25..5af0e7e500 100644 Binary files a/icons/inventory/suit/item_teshari.dmi and b/icons/inventory/suit/item_teshari.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi index 673a3de674..1b6a246d07 100644 Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/inventory/suit/mob_digi.dmi b/icons/inventory/suit/mob_digi.dmi index 23944186f9..a1d021cec2 100644 Binary files a/icons/inventory/suit/mob_digi.dmi and b/icons/inventory/suit/mob_digi.dmi differ diff --git a/icons/inventory/suit/mob_unused.dmi b/icons/inventory/suit/mob_unused.dmi deleted file mode 100644 index ddb1fcfe50..0000000000 Binary files a/icons/inventory/suit/mob_unused.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_bnytr.dmi b/icons/inventory/suit/taursuits_bnytr.dmi deleted file mode 100644 index 73fe439b1a..0000000000 Binary files a/icons/inventory/suit/taursuits_bnytr.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_cow.dmi b/icons/inventory/suit/taursuits_cow.dmi deleted file mode 100644 index 07d262ef7d..0000000000 Binary files a/icons/inventory/suit/taursuits_cow.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_deer.dmi b/icons/inventory/suit/taursuits_deer.dmi deleted file mode 100644 index e9cdfe16b0..0000000000 Binary files a/icons/inventory/suit/taursuits_deer.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_drake.dmi b/icons/inventory/suit/taursuits_drake.dmi deleted file mode 100644 index 2a2992e32f..0000000000 Binary files a/icons/inventory/suit/taursuits_drake.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_feline.dmi b/icons/inventory/suit/taursuits_feline.dmi deleted file mode 100644 index fdf4cfc0af..0000000000 Binary files a/icons/inventory/suit/taursuits_feline.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_fox.dmi b/icons/inventory/suit/taursuits_fox.dmi deleted file mode 100644 index 1e1224f659..0000000000 Binary files a/icons/inventory/suit/taursuits_fox.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_horse.dmi b/icons/inventory/suit/taursuits_horse.dmi deleted file mode 100644 index b16800432f..0000000000 Binary files a/icons/inventory/suit/taursuits_horse.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_husky.dmi b/icons/inventory/suit/taursuits_husky.dmi deleted file mode 100644 index fca67b55bd..0000000000 Binary files a/icons/inventory/suit/taursuits_husky.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_lizard.dmi b/icons/inventory/suit/taursuits_lizard.dmi deleted file mode 100644 index 1544bf3dd8..0000000000 Binary files a/icons/inventory/suit/taursuits_lizard.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_noodle.dmi b/icons/inventory/suit/taursuits_noodle.dmi deleted file mode 100644 index b7ac494bda..0000000000 Binary files a/icons/inventory/suit/taursuits_noodle.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_otie.dmi b/icons/inventory/suit/taursuits_otie.dmi deleted file mode 100644 index 370395430a..0000000000 Binary files a/icons/inventory/suit/taursuits_otie.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_rat.dmi b/icons/inventory/suit/taursuits_rat.dmi deleted file mode 100644 index bf2090837c..0000000000 Binary files a/icons/inventory/suit/taursuits_rat.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_redpanda.dmi b/icons/inventory/suit/taursuits_redpanda.dmi deleted file mode 100644 index 28ac362576..0000000000 Binary files a/icons/inventory/suit/taursuits_redpanda.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_scoli.dmi b/icons/inventory/suit/taursuits_scoli.dmi deleted file mode 100644 index e26c41d43a..0000000000 Binary files a/icons/inventory/suit/taursuits_scoli.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_sergal.dmi b/icons/inventory/suit/taursuits_sergal.dmi deleted file mode 100644 index 6c1ed3615e..0000000000 Binary files a/icons/inventory/suit/taursuits_sergal.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_skunk.dmi b/icons/inventory/suit/taursuits_skunk.dmi deleted file mode 100644 index d377e70042..0000000000 Binary files a/icons/inventory/suit/taursuits_skunk.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_sloog.dmi b/icons/inventory/suit/taursuits_sloog.dmi deleted file mode 100644 index 18cbfd7c96..0000000000 Binary files a/icons/inventory/suit/taursuits_sloog.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_snowflake.dmi b/icons/inventory/suit/taursuits_snowflake.dmi deleted file mode 100644 index e11bf84c91..0000000000 Binary files a/icons/inventory/suit/taursuits_snowflake.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_wolf.dmi b/icons/inventory/suit/taursuits_wolf.dmi deleted file mode 100644 index 53af8a6269..0000000000 Binary files a/icons/inventory/suit/taursuits_wolf.dmi and /dev/null differ diff --git a/icons/inventory/suit/taursuits_zorgoia.dmi b/icons/inventory/suit/taursuits_zorgoia.dmi deleted file mode 100644 index b106828426..0000000000 Binary files a/icons/inventory/suit/taursuits_zorgoia.dmi and /dev/null differ diff --git a/icons/mob/human_races/sprite_accessories/README.md b/icons/mob/human_races/sprite_accessories/README.md deleted file mode 100644 index 7ef1676671..0000000000 --- a/icons/mob/human_races/sprite_accessories/README.md +++ /dev/null @@ -1,9 +0,0 @@ -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! diff --git a/icons/mob/human_races/sprite_accessories/tails/not_tail_legs.dmi b/icons/mob/human_races/sprite_accessories/tails/not_tail_legs.dmi index c1c6d6b553..1704b042a4 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/not_tail_legs.dmi and b/icons/mob/human_races/sprite_accessories/tails/not_tail_legs.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi index 132658bd24..cc63d30fd1 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_animal.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_bug.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_bug.dmi index c8231f323d..b18ee1fd4f 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_bug.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_bug.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi index 1e883904b4..7d981ea65a 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_exotic.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_long.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_long.dmi index bae0a20272..26bea3e70e 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_long.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_long.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi index f32d978962..f066c8a074 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_reptile.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_snowflake.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_snowflake.dmi index 75572a1c9e..3363d8cd62 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_snowflake.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_snowflake.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_synth.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_synth.dmi index e83c082641..045946929e 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_synth.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_synth.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/tails/tails_teshari.dmi b/icons/mob/human_races/sprite_accessories/tails/tails_teshari.dmi index 7a0130ce09..78fff08600 100644 Binary files a/icons/mob/human_races/sprite_accessories/tails/tails_teshari.dmi and b/icons/mob/human_races/sprite_accessories/tails/tails_teshari.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taur_socks.dmi b/icons/mob/human_races/sprite_accessories/taurs/taur_socks.dmi deleted file mode 100644 index ebed58cf8a..0000000000 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taur_socks.dmi and /dev/null differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi b/icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi index 15684c57d4..a8db3ca9a1 100644 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi and b/icons/mob/human_races/sprite_accessories/taurs/taurs_animal.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi b/icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi index 2a98d3587b..c15c56e959 100644 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi and b/icons/mob/human_races/sprite_accessories/taurs/taurs_exotic.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi b/icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi index 0cb79956fa..88b0b3765d 100644 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi and b/icons/mob/human_races/sprite_accessories/taurs/taurs_reptile.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taurs_snowflake.dmi b/icons/mob/human_races/sprite_accessories/taurs/taurs_snowflake.dmi index 66b19b20c5..217d92ff74 100644 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taurs_snowflake.dmi and b/icons/mob/human_races/sprite_accessories/taurs/taurs_snowflake.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi b/icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi index 90e2e22872..8824df3d33 100644 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi and b/icons/mob/human_races/sprite_accessories/taurs/taurs_synth.dmi differ diff --git a/icons/mob/human_races/sprite_accessories/taurs/taurs_teshari.dmi b/icons/mob/human_races/sprite_accessories/taurs/taurs_teshari.dmi index 99c95581a5..49d1a5ded0 100644 Binary files a/icons/mob/human_races/sprite_accessories/taurs/taurs_teshari.dmi and b/icons/mob/human_races/sprite_accessories/taurs/taurs_teshari.dmi differ diff --git a/icons/mob/taursuits_cow.dmi b/icons/mob/taursuits_cow.dmi new file mode 100644 index 0000000000..5ca5ebda39 Binary files /dev/null and b/icons/mob/taursuits_cow.dmi differ diff --git a/icons/mob/taursuits_deer.dmi b/icons/mob/taursuits_deer.dmi new file mode 100644 index 0000000000..6c53a6f4d0 Binary files /dev/null and b/icons/mob/taursuits_deer.dmi differ diff --git a/icons/mob/taursuits_drake.dmi b/icons/mob/taursuits_drake.dmi new file mode 100644 index 0000000000..ca0db57532 Binary files /dev/null and b/icons/mob/taursuits_drake.dmi differ diff --git a/icons/mob/taursuits_drake_ch.dmi b/icons/mob/taursuits_drake_ch.dmi new file mode 100644 index 0000000000..e427140571 Binary files /dev/null and b/icons/mob/taursuits_drake_ch.dmi differ diff --git a/icons/mob/taursuits_horse.dmi b/icons/mob/taursuits_horse.dmi new file mode 100644 index 0000000000..95b613d426 Binary files /dev/null and b/icons/mob/taursuits_horse.dmi differ diff --git a/icons/mob/taursuits_lizard.dmi b/icons/mob/taursuits_lizard.dmi new file mode 100644 index 0000000000..a6b9858f17 Binary files /dev/null and b/icons/mob/taursuits_lizard.dmi differ diff --git a/icons/mob/taursuits_lizard_ch.dmi b/icons/mob/taursuits_lizard_ch.dmi new file mode 100644 index 0000000000..f4385ef113 Binary files /dev/null and b/icons/mob/taursuits_lizard_ch.dmi differ diff --git a/icons/inventory/suit/taursuits_naga.dmi b/icons/mob/taursuits_naga.dmi similarity index 100% rename from icons/inventory/suit/taursuits_naga.dmi rename to icons/mob/taursuits_naga.dmi diff --git a/icons/inventory/suit/taursuits_naga_alt.dmi b/icons/mob/taursuits_naga_alt.dmi similarity index 100% rename from icons/inventory/suit/taursuits_naga_alt.dmi rename to icons/mob/taursuits_naga_alt.dmi diff --git a/icons/mob/taursuits_noodle.dmi b/icons/mob/taursuits_noodle.dmi new file mode 100644 index 0000000000..0917630a46 Binary files /dev/null and b/icons/mob/taursuits_noodle.dmi differ diff --git a/icons/mob/taursuits_otie.dmi b/icons/mob/taursuits_otie.dmi new file mode 100644 index 0000000000..06e083854e Binary files /dev/null and b/icons/mob/taursuits_otie.dmi differ diff --git a/icons/inventory/suit/taursuits_spider.dmi b/icons/mob/taursuits_spider.dmi similarity index 100% rename from icons/inventory/suit/taursuits_spider.dmi rename to icons/mob/taursuits_spider.dmi diff --git a/icons/mob/taursuits_wolf.dmi b/icons/mob/taursuits_wolf.dmi new file mode 100644 index 0000000000..68495a9e4b Binary files /dev/null and b/icons/mob/taursuits_wolf.dmi differ diff --git a/icons/rogue-star/tails_64x32_rs.dmi b/icons/rogue-star/tails_64x32_rs.dmi index 059f175816..5c6745f95e 100644 Binary files a/icons/rogue-star/tails_64x32_rs.dmi and b/icons/rogue-star/tails_64x32_rs.dmi differ diff --git a/modular_chomp/icons/mob/vore/Bellies.dmi b/modular_chomp/icons/mob/vore/Bellies.dmi new file mode 100644 index 0000000000..67450d7eeb Binary files /dev/null and b/modular_chomp/icons/mob/vore/Bellies.dmi differ diff --git a/tools/TaurClothingCutter/CoatCutter.dmi b/tools/TaurClothingCutter/CoatCutter.dmi deleted file mode 100644 index 734d47a6b6..0000000000 Binary files a/tools/TaurClothingCutter/CoatCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/DressCutter.dmi b/tools/TaurClothingCutter/DressCutter.dmi deleted file mode 100644 index fa04927e4a..0000000000 Binary files a/tools/TaurClothingCutter/DressCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/LongCoatCutter.dmi b/tools/TaurClothingCutter/LongCoatCutter.dmi deleted file mode 100644 index 773cf09b4f..0000000000 Binary files a/tools/TaurClothingCutter/LongCoatCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/LongDressCutter.dmi b/tools/TaurClothingCutter/LongDressCutter.dmi deleted file mode 100644 index 7ce329f269..0000000000 Binary files a/tools/TaurClothingCutter/LongDressCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/LongSuitCutter.dmi b/tools/TaurClothingCutter/LongSuitCutter.dmi deleted file mode 100644 index 3dbf59763c..0000000000 Binary files a/tools/TaurClothingCutter/LongSuitCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/SingleCutter.dmi b/tools/TaurClothingCutter/SingleCutter.dmi deleted file mode 100644 index 8bf7796da6..0000000000 Binary files a/tools/TaurClothingCutter/SingleCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/SuitCutter.dmi b/tools/TaurClothingCutter/SuitCutter.dmi deleted file mode 100644 index 5b4b476701..0000000000 Binary files a/tools/TaurClothingCutter/SuitCutter.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/Taur Templates/LongCutTemplate.png b/tools/TaurClothingCutter/Taur Templates/LongCutTemplate.png deleted file mode 100644 index 0ff4e7851c..0000000000 Binary files a/tools/TaurClothingCutter/Taur Templates/LongCutTemplate.png and /dev/null differ diff --git a/tools/TaurClothingCutter/Taur Templates/ShortCutTemplate.png b/tools/TaurClothingCutter/Taur Templates/ShortCutTemplate.png deleted file mode 100644 index bfb131ca6a..0000000000 Binary files a/tools/TaurClothingCutter/Taur Templates/ShortCutTemplate.png and /dev/null differ diff --git a/tools/TaurClothingCutter/Taur Templates/taur_coats_template.dmi b/tools/TaurClothingCutter/Taur Templates/taur_coats_template.dmi deleted file mode 100644 index 79b72e630a..0000000000 Binary files a/tools/TaurClothingCutter/Taur Templates/taur_coats_template.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/Taur Templates/taur_dresses_template.dmi b/tools/TaurClothingCutter/Taur Templates/taur_dresses_template.dmi deleted file mode 100644 index 2ffaa024d7..0000000000 Binary files a/tools/TaurClothingCutter/Taur Templates/taur_dresses_template.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/Taur Templates/taur_fullsuit_template.dmi b/tools/TaurClothingCutter/Taur Templates/taur_fullsuit_template.dmi deleted file mode 100644 index 94a1bc0a41..0000000000 Binary files a/tools/TaurClothingCutter/Taur Templates/taur_fullsuit_template.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/TaurClothing.md b/tools/TaurClothingCutter/TaurClothing.md deleted file mode 100644 index aaad0f8341..0000000000 --- a/tools/TaurClothingCutter/TaurClothing.md +++ /dev/null @@ -1,35 +0,0 @@ -This small Byond program takes all the icons in SpritesToSnip.dmi, -cuts them using all the icons in Taur_Cutter.dmi, and produces a file save -dialog for you to download the resulting DMI. - -Useful for cutting up species sprites from full body ones. Or whatever else. - ---Arokha/Aronai - - --- Hijacked by Poojawa to facilitate easier sprite porting -> tauric sprites. - -Taur suits have been divided into three different categories: Coats, Dresses, and fullsuits. These are found in suitstocovert folders. Please adhere to the general sorting that's been done already when adding new clothing. - -Standard folder contains the sprites compatible with Wolf, Fox, Horse, Cow, Deer, Lizard, Skunk, Red Panda (Wah), Sergal, and Feline bodies. For Otie, 'Goia, Noodle, Drake, and Rat bodies, these body types require the 'Long' sprite variants that look absolutely fucking awful if further stretched in the base sprites. If you're doing Otie specific, you'll want to copy/paste the north facing version from your short body sprites onto the long body one. Otie's north facing isn't as tall as rat or noodle's are, so that'll be a thing. - -Currently the only body types the sprites are really designed for are ones based off of the Canine, Feline, and to some extent lizard bodies. The fat versions of sprites have a special sock overlay and don't need to be custom edited unless the legs themselves are changed. All other sprites theoretically can be used, but will take significant work to bueautify them. See more with the unsuitable note below - -There's taur templates of each type too found in the Taur Templates folder, Most of them have a large purple mask applied for special exceptions of suits that 'spill over' the human sprite (Imperium Monk robe, Wedding gown, etc), Everything inside of this mask and the sprite itself will be used to 'snip out' the needed pixels, so keep that in mind! Copy and paste each species template sprites into their respective Cutter.dmi. Only one at a time! Each of CoatCutter, DressCutter, SuitCutter should have the one species inside of it, so Wolf, Wolf, Wolf. Etc. - -Also included in this folder are two png templates for your preferred sprite editing software. Save time by seeing exactly where the stray pixels are in each body! This saves SO MUCH TIME. - -In Dreammaker -> Build -> Compile and Run -> Cut . The default for Cut Suits is taursuit_.dmi so you can save your species in as taursuit_[species] and go. Cut Dresses and Cut Coats will save into their own files. Long Cut is the same, it just uses the long subfolder instead of the standard one. - -Once all three are done, please ensure to combine them all into your species specific dmi, Preferrably Suits + Coats + Dresses for consistency in sorting. Remember to close the client when you're done! You won't be able to recompile the cutter in dream maker otherwise. That's the solution to 'x.dmi cannot be found' errors. Bedsheet.dmi is seperate because it's so goofy oversized that it works as a one-size fits all, so just copy that in after you paste the dresses in. - -If the species is in taursuits_unsuitable.dmi then they won't get the benefits of these suit cutters. That'll take changing in their sprite_accessories_taur.dm listing. It's an all-or-nothing type overhaul, so you'll need every listed suit in that species' suit file. Yes I'm aware of how daunting it is. Fortunately the "sock" template for them can be used to get a reasonable head start, but you'll still be suffering from a lot of work to fix each non standard body. Each Taur body is a little over 400 seperate suit icons, with 4 states each totalling around 1,600 suit icons each, multiplied by however many animation frames in the icon as well (The nasa suit is 16 total, the comic coat is 48 !!). Of course, a fourth of those are just flipped East/West facing, so you're *only* having do deal with ~1,200 of 'em! - -In addition to this, tails are given socks as well, so you don't need to model them, just make sure the tail's added! It will overlay over the suit icon if applicable, for space suits and the like. - -Cut Taurs is if you're just doing a limited run of one suit type icon, you can throw all the relevant species into the relevant cutter, the resulting file will contain all tauric versions of your clothing item after cutout. Avoid doing this with the major ones. You will never be able to sort them out with any sanity! - -If You're porting a new taur entirely: -Be sure to add pixel padding, the assembled human sprite has some. The purple outline is the padding. This accounts for stuff like armor vests or heavier coats/suits. You'll want enough clothing pixels to work with to follow up and edit! - -It would be helpful if you 'build' a four directional template sprite for use as an overlay for alignment as well, just export a template as a png! Some taur bodies have weird spine positions, or legs that stick out a bit too much, etc. It is what it is. \ No newline at end of file diff --git a/tools/TaurClothingCutter/TaurClothingCutter.dm b/tools/TaurClothingCutter/TaurClothingCutter.dm deleted file mode 100644 index e5c67a790b..0000000000 --- a/tools/TaurClothingCutter/TaurClothingCutter.dm +++ /dev/null @@ -1,289 +0,0 @@ -/* - These are simple defaults for your project. - */ - -world - fps = 25 // 25 frames per second - icon_size = 32 // 32x32 icon size by default - - view = 6 // show up to 6 tiles outward from center (13x13 view) - - -// Make objects move 8 pixels per tick when walking -//usr << ftp(usr.working,"[usr.outfile].dmi") -mob - step_size = 8 - -obj - step_size = 8 - - -/client/verb/suit_split() - set name = "Cut Suits" - set desc = "Loads fullsuits.dmi and cuts them with SuitCutter.dmi" - set category = "Cut Standard" - - //Our clothes - var/icon/SuitsToSnip = icon('suitstocovert/standard/fullsuits.dmi') - - //Our Species specific cutter icons - var/icon/SuitCutter = icon('SuitCutter.dmi') - - //For each original project, batch it! - for(var/CutterState in icon_states(SuitCutter)) - var/icon/RunningOutput = new () - for(var/SuitState in icon_states(SuitsToSnip)) - //Our default to cut out from's state - var/icon/Original = icon(SuitsToSnip,SuitState) - //Our cookie cutter form - var/icon/Cutter = icon(SuitCutter,CutterState) - - //We have to make these all black to cut with - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - - //Blend with AND to cut - Original.Blend(Cutter,ICON_AND) //AND, not ADD - - //Make a useful name, ideally we want to keep the same name to avoid headaches later. - var/good_name = "[SuitState]" - - //Add to the output with the good name - RunningOutput.Insert(Original,good_name) - //Give the output. dmis get overwritten when exported to. So break up your saves in sequence and then import them all into the main file. - usr << ftp(RunningOutput,"taursuits_[CutterState].dmi") - -// Lazy duplicate verbs to cut down on micro requirements. Just copy/paste the species into each cutter file, all wolf, all fox, etc. -/client/verb/coat_split() - set name = "Cut Coats" - set desc = "Loads coats.dmi and cuts them with CoatCutter.dmi" - set category = "Cut Standard" - - var/icon/CoatsToSnip = icon('suitstocovert/standard/coats.dmi') - var/icon/CoatCutter = icon('CoatCutter.dmi') - - for(var/CutterState in icon_states(CoatCutter)) - var/icon/RunningOutput = new () - for(var/CoatState in icon_states(CoatsToSnip)) - var/icon/Original = icon(CoatsToSnip,CoatState) - var/icon/Cutter = icon(CoatCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[CoatState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_coats.dmi") - -/client/verb/dress_split() - set name = "Cut Dresses" - set desc = "Loads dresses.dmi and cuts them with DressCutter.dmi" - set category = "Cut Standard" - - var/icon/DressesToSnip = icon('suitstocovert/standard/dresses.dmi') - var/icon/DressCutter = icon('DressCutter.dmi') - - for(var/CutterState in icon_states(DressCutter)) - var/icon/RunningOutput = new () - for(var/DressState in icon_states(DressesToSnip)) - var/icon/Original = icon(DressesToSnip,DressState) - var/icon/Cutter = icon(DressCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[DressState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_dresses.dmi") - -/client/verb/lsuit_split() - set name = "Long Cut Suits" - set desc = "Loads long fullsuit.dmi and cuts them with SuitCutter.dmi" - set category = "Long Cut" - - var/icon/SuitsToSnip = icon('suitstocovert/long/fullsuits.dmi') - var/icon/SuitCutter = icon('LongSuitCutter.dmi') - - for(var/CutterState in icon_states(SuitCutter)) - var/icon/RunningOutput = new () - for(var/SuitState in icon_states(SuitsToSnip)) - var/icon/Original = icon(SuitsToSnip,SuitState) - var/icon/Cutter = icon(SuitCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[SuitState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"taursuits_[CutterState].dmi") - -/client/verb/lcoat_split() - set name = "Long Cut Coats" - set desc = "Loads long coats.dmi and cuts them with CoatCutter.dmi" - set category = "Long Cut" - - var/icon/CoatsToSnip = icon('suitstocovert/long/coats.dmi') - var/icon/CoatCutter = icon('LongCoatCutter.dmi') - - for(var/CutterState in icon_states(CoatCutter)) - var/icon/RunningOutput = new () - for(var/CoatState in icon_states(CoatsToSnip)) - var/icon/Original = icon(CoatsToSnip,CoatState) - var/icon/Cutter = icon(CoatCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[CoatState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_coats.dmi") - -/client/verb/ldress_split() - set name = "Long Cut Dresses" - set desc = "Loads long dresses.dmi and cuts them with DressCutter.dmi" - set category = "Long Cut" - - var/icon/DressesToSnip = icon('suitstocovert/long/dresses.dmi') - var/icon/DressCutter = icon('LongDressCutter.dmi') - - for(var/CutterState in icon_states(DressCutter)) - var/icon/RunningOutput = new () - for(var/DressState in icon_states(DressesToSnip)) - var/icon/Original = icon(DressesToSnip,DressState) - var/icon/Cutter = icon(DressCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[DressState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_dresses.dmi") - -//Single Split -/client/verb/single_outfit_split() - set name = "Cut Single Outfit" - set desc = "Loads singleoutfit.dmi and cuts them with SingleCutter.dmi" - set category = "Cut Single" - - var/icon/SuitsToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/SingleCutter = icon('SingleCutter.dmi') - - for(var/CutterState in icon_states(SingleCutter)) - var/icon/RunningOutput = new () - for(var/SuitState in icon_states(SuitsToSnip)) - var/icon/Original = icon(SuitsToSnip,SuitState) - var/icon/Cutter = icon(SingleCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[SuitState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_outfit.dmi") - -//Single Suit - -/client/verb/single_suit_split() - set name = "Cut Single Suit" - set desc = "Loads singleoutfit.dmi and cuts them with SuitCutter.dmi" - set category = "Cut Single" - - var/icon/SuitsToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/SuitCutter = icon('SuitCutter.dmi') - - for(var/CutterState in icon_states(SuitCutter)) - var/icon/RunningOutput = new () - for(var/SuitState in icon_states(SuitsToSnip)) - var/icon/Original = icon(SuitsToSnip,SuitState) - var/icon/Cutter = icon(SuitCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[SuitState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_suit.dmi") - -/client/verb/lsingle_suit_split() - set name = "Cut Single Long Suit" - set desc = "Loads singleoutfit.dmi and cuts them with LongSuitCutter.dmi" - set category = "Cut Single" - - var/icon/SuitsToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/SuitCutter = icon('LongSuitCutter.dmi') - - for(var/CutterState in icon_states(SuitCutter)) - var/icon/RunningOutput = new () - for(var/SuitState in icon_states(SuitsToSnip)) - var/icon/Original = icon(SuitsToSnip,SuitState) - var/icon/Cutter = icon(SuitCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[SuitState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_suit.dmi") - -//Single Coat - -/client/verb/single_coat_split() - set name = "Cut Single Coat" - set desc = "Loads singleoutfit.dmi and cuts them with CoatCutter.dmi" - set category = "Cut Single" - - var/icon/CoatsToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/CoatCutter = icon('CoatCutter.dmi') - - for(var/CutterState in icon_states(CoatCutter)) - var/icon/RunningOutput = new () - for(var/CoatState in icon_states(CoatsToSnip)) - var/icon/Original = icon(CoatsToSnip,CoatState) - var/icon/Cutter = icon(CoatCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[CoatState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_coat.dmi") - -/client/verb/lsingle_coat_split() - set name = "Cut Single Long Coat" - set desc = "Loads singleoutfit.dmi and cuts them with LongCoatCutter.dmi" - set category = "Cut Single" - - var/icon/CoatsToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/CoatCutter = icon('LongCoatCutter.dmi') - - for(var/CutterState in icon_states(CoatCutter)) - var/icon/RunningOutput = new () - for(var/CoatState in icon_states(CoatsToSnip)) - var/icon/Original = icon(CoatsToSnip,CoatState) - var/icon/Cutter = icon(CoatCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[CoatState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_coat.dmi") - -//Single Dress - -/client/verb/single_dress_split() - set name = "Cut Single Dress" - set desc = "Loads singleoutfit.dmi and cuts them with DressCutter.dmi" - set category = "Cut Single" - - var/icon/DressToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/DressCutter = icon('DressCutter.dmi') - - for(var/CutterState in icon_states(DressCutter)) - var/icon/RunningOutput = new () - for(var/DressState in icon_states(DressToSnip)) - var/icon/Original = icon(DressToSnip,DressState) - var/icon/Cutter = icon(DressCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[DressState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_dress.dmi") - -/client/verb/lsingle_dress_split() - set name = "Cut Single Long Dress" - set desc = "Loads singleoutfit.dmi and cuts them with LongDressCutter.dmi" - set category = "Cut Single" - - var/icon/DressToSnip = icon('suitstocovert/singleoutfit.dmi') - var/icon/DressCutter = icon('LongDressCutter.dmi') - - for(var/CutterState in icon_states(DressCutter)) - var/icon/RunningOutput = new () - for(var/DressState in icon_states(DressToSnip)) - var/icon/Original = icon(DressToSnip,DressState) - var/icon/Cutter = icon(DressCutter,CutterState) - Cutter.Blend(rgb(0,0,0),ICON_MULTIPLY) - Original.Blend(Cutter,ICON_AND) - var/good_name = "[DressState]" - RunningOutput.Insert(Original,good_name) - usr << ftp(RunningOutput,"[CutterState]_dress.dmi") diff --git a/tools/TaurClothingCutter/TaurClothingCutter.dme b/tools/TaurClothingCutter/TaurClothingCutter.dme deleted file mode 100644 index 2581677912..0000000000 --- a/tools/TaurClothingCutter/TaurClothingCutter.dme +++ /dev/null @@ -1,18 +0,0 @@ -// DM Environment file for TaurClothingCutter.dme. -// All manual changes should be made outside the BEGIN_ and END_ blocks. -// New source code should be placed in .dm files: choose File/New --> Code File. - -// BEGIN_INTERNALS -// END_INTERNALS - -// BEGIN_FILE_DIR -#define FILE_DIR . -// END_FILE_DIR - -// BEGIN_PREFERENCES -// END_PREFERENCES - -// BEGIN_INCLUDE -#include "TaurClothingCutter.dm" -// END_INCLUDE - diff --git a/tools/TaurClothingCutter/suitstocovert/long/bedsheet.dmi b/tools/TaurClothingCutter/suitstocovert/long/bedsheet.dmi deleted file mode 100644 index cdf3144c35..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/long/bedsheet.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/long/coats.dmi b/tools/TaurClothingCutter/suitstocovert/long/coats.dmi deleted file mode 100644 index 292b3a0c4b..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/long/coats.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/long/dresses.dmi b/tools/TaurClothingCutter/suitstocovert/long/dresses.dmi deleted file mode 100644 index c9a45e0103..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/long/dresses.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/long/fullsuits.dmi b/tools/TaurClothingCutter/suitstocovert/long/fullsuits.dmi deleted file mode 100644 index db27ff0558..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/long/fullsuits.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/singleoutfit.dmi b/tools/TaurClothingCutter/suitstocovert/singleoutfit.dmi deleted file mode 100644 index f126381c8b..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/singleoutfit.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/standard/bedsheet.dmi b/tools/TaurClothingCutter/suitstocovert/standard/bedsheet.dmi deleted file mode 100644 index 9fbf4a7ad7..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/standard/bedsheet.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/standard/coats.dmi b/tools/TaurClothingCutter/suitstocovert/standard/coats.dmi deleted file mode 100644 index 5f6c3d8335..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/standard/coats.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/standard/dresses.dmi b/tools/TaurClothingCutter/suitstocovert/standard/dresses.dmi deleted file mode 100644 index ce196c94a5..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/standard/dresses.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/standard/fullsuits.dmi b/tools/TaurClothingCutter/suitstocovert/standard/fullsuits.dmi deleted file mode 100644 index ed274fb71b..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/standard/fullsuits.dmi and /dev/null differ diff --git a/tools/TaurClothingCutter/suitstocovert/suit_flares.dmi b/tools/TaurClothingCutter/suitstocovert/suit_flares.dmi deleted file mode 100644 index 5909946a9b..0000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/suit_flares.dmi and /dev/null differ diff --git a/vorestation.dme b/vorestation.dme index a6dee681a6..8d9ae0bfb1 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2680,7 +2680,6 @@ #include "code\modules\clothing\clothing_accessories.dm" #include "code\modules\clothing\clothing_icons.dm" #include "code\modules\clothing\clothing_vr.dm" -#include "code\modules\clothing\tail_sock.dm" #include "code\modules\clothing\accessories\accessory.dm" #include "code\modules\clothing\accessories\accessory_vr.dm" #include "code\modules\clothing\accessories\accessory_yw.dm"