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

This reverts commit 7acb15a192.
This commit is contained in:
github-user208604
2024-02-24 13:35:57 +00:00
committed by GitHub
parent fce8b8ee19
commit 0e168d97ce
31 changed files with 245 additions and 314 deletions

View File

@@ -16,8 +16,3 @@
#define COLOR_GLUE "#FFFFCC"
#define COLOR_BEESWAX "#FFB700"
#define COLOR_DEFAULT_CANDLE "#BE0000"
#define COLOR_RED "#FF0000"
#define COLOR_GREEN "#00FF00"
#define COLOR_BLUE "#0000FF"
#define COLOR_MATRIX_ADD(color) list(COLOR_RED, COLOR_GREEN, COLOR_BLUE, color)

View File

@@ -326,7 +326,6 @@ var/MAX_EXPLOSION_RANGE = 32
#define ARM_RIGHT 256
#define HAND_LEFT 512
#define HAND_RIGHT 1024
#define TAIL 524288
// bitflags for clothing parts
@@ -353,7 +352,6 @@ var/MAX_EXPLOSION_RANGE = 32
#define HIDEEARS EARS
#define HIDEEYES EYES
#define HIDEFACE FACE
#define HIDETAIL TAIL
#define HIDEHEADHAIR 65536
#define MASKHEADHAIR 131072
#define HIDEBEARDHAIR BEARD
@@ -1008,8 +1006,6 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
#define ACID4WATER 4096 //Acid now acts like water, and vice versa.
#define NO_BALD 8192 //cannot lose hair through being shaved/radiation/etc
#define RGBSKINTONE 16384
#define HAS_ICON_SKIN_TONE 32768
#define TAIL_OVERLAPPED 65536
var/default_colour_matrix = list(1,0,0,0,\
0,1,0,0,\
@@ -1256,31 +1252,29 @@ var/default_colour_matrix = list(1,0,0,0,\
//Human Overlays Indexes/////////THIS DEFINES WHAT LAYERS APPEARS ON TOP OF OTHERS
#define FIRE_LAYER 1 //If you're on fire (/tg/ shit)
#define MUTANTRACE_LAYER 2 //TODO: make part of body?
#define TAIL_UNDERLIMBS_LAYER 3
#define LIMBS_LAYER 4
#define MUTATIONS_LAYER 5
#define DAMAGE_LAYER 6
#define UNIFORM_LAYER 7
#define SHOES_LAYER 8
#define GLOVES_LAYER 9
#define EARS_LAYER 10
#define SUIT_LAYER 11
#define GLASSES_LAYER 12
#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 14
#define HAIR_LAYER 15 //TODO: make part of head layer?
#define GLASSES_OVER_HAIR_LAYER 16
#define TAIL_LAYER 17
#define FACEMASK_LAYER 18
#define HEAD_LAYER 19
#define BACK_LAYER 20 //Back should be above head so that headgear doesn't hides backpack when facing north
#define ID_LAYER 21 //IDs should be visible above suits and backpacks
#define HANDCUFF_LAYER 22
#define MUTUALCUFF_LAYER 23
#define LEGCUFF_LAYER 24
#define HAND_LAYER 25
#define TARGETED_LAYER 26 //BS12: Layer for the target overlay from weapon targeting system
#define TOTAL_LAYERS 26
#define MUTATIONS_LAYER 3
#define DAMAGE_LAYER 4
#define UNIFORM_LAYER 5
#define SHOES_LAYER 6
#define GLOVES_LAYER 7
#define EARS_LAYER 8
#define SUIT_LAYER 9
#define GLASSES_LAYER 10
#define BELT_LAYER 11 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 12
#define HAIR_LAYER 13 //TODO: make part of head layer?
#define GLASSES_OVER_HAIR_LAYER 14
#define FACEMASK_LAYER 15
#define HEAD_LAYER 16
#define BACK_LAYER 17 //Back should be above head so that headgear doesn't hides backpack when facing north
#define ID_LAYER 18 //IDs should be visible above suits and backpacks
#define HANDCUFF_LAYER 19
#define MUTUALCUFF_LAYER 20
#define LEGCUFF_LAYER 21
#define HAND_LAYER 22
#define TAIL_LAYER 23 //bs12 specific. this hack is probably gonna come back to haunt me
#define TARGETED_LAYER 24 //BS12: Layer for the target overlay from weapon targeting system
#define TOTAL_LAYERS 24
//////////////////////////////////
//Snake stuff so leaderboard can see it too

View File

@@ -1,31 +0,0 @@
// Mutable appearances are an inbuilt byond datastructure. Read the documentation on them by hitting F1 in DM.
// Basically use them instead of images for overlays/underlays and when changing an object's appearance if you're doing so with any regularity.
// Unless you need the overlay/underlay to have a different direction than the base object. Then you have to use an image due to a bug.
// Mutable appearances are children of images, just so you know.
// Mutable appearances erase template vars on new, because they accept an appearance to copy as an arg
// If we have nothin to copy, we set the float plane
/mutable_appearance/New(mutable_appearance/to_copy)
..()
if(!to_copy)
plane = FLOAT_PLANE
/** Helper similar to image()
*
* icon - Our appearance's icon
* icon_state - Our appearance's icon state
* layer - Our appearance's layer
* plane - The plane to use for the appearance.
* alpha - Our appearance's alpha
* appearance_flags - Our appearance's appearance_flags
**/
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE, alpha = 255, appearance_flags = NONE)
var/mutable_appearance/appearance = new()
appearance.icon = icon
appearance.icon_state = icon_state
appearance.layer = layer
appearance.plane = plane
appearance.alpha = alpha
appearance.appearance_flags |= appearance_flags
return appearance

View File

@@ -1027,7 +1027,7 @@ var/global/maxStackDepth = 10
permeability_coefficient = 0.02
flags = FPRINT
pressure_resistance = 5 * ONE_ATMOSPHERE
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS|TAIL
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/)
slowdown = HARDSUIT_SLOWDOWN_BULKY
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)

