New lizard sprites and digitigrade limbs final initial pull

This commit is contained in:
Incoming
2016-09-19 23:09:50 -04:00
parent 68ada71758
commit b5d92f7a66
19 changed files with 172 additions and 46 deletions
@@ -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()
+59 -14
View File
@@ -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"