mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
New lizard sprites and digitigrade limbs final initial pull
This commit is contained in:
@@ -28,13 +28,6 @@
|
||||
if(dna.species)
|
||||
set_species(dna.species.type)
|
||||
|
||||
//initialise limbs
|
||||
if(DIGITIGRADE in dna.species.specflags)
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
if(O.body_zone == "r_leg" || O.body_zone == "l_leg")
|
||||
O.use_digitigrade = TRUE
|
||||
|
||||
//initialise organs
|
||||
create_internal_organs()
|
||||
|
||||
|
||||
@@ -164,11 +164,40 @@
|
||||
|
||||
if(exotic_bloodtype && C.dna.blood_type != exotic_bloodtype)
|
||||
C.dna.blood_type = exotic_bloodtype
|
||||
|
||||
if(("legs" in C.dna.features) && C.dna.features["legs"] == "Digitigrade Legs")
|
||||
specflags += DIGITIGRADE
|
||||
if(DIGITIGRADE in specflags)
|
||||
for(var/X in C.bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
var/obj/item/bodypart/N
|
||||
if(!O.use_digitigrade)
|
||||
if(O.body_zone == "l_leg")
|
||||
N = new /obj/item/bodypart/l_leg/digitigrade
|
||||
else if(O.body_zone == "r_leg")
|
||||
N = new /obj/item/bodypart/r_leg/digitigrade
|
||||
if(!N)
|
||||
continue
|
||||
O.drop_limb(1)
|
||||
qdel(O)
|
||||
N.attach_limb(C)
|
||||
|
||||
/datum/species/proc/on_species_loss(mob/living/carbon/C)
|
||||
if(C.dna.species.exotic_bloodtype)
|
||||
C.dna.blood_type = random_blood_type()
|
||||
if(DIGITIGRADE in specflags)
|
||||
for(var/X in C.bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
var/obj/item/bodypart/N
|
||||
if(O.use_digitigrade)
|
||||
if(O.body_zone == "l_leg")
|
||||
N = new /obj/item/bodypart/l_leg/
|
||||
else if(O.body_zone == "r_leg")
|
||||
N = new /obj/item/bodypart/r_leg/
|
||||
if(!N)
|
||||
continue
|
||||
O.drop_limb(1)
|
||||
qdel(O)
|
||||
N.attach_limb(C)
|
||||
|
||||
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
|
||||
H.remove_overlay(HAIR_LAYER)
|
||||
@@ -258,8 +287,6 @@
|
||||
|
||||
var/list/standing = list()
|
||||
|
||||
handle_mutant_bodyparts(H)
|
||||
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
|
||||
|
||||
if(!(H.disabilities & HUSK))
|
||||
@@ -289,7 +316,7 @@
|
||||
else
|
||||
standing += image("icon"=U2.icon, "icon_state"="[U2.icon_state]_s", "layer"=-BODY_LAYER)
|
||||
|
||||
if(H.socks && H.get_num_legs() >= 2)
|
||||
if(H.socks && H.get_num_legs() >= 2 && !(DIGITIGRADE in specflags))
|
||||
var/datum/sprite_accessory/socks/U3 = socks_list[H.socks]
|
||||
if(U3)
|
||||
standing += image("icon"=U3.icon, "icon_state"="[U3.icon_state]_s", "layer"=-BODY_LAYER)
|
||||
@@ -298,7 +325,7 @@
|
||||
H.overlays_standing[BODY_LAYER] = standing
|
||||
|
||||
H.apply_overlay(BODY_LAYER)
|
||||
|
||||
handle_mutant_bodyparts(H)
|
||||
|
||||
/datum/species/proc/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour)
|
||||
var/list/bodyparts_to_add = mutant_bodyparts.Copy()
|
||||
@@ -371,15 +398,26 @@
|
||||
else if ("wings" in mutant_bodyparts)
|
||||
bodyparts_to_add -= "wings_open"
|
||||
|
||||
/* if("digitigrade" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || (H.w_uniform && (H.w_uniform.body_parts_covered & LEGS)))
|
||||
bodyparts_to_add -= "digitigrade_full"
|
||||
bodyparts_to_add += "digitigrade_hidden"
|
||||
else
|
||||
bodyparts_to_add += "digitigrade_full"
|
||||
bodyparts_to_add -= "digitigrade_hidden"
|
||||
for(var/L in LEGS) //Hide the legs since we're rending special ones
|
||||
L.alpha = 0*/
|
||||
//Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs.
|
||||
var/update_needed = FALSE
|
||||
var/not_digitigrade = TRUE
|
||||
for(var/X in H.bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
if(!O.use_digitigrade)
|
||||
continue
|
||||
not_digitigrade = FALSE
|
||||
if(!(DIGITIGRADE in specflags)) //Someone cut off a digitigrade leg and tacked it on
|
||||
specflags += DIGITIGRADE
|
||||
if(O.use_digitigrade == FULL_DIGITIGRADE && (H.wear_suit && ((H.wear_suit.flags_inv & HIDEJUMPSUIT) || (H.wear_suit.body_parts_covered & LEGS)) || (H.w_uniform && (H.w_uniform.body_parts_covered & LEGS))))
|
||||
O.use_digitigrade = SQUISHED_DIGITIGRADE
|
||||
update_needed = TRUE
|
||||
else if(O.use_digitigrade == SQUISHED_DIGITIGRADE)
|
||||
O.use_digitigrade = FULL_DIGITIGRADE
|
||||
update_needed = TRUE
|
||||
if(update_needed)
|
||||
H.update_body_parts()
|
||||
if(not_digitigrade && (DIGITIGRADE in specflags)) //Curse is lifted
|
||||
specflags -= DIGITIGRADE
|
||||
|
||||
if(!bodyparts_to_add)
|
||||
return
|
||||
@@ -420,6 +458,8 @@
|
||||
S = wings_list[H.dna.features["wings"]]
|
||||
if("wingsopen")
|
||||
S = wings_open_list[H.dna.features["wings"]]
|
||||
if("legs")
|
||||
S = legs_list[H.dna.features["legs"]]
|
||||
|
||||
if(!S || S.icon_state == "none")
|
||||
continue
|
||||
@@ -561,6 +601,10 @@
|
||||
return 0
|
||||
if(num_legs < 2)
|
||||
return 0
|
||||
if(DIGITIGRADE in specflags)
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>The footwear around here isn't compatible with your feet!</span>"
|
||||
return 0
|
||||
return 1
|
||||
if(slot_belt)
|
||||
if(H.belt)
|
||||
@@ -687,6 +731,7 @@
|
||||
return
|
||||
|
||||
/datum/species/proc/after_equip_job(datum/job/J, mob/living/carbon/human/H)
|
||||
H.update_mutant_bodyparts()
|
||||
return
|
||||
|
||||
/datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
|
||||
@@ -54,9 +54,9 @@
|
||||
say_mod = "hisses"
|
||||
default_color = "00FF00"
|
||||
specflags = list(MUTCOLORS,EYECOLOR,LIPS)
|
||||
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings")
|
||||
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings", "legs")
|
||||
mutant_organs = list(/obj/item/organ/tongue/lizard)
|
||||
default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None")
|
||||
default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs")
|
||||
attack_verb = "slash"
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
@@ -86,7 +86,7 @@
|
||||
/datum/species/lizard/ashwalker
|
||||
name = "Ash Walker"
|
||||
id = "lizard"
|
||||
specflags = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,PIERCEIMMUNE,DIGITIGRADE)
|
||||
specflags = list(MUTCOLORS,EYECOLOR,LIPS,NOBREATH,NOGUNS,DIGITIGRADE)
|
||||
/*
|
||||
PODPEOPLE
|
||||
*/
|
||||
@@ -893,6 +893,33 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/species/android
|
||||
name = "Android"
|
||||
id = "android"
|
||||
say_mod = "states"
|
||||
specflags = list(NOBREATH,RESISTTEMP,NOBLOOD,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER,EASYLIMBATTACHMENT)
|
||||
safe_oxygen_min = 0
|
||||
safe_toxins_min = 0
|
||||
safe_toxins_max = 0
|
||||
safe_co2_max = 0
|
||||
SA_para_min = 0
|
||||
SA_sleep_min = 0
|
||||
meat = null
|
||||
damage_overlay_type = "synth"
|
||||
limbs_id = "synth"
|
||||
|
||||
/datum/species/android/on_species_gain(mob/living/carbon/C)
|
||||
. = ..()
|
||||
for(var/X in C.bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
O.change_bodypart_status(BODYPART_ROBOTIC)
|
||||
|
||||
/datum/species/android/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
for(var/X in C.bodyparts)
|
||||
var/obj/item/bodypart/O = X
|
||||
O.change_bodypart_status(BODYPART_ORGANIC)
|
||||
|
||||
/*
|
||||
SYNDICATE BLACK OPS
|
||||
*/
|
||||
|
||||
@@ -117,8 +117,10 @@ There are several things that need to be remembered:
|
||||
var/t_color = U.item_color
|
||||
if(!t_color)
|
||||
t_color = U.icon_state
|
||||
if(U.adjusted)
|
||||
if(U.adjusted == ALT_STYLE)
|
||||
t_color = "[t_color]_d"
|
||||
else if(U.adjusted == DIGITIGRADE_STYLE)
|
||||
t_color = "[t_color]_l"
|
||||
|
||||
var/image/standing
|
||||
|
||||
@@ -138,6 +140,7 @@ There are several things that need to be remembered:
|
||||
unEquip(thing)
|
||||
|
||||
apply_overlay(UNIFORM_LAYER)
|
||||
update_mutant_bodyparts()
|
||||
|
||||
|
||||
/mob/living/carbon/human/update_inv_wear_id()
|
||||
@@ -537,13 +540,14 @@ generate/load female uniform sprites matching all previously decided variables
|
||||
. += "-organic"
|
||||
else
|
||||
. += "-robotic"
|
||||
if(BP.use_digitigrade)
|
||||
. += "-digitigrade[BP.use_digitigrade]"
|
||||
|
||||
if(disabilities & HUSK)
|
||||
. += "-husk"
|
||||
|
||||
/mob/living/carbon/human/load_limb_from_cache()
|
||||
..()
|
||||
update_mutant_bodyparts()
|
||||
update_hair()
|
||||
|
||||
|
||||
|
||||
@@ -263,6 +263,8 @@ var/global/list/limb_icon_cache = list()
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/bodypart/BP = X
|
||||
. += "-[BP.body_zone]"
|
||||
if(BP.use_digitigrade)
|
||||
. += "-digitigrade[BP.use_digitigrade]"
|
||||
if(BP.animal_origin)
|
||||
. += "-[BP.animal_origin]"
|
||||
if(BP.status == BODYPART_ORGANIC)
|
||||
|
||||
@@ -1365,13 +1365,11 @@
|
||||
name = "Aquatic"
|
||||
icon_state = "aqua"
|
||||
|
||||
/datum/sprite_accessory/legs
|
||||
icon = 'icons/mob/mutant_bodyparts.dmi'
|
||||
/datum/sprite_accessory/legs //legs are a special case, they aren't actually sprite_accessories but are updated with them.
|
||||
icon = null //These datums exist for selecting legs on preference, and little else
|
||||
|
||||
/datum/sprite_accessory/legs/none
|
||||
name = "Normal Legs"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/legs/digitigrade_lizard
|
||||
name = "Digitigrade Legs"
|
||||
icon_state = "digitigrade_lizard"
|
||||
|
||||
Reference in New Issue
Block a user