Finally got colored blood working properly

This commit is contained in:
ZomgPonies
2015-03-03 13:45:46 -05:00
parent efcbfebf99
commit 8a575700b9
35 changed files with 565 additions and 614 deletions
@@ -20,12 +20,12 @@
if(prob(100 - E.get_damage()))
// Override the current limb status and don't cause an explosion
E.droplimb(1,1)
if(!(species.flags & IS_SYNTHETIC))
flick("gibbed-h", animation)
hgibs(loc, viruses, dna)
else
new /obj/effect/decal/cleanable/robot_debris(src.loc)
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
@@ -115,7 +115,7 @@
if(ticker && ticker.mode)
if(istype(ticker.mode,/datum/game_mode/heist))
vox_kills++ //Bad vox. Shouldn't be killing humans.
if(ishuman(LAssailant))
var/mob/living/carbon/human/H=LAssailant
if(H.mind)
@@ -1254,16 +1254,15 @@
if(blood_DNA[M.dna.unique_enzymes])
return 0 //already bloodied with this blood. Cannot add more.
blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
if(M.species.bloodflags & BLOOD_GREEN)
src.update_inv_gloves(1,1) //handles bloody hands overlays and updating
else
src.update_inv_gloves(1,0)
hand_blood_color = blood_color
src.update_inv_gloves()
verbs += /mob/living/carbon/human/proc/bloody_doodle
return 1 //we applied blood to the item
/mob/living/carbon/human/clean_blood(var/clean_feet)
.=..()
if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len)
feet_blood_color = null
del(feet_blood_DNA)
update_inv_shoes(1)
return 1
@@ -50,9 +50,9 @@
var/icon/stand_icon = null
var/icon/lying_icon = null
var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life()
var/speech_problem_flag = 0
var/miming = null //Toggle for the mime's abilities.
@@ -64,6 +64,8 @@
var/last_dam = -1 //Used for determining if we need to process all organs or just some or even none.
var/list/bad_external_organs = list()// organs we check until they are good.
var/hand_blood_color
var/xylophone = 0 //For the spoooooooky xylophone cooldown
var/mob/remoteview_target = null
@@ -610,10 +610,9 @@ proc/get_damage_icon_part(damage_state, body_part)
standing.icon = w_uniform.sprite_sheets[species.name]
if(w_uniform.blood_DNA)
if(green==1)
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "xuniformblood")
else
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "uniformblood")
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "uniformblood")
bloodsies.color = w_uniform.blood_color
standing.overlays += bloodsies
if(w_uniform:accessories.len) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE.
for(var/obj/item/clothing/accessory/A in w_uniform:accessories)
@@ -666,18 +665,16 @@ proc/get_damage_icon_part(damage_state, body_part)
standing = image("icon" = 'icons/mob/hands.dmi', "icon_state" = "[t_state]")
if(gloves.blood_DNA)
if(green==1)
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "xbloodyhands")
else
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "bloodyhands")
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "bloodyhands")
bloodsies.color = gloves.blood_color
standing.overlays += bloodsies
gloves.screen_loc = ui_gloves
overlays_standing[GLOVES_LAYER] = standing
else
if(blood_DNA)
if (green)
overlays_standing[GLOVES_LAYER] = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "xbloodyhands")
else
overlays_standing[GLOVES_LAYER] = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "bloodyhands")
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "bloodyhands")
bloodsies.color = hand_blood_color
overlays_standing[GLOVES_LAYER] = bloodsies
else
overlays_standing[GLOVES_LAYER] = null
if(update_icons) update_icons()
@@ -738,14 +735,19 @@ proc/get_damage_icon_part(damage_state, body_part)
else
standing = image("icon" = 'icons/mob/feet.dmi', "icon_state" = "[shoes.icon_state]")
if(shoes.blood_DNA)
if(green==1)
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "xshoeblood")
else
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "shoeblood")
overlays_standing[SHOES_LAYER] = standing
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "shoeblood")
bloodsies.color = shoes.blood_color
standing.overlays += bloodsies
overlays_standing[SHOES_LAYER] = standing
else
overlays_standing[SHOES_LAYER] = null
if(feet_blood_DNA)
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "shoeblood")
bloodsies.color = feet_blood_color
overlays_standing[SHOES_LAYER] = bloodsies
else
overlays_standing[SHOES_LAYER] = null
if(update_icons) update_icons()
/mob/living/carbon/human/update_inv_s_store(var/update_icons=1)
@@ -778,10 +780,9 @@ proc/get_damage_icon_part(damage_state, body_part)
standing = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]")
if(head.blood_DNA)
if(green==1)
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "xhelmetblood")
else
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "helmetblood")
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "helmetblood")
bloodsies.color = head.blood_color
standing.overlays += bloodsies
overlays_standing[HEAD_LAYER] = standing
@@ -831,19 +832,12 @@ proc/get_damage_icon_part(damage_state, body_part)
drop_l_hand()
drop_r_hand()
if(wear_suit.blood_DNA)
var/t_state
if( istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/wcoat) )
t_state = "armor"
else if( istype(wear_suit, /obj/item/clothing/suit/storage/det_suit || /obj/item/clothing/suit/storage/labcoat) )
t_state = "coat"
else
t_state = "suit"
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[t_state]blood")
if(wear_suit.blood_DNA)
var/obj/item/clothing/suit/S = wear_suit
standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[S.blood_overlay_type]blood")
if(wear_suit.blood_DNA)
var/obj/item/clothing/suit/S = wear_suit
var/image/bloodsies = image("icon" = 'icons/effects/blood.dmi', "icon_state" = "[S.blood_overlay_type]blood")
bloodsies.color = wear_suit.blood_color
standing.overlays += bloodsies
overlays_standing[SUIT_LAYER] = standing
+18 -17
View File
@@ -57,7 +57,7 @@
//Used in icon caching.
var/race_key = 0
var/icon/icon_template
// Language/culture vars.
var/default_language = "Galactic Common" // Default language is used when 'say' is used without modifiers.
var/language = "Galactic Common" // Default racial language, if any.
@@ -71,7 +71,7 @@
/datum/species/proc/get_random_name(var/gender)
var/datum/language/species_language = all_languages[language]
return species_language.get_random_name(gender)
/datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs.
//This is a basic humanoid limb setup.
H.organs = list()
@@ -255,7 +255,7 @@
/datum/species/proc/handle_post_spawn(var/mob/living/carbon/C) //Handles anything not already covered by basic species assignment.
handle_dna(C)
return
/datum/species/proc/handle_dna(var/mob/living/carbon/C, var/remove) //Handles DNA mutations, as that doesn't work at init.
return
@@ -273,7 +273,7 @@
/datum/species/proc/equip(var/mob/living/carbon/human/H)
return
/datum/species/proc/can_understand(var/mob/other)
return
@@ -303,7 +303,7 @@
unarmed_type = /datum/unarmed_attack/claws
primitive = /mob/living/carbon/monkey/unathi
darksight = 3
blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \
Uuosa-Eso system, which roughly translates to 'burning mother'.<br/><br/>Coming from a harsh, radioactive \
desert planet, they mostly hold ideals of honesty, virtue, martial combat and bravery above all \
@@ -336,7 +336,7 @@
tail = "tajtail"
unarmed_type = /datum/unarmed_attack/claws
darksight = 8
blurb = "The Tajaran race is a species of feline-like bipeds hailing from the planet of Ahdomai in the \
S'randarr system. They have been brought up into the space age by the Humans and Skrell, and have been \
influenced heavily by their long history of Slavemaster rule. They have a structured, clan-influenced way \
@@ -372,7 +372,7 @@
language = "Skrellian"
primitive = /mob/living/carbon/monkey/skrell
unarmed_type = /datum/unarmed_attack/punch
blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \
the royals' or 'Light of the Crown'.<br/><br/>Skrell are a highly advanced and logical race who live under the rule \
of the Qerr'Katish, a caste within their society which keeps the empire of the Skrell running smoothly. Skrell are \
@@ -384,7 +384,7 @@
bodyflags = HAS_SKIN_COLOR
flesh_color = "#8CD7A3"
blood_color = "#1D2CBF"
reagent_tag = IS_SKRELL
/datum/species/vox
@@ -392,14 +392,14 @@
icobase = 'icons/mob/human_races/r_vox.dmi'
deform = 'icons/mob/human_races/r_def_vox.dmi'
path = /mob/living/carbon/human/vox
default_language = "Galactic Common"
language = "Vox-pidgin"
language = "Vox-pidgin"
speech_sounds = list('sound/voice/shriek1.ogg')
speech_chance = 20
unarmed_type = /datum/unarmed_attack/claws //I dont think it will hurt to give vox claws too.
blurb = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \
scavenging vermin who prey on isolated stations, ships or planets to keep their own ancient arkships \
alive. They are four to five feet tall, reptillian, beaked, tailed and quilled; human crews often \
@@ -421,6 +421,7 @@
flags = NO_SCAN | IS_WHITELISTED
blood_color = "#2299FC"
flesh_color = "#808D11"
reagent_tag = IS_VOX
@@ -549,13 +550,13 @@
eyes = "grey_eyes_s"
brute_mod = 1.25 //greys are fragile
default_genes = list(REMOTE_TALK)
primitive = /mob/living/carbon/monkey // TODO
flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
/datum/species/grey/handle_dna(var/mob/living/carbon/C, var/remove)
if(!remove)
C.dna.SetSEState(REMOTETALKBLOCK,1,1)
@@ -588,7 +589,7 @@
heat_level_1 = 300
heat_level_2 = 350
heat_level_3 = 700
blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
there is no effective upper limit to the number that can fuse in gestalt, and reports exist of the Epsilon Ursae \
@@ -605,7 +606,7 @@
flesh_color = "#907E4A"
reagent_tag = IS_DIONA
/datum/species/diona/can_understand(var/mob/other)
var/mob/living/carbon/monkey/diona/D = other
if(istype(D))
@@ -659,7 +660,7 @@
synth_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment.
flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | IS_SYNTHETIC | NO_INTORGANS
blood_color = "#1F181F"
flesh_color = "#AAAAAA"
/datum/species/machine/handle_death(var/mob/living/carbon/human/H)
@@ -80,14 +80,14 @@
wrapped = thing
break
if(wrapped) //Already have an item.
if(wrapped) //Already have an item.
//Temporary put wrapped into user so target's attackby() checks pass.
wrapped.loc = user
//Pass the attack on to the target. This might delete/relocate wrapped.
target.attackby(wrapped,user, params)
//If wrapped did neither get deleted nor put into target, put it back into the gripper.
if(wrapped && user && (wrapped.loc == user))
wrapped.loc = src
@@ -196,7 +196,7 @@
D << "\red You carefully and thoroughly decompile your downed fellow, storing as much of its resources as you can within yourself."
del(M)
new/obj/effect/decal/cleanable/oil(get_turf(src))
new/obj/effect/decal/cleanable/blood/oil(get_turf(src))
stored_comms["metal"] += 15
stored_comms["glass"] += 15
@@ -233,7 +233,7 @@
stored_comms["metal"]++
stored_comms["plastic"]++
stored_comms["plastic"]++
else if(istype(W,/obj/effect/decal/cleanable/robot_debris))
else if(istype(W,/obj/effect/decal/cleanable/blood/gibs/robot))
stored_comms["metal"]++
stored_comms["metal"]++
stored_comms["glass"]++
@@ -562,7 +562,7 @@
/mob/living/simple_animal/corgi/Ian/borgi/Die()
..()
visible_message("<b>[src]</b> blows apart!")
new /obj/effect/decal/cleanable/robot_debris(src.loc)
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
@@ -50,7 +50,7 @@
/mob/living/simple_animal/hostile/hivebot/Die()
..()
visible_message("<b>[src]</b> blows apart!")
new /obj/effect/decal/cleanable/robot_debris(src.loc)
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()