diff --git a/ATTRIBUTIONS.md b/ATTRIBUTIONS.md index 84db59f22ab..4e4af5cc4e8 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 f32cdbaf0cf..cfb37433256 100644 --- a/code/__defines/sprite_sheets.dm +++ b/code/__defines/sprite_sheets.dm @@ -1,190 +1,190 @@ // Default species get default sprites, VR species get VR sprites #define ALL_SPRITE_SHEETS_SUIT_MOB list(\ SPECIES_HUMAN = 'icons/inventory/suit/mob.dmi',\ -SPECIES_TAJARAN = 'icons/inventory/suit/mob.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') #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 a5e8a770bc3..ab5b375c841 100644 --- a/code/__defines/update_icons.dm +++ b/code/__defines/update_icons.dm @@ -44,10 +44,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 5d975b26021..dbfe8343af9 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 7731c58b025..cf47577f85d 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) @@ -986,26 +987,14 @@ . = ..() if(has_hood_sprite) //If we have a special hood_sprite, great, let's use it! Only used by /obj/item/clothing/suit/storage/hooded atm. icon_state = "[toggleicon][hood_up ? "_t" : ""]" - update_clothing_icon() /obj/item/clothing/suit/equipped(mob/user, slot) - //Let's make sure we're extra aggressive with taur settings. - icon_override = initial(icon_override) - taurized = FALSE if(slot != slot_wear_suit) RemoveHood() - if(ishuman(user)) - var/mob/living/carbon/human/Hoomie = user - var/taurtail = istaurtail(Hoomie.tail_style) - if(taurtail) - taurize(Hoomie, taurtail) - - update_clothing_icon() ..() /obj/item/clothing/suit/dropped(mob/user, equipping, slot) RemoveHood() - update_clothing_icon() ..() /obj/item/clothing/suit/ui_action_click(mob/user, actiontype) @@ -1028,9 +1017,9 @@ if(hood) hood.canremove = TRUE // This shouldn't matter anyways but just incase. if(ishuman(hood.loc)) - var/mob/living/carbon/Carbmob = hood.loc - Carbmob.unEquip(hood, 1) - Carbmob.update_inv_wear_suit() + var/mob/living/carbon/H = hood.loc + H.unEquip(hood, 1) + H.update_inv_wear_suit() hood.forceMove(src) /obj/item/clothing/suit/proc/ToggleHood() @@ -1040,64 +1029,69 @@ RemoveHood() return if(ishuman(loc)) - var/mob/living/carbon/human/Hoomie = src.loc - if(Hoomie.wear_suit != src) - to_chat(Hoomie, span_warning("You must be wearing [src] to put up the hood!")) + var/mob/living/carbon/human/H = src.loc + if(H.wear_suit != src) + to_chat(H, span_warning("You must be wearing [src] to put up the hood!")) return - if(Hoomie.head) - to_chat(Hoomie, span_warning("You're already wearing something on your head!")) + if(H.head) + to_chat(H, span_warning("You're already wearing something on your head!")) return else if(color != hood.color) hood.color = color - Hoomie.equip_to_slot_if_possible(hood,slot_head,0,0,1) + H.equip_to_slot_if_possible(hood,slot_head,0,0,1) hood_up = TRUE hood.canremove = FALSE update_icon() - Hoomie.update_inv_wear_suit() + H.update_inv_wear_suit() ///Hood stuff end. /obj/item/clothing/suit/update_clothing_icon() - if (ismob(loc)) - var/mob/Mobbie = loc - Mobbie.update_inv_wear_suit() + if (ismob(src.loc)) + var/mob/M = src.loc + M.update_inv_wear_suit() + +/obj/item/clothing/suit/equipped(mob/user, slot) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/taurtail = istaurtail(H.tail_style) + if((taurized && !taurtail) || (!taurized && taurtail)) + taurize(user, taurtail) + + return ..() -///Establishes Icon overrides for taur bodies /obj/item/clothing/suit/proc/taurize(mob/living/carbon/human/taur, has_taur_tail = FALSE) - /// We've already confirmed that we have a taur tail during equipped, this is just makes sure we get the correct icon override. - if(!has_taur_tail) - return + if(has_taur_tail) + var/datum/sprite_accessory/tail/taur/taurtail = taur.tail_style + if(taurtail.suit_sprites && (icon_exists(taurtail.suit_sprites, get_worn_icon_state(slot_wear_suit_str)))) + icon_override = taurtail.suit_sprites + taurized = TRUE + // means that if a taur puts on an already taurized suit without a taur sprite + // for their taur type, but the previous taur type had a sprite, it stays + // taurized and they end up with that taur style which is funny + else + taurized = FALSE - taurized = TRUE + if(!taurized) + icon_override = initial(icon_override) + taurized = FALSE - if(showtaurbutts) //We don't want the override icons if we're being asked to show that booty - return - - // if we're not showing butts, then let's apply the proper overrides - var/datum/sprite_accessory/tail/taur/taurtail = taur.tail_style - if(taurtail?.suit_sprites && icon_exists(taurtail.suit_sprites, get_worn_icon_state(slot_wear_suit_str))) - icon_override = taurtail.suit_sprites - -// Taur suits need to be shifted so it's centered on their taur half. -/obj/item/clothing/suit/make_worn_icon(body_type, slot_name, inhands, default_icon, default_layer = 0, icon/clip_mask) +// Taur suits need to be shifted so its centered on their taur half. +/obj/item/clothing/suit/make_worn_icon(body_type,slot_name,inhands,default_icon,default_layer = 0,icon/clip_mask) var/image/standing = ..() - if(!standing) - return null - - // Only apply the -16 offset when taurized AND showtaurbutts is FALSE - if(taurized && !showtaurbutts && icon_override) + if(taurized) //Special snowflake var on suits standing.pixel_x = -16 - standing.layer = TAUR_LAYERING - // but if we don't have an icon_override, we already have our offsets, set. + standing.layer = BODY_LAYER + TAIL_UPPER_LAYER + 1 return standing /obj/item/clothing/suit/apply_accessories(image/standing) - . = ..() - - if(LAZYLEN(accessories) && taurized && !showtaurbutts && standing) - // account for the offset of our standing image - for(var/image/I in standing.overlays) - I.pixel_x += 16 + if(LAZYLEN(accessories) && taurized) + for(var/obj/item/clothing/accessory/A in accessories) + var/image/I = new(A.get_mob_overlay()) + I.pixel_x = 16 //Opposite of the pixel_x on the suit (-16) from taurization to cancel it out and puts the accessory in the correct place on the body. + standing.add_overlay(I) + else + return ..() /////////////////////////////////////////////////////////////////////// @@ -1168,8 +1162,6 @@ var/icon/rolled_down_sleeves_icon = 'icons/inventory/uniform/mob_sleeves_rolled.dmi' update_icon_define_digi = "icons/inventory/uniform/mob_digi.dmi" - /// hehe, soon. - var/taurized = FALSE /obj/item/clothing/under/attack_hand(mob/user) if(LAZYLEN(accessories)) diff --git a/code/modules/clothing/clothing_icons.dm b/code/modules/clothing/clothing_icons.dm index 11a4c486719..59483df42ed 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 c33c2b91693..2b8f8e1ed8d 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 4384780f47e..4b4fbdc2bd1 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 8f7576bf717..038727c030d 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.5 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER cold_protection = CHEST|LEGS|FEET|ARMS|HANDS heat_protection = CHEST|LEGS|FEET|ARMS|HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index 839ab8df242..f0482200ef8 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 1c1e793d50c..280fe5dd0ba 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 792b816e486..e55d0cca377 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 335ff8ceb49..5ef36ce2278 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 7f00c7cb84c..6d258c2bfcf 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 d74e5ea3acc..b7af7fd6d39 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 dff237afba6..8c0a1ec48bd 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 2d115ace512..00000000000 --- 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 3b063728124..1d540964d96 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 727261c56a4..b485b6efefe 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 5447a13b54e..f75125eee87 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 e8ed4d3d864..fcb0bda92a0 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 ab8be0c5ef3..ca89d370102 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -287,8 +287,8 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() var/icon_x_offset = 0 var/icon_y_offset = 0 - if(istype(tail_style, /datum/sprite_accessory/tail)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that. - if(tail_style.clip_mask) // trim it if we need to, for taur body types that don't have sprite sheets at all. + if(istype(tail_style, /datum/sprite_accessory/tail/taur)) // Tail icon 'cookie cutters' are filled in where icons are preserved. We need to invert that. + if(tail_style.clip_mask) Cutter = new(icon = (tail_style.clip_mask_icon ? tail_style.clip_mask_icon : tail_style.icon), icon_state = tail_style.clip_mask_state) Cutter.Blend("#000000", ICON_MULTIPLY) // Make it all black. @@ -613,8 +613,6 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() update_inv_belt() update_inv_back() update_inv_wear_suit() - //check for tail related layers, mainly to resolve roundstart/spawn issues - update_tail_showing() update_inv_r_hand() update_inv_l_hand() update_inv_handcuffed() @@ -633,37 +631,30 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() remove_layer(UNIFORM_LAYER) - // Shoes can be affected by uniform being drawn onto them + //Shoes can be affected by uniform being drawn onto them update_inv_shoes() if(!w_uniform) return - // Wearing a suit that prevents uniform rendering (e.g. non-RIG full suits) if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT) && !istype(wear_suit, /obj/item/clothing/suit/space/rig)) - return + return //Wearing a suit that prevents uniform rendering var/obj/item/clothing/under/under = w_uniform - var/uniform_sprite = (istype(under) && !isnull(under.update_icon_define)) ? under.update_icon_define : INV_W_UNIFORM_DEF_ICON - var/icon/c_mask = null + var/uniform_sprite + if(istype(under) && !isnull(under.update_icon_define)) + uniform_sprite = under.update_icon_define + else + uniform_sprite = INV_W_UNIFORM_DEF_ICON - // Check if a taur body is active on the mob - var/tail_is_rendered = (overlays_standing[get_tail_layer()] || overlays_standing[TAIL_UPPER_LAYER_HIGH]) - - // Clip uniform pants/legs off at the waist IF: - // Taur body with a mask and not fitted for taurs. Which is basically all of them lmaooo. - if(tail_is_rendered && tail_style?.clip_mask && (istype(under) && !under.taurized)) - c_mask = tail_style.clip_mask - - // Build uniform sprite with clip mask applied - overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon( - body_type = species.get_bodytype(src), - slot_name = slot_w_uniform_str, - default_icon = uniform_sprite, - default_layer = UNIFORM_LAYER, - clip_mask = c_mask - ) + //Build a uniform sprite + var/icon/c_mask = tail_style?.clip_mask + if(c_mask) + var/obj/item/clothing/suit/S = wear_suit + if((wear_suit?.flags_inv & HIDETAIL) || (istype(S) && S.taurized)) // Reasons to not mask: 1. If you're wearing a suit that hides the tail or if you're wearing a taurized suit. + c_mask = null + overlays_standing[UNIFORM_LAYER] = w_uniform.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_w_uniform_str, default_icon = uniform_sprite, default_layer = UNIFORM_LAYER, clip_mask = c_mask) apply_layer(UNIFORM_LAYER) /mob/living/carbon/human/update_inv_wear_id() @@ -858,37 +849,31 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() remove_layer(SUIT_LAYER) - // Hide/show uniform & shoes + //Hide/show other layers if necessary update_inv_w_uniform() update_inv_shoes() - - // Always ensure tail/taur states are updated so overlay existence is current update_tail_showing() update_wing_showing() if(!wear_suit) - return // No point, no suit. + return //No point, no suit. var/obj/item/clothing/suit/suit = wear_suit - var/suit_sprite = (istype(suit) && !isnull(suit.update_icon_define)) ? suit.update_icon_define : INV_SUIT_DEF_ICON + var/suit_sprite + + if(istype(suit) && !isnull(suit.update_icon_define)) + suit_sprite = suit.update_icon_define + else + suit_sprite = INV_SUIT_DEF_ICON var/icon/c_mask = null + var/tail_is_rendered = overlays_standing[TAIL_LOWER_LAYER] || overlays_standing[tail_layering] + var/valid_clip_mask = tail_style?.clip_mask - // Check if a taur body is active and requires clipping the lower half of the suit off - var/tail_is_rendered = (overlays_standing[get_tail_layer()] || overlays_standing[TAIL_UPPER_LAYER_HIGH]) + if(tail_is_rendered && valid_clip_mask && !(istype(suit) && suit.taurized)) //Clip the lower half of the suit off using the tail's clip mask for taurs since taur bodies aren't hidden. + c_mask = valid_clip_mask + overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_wear_suit_str, default_icon = suit_sprite, default_layer = SUIT_LAYER, clip_mask = c_mask) - // Apply the clip mask to trim our suit for taur body fitting - if(tail_is_rendered && tail_style?.clip_mask && !(istype(suit) && suit.taurized)) - c_mask = tail_style.clip_mask - - // Generate suit overlay - overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon( - body_type = species.get_bodytype(src), - slot_name = slot_wear_suit_str, - default_icon = suit_sprite, - default_layer = SUIT_LAYER, - clip_mask = c_mask - ) apply_layer(SUIT_LAYER) /mob/living/carbon/human/update_inv_pockets() @@ -1001,13 +986,11 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() apply_layer(L_HAND_LAYER) /mob/living/carbon/human/proc/get_tail_layer() - var/list/lower_layer_dirs = LOWER_TAIL_DIRS // Tail below clothing on side views too. - if(!tail_style) // Sanity checks good checks. - return - else + var/list/lower_layer_dirs = list(SOUTH, EAST, WEST) //Tail below clothing on side views too. + if(tail_style) lower_layer_dirs = tail_style.lower_layer_dirs.Copy() - if(istaurtail(tail_style) || (dir in lower_layer_dirs)) + if(dir in lower_layer_dirs) return TAIL_LOWER_LAYER else return TAIL_UPPER_LAYER @@ -1016,378 +999,130 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() if(QDESTROYING(src)) return - // Clear previous tail layer assignments - for(var/layers in TAIL_LAYER_CLEARING) - remove_layer(layers) + remove_layer(TAIL_UPPER_LAYER) + remove_layer(TAIL_UPPER_LAYER_HIGH) + remove_layer(TAIL_UPPER_LAYER_LOW) + remove_layer(TAIL_LOWER_LAYER) var/tail_layer = get_tail_layer() - // Use default, let clip mask handle everything - if(tail_style && tail_style.clip_mask_state && !istaurtail(tail_style)) - tail_layer = TAIL_UPPER_LAYER + if(src.tail_style && src.tail_style.clip_mask_state) + tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything if(tail_layer == TAIL_UPPER_LAYER) tail_layer = tail_layering update_vore_tail_sprite() + var/obj/item/organ/external/chest = organs_by_name[BP_TORSO] + var/image/tail_image = get_tail_image() if(tail_image) - // Process tailsock & North-facing layer overrides - // apply_tailsock_layer is our heavy lifter for tail applying! - tail_image = apply_tailsock_layer(tail_image, tail_layer, apply_to_mob = TRUE) + tail_image.layer = BODY_LAYER+tail_layer + overlays_standing[tail_layer] = tail_image + apply_layer(tail_layer) + return + + var/species_tail = species?.get_tail(src) // Species tail icon_state prefix. + + //This one is actually not that bad I guess. + if(species_tail && !(wear_suit && wear_suit.flags_inv & HIDETAIL)) + var/icon/tail_s = get_tail_icon() + tail_image = image(icon = tail_s, icon_state = "[species_tail]_s", layer = BODY_LAYER+tail_layer) + tail_image.alpha = chest?.transparent ? 180 : 255 + overlays_standing[tail_layer] = tail_image + animate_tail_reset() //TODO: Is this the appropriate place for this, and not on species...? -//Yes, and we can make it better too. -/mob/living/carbon/human/proc/get_tail_image_species() - var/race_key = species.get_race_key(src) - var/icon_key = "[race_key]_[r_skin]_[g_skin]_[b_skin]_[r_hair]_[g_hair]_[b_hair]" +/mob/living/carbon/human/proc/get_tail_icon() + var/icon_key = "[species.get_race_key(src)][r_skin][g_skin][b_skin][r_hair][g_hair][b_hair]" + var/icon/tail_icon = GLOB.tail_icon_cache[icon_key] + if(!tail_icon) + //generate a new one + var/species_tail_anim = species.get_tail_animation(src) + if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //Allow override of file for non-animated tails + if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi' + tail_icon = new/icon(species_tail_anim) + tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) + // The following will not work with animated tails. + var/use_species_tail = species.get_tail_hair(src) + if(use_species_tail) + var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]") + hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species.color_mult ? ICON_MULTIPLY : ICON_ADD) //Check for species color_mult + tail_icon.Blend(hair_icon, ICON_OVERLAY) + GLOB.tail_icon_cache[icon_key] = tail_icon - var/mutable_appearance/tail_app = GLOB.tail_icon_cache[icon_key] - if(tail_app) - return image(tail_app) - - var/species_tail_anim = species.get_tail_animation(src) - if(!species_tail_anim && species.icobase_tail) - species_tail_anim = species.icobase - if(!species_tail_anim) - species_tail_anim = 'icons/effects/species.dmi' - - // Base tail appearance - tail_app = mutable_appearance(species_tail_anim, "[tail_style]") - tail_app.color = rgb(r_skin, g_skin, b_skin) - tail_app.blend_mode = species.color_mult ? BLEND_MULTIPLY : BLEND_ADD - - // Hair / Secondary overlay - var/use_species_tail = species.get_tail_hair(src) - if(use_species_tail) - var/tail_species_state = "[species.get_tail(src)]_[use_species_tail]" - var/mutable_appearance/hair_app = mutable_appearance('icons/effects/species.dmi', tail_species_state) - hair_app.color = rgb(r_hair, g_hair, b_hair) - hair_app.blend_mode = species.color_mult ? BLEND_MULTIPLY : BLEND_ADD - - tail_app.overlays += hair_app - - // Cache the tail for later use - GLOB.tail_icon_cache[icon_key] = tail_app - return image(tail_app) - -/mob/living/carbon/human/proc/get_tail_image() - // Pull torso alpha channel information - var/torso_alpha = 255 - var/obj/item/organ/external/chest = organs_by_name[BP_TORSO] - if(chest) - torso_alpha = chest.alpha - - // Synthetic check - var/datum/robolimb/model = isSynthetic() - if(istype(model) && model.includes_tail && !tail_style && !tail_hidden) - var/mutable_appearance/syn_tail = mutable_appearance(synthetic.icon, "tail") - syn_tail.color = rgb(r_skin, g_skin, b_skin) - var/image/syn_img = image(syn_tail) - syn_img.alpha = torso_alpha - return syn_img - - // Custom tail check - if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden) - var/target_icon = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon - var/target_state = (wagging && tail_style.ani_state) ? tail_style.ani_state : tail_style.icon_state - - // arrange our taur loafing effects - if(tail_style.can_loaf && !is_shifted) - pixel_y = resting ? -tail_style.loaf_offset * size_multiplier : default_pixel_y - - // base tail appearance - var/mutable_appearance/base_tail = mutable_appearance(target_icon, target_state) - if(tail_style.do_colouration) - base_tail.color = rgb(r_tail, g_tail, b_tail) - - // basic tail image to build upon - var/image/working = image(icon = target_icon, icon_state = null) - working.overlays += base_tail - - if(tail_style.extra_overlay) - var/ex1_state = (wagging && tail_style.ani_state) ? tail_style.extra_overlay_w : tail_style.extra_overlay - var/mutable_appearance/ex1 = mutable_appearance(target_icon, ex1_state) - ex1.color = rgb(r_tail2, g_tail2, b_tail2) - working.overlays += ex1 - - if(tail_style.extra_overlay2) - var/ex2_state = (wagging && tail_style.ani_state) ? tail_style.extra_overlay2_w : tail_style.extra_overlay2 - var/mutable_appearance/ex2 = mutable_appearance(target_icon, ex2_state) - ex2.color = rgb(r_tail3, g_tail3, b_tail3) - working.overlays += ex2 - - if(tail_style.em_block) - working.overlays += em_block_image_generic(working) - - if(istaurtail(tail_style) || islongtail(tail_style)) - working.pixel_x = tail_style.offset_x - working.pixel_y = tail_style.offset_y - - if(istaurtail(tail_style)) - var/datum/sprite_accessory/tail/taur/taurtype = tail_style - if(taurtype.can_ride && !riding_datum) - riding_datum = new /datum/riding/taur(src) - add_verb(src, /mob/living/carbon/human/proc/taur_mount) - add_verb(src, /mob/living/proc/toggle_rider_reins) - - // Combine custom tail alpha variable with the torso's alpha channel - working.alpha = (a_tail != null) ? min(a_tail, torso_alpha) : torso_alpha - return working - - // no custom tail? let's get the species default then - if(species && tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !tail_hidden) - var/image/species_tail_img = get_tail_image_species() - if(species_tail_img) - species_tail_img.alpha = torso_alpha - return species_tail_img - return null + return tail_icon /mob/living/carbon/human/proc/set_tail_state(t_state) - if(QDESTROYING(src) || !tail_style) - return null - - // wag compatibility check - if(tail_style.ani_state) - wagging = (t_state == tail_style.ani_state) - else - wagging = FALSE - - // refresh our tail, please ~ - update_tail_showing() - var/tail_layer = get_tail_layer() - return overlays_standing[tail_layer] + if(src.tail_style && src.tail_style.clip_mask_state) + tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything + if(tail_layer == TAIL_UPPER_LAYER) + tail_layer = tail_layering + var/image/tail_overlay = overlays_standing[tail_layer] -//rather than repeatedly trying to assert offsets while rendering the code, let's kick this out into a more managable proc shall we -/mob/living/carbon/human/proc/get_tail_offsets(obj/item/clothing/suit/socksuit, datum/sprite_accessory/tail/tailtype) - var/off_x = tailtype ? tailtype.offset_x : 0 - var/off_y = tailtype ? tailtype.offset_y : 0 + remove_layer(TAIL_UPPER_LAYER) + remove_layer(TAIL_UPPER_LAYER_HIGH) + remove_layer(TAIL_UPPER_LAYER_LOW) + remove_layer(TAIL_LOWER_LAYER) - // Add suit offset if the suit isn't using an icon override - if(socksuit && !socksuit.icon_override) - off_x += socksuit.pixel_x - off_y += socksuit.pixel_y + if(tail_overlay) + overlays_standing[tail_layer] = tail_overlay + if(species.get_tail_animation(src)) + tail_overlay.icon_state = t_state + . = tail_overlay - return list(off_x, off_y) + apply_layer(tail_layer) -/mob/living/carbon/human/proc/apply_tailsock_layer(image/tailoverlays, target_layer, apply_to_mob = TRUE) - if(!tailoverlays) - return null - - var/obj/item/clothing/suit/socksuit = wear_suit - var/datum/sprite_accessory/tail/tailtype = tail_style - - // Simplify our offset maths - var/list/offsets = get_tail_offsets(socksuit, tailtype) - var/total_off_x = offsets[1] - var/total_off_y = offsets[2] - - // Fallback in case target_layer wasn't passed by the parent proc - if(!target_layer) - target_layer = get_tail_layer() - if(!target_layer) - target_layer = tail_layering - - var/image/tail_img = image(tailoverlays) - tail_img.layer = target_layer - tail_img.pixel_x = total_off_x - tail_img.pixel_y = total_off_y - - // Get our tailsock ready - var/has_sock = FALSE - var/icon/sock_icon = null - var/sock_state = null - - if(socksuit && socksuit.requires_tailsock && socksuit.tailsock_toggle && tailtype) - has_sock = TRUE - sock_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : socksuit.icon - - if(wagging && tailtype.tailsock_wagicon) - sock_state = tailtype.tailsock_wagicon - else if(tailtype.tailsock_iconstate) - sock_state = tailtype.tailsock_iconstate - else if(socksuit.item_state) - sock_state = socksuit.item_state - - var/image/upper_sock_img = null - - //whack on our lower layer directional tailsock, if needed - if(has_sock && sock_icon && sock_state) - upper_sock_img = image(icon = sock_icon, icon_state = sock_state) - upper_sock_img.alpha = socksuit.alpha - if(socksuit.tailsock_color) - upper_sock_img.color = socksuit.tailsock_color - - if(target_layer != TAIL_LOWER_LAYER) - var/mutable_appearance/sock_overlay = mutable_appearance(sock_icon, sock_state) - if(socksuit.tailsock_color) - sock_overlay.color = socksuit.tailsock_color - //allow sneaky suits to have sneaky suit socks too - sock_overlay.alpha = socksuit.alpha - sock_overlay.layer = FLOAT_LAYER + 0.1 - tail_img.overlays += sock_overlay - - //we don't need a sock, so let's make a fake tail to appear on top of our clothes because that looks nicer - //We basically have every sock given their markings at this point. If your tail shows, it has its markings too. - else if(tailtype) - //just in case we have a null tailsock_icon somehow - var/icon/sock_mark_icon = tailtype.tailsock_icon ? tailtype.tailsock_icon : tailtype.icon - // If we don't need a sock, and we're not worrying about coloring (snowflake) - if(!tail_style.do_colouration) - var/n_state = (wagging && tailtype.ani_state) ? tailtype.ani_state : tailtype.icon_state - //we'll just get our default as our bonus layer - upper_sock_img = image(icon = tailtype.icon, icon_state = n_state) - // Generate the snipped base tail using the dedicated tailsock icon states instead of the full body state - else - var/n_state = (wagging && tailtype.tailsock_wagicon) ? tailtype.tailsock_wagicon : tailtype.tailsock_iconstate - upper_sock_img = image(icon = sock_mark_icon, icon_state = n_state) - var/mutable_appearance/base_north = mutable_appearance(sock_mark_icon, n_state) - if(tailtype.do_colouration) - base_north.color = rgb(r_tail, g_tail, b_tail) - upper_sock_img.overlays += base_north - - // Attach secondary markings if present - if(tailtype.tailsock_markings) - var/m1_nstate = (wagging) ? tailtype.tailsock_wagmarkings : tailtype.tailsock_markings - var/mutable_appearance/m1_north = mutable_appearance(sock_mark_icon, m1_nstate) - m1_north.color = rgb(r_tail2, g_tail2, b_tail2) - m1_north.layer = FLOAT_LAYER + 0.01 - upper_sock_img.overlays += m1_north - - if(tailtype.tailsock_markings2) - var/m2_nstate = (wagging) ? tailtype.tailsock_wagmarkings2 : tailtype.tailsock_markings2 - var/mutable_appearance/m2_north = mutable_appearance(sock_mark_icon, m2_nstate) - m2_north.color = rgb(r_tail3, g_tail3, b_tail3) - m2_north.layer = FLOAT_LAYER + 0.02 - upper_sock_img.overlays += m2_north - - //voodoo protection of butt theft - if(apply_to_mob) - //paste normal tail on their intended level - overlays_standing[target_layer] = tail_img - apply_layer(target_layer) - - // apply our taur sock to its correct layer, voodoo is south only so should be fine... right?? Right byond????? - if(upper_sock_img) - //backpacks render over everything north face unless this is specifically set higher on the image.layer - even if it's in the higher index.... - //have I mentioned how much I hate this system?? - upper_sock_img.layer = TAIL_UPPER_LAYER_HIGH - upper_sock_img.pixel_x = total_off_x - upper_sock_img.pixel_y = total_off_y - overlays_standing[TAIL_UPPER_LAYER_HIGH] = upper_sock_img - apply_layer(TAIL_UPPER_LAYER_HIGH) - - return tail_img - -/mob/living/carbon/human/proc/animate_tail_reset() - if(QDESTROYING(src) || !tail_style) +//Not really once, since BYOND can't do that. +//Update this if the ability to flick() images or make looping animation start at the first frame is ever added. +//You can sort of flick images now with flick_overlay -Aro +/mob/living/carbon/human/proc/animate_tail_once() + if(QDESTROYING(src)) return - if(stat == DEAD) - set_tail_state(tail_style.icon_state) - toggle_tail(FALSE) // Stop wagging on death - else - // Resets tail state based on current wagging flag - set_tail_state(wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state) + var/t_state = "[species.get_tail(src)]_once" + var/tail_layer = get_tail_layer() + if(src.tail_style && src.tail_style.clip_mask_state) + tail_layer = TAIL_UPPER_LAYER // Use default, let clip mask handle everything + + var/image/tail_overlay = overlays_standing[tail_layer] + if(tail_overlay && tail_overlay.icon_state == t_state) + return //let the existing animation finish + + tail_overlay = set_tail_state(t_state) // Calls remove_layer & apply_layer + if(tail_overlay) + spawn(20) + //check that the animation hasn't changed in the meantime + if(overlays_standing[tail_layer] == tail_overlay && tail_overlay.icon_state == t_state) + animate_tail_stop() /mob/living/carbon/human/proc/animate_tail_start() - if(QDESTROYING(src) || !tail_style) + if(QDESTROYING(src)) return - toggle_tail(TRUE) - if(tail_style.ani_state) - set_tail_state(tail_style.ani_state) + set_tail_state("[species.get_tail(src)]_slow[rand(0,9)]") + +/mob/living/carbon/human/proc/animate_tail_fast() + if(QDESTROYING(src)) + return + + set_tail_state("[species.get_tail(src)]_loop[rand(0,9)]") + +/mob/living/carbon/human/proc/animate_tail_reset() + if(QDESTROYING(src)) + return + + if(stat != DEAD) + set_tail_state("[species.get_tail(src)]_idle[rand(0,9)]") + else + set_tail_state("[species.get_tail(src)]_static") + toggle_tail(FALSE) //So tails stop when someone dies. TODO - Fix this hack ~Leshana /mob/living/carbon/human/proc/animate_tail_stop() - if(QDESTROYING(src) || !tail_style) - return - - toggle_tail(FALSE) - set_tail_state(tail_style.icon_state) - -/mob/living/carbon/human/proc/update_vore_belly_sprite() if(QDESTROYING(src)) return - remove_layer(VORE_BELLY_LAYER) - - var/image/vore_belly_image = get_vore_belly_image() - if(vore_belly_image) - vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER - overlays_standing[VORE_BELLY_LAYER] = vore_belly_image - vore_belly_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT. - vore_belly_image.appearance_flags = appearance_flags - - apply_layer(VORE_BELLY_LAYER) - -/mob/living/carbon/human/proc/get_vore_belly_image() - if(!(wear_suit && wear_suit.flags_inv & HIDETAIL)) - var/vs_fullness = vore_fullness_ex["stomach"] - var/icon/vorebelly_s = new/icon(icon = 'icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]") - vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD) - var/image/working = image(vorebelly_s) - working.overlays += em_block_image_generic(working) - return working - return null - -/mob/living/carbon/human/proc/vore_belly_animation() - if(!struggle_anim_stomach) - struggle_anim_stomach = TRUE - update_vore_belly_sprite() - spawn(1.2 SECONDS) - struggle_anim_stomach = FALSE - update_vore_belly_sprite() - -/mob/living/carbon/human/proc/update_vore_tail_sprite() - if(QDESTROYING(src)) - return - - remove_layer(VORE_TAIL_LAYER) - var/image/vore_tail_image = get_vore_tail_image() - if(vore_tail_image) - vore_tail_image.layer = BODY_LAYER + VORE_TAIL_LAYER - // This one line of code. THIS ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT. - vore_tail_image.plane = PLANE_CH_STOMACH - vore_tail_image.appearance_flags = appearance_flags - overlays_standing[VORE_TAIL_LAYER] = vore_tail_image - apply_layer(VORE_TAIL_LAYER) - -/mob/living/carbon/human/proc/get_vore_tail_image() - if(!tail_style || !istaurtail(tail_style) || !tail_style.vore_tail_sprite_variant) - return null - - var/vs_fullness = vore_fullness_ex["taur belly"] - var/loaf_alt = lying && tail_style.belly_variant_when_loaf - var/fullness_icons = min(tail_style.fullness_icons, vs_fullness) - var/target_state = "Taur[tail_style.vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]" - //optimizing this with mutable_appearance, since it includes support for animations! - var/mutable_appearance/vorebelly_ma = mutable_appearance(tail_style.bellies_icon_path, target_state) - var/obj/item/clothing/suit/sockable = wear_suit - //scootchin' on by here to tailsock the tummy since it's important. - if(sockable && sockable.tailsock_toggle && sockable.tailsock_color) - vorebelly_ma.color = sockable.tailsock_color - else - var/base_color = vore_sprite_color["taur belly"] - vorebelly_ma.color = base_color - - var/image/working = image(vorebelly_ma) - working.pixel_x = -16 - - if(tail_style.em_block) // Let 'em glow still - working.overlays += em_block_image_generic(working) - - return working - -/mob/living/carbon/human/proc/vore_tail_animation() - if(tail_style.struggle_anim && !struggle_anim_taur) - struggle_anim_taur = TRUE - update_vore_tail_sprite() - spawn(12) - // Prevent runtimes if the mob is destroyed while the animation timer was ticking - if(!src || QDESTROYING(src)) - return - struggle_anim_taur = FALSE - update_vore_tail_sprite() + set_tail_state("[species.get_tail(src)]_static") /mob/living/carbon/human/proc/update_wing_showing() if(QDESTROYING(src)) @@ -1398,70 +1133,18 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() var/image/wing_image = get_wing_image(FALSE) - // Fetch wear_suit and check for tailsock coloration, because it makes sense to. - var/obj/item/clothing/suit/socksuit = wear_suit - var/wing_color = (istype(socksuit) && socksuit.requires_tailsock && socksuit.tailsock_toggle && socksuit.tailsock_color) ? socksuit.tailsock_color : null - if(wing_image) - wing_image.layer = BODY_LAYER + WING_LAYER - if(wing_color) - wing_image.color = wing_color + wing_image.layer = BODY_LAYER+WING_LAYER overlays_standing[WING_LAYER] = wing_image - if(wing_style && wing_style.multi_dir) wing_image = get_wing_image(TRUE) if(wing_image) - wing_image.layer = BODY_LAYER + WING_LOWER_LAYER - if(wing_color) - wing_image.color = wing_color + wing_image.layer = BODY_LAYER+WING_LOWER_LAYER overlays_standing[WING_LOWER_LAYER] = wing_image apply_layer(WING_LAYER) apply_layer(WING_LOWER_LAYER) -/mob/living/carbon/human/proc/get_wing_image(under_layer) - if(QDESTROYING(src)) - return - - //If you are FBP with wing style and didn't set a custom one - if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden) - var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing? - wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) - var/image/working = image(wing_s) - working.overlays += em_block_image_generic(working) // Leaving this as overlays += - return working - - //If you have custom wings selected - if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden) - var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state - if(wing_style.multi_dir) - wing_state += "_[under_layer ? "back" : "front"]" - var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state) - if(wing_style.do_colouration) - wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode) - if(wing_style.extra_overlay) - var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay) - overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode) - wing_s.Blend(overlay, ICON_OVERLAY) - qdel(overlay) - if(wing_style.extra_overlay2) - var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2) - if(wing_style.ani_state) - overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w) - overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) - wing_s.Blend(overlay, ICON_OVERLAY) - qdel(overlay) - else - overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) - wing_s.Blend(overlay, ICON_OVERLAY) - qdel(overlay) - var/image/working = image(wing_s) - working.alpha = src.a_wing - if(wing_style.em_block) - working.overlays += em_block_image_generic(working) // Leaving this as overlays += - working.pixel_x -= wing_style.wing_offset - return working - /mob/living/carbon/human/update_modifier_visuals() if(QDESTROYING(src)) return @@ -1537,6 +1220,49 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() overlays_standing[SURGERY_LAYER] = total apply_layer(SURGERY_LAYER) +/mob/living/carbon/human/proc/get_wing_image(under_layer) + if(QDESTROYING(src)) + return + + //If you are FBP with wing style and didn't set a custom one + if(synthetic && synthetic.includes_wing && !wing_style && !wings_hidden) + var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing? + wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) + var/image/working = image(wing_s) + working.overlays += em_block_image_generic(working) // Leaving this as overlays += + return working + + //If you have custom wings selected + if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden) + var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state + if(wing_style.multi_dir) + wing_state += "_[under_layer ? "back" : "front"]" + var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state) + if(wing_style.do_colouration) + wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode) + if(wing_style.extra_overlay) + var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay) + overlay.Blend(rgb(src.r_wing2, src.g_wing2, src.b_wing2), wing_style.color_blend_mode) + wing_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + if(wing_style.extra_overlay2) + var/icon/overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2) + if(wing_style.ani_state) + overlay = new/icon("icon" = wing_style.icon, "icon_state" = wing_style.extra_overlay2_w) + overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) + wing_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + else + overlay.Blend(rgb(src.r_wing3, src.g_wing3, src.b_wing3), wing_style.color_blend_mode) + wing_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + var/image/working = image(wing_s) + working.alpha = src.a_wing + if(wing_style.em_block) + working.overlays += em_block_image_generic(working) // Leaving this as overlays += + working.pixel_x -= wing_style.wing_offset + return working + /mob/living/carbon/human/proc/get_ears_overlay() //If you are FBP with ear style and didn't set a custom one var/datum/robolimb/model = isSynthetic() @@ -1593,6 +1319,145 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon() return rendered +/mob/living/carbon/human/proc/get_tail_image() + //If you are FBP with tail style and didn't set a custom one + var/datum/robolimb/model = isSynthetic() + if(istype(model) && model.includes_tail && !tail_style && !tail_hidden) + var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail") + tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD) + return image(tail_s) + + //If you have a custom tail selected + if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden) + var/icon/tail_s = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) + if(tail_style.can_loaf && !is_shifted) + pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly. Taur Loafing + if(tail_style.do_colouration) + tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode) + if(tail_style.extra_overlay) + var/icon/overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay) + if(wagging && tail_style.ani_state) + overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay_w) + overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + else + overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + + if(tail_style.extra_overlay2) + var/icon/overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2) + if(wagging && tail_style.ani_state) + overlay = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2_w) + overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + else + overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode) + tail_s.Blend(overlay, ICON_OVERLAY) + qdel(overlay) + + var/image/working = image(tail_s) + if(tail_style.em_block) + working.overlays += em_block_image_generic(working) // Leaving this as overlays += + + if(istaurtail(tail_style)) + var/datum/sprite_accessory/tail/taur/taurtype = tail_style + working.pixel_x = tail_style.offset_x + working.pixel_y = tail_style.offset_y + if(taurtype.can_ride && !riding_datum) + riding_datum = new /datum/riding/taur(src) + add_verb(src, /mob/living/carbon/human/proc/taur_mount) + add_verb(src, /mob/living/proc/toggle_rider_reins) + else if(islongtail(tail_style)) + working.pixel_x = tail_style.offset_x + working.pixel_y = tail_style.offset_y + working.alpha = src.a_tail + return working + return null + +// TODO - Move this to where it should go ~Leshana +/mob/living/proc/stop_flying() + if(QDESTROYING(src)) + return + flying = FALSE + return 1 + +/mob/living/carbon/human/stop_flying() + if((. = ..())) + update_wing_showing() + +/mob/living/carbon/human/proc/update_vore_belly_sprite() + if(QDESTROYING(src)) + return + + remove_layer(VORE_BELLY_LAYER) + + var/image/vore_belly_image = get_vore_belly_image() + if(vore_belly_image) + vore_belly_image.layer = BODY_LAYER+VORE_BELLY_LAYER + overlays_standing[VORE_BELLY_LAYER] = vore_belly_image + vore_belly_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT. + vore_belly_image.appearance_flags = appearance_flags + + apply_layer(VORE_BELLY_LAYER) + +/mob/living/carbon/human/proc/get_vore_belly_image() + if(!(wear_suit && wear_suit.flags_inv & HIDETAIL)) + var/vs_fullness = vore_fullness_ex["stomach"] + var/icon/vorebelly_s = new/icon(icon = 'icons/mob/vore/Bellies.dmi', icon_state = "[species.vore_belly_default_variant]Belly[vs_fullness][struggle_anim_stomach ? "" : " idle"]") + vorebelly_s.Blend(vore_sprite_color["stomach"], vore_sprite_multiply["stomach"] ? ICON_MULTIPLY : ICON_ADD) + var/image/working = image(vorebelly_s) + working.overlays += em_block_image_generic(working) + return working + return null + +/mob/living/carbon/human/proc/vore_belly_animation() + if(!struggle_anim_stomach) + struggle_anim_stomach = TRUE + update_vore_belly_sprite() + spawn(12) + struggle_anim_stomach = FALSE + update_vore_belly_sprite() + +/mob/living/carbon/human/proc/update_vore_tail_sprite() + if(QDESTROYING(src)) + return + + remove_layer(VORE_TAIL_LAYER) + + var/image/vore_tail_image = get_vore_tail_image() + if(vore_tail_image) + vore_tail_image.layer = BODY_LAYER+VORE_TAIL_LAYER + overlays_standing[VORE_TAIL_LAYER] = vore_tail_image + vore_tail_image.plane = PLANE_CH_STOMACH //This one line of code. This ONE LINE OF CODE TOOK 6 HOURS TO FIGURE OUT. THANK YOU REDCAT. + vore_tail_image.appearance_flags = appearance_flags + + apply_layer(VORE_TAIL_LAYER) + +/mob/living/carbon/human/proc/get_vore_tail_image() + if(tail_style && istaurtail(tail_style) && tail_style.vore_tail_sprite_variant) + var/vs_fullness = vore_fullness_ex["taur belly"] + var/loaf_alt = lying && tail_style.belly_variant_when_loaf + var/fullness_icons = min(tail_style.fullness_icons, vs_fullness) + var/icon/vorebelly_s = new/icon(icon = tail_style.bellies_icon_path, icon_state = "Taur[tail_style.vore_tail_sprite_variant]-Belly-[fullness_icons][loaf_alt ? " loaf" : (struggle_anim_taur ? "" : " idle")]") + vorebelly_s.Blend(vore_sprite_color["taur belly"], vore_sprite_multiply["taur belly"] ? ICON_MULTIPLY : ICON_ADD) + var/image/working = image(vorebelly_s) + working.pixel_x = -16 + if(tail_style.em_block) + working.overlays += em_block_image_generic(working) + return working + return null + +/mob/living/carbon/human/proc/vore_tail_animation() + if(tail_style.struggle_anim && !struggle_anim_taur) + struggle_anim_taur = TRUE + update_vore_tail_sprite() + spawn(12) + struggle_anim_taur = FALSE + update_vore_tail_sprite() + /mob/living/carbon/human/proc/GetAppearanceFromPrefs(flavourtext, oocnotes) /* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob. Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/ diff --git a/code/modules/mob/living/living_vr.dm b/code/modules/mob/living/living_vr.dm index 213b9ff50e8..95211856e8d 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 67800c9f7b4..9a496f03fe5 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 @@ -1984,4 +1982,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 a5a81324ae0..2f4ab2efbac 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 35ab52019ae..e7e411d5046 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 d3b7c90674e..c138e337aec 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 d4a8e83c177..2597826bbbe 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 0bc0029f582..cc890c29208 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 56c70365a28..6c72ce72955 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 8c2260cf0b0..4a583dea903 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 9a13699db27..ec68ac78ba8 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 1ec6eae95b5..bc415996b18 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 96804dc4128..f91700389de 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 ab636977a68..ec7838b3083 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 272ee18b0aa..fad0baa2b9b 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 7bbc944f76a..0aba39e842c 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 cc55fd769ec..97f0ec4b787 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 00697207c11..aef6dd538da 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 542102bd2cb..a199be11013 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 485a1e96ad6..dfa1da1ec03 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 56291f4c4e3..20b870042bb 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1147,7 +1147,7 @@ Departamental Swimsuits, for general use /obj/item/clothing/suit/storage/hooded/wintercoat/jessie name = "Handmade Winter Suit" desc = "A durable, but somewhat ragged lower portion of a snow suit fitted for a wolftaur." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "jessiecoat" /obj/item/clothing/suit/storage/hooded/wintercoat/jessie/mob_can_equip(mob/living/carbon/human/H, slot, disable_warning = FALSE, ignore_obstruction, go_over_slot = FALSE) @@ -1163,7 +1163,7 @@ Departamental Swimsuits, for general use name = "Kat's Fox Taur Armor" desc = "A set of security armor, light weight and easy to run in for a Taur, this item protects the \ entire body." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "katesuit" item_state_slots = null @@ -1181,7 +1181,7 @@ Departamental Swimsuits, for general use desc = "Taur engineering voidsuit. Recolored navy blue and white. Slightly tweaked as well to \ get close to having security voidsuit protection as possible with a slight reduction in movement \ speed to compensate for custom padding and armor Kateryna made herself." - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "lilithsuit" species_restricted = null armor = list(melee = 40, bullet = 20, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20) @@ -1534,7 +1534,7 @@ Departamental Swimsuits, for general use armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) desc = "A series of armor plates painted black, deployed from a back-mounted module. They fit smoothly over the unit's armor plates and projects a skintight bubble shield over the unit's uncovered parts. Faceplate and coolant unit not included." species_restricted = null - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_lizard.dmi' icon_state = "hasd_suit" pixel_x = -16 diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 874ac88bc7d..7409739ac13 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -452,7 +452,7 @@ name = "custom security cuirass" desc = "An armored vest that protects against some damage. It appears to be created for a wolfhound. The name 'Serdykov L. Antoz' is written on a tag inside one of the haunchplates." species_restricted = null //Species restricted since all it cares about is a taur half - icon = 'icons/inventory/suit/taursuits_snowflake.dmi' + icon = 'icons/mob/taursuits_wolf.dmi' icon_state = "serdy_armor" item_state = "serdy_armor" body_parts_covered = CHEST|LEGS|ARMS //It's a full body suit, minus hands and feet. Arms and legs should be protected, not just the torso. Retains normal security armor values still. diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index a3a83205528..48df8ecf526 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 87649e0b25f..5af0e7e500f 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 673a3de6749..1b6a246d076 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 23944186f97..a1d021cec2d 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 ddb1fcfe50e..00000000000 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 73fe439b1a7..00000000000 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 07d262ef7de..00000000000 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 e9cdfe16b0d..00000000000 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 2a2992e32fb..00000000000 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 fdf4cfc0af5..00000000000 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 1e1224f6594..00000000000 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 b16800432f9..00000000000 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 fca67b55bd1..00000000000 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 1544bf3dd87..00000000000 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 b7ac494bda0..00000000000 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 370395430a9..00000000000 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 bf2090837c9..00000000000 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 28ac3625767..00000000000 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 e26c41d43a2..00000000000 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 6c1ed3615e5..00000000000 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 d377e70042d..00000000000 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 18cbfd7c96e..00000000000 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 e11bf84c912..00000000000 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 53af8a62697..00000000000 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 b1068284269..00000000000 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 7ef1676671b..00000000000 --- 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 c1c6d6b5530..1704b042a43 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 132658bd24e..cc63d30fd18 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 c8231f323dd..b18ee1fd4fd 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 1e883904b4b..7d981ea65a1 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 bae0a202724..26bea3e70e9 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 f32d9789628..f066c8a0745 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 75572a1c9ed..3363d8cd62f 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 e83c082641c..045946929e0 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 7a0130ce09a..78fff086001 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 ebed58cf8a2..00000000000 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 15684c57d45..a8db3ca9a19 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 2a98d3587ba..c15c56e959d 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 0cb79956faa..88b0b3765d0 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 66b19b20c5c..217d92ff748 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 90e2e228724..8824df3d334 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 99c95581a5b..49d1a5ded0c 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 00000000000..5ca5ebda39b 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 00000000000..6c53a6f4d09 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 00000000000..ca0db57532f 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 00000000000..e4271405714 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 00000000000..95b613d426b 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 00000000000..a6b9858f177 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 00000000000..f4385ef1130 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 00000000000..0917630a462 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 00000000000..06e083854ea 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 00000000000..68495a9e4bc 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 059f175816c..5c6745f95ee 100644 Binary files a/icons/rogue-star/tails_64x32_rs.dmi and b/icons/rogue-star/tails_64x32_rs.dmi differ diff --git a/tools/TaurClothingCutter/CoatCutter.dmi b/tools/TaurClothingCutter/CoatCutter.dmi deleted file mode 100644 index 734d47a6b63..00000000000 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 fa04927e4ab..00000000000 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 773cf09b4fc..00000000000 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 7ce329f269e..00000000000 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 3dbf59763c6..00000000000 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 8bf7796da60..00000000000 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 5b4b476701b..00000000000 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 0ff4e7851cf..00000000000 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 bfb131ca6a3..00000000000 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 79b72e630a5..00000000000 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 2ffaa024d76..00000000000 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 94a1bc0a41d..00000000000 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 aaad0f8341e..00000000000 --- 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 e5c67a790bf..00000000000 --- 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 2581677912e..00000000000 --- 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 cdf3144c35b..00000000000 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 292b3a0c4bf..00000000000 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 c9a45e0103b..00000000000 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 db27ff05588..00000000000 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 f126381c8b1..00000000000 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 9fbf4a7ad70..00000000000 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 5f6c3d83358..00000000000 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 ce196c94a59..00000000000 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 ed274fb71b4..00000000000 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 5909946a9b1..00000000000 Binary files a/tools/TaurClothingCutter/suitstocovert/suit_flares.dmi and /dev/null differ diff --git a/vorestation.dme b/vorestation.dme index eacb3996f87..9cd63686cd5 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2581,7 +2581,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\altevian_vr.dm"