View File

@@ -54,7 +54,7 @@
permeability_coefficient = 0.02
clothing_flags = ONESIZEFITSALL
pressure_resistance = 200 * ONE_ATMOSPHERE
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|TAIL
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET
allowed = list(/obj/item/weapon/tank, /obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_storage, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_nitrogen)
slowdown = HARDSUIT_SLOWDOWN_HIGH
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)

View File

@@ -25,7 +25,7 @@
permeability_coefficient = 0.01
flags = FPRINT
clothing_flags = PLASMAGUARD
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS|TAIL
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS
slowdown = HARDSUIT_SLOWDOWN_LOW
allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_nitrogen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)

View File

@@ -487,7 +487,7 @@ var/list/tag_suits_list = list()
icon_state = "strait_jacket"
item_state = "strait_jacket"
origin_tech = Tc_BIOTECH + "=2"
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS|TAIL
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS
species_fit = list(INSECT_SHAPED)
/obj/item/clothing/suit/ianshirt

View File

@@ -18,7 +18,7 @@
w_class = W_CLASS_LARGE//bulky item
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS|TAIL
body_parts_covered = ARMS|LEGS|FULL_TORSO|FEET|HANDS
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_nitrogen,/obj/item/weapon/extinguisher,/obj/item/tool/irons,/obj/item/tool/crowbar/halligan)
slowdown = HARDSUIT_SLOWDOWN_LOW
clothing_flags = ONESIZEFITSALL
@@ -85,7 +85,6 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
flags = FPRINT
body_parts_covered = ARMS|LEGS|FULL_TORSO|TAIL
slowdown = HARDSUIT_SLOWDOWN_HIGH
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -158,7 +157,7 @@
w_class = W_CLASS_LARGE//bulky item
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_parts_covered = FULL_BODY|TAIL
body_parts_covered = FULL_BODY
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_nitrogen)
slowdown = 1.5
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)

View File

@@ -344,4 +344,4 @@
H.apply_damage(50, BRUTE, A)
A.fracture()
emote_type = EMOTE_VISIBLE
. = ..()
. = ..()

View File

