vox tails, except no wag emote and no code supporting tailwags (#36032)

* mob part bitflags in proper format, added tail part bitflag, hidetail clothing cover flag, reordered tail layer, added tail_underlimbs_layer for overlapping tails, limbs_layer for limbs placed under, tail_wagging + has_icon_skin_tone + tail_overlapped species anatomical flags, mutable_appearance() helper, made many suits cover tail, added tail wagging emote for species that can wag, made a species folder for species files, rewrote update_tail_showing(), character preview can show tails, vox tails are now separate from the body instead of being baked into the chest, vox tails will show slightly in north dir instead of being invisible

* added color defines, undid bitfield format change, wag emote is shorter and doesnt show text on stopping wag, vox tails have their own file and have better names, removed icon manipulation from tail updating, species can have own tail icon, made vox tail north sprites full/complete sprites

* remove the ability to wag tail

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: nervere <sage@lulz>
This commit is contained in:
nervere
2024-02-24 11:20:20 +00:00
committed by GitHub
parent eb09302987
commit 7acb15a192
31 changed files with 314 additions and 245 deletions

View File

@@ -42,7 +42,8 @@ var/global/list/playable_species = list("Human")
var/eyes = "eyes_s" // Icon for eyes.
var/primitive // Lesser form, if any (ie. monkey for humans)
var/tail // Name of tail image in species effects icon file.
var/tail // Name of tail icon state
var/tail_icon = 'icons/effects/species.dmi'
var/list/known_languages = list(LANGUAGE_GALACTIC_COMMON) // Languages that this species innately knows.
var/default_language = LANGUAGE_GALACTIC_COMMON // Default language is used when 'say' is used without modifiers.
var/attack_verb = "punches" // Empty hand hurt intent verb.
@@ -467,55 +468,6 @@ var/global/list/playable_species = list("Human")
H.drop_all()
qdel(src)
/datum/species/skellington/skelevox // Science never goes too far, it's the public that's too conservative
name = "Skeletal Vox"
icobase = 'icons/mob/human_races/vox/r_voxboney.dmi'
deform = 'icons/mob/human_races/vox/r_voxboney.dmi' //Do bones deform noticeably?
known_languages = list(LANGUAGE_VOX, LANGUAGE_CLATTER)
survival_gear = /obj/item/weapon/storage/box/survival/vox
primitive = /mob/living/carbon/monkey/vox/skeletal
warning_low_pressure = 50
hazard_low_pressure = 0
cold_level_1 = 80
cold_level_2 = 50
cold_level_3 = 0
eyes = "vox_eyes_s"
default_mutations = list(M_BEAK, M_TALONS)
footprint_type = /obj/effect/decal/cleanable/blood/tracks/footprints/vox
uniform_icons = 'icons/mob/species/vox/uniform.dmi'
// fat_uniform_icons = 'icons/mob/uniform_fat.dmi'
gloves_icons = 'icons/mob/species/vox/gloves.dmi'
glasses_icons = 'icons/mob/species/vox/eyes.dmi'
// ears_icons = 'icons/mob/ears.dmi'
shoes_icons = 'icons/mob/species/vox/shoes.dmi'
head_icons = 'icons/mob/species/vox/head.dmi'
// belt_icons = 'icons/mob/belt.dmi'
wear_suit_icons = 'icons/mob/species/vox/suit.dmi'
wear_mask_icons = 'icons/mob/species/vox/masks.dmi'
// back_icons = 'icons/mob/back.dmi'
has_organ = list(
"brain" = /datum/organ/internal/brain,
"eyes" = /datum/organ/internal/eyes/vox
)
/datum/species/skellington/skelevox/makeName(var/gender,var/mob/living/carbon/human/H=null)
var/sounds = rand(3,8)
var/newname = ""
for(var/i = 1 to sounds)
newname += pick(vox_name_syllables)
return capitalize(newname)
/datum/species/tajaran
name = "Tajaran"
icobase = 'icons/mob/human_races/r_tajaran.dmi'
@@ -610,7 +562,7 @@ var/global/list/playable_species = list("Human")
primitive = /mob/living/carbon/monkey/grey
flags = PLAYABLE | WHITELISTED
anatomy_flags = HAS_LIPS | HAS_SWEAT_GLANDS | ACID4WATER
anatomy_flags = HAS_LIPS | HAS_SWEAT_GLANDS | ACID4WATER | HAS_ICON_SKIN_TONE
spells = list(/spell/targeted/telepathy)
@@ -736,114 +688,6 @@ var/global/list/playable_species = list("Human")
head_icons = 'icons/mob/species/skrell/head.dmi'
wear_suit_icons = 'icons/mob/species/skrell/suit.dmi'
/datum/species/vox
name = "Vox"
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
known_languages = list(LANGUAGE_VOX)
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/rawchicken/vox
tacklePower = 40
anatomy_flags = HAS_SWEAT_GLANDS
survival_gear = /obj/item/weapon/storage/box/survival/vox
primitive = /mob/living/carbon/monkey/vox
cold_level_1 = 80
cold_level_2 = 50
cold_level_3 = 0
eyes = "vox_eyes_s"
breath_type = GAS_NITROGEN
default_mutations = list(M_BEAK, M_TALONS)
flags = PLAYABLE | WHITELISTED
blood_color = VOX_BLOOD
flesh_color = "#808D11"
max_skin_tone = 6
footprint_type = /obj/effect/decal/cleanable/blood/tracks/footprints/vox //Bird claws
uniform_icons = 'icons/mob/species/vox/uniform.dmi'
// fat_uniform_icons = 'icons/mob/uniform_fat.dmi'
gloves_icons = 'icons/mob/species/vox/gloves.dmi'
glasses_icons = 'icons/mob/species/vox/eyes.dmi'
// ears_icons = 'icons/mob/ears.dmi'
shoes_icons = 'icons/mob/species/vox/shoes.dmi'
head_icons = 'icons/mob/species/vox/head.dmi'
// belt_icons = 'icons/mob/belt.dmi'
wear_suit_icons = 'icons/mob/species/vox/suit.dmi'
wear_mask_icons = 'icons/mob/species/vox/masks.dmi'
back_icons = 'icons/mob/species/vox/back.dmi'
has_mutant_race = 0
has_organ = list(
"heart" = /datum/organ/internal/heart/vox,
"lungs" = /datum/organ/internal/lungs/vox,
"liver" = /datum/organ/internal/liver,
"kidneys" = /datum/organ/internal/kidney,
"brain" = /datum/organ/internal/brain,
"appendix" = /datum/organ/internal/appendix,
"eyes" = /datum/organ/internal/eyes/vox
)
species_intro = "You are a Vox.<br>\
You are somewhat more adept at handling the lower pressures of space and colder temperatures.<br>\
You have talons with which you can slice others in a fist fight, and a beak which can be used to butcher corpses without the need for finer tools.<br>\
However, Oxygen is incredibly toxic to you, in breathing it or consuming it. You can only breathe nitrogen."
// -- Outfit datums --
/datum/species/vox/final_equip(var/mob/living/carbon/human/H)
var/tank_slot = slot_s_store
var/tank_slot_name = "suit storage"
if(tank_slot)
H.equip_or_collect(new/obj/item/weapon/tank/nitrogen(H), tank_slot)
else
H.put_in_hands(new/obj/item/weapon/tank/nitrogen(H))
to_chat(H, "<span class='info'>You are now running on nitrogen internals from the [H.s_store] in your [tank_slot_name].</span>")
var/obj/item/weapon/tank/nitrogen/N = H.get_item_by_slot(tank_slot)
if(!N)
N = H.get_item_by_slot(slot_back)
H.internal = N
if (H.internals)
H.internals.icon_state = "internal1"
/datum/species/vox/makeName(var/gender,var/mob/living/carbon/human/H=null)
var/sounds = rand(3,8)
var/newname = ""
for(var/i = 1 to sounds)
newname += pick(vox_name_syllables)
return capitalize(newname)
/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
if(myhuman != H)
return
updatespeciescolor(H)
H.update_icon()
/datum/species/vox/updatespeciescolor(var/mob/living/carbon/human/H)
switch(H.my_appearance.s_tone)
if(6)
icobase = 'icons/mob/human_races/vox/r_voxemrl.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxemrl.dmi'
if(5)
icobase = 'icons/mob/human_races/vox/r_voxazu.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxazu.dmi'
if(4)
icobase = 'icons/mob/human_races/vox/r_voxlgrn.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxlgrn.dmi'
if(3)
icobase = 'icons/mob/human_races/vox/r_voxgry.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxgry.dmi'
if(2)
icobase = 'icons/mob/human_races/vox/r_voxbrn.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxbrn.dmi'
else
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
/datum/species/diona
name = "Diona"
icobase = 'icons/mob/human_races/r_plant.dmi'
@@ -1421,4 +1265,4 @@ var/list/has_died_as_golem = list()
head_organ.droplimb(1,1)
H.drop_all()
qdel(src)
qdel(src)