@@ -167,8 +167,6 @@
obj_overlays[FIRE_LAYER] = new /obj/abstract/Overlays/fire_layer
obj_overlays[MUTANTRACE_LAYER] = new /obj/abstract/Overlays/mutantrace_layer
obj_overlays[TAIL_UNDERLIMBS_LAYER] = new /obj/abstract/Overlays/tail_underlimbs_layer
obj_overlays[LIMBS_LAYER] = new /obj/abstract/Overlays/limbs_layer
obj_overlays[MUTATIONS_LAYER] = new /obj/abstract/Overlays/mutations_layer
obj_overlays[DAMAGE_LAYER] = new /obj/abstract/Overlays/damage_layer
obj_overlays[UNIFORM_LAYER] = new /obj/abstract/Overlays/uniform_layer
@@ -183,13 +181,13 @@
obj_overlays[BACK_LAYER] = new /obj/abstract/Overlays/back_layer
obj_overlays[HAIR_LAYER] = new /obj/abstract/Overlays/hair_layer
obj_overlays[GLASSES_OVER_HAIR_LAYER] = new /obj/abstract/Overlays/glasses_over_hair_layer
obj_overlays[TAIL_LAYER] = new /obj/abstract/Overlays/tail_layer
obj_overlays[FACEMASK_LAYER] = new /obj/abstract/Overlays/facemask_layer
obj_overlays[HEAD_LAYER] = new /obj/abstract/Overlays/head_layer
obj_overlays[HANDCUFF_LAYER] = new /obj/abstract/Overlays/handcuff_layer
obj_overlays[MUTUALCUFF_LAYER] = new /obj/abstract/Overlays/mutualcuff_layer
obj_overlays[LEGCUFF_LAYER] = new /obj/abstract/Overlays/legcuff_layer
//obj_overlays[HAND_LAYER] = new /obj/abstract/Overlays/hand_layer
obj_overlays[TAIL_LAYER] = new /obj/abstract/Overlays/tail_layer
obj_overlays[TARGETED_LAYER] = new /obj/abstract/Overlays/targeted_layer
..()
@@ -1268,8 +1266,6 @@
src.species = new S.type
src.species.myhuman = src
tail = S.tail
if(S.gender)
gender = S.gender
else if (gender == "neuter") // when going back from an non-gendered species to a gendered one, you'll get assigned randomly

View File

@@ -77,7 +77,7 @@
fire_dmi = 'icons/mob/OnFire.dmi'
fire_sprite = "Standing"
plane = HUMAN_PLANE
var/tail // Name of tail image in species effects icon file.
var/show_client_status_on_examine = TRUE //If false, don't display catatonic/braindead messages to non-admins
var/become_zombie = FALSE

View File

@@ -1,165 +0,0 @@
/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 | HAS_ICON_SKIN_TONE | HAS_TAIL | TAIL_OVERLAPPED
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
tail = "green"
tail_icon = 'icons/mob/human_races/vox/tails.dmi'
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/handle_death(mob/living/carbon/human/vox, gibbed = FALSE)
vox.update_tail_layer()
/datum/species/vox/updatespeciescolor(mob/living/carbon/human/vox)
switch(vox.my_appearance.s_tone)
if(VOXEMERALD)
icobase = 'icons/mob/human_races/vox/r_voxemrl.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxemrl.dmi'
vox.tail = "emerald"
if(VOXAZURE)
icobase = 'icons/mob/human_races/vox/r_voxazu.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxazu.dmi'
vox.tail = "azure"
if(VOXLGREEN)
icobase = 'icons/mob/human_races/vox/r_voxlgrn.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxlgrn.dmi'
vox.tail = "lightgreen"
if(VOXGRAY)
icobase = 'icons/mob/human_races/vox/r_voxgry.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxgry.dmi'
vox.tail = "grey"
if(VOXBROWN)
icobase = 'icons/mob/human_races/vox/r_voxbrn.dmi'
deform = 'icons/mob/human_races/vox/r_def_voxbrn.dmi'
vox.tail = "brown"
else
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
deform = 'icons/mob/human_races/vox/r_def_vox.dmi'
vox.tail = "green"
/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)

View File

@@ -194,8 +194,7 @@ var/global/list/damage_icon_parts = list()
var/g = "m"
if(gender == FEMALE)
g = "f"
if(species && species.anatomy_flags & HAS_ICON_SKIN_TONE)
species.updatespeciescolor(src)
var/datum/organ/external/chest = get_organ(LIMB_CHEST)
stand_icon = chest.get_icon(g,fat)
if(!skeleton)
@@ -270,14 +269,7 @@ var/global/list/damage_icon_parts = list()
mask.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,1, 0,0,0,0)
husk_over.Blend(mask, ICON_ADD)
stand_icon.Blend(husk_over, ICON_OVERLAY)
if(tail && (species.anatomy_flags & TAIL_OVERLAPPED))
var/obj/abstract/Overlays/limbs_overlay = obj_overlays[LIMBS_LAYER]
var/mutable_appearance/stand_icon_image = mutable_appearance(stand_icon)
limbs_overlay.icon = stand_icon_image.icon
limbs_overlay.icon_state = stand_icon_image.icon_state
obj_to_plane_overlay(limbs_overlay, LIMBS_LAYER)
else
overlays -= obj_overlays[LIMBS_LAYER]
if(has_head)
//Eyes
if(!skeleton)
@@ -315,7 +307,7 @@ var/global/list/damage_icon_parts = list()
stand_icon -= rgb(0,0,0,lowest_alpha)
//tail
update_tail_layer(FALSE)
update_tail_showing(0)
//HAIR OVERLAY
@@ -531,7 +523,6 @@ var/global/list/damage_icon_parts = list()
update_inv_mutual_handcuffed(0)
update_inv_legcuffed(0)
update_inv_pockets(0)
update_tail_layer()
QueueUpdateDamageIcon(1)
update_icons()
//Hud Stuff
@@ -1307,7 +1298,10 @@ var/global/list/damage_icon_parts = list()
O.pixel_y = species.inventory_offsets["[slot_wear_suit]"]["pixel_y"] * PIXEL_MULTIPLIER
obj_to_plane_overlay(O,SUIT_LAYER)
//overlays_standing[SUIT_LAYER] = standing
update_tail_layer()
update_tail_showing(0)
else
//overlays_standing[SUIT_LAYER] = null
update_tail_showing(0)
if(update_icons)
update_icons()
@@ -1553,31 +1547,22 @@ var/global/list/damage_icon_parts = list()
/mob/living/carbon/human/update_inv_l_hand(var/update_icons=1)
return update_inv_hand(GRASP_LEFT_HAND, update_icons)
/mob/living/carbon/human/proc/update_tail_layer(update_icons = TRUE)
overlays -= obj_overlays[TAIL_UNDERLIMBS_LAYER]
/mob/living/carbon/human/proc/update_tail_showing(var/update_icons=1)
//overlays_standing[TAIL_LAYER] = null
overlays -= obj_overlays[TAIL_LAYER]
if(!(tail && species.anatomy_flags & HAS_TAIL))
return
if(wear_suit || check_hidden_body_flags(HIDETAIL))
return
var/tail_file = species.tail_icon
var/tail_icon_state = "[tail]"
var/mutable_appearance/tail_image = mutable_appearance(tail_file, tail_icon_state, layer = -TAIL_LAYER)
if(species.anatomy_flags & MULTICOLOR)
tail_image.color = COLOR_MATRIX_ADD(rgb(multicolor_skin_r, multicolor_skin_g, multicolor_skin_b))
if(tail && species.anatomy_flags & TAIL_OVERLAPPED) // Tail is overlapped by limbs, so we need special tail icon generation
// Gives the underlimbs layer SEW directions since it's overlayed by limbs and just about everything else anyway.
var/mutable_appearance/tail_underlimbs = mutable_appearance(tail_file, "[tail_icon_state]_BEHIND", -TAIL_UNDERLIMBS_LAYER)
var/obj/abstract/Overlays/underlimbs_overlay = obj_overlays[TAIL_UNDERLIMBS_LAYER]
underlimbs_overlay.icon = tail_underlimbs.icon
underlimbs_overlay.icon_state = tail_underlimbs.icon_state
obj_to_plane_overlay(underlimbs_overlay, TAIL_UNDERLIMBS_LAYER)
// North direction sprite before passing that to the tail layer that overlays uniforms and such.
tail_image.icon_state = "[tail_icon_state]_FRONT"
var/obj/abstract/Overlays/tail_overlay = obj_overlays[TAIL_LAYER]
tail_overlay.icon = tail_image.icon
tail_overlay.icon_state = tail_image.icon_state
obj_to_plane_overlay(tail_overlay, TAIL_LAYER)
if(species && species.tail && species.anatomy_flags & HAS_TAIL)
if(!wear_suit || !is_slot_hidden(wear_suit.body_parts_covered, HIDEJUMPSUIT, 0, wear_suit.body_parts_visible_override))
var/obj/abstract/Overlays/O = obj_overlays[TAIL_LAYER]
O.icon = 'icons/effects/species.dmi'
O.icon_state = "[species.tail]_s"
obj_to_plane_overlay(O,TAIL_LAYER)
//if(!old_tail_state) //only update if we didnt show our tail already
//overlays_standing[TAIL_LAYER] = image("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
// to_chat(src, "update: tail is different")
//else
//overlays_standing[TAIL_LAYER] = null
if(update_icons)
update_icons()

View File

@@ -42,8 +42,7 @@ 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 icon state
var/tail_icon = 'icons/effects/species.dmi'
var/tail // Name of tail image in species effects icon file.
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.
@@ -468,6 +467,55 @@ 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'
@@ -562,7 +610,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 | HAS_ICON_SKIN_TONE
anatomy_flags = HAS_LIPS | HAS_SWEAT_GLANDS | ACID4WATER
spells = list(/spell/targeted/telepathy)
@@ -688,6 +736,114 @@ 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'
@@ -1265,4 +1421,4 @@ var/list/has_died_as_golem = list()
head_organ.droplimb(1,1)
H.drop_all()
qdel(src)
qdel(src)

View File

@@ -169,18 +169,33 @@
var/icon/icobase
var/datum/species/current_species = all_species[species]
var/tail
//icon based species color
if(current_species)
if(current_species.anatomy_flags & HAS_ICON_SKIN_TONE)
var/mob/living/carbon/human/temp_human = new
temp_human.species = current_species
temp_human.my_appearance.s_tone = s_tone
temp_human.species.updatespeciescolor(temp_human) //The mob's species wasn't set, so it's almost certainly different than the character's species at the moment. Thus, we need to be owner-insensitive.
icobase = temp_human.species.icobase
tail = temp_human.tail
qdel(temp_human)
if(current_species.name == "Vox")
switch(s_tone)
if(6)
icobase = 'icons/mob/human_races/vox/r_voxemrl.dmi'
if(5)
icobase = 'icons/mob/human_races/vox/r_voxazu.dmi'
if(4)
icobase = 'icons/mob/human_races/vox/r_voxlgrn.dmi'
if(3)
icobase = 'icons/mob/human_races/vox/r_voxgry.dmi'
if(2)
icobase = 'icons/mob/human_races/vox/r_voxbrn.dmi'
else
icobase = 'icons/mob/human_races/vox/r_vox.dmi'
else if(current_species.name == "Grey")
switch(s_tone)
if(4)
icobase = 'icons/mob/human_races/grey/r_greyblue.dmi'
if(3)
icobase = 'icons/mob/human_races/grey/r_greygreen.dmi'
if(2)
icobase = 'icons/mob/human_races/grey/r_greylight.dmi'
else
icobase = 'icons/mob/human_races/grey/r_grey.dmi'
else
icobase = current_species.icobase
else
@@ -215,10 +230,7 @@
var/icon/temp = new /icon(o_icobase, "[name]")
preview_icon.Blend(temp, ICON_OVERLAY)
//Tail
if(current_species && (current_species.anatomy_flags & HAS_TAIL))
var/icon/temp_tail = icon(current_species.tail_icon, "[tail || current_species.tail]_BEHIND")
preview_icon.Blend(temp_tail, ICON_OVERLAY)
// Skin tone
if(current_species && (current_species.anatomy_flags & HAS_SKIN_TONE))
if (s_tone >= 0)

View File

@@ -9,12 +9,6 @@
/obj/abstract/Overlays/mutantrace_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - MUTANTRACE_LAYER)
/obj/abstract/Overlays/tail_underlimbs_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - TAIL_UNDERLIMBS_LAYER)
/obj/abstract/Overlays/limbs_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - LIMBS_LAYER)
/obj/abstract/Overlays/mutations_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - MUTATIONS_LAYER)
@@ -51,9 +45,6 @@
/obj/abstract/Overlays/glasses_over_hair_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - GLASSES_OVER_HAIR_LAYER)
/obj/abstract/Overlays/tail_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - TAIL_LAYER)
/obj/abstract/Overlays/facemask_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - FACEMASK_LAYER)
@@ -78,6 +69,9 @@
/obj/abstract/Overlays/hand_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - HAND_LAYER)
/obj/abstract/Overlays/tail_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - TAIL_LAYER)
/obj/abstract/Overlays/targeted_layer
layer = FLOAT_LAYER - (TOTAL_LAYERS - TARGETED_LAYER)
@@ -90,8 +84,6 @@
/*
var/obj/abstract/Overlays/fire_layer/fire_layer = new
var/obj/abstract/Overlays/mutantrace_layer/mutantrace_layer = new
var/obj/abstract/Overlays/tail_underlimbs_layer/tail_underlimbs_layer = new
var/obj/abstract/Overlays/limbs_layer/limbs_layer = new
var/obj/abstract/Overlays/mutations_layer/mutations_layer = new
var/obj/abstract/Overlays/damage_layer/damage_layer = new
var/obj/abstract/Overlays/uniform_layer/uniform_layer = new
@@ -106,12 +98,12 @@
var/obj/abstract/Overlays/back_layer/back_layer = new
var/obj/abstract/Overlays/hair_layer/hair_layer = new
var/obj/abstract/Overlays/glasses_over_hair_layer/glasses_over_hair_layer = new
var/obj/abstract/Overlays/tail_layer/tail_layer = new
var/obj/abstract/Overlays/facemask_layer/facemask_layer = new
var/obj/abstract/Overlays/head_layer/head_layer = new
var/obj/abstract/Overlays/handcuff_layer/handcuff_layer = new
var/obj/abstract/Overlays/legcuff_layer/legcuff_layer = new
var/obj/abstract/Overlays/l_hand_layer/l_hand_layer = new
var/obj/abstract/Overlays/r_hand_layer/r_hand_layer = new
var/obj/abstract/Overlays/tail_layer/tail_layer = new
var/obj/abstract/Overlays/targeted_layer/targeted_layer = new
*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

View File

@@ -296,7 +296,6 @@
#include "code\datums\mind.dm"
#include "code\datums\mixed.dm"
#include "code\datums\modules.dm"
#include "code\datums\mutable_appearance.dm"
#include "code\datums\next_map.dm"
#include "code\datums\periodic_news.dm"
#include "code\datums\profiling.dm"
@@ -990,6 +989,7 @@
#include "code\game\objects\items\devices\inhaler.dm"
#include "code\game\objects\items\devices\instruments.dm"
#include "code\game\objects\items\devices\ioncannon_remote.dm"
#include "code\game\objects\items\devices\radstorm_remote.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\maracas.dm"
#include "code\game\objects\items\devices\mat_synth.dm"
@@ -1001,7 +1001,6 @@
#include "code\game\objects\items\devices\pcmc.dm"
#include "code\game\objects\items\devices\pipe_painter.dm"
#include "code\game\objects\items\devices\powersink.dm"
#include "code\game\objects\items\devices\radstorm_remote.dm"
#include "code\game\objects\items\devices\reportintercom.dm"
#include "code\game\objects\items\devices\rigbuilding.dm"
#include "code\game\objects\items\devices\roganbot.dm"
@@ -1986,8 +1985,7 @@
#include "code\modules\mob\living\carbon\human\life\handle_statis_bag.dm"
#include "code\modules\mob\living\carbon\human\life\handle_stomach.dm"
#include "code\modules\mob\living\carbon\human\life\life_helpers.dm"
#include "code\modules\mob\living\carbon\human\species\plasmaman.dm"
#include "code\modules\mob\living\carbon\human\species\vox.dm"
#include "code\modules\mob\living\carbon\human\plasmaman\species.dm"
#include "code\modules\mob\living\carbon\monkey\combat.dm"
#include "code\modules\mob\living\carbon\monkey\death.dm"
#include "code\modules\mob\living\carbon\monkey\diona.dm"