Merge branch 'master' of github.com:Baystation12/Baystation12 into TGUpdates

Conflicts:
	icons/mob/suit.dmi
	icons/obj/clothing/suits.dmi
This commit is contained in:
Erthilo
2012-05-29 15:00:11 +01:00
109 changed files with 2686 additions and 1464 deletions
@@ -13,7 +13,7 @@
src.resting_icon = new /icon('alien.dmi', "aliend_sleep")
src.running_icon = new /icon('alien.dmi', "aliend_running")
src.icon = src.stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
//Drones use the same base as generic humanoids.
@@ -12,7 +12,7 @@
src.resting_icon = new /icon('alien.dmi', "alienh_sleep")
src.running_icon = new /icon('alien.dmi', "alienh_running")
src.icon = src.stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
@@ -12,7 +12,7 @@
src.resting_icon = new /icon('alien.dmi', "aliens_sleep")
src.running_icon = new /icon('alien.dmi', "aliens_running")
src.icon = src.stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
@@ -146,7 +146,7 @@
using.name = "drop"
using.icon = 'screen1_alien.dmi'
using.icon_state = "act_drop"
using.screen_loc = ui_dropbutton
using.screen_loc = ui_dropbutton_old
using.layer = 19
src.adding += using
@@ -13,7 +13,7 @@
resting_icon = new /icon('alien.dmi', "alienh_sleep")
running_icon = new /icon('alien.dmi', "alienh_running")
icon = stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
..()
@@ -183,7 +183,7 @@
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
var/datum/gas_mixture/environment = loc.return_air()
var/datum/air_group/breath
var/datum/gas_mixture/breath
// HACK NEED CHANGING LATER
if(src.health < 0)
src.losebreath++
@@ -1,7 +1,7 @@
/mob/living/carbon/alien/humanoid/Login()
..()
update_clothing()
rebuild_appearance()
if (!isturf(src.loc))
src.client.eye = src.loc
@@ -15,7 +15,7 @@
src.resting_icon = new /icon('alien.dmi', "queen_sleep")
src.running_icon = new /icon('alien.dmi', "queen_running")
src.icon = src.stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
@@ -56,7 +56,7 @@
using.dir = SOUTHWEST
using.icon = 'screen1_alien.dmi'
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
using.screen_loc = ui_movi_old
using.screen_loc = ui_acti
using.layer = 20
src.adding += using
move_intent = using
@@ -7,7 +7,7 @@
name = text("alien larva ([rand(1, 1000)])")
real_name = name
spawn (1)
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
// spawn(1200) grow() Grow after 120 seconds -- TLE Commented out because life.dm has better version -- Urist
..()
@@ -158,7 +158,7 @@
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
var/datum/gas_mixture/environment = loc.return_air()
var/datum/air_group/breath
var/datum/gas_mixture/breath
// HACK NEED CHANGING LATER
if(health < 0)
losebreath++
@@ -1,7 +1,7 @@
/mob/living/carbon/alien/larva/Login()
..()
update_clothing()
rebuild_appearance()
if (!isturf(src.loc))
src.client.eye = src.loc
@@ -25,7 +25,7 @@
remove_special_verbs()
update_clothing()
rebuild_appearance()
death(gibbed)
..()
+253 -218
View File
@@ -133,14 +133,13 @@
stand_icon = new /icon('human.dmi', "body_[g]_s")
lying_icon = new /icon('human.dmi', "body_[g]_l")
icon = stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
spawn(10) // Failsafe for.. weirdness.
update_clothing()
update_body()
rebuild_appearance()
vessel = new/datum/reagents(600)
vessel.my_atom = src
@@ -151,8 +150,7 @@
..()
spawn(5) // Failsafe for.. weirdness.
update_clothing()
update_body()
rebuild_appearance()
/*var/known_languages = list()
known_languages.Add("english")*/
@@ -861,30 +859,38 @@
M.UpdateFeed(src)
return
/mob/living/carbon/human/update_clothing()
..()
if (monkeyizing)
return
overlays = null
/mob/living/carbon/human/proc/rebuild_body_overlays()
// This proc REBUILDS the body overlays. These are the overlays displayed under the clothing.
// Builds the body overlays both for lying and standing states.
//
// This is necessary whenever something about the mob's body appearance changes, for example:
// - When the mutantrace changes
// - When a visible wound is added to the mob's skin
// - When the mob loses a limb
body_overlays_standing.Cut()
body_overlays_lying.Cut()
if (mutations & HULK)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "hulk_[gender][!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "hulk_[gender]_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "hulk_[gender]_l")
if (mutations & COLD_RESISTANCE)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "fire[!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "fire_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "fire_l")
if (mutations & TK)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead[!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "telekinesishead_l")
if (mutations & LASER)
overlays += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes[!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "lasereyes_l")
if (mutantrace)
switch(mutantrace)
if("golem","metroid")
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace][!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_l")
if(face_standing)
del(face_standing)
if(face_lying)
@@ -894,7 +900,8 @@
if(lying_icon)
del(lying_icon)
if("lizard")
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender][!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l")
if(face_standing)
del(face_standing)
if(face_lying)
@@ -905,9 +912,11 @@
del(lying_icon)
if("plant")
if(stat != 2) //if not dead, that is
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender][!lying ? "_s" : "_l"]")
body_overlays_standing += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_s")
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_[gender]_l")
else
overlays += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_d")
// not sure why this doesn't need separate lying/standing states
body_overlays_lying += image("icon" = 'genetics.dmi', "icon_state" = "[mutantrace]_d")
if(face_standing)
del(face_standing)
if(face_lying)
@@ -917,64 +926,54 @@
if(lying_icon)
del(lying_icon)
else
// TODO: rewrite update_face() and update_body() if necessary
if(!face_standing || !face_lying)
update_face()
if(!stand_icon || !lying_icon)
update_body()
if(buckled)
if(istype(buckled, /obj/structure/stool/bed/chair))
lying = 0
else
lying = 1
// Other procs(probably update_face() and update_body() ) also rebuild their own
// kinds of overlay lists. Think about merging those procs into this proc.
body_overlays_lying += body_lying
body_overlays_standing += body_standing
//if (zone_sel)
// zone_sel.overlays = null
// zone_sel.overlays += body_standing
// zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", zone_sel.selecting))
// face_lying and face_standing are the face icons, not a flag
body_overlays_lying += face_standing // yes, the vars are named wrong, I didn't do it -- CIB
body_overlays_standing += face_lying
if (lying)
icon = lying_icon
overlays += body_lying
if (face_lying)
overlays += face_lying
else
icon = stand_icon
/mob/living/carbon/human/proc/rebuild_clothing_overlays()
// This proc REBUILDS the clothing overlays entirely.
// This is necessary whenever clothing changes, or when the mob switches from laying
// into standing state or vice verca.
overlays += body_standing
// This should possibly be split into two categories:
// - "under", which is stuff that is worn at the lowest clothing layer and doesn't change often,
// such as jumpsuits, gloves, headset, etc.
// - "over", which is stuff that is worn at the highest clothing layer and changes very often,
// such as stuff in the user's hand, space suits, helmets, etc.
if (face_standing)
overlays += face_standing
// Delete all items from the overlay lists
clothing_overlays.Cut()
// Uniform
if(w_uniform)
// What is screen_loc stuff doing here?!
w_uniform.screen_loc = ui_iclothing
if(istype(w_uniform, /obj/item/clothing/under))
var/t1 = w_uniform.color
if (!t1)
t1 = icon_state
overlays += image("icon" = 'uniform.dmi', "icon_state" = text("[][]",t1, (!(lying) ? "_s" : "_l")), "layer" = MOB_LAYER)
clothing_overlays += image("icon" = 'uniform.dmi', "icon_state" = text("[][]",t1, (!(lying) ? "_s" : "_l")), "layer" = MOB_LAYER)
if (w_uniform.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "uniformblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
else // Automatically drop anything in store / id / belt if you're not wearing a uniform.
for (var/obj/item/thing in list(r_store, l_store, wear_id, belt))
if (thing)
u_equip(thing)
if (client)
client.screen -= thing
if (thing)
thing.loc = loc
thing.dropped(src)
thing.layer = initial(thing.layer)
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
if (wear_id)
if(wear_id.over_jumpsuit)
overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER)
clothing_overlays += image("icon" = 'mob.dmi', "icon_state" = "id[!lying ? null : "2"]", "layer" = MOB_LAYER)
if (client)
client.screen -= hud_used.intents
@@ -997,34 +996,34 @@
gloves_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
if(ro.destroyed)
gloves_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image(gloves_icon, "layer" = MOB_LAYER)
clothing_overlays += image(gloves_icon, "layer" = MOB_LAYER)
if (gloves.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
if(lo.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
else if (blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]")
if(lo.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
// Glasses
if (glasses)
var/t1 = glasses.icon_state
overlays += image("icon" = 'eyes.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
clothing_overlays += image("icon" = 'eyes.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
// Ears
if (l_ear)
var/t1 = l_ear.icon_state
overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
clothing_overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (r_ear)
var/t1 = r_ear.icon_state
overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
clothing_overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
// Shoes
lo = organs["l_foot"]
@@ -1036,26 +1035,156 @@
shoes_icon.Blend(new /icon('limb_mask.dmi', "right[lying?"_l":""]"), ICON_MULTIPLY)
else if(ro.destroyed && !lying)
shoes_icon.Blend(new /icon('limb_mask.dmi', "left[lying?"_l":""]"), ICON_MULTIPLY)
overlays += image(shoes_icon, "layer" = MOB_LAYER)
clothing_overlays += image(shoes_icon, "layer" = MOB_LAYER)
if (shoes.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "shoeblood[!lying ? "" : "2"]")
if(lo.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "right_[lying?"l":"s"]"), ICON_MULTIPLY)
else if(ro.destroyed)
stain_icon.Blend(new /icon('limb_mask.dmi', "left_[lying?"l":"s"]"), ICON_MULTIPLY)
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) // Radio
/* if (w_radio)
overlays += image("icon" = 'ears.dmi', "icon_state" = "headset[!lying ? "" : "2"]", "layer" = MOB_LAYER) */
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) // Radio
if (s_store)
var/t1 = s_store.item_state
if (!t1)
t1 = s_store.icon_state
if(!istype(wear_suit, /obj/item/clothing/suit/storage/armoredundersuit))
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
clothing_overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
s_store.screen_loc = ui_sstore1
if (wear_suit)
if (istype(wear_suit, /obj/item/clothing/suit))
var/t1 = wear_suit.icon_state
clothing_overlays += image("icon" = 'suit.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (wear_suit)
if (wear_suit.blood_DNA)
var/icon/stain_icon = null
if (istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/storage/wcoat))
stain_icon = icon('blood.dmi', "armorblood[!lying ? "" : "2"]")
else if (istype(wear_suit, /obj/item/clothing/suit/storage/det_suit || /obj/item/clothing/suit/storage/labcoat))
stain_icon = icon('blood.dmi', "coatblood[!lying ? "" : "2"]")
else
stain_icon = icon('blood.dmi', "suitblood[!lying ? "" : "2"]")
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
wear_suit.screen_loc = ui_oclothing
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
if (handcuffed)
handcuffed.loc = loc
handcuffed.layer = initial(handcuffed.layer)
handcuffed = null
if ((l_hand || r_hand))
// I don't know what this does, but it looks horrible
var/h = hand
hand = 1
drop_item()
hand = 0
drop_item()
hand = h
if (wear_mask)
if (istype(wear_mask, /obj/item/clothing/mask))
var/t1 = wear_mask.icon_state
clothing_overlays += image("icon" = 'mask.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (!istype(wear_mask, /obj/item/clothing/mask/cigarette))
if (wear_mask.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "maskblood[!lying ? "" : "2"]")
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
wear_mask.screen_loc = ui_mask
// Head
if (head)
var/t1 = head.icon_state
var/icon/head_icon = icon('head.dmi', text("[][]", t1, (!( lying ) ? null : "2")))
if(istype(head,/obj/item/clothing/head/kitty))
head_icon = (( lying ) ? head:mob2 : head:mob)
clothing_overlays += image("icon" = head_icon, "layer" = MOB_LAYER)
if(gimmick_hat)
clothing_overlays += image("icon" = icon('gimmick_head.dmi', "[gimmick_hat][!lying ? "" : "2"]"), "layer" = MOB_LAYER)
if (head.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]")
clothing_overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
head.screen_loc = ui_head
// Belt
if (belt)
var/t1 = belt.item_state
if (!t1)
t1 = belt.icon_state
clothing_overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
belt.screen_loc = ui_belt
if (wear_id)
wear_id.screen_loc = ui_id
if (l_store)
l_store.screen_loc = ui_storage1
if (r_store)
r_store.screen_loc = ui_storage2
if (back)
var/t1 = back.icon_state
clothing_overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
back.screen_loc = ui_back
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
//to hide / show them.
// WHAT IS THIS DOING IN UPDATE_CLOTHING(), AHHHHHHHHHHHHH
if (handcuffed)
pulling = null
var/h1 = handcuffed.icon_state
if (!lying)
clothing_overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]1", "layer" = MOB_LAYER)
else
clothing_overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]2", "layer" = MOB_LAYER)
if (r_hand)
clothing_overlays += image("icon" = 'items_righthand.dmi', "icon_state" = r_hand.item_state ? r_hand.item_state : r_hand.icon_state, "layer" = MOB_LAYER+1)
r_hand.screen_loc = ui_rhand
if (l_hand)
clothing_overlays += image("icon" = 'items_lefthand.dmi', "icon_state" = l_hand.item_state ? l_hand.item_state : l_hand.icon_state, "layer" = MOB_LAYER+1)
l_hand.screen_loc = ui_lhand
var/shielded = 0
for (var/obj/item/weapon/cloaking_device/S in src)
if (S.active)
shielded = 2
break
if(istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)&&wear_suit:s_active)
shielded = 3
if(shielded == 1)
clothing_overlays += image("icon" = 'effects.dmi', "icon_state" = "shield", "layer" = MOB_LAYER+1)
if(client && client.admin_invis)
invisibility = 100
else if (shielded == 2)
invisibility = 2
else
invisibility = 0
if(targeted_by && target_locked)
clothing_overlays += target_locked
else if(targeted_by)
target_locked = new /obj/effect/target_locked(src)
clothing_overlays += target_locked
else if(!targeted_by && target_locked)
del(target_locked)
last_b_state = stat
/mob/living/carbon/human/proc/misc_clothing_updates()
// Temporary proc to shove stuff in that was put into update_clothing()
// for questionable reasons
if (client)
if (i_select)
if (intent)
@@ -1076,167 +1205,75 @@
else
m_select.screen_loc = null
if (wear_suit)
if (istype(wear_suit, /obj/item/clothing/suit))
var/t1 = wear_suit.icon_state
overlays += image("icon" = 'suit.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (wear_suit)
if (wear_suit.blood_DNA)
var/icon/stain_icon = null
if (istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/storage/wcoat))
stain_icon = icon('blood.dmi', "armorblood[!lying ? "" : "2"]")
else if (istype(wear_suit, /obj/item/clothing/suit/storage/det_suit || /obj/item/clothing/suit/storage/labcoat))
stain_icon = icon('blood.dmi', "coatblood[!lying ? "" : "2"]")
else
stain_icon = icon('blood.dmi', "suitblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
wear_suit.screen_loc = ui_oclothing
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
if (handcuffed)
handcuffed.loc = loc
handcuffed.layer = initial(handcuffed.layer)
handcuffed = null
if ((l_hand || r_hand))
var/h = hand
hand = 1
drop_item()
hand = 0
drop_item()
hand = h
if (lying)
if (face_lying)
overlays += face_lying
else
if (face_standing)
overlays += face_standing
if (wear_mask)
if (istype(wear_mask, /obj/item/clothing/mask))
var/t1 = wear_mask.icon_state
overlays += image("icon" = 'mask.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (!istype(wear_mask, /obj/item/clothing/mask/cigarette))
if (wear_mask.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "maskblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
wear_mask.screen_loc = ui_mask
// Head
if (head)
var/t1 = head.icon_state
var/icon/head_icon = icon('head.dmi', text("[][]", t1, (!( lying ) ? null : "2")))
if(istype(head,/obj/item/clothing/head/kitty))
head_icon = (( lying ) ? head:mob2 : head:mob)
overlays += image("icon" = head_icon, "layer" = MOB_LAYER)
if(gimmick_hat)
overlays += image("icon" = icon('gimmick_head.dmi', "[gimmick_hat][!lying ? "" : "2"]"), "layer" = MOB_LAYER)
if (head.blood_DNA)
var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]")
overlays += image("icon" = stain_icon, "layer" = MOB_LAYER)
head.screen_loc = ui_head
// Belt
if (belt)
var/t1 = belt.item_state
if (!t1)
t1 = belt.icon_state
overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
belt.screen_loc = ui_belt
name = get_visible_name()
if (wear_id)
wear_id.screen_loc = ui_id
if (l_store)
l_store.screen_loc = ui_storage1
if (r_store)
r_store.screen_loc = ui_storage2
if (back)
var/t1 = back.icon_state
overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
back.screen_loc = ui_back
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
//to hide / show them.
if (handcuffed)
pulling = null
var/h1 = handcuffed.icon_state
if (!lying)
overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]1", "layer" = MOB_LAYER)
else
overlays += image("icon" = 'mob.dmi', "icon_state" = "[h1]2", "layer" = MOB_LAYER)
// Probably a lazy way to make sure all items are on the screen exactly once
if (client)
client.screen -= contents
client.screen += contents
if (r_hand)
overlays += image("icon" = 'items_righthand.dmi', "icon_state" = r_hand.item_state ? r_hand.item_state : r_hand.icon_state, "layer" = MOB_LAYER+1)
/mob/living/carbon/human/rebuild_appearance()
// Lazy method: Just rebuild everything.
// This can be called when the mob is created, but on other occasions, rebuild_body_overlays(),
// rebuild_clothing_overlays() etc. should be called individually.
r_hand.screen_loc = ui_rhand
handle_clothing() // nonvisual stuff
misc_clothing_updates() // silly stuff
if (l_hand)
overlays += image("icon" = 'items_lefthand.dmi', "icon_state" = l_hand.item_state ? l_hand.item_state : l_hand.icon_state, "layer" = MOB_LAYER+1)
rebuild_body_overlays() // rebuild the body itself, that is mutant race traits, hair, limbs, etc.
rebuild_clothing_overlays() // rebuild the entire clothing
l_hand.screen_loc = ui_lhand
update_overlays_from_lists()
var/shielded = 0
for (var/obj/item/weapon/cloaking_device/S in src)
if (S.active)
shielded = 2
break
/mob/living/carbon/human/proc/update_overlays_from_lists()
// This will simply update the overlays without actually
// rebuilding anything. Can be called often without much
// effect on performance.
if(istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)&&wear_suit:s_active)
shielded = 3
switch(shielded)
if(1)
overlays += image("icon" = 'effects.dmi', "icon_state" = "shield", "layer" = MOB_LAYER+1)
if(2)
invisibility = 2
//New stealth. Hopefully doesn't lag too much. /N
if(istype(loc, /turf))//If they are standing on a turf.
AddCamoOverlay(loc)//Overlay camo.
if(3)
if(istype(loc, /turf))
//Ninjas may flick into view once in a while if they are stealthed.
if(prob(90))
NinjaStealthActive(loc)
else
NinjaStealthMalf()
else
invisibility = 0
// Update the actual overlays from our prebuilt lists
overlays = null
if(client && client.admin_invis)
invisibility = 100
else if (shielded == 2)
invisibility = 2
else
invisibility = 0
if(targeted_by && target_locked)
overlays += target_locked
else if(targeted_by)
target_locked = new /obj/effect/target_locked(src)
overlays += target_locked
else if(!targeted_by && target_locked)
del(target_locked)
if (monkeyizing) // while monkeyizing we do not wish to display any overlays
return
/*
for (var/mob/M in viewers(1, src))//For the love of god DO NOT REFRESH EVERY SECOND - Mport
if ((M.client && M.machine == src))
spawn (0)
show_inv(M)
return
*/
last_b_state = stat
if(lying)
icon = lying_icon
overlays += body_overlays_standing
if(!lying)
icon = stand_icon
overlays += body_overlays_lying
overlays += clothing_overlays
/mob/living/carbon/human/update_body_appearance()
// Should be called whenever something about the body appearance itself changes.
rebuild_body_overlays()
update_overlays_from_lists()
/mob/living/carbon/human/update_lying()
// Should be called whenever something about the lying status of the mob might have changed.
if(visual_lying != lying)
visual_lying = lying
rebuild_clothing_overlays()
update_overlays_from_lists()
/mob/living/carbon/human/update_clothing()
// Should be called only when something about the clothing itself changed
// which is not handled by the equip code.
rebuild_appearance()
return
// TODO: once I have replaced the udpate_clothing() calls with update_lying() or
// update_body_appearance() calls where suitable, the following code should
// be used. furthermore, handle_clothes() should be moved to Life()
rebuild_clothing_overlays()
update_overlays_from_lists()
/mob/living/carbon/human/hand_p(mob/M as mob)
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
@@ -2664,9 +2701,7 @@ It can still be worn/put on as normal.
gender = MALE
else
gender = FEMALE
update_body()
update_face()
update_clothing()
rebuild_appearance()
check_dna()
for(var/mob/M in view())
@@ -70,5 +70,4 @@
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has tried to disarm []!</B>", M, src), 1)
update_clothing()
return
@@ -213,7 +213,6 @@
playsound(loc, 'punchmiss.ogg', 25, 1, -1)
visible_message("\red <B>[M] attempted to disarm [src]!</B>")
update_clothing()
return
/mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params)
@@ -20,5 +20,4 @@
src = null
src = H.monkeyize()
contract_disease(D,1,0)
update_clothing()
return
@@ -68,5 +68,4 @@
UpdateDamageIcon()
updatehealth()
update_clothing()
return 1
@@ -198,5 +198,4 @@ emp_act
if(src.wear_suit) src.wear_suit.add_blood(src)
if(src.w_uniform) src.w_uniform.add_blood(src)
UpdateDamageIcon()
update_clothing()
UpdateDamageIcon()
+73 -10
View File
@@ -29,18 +29,18 @@
//Being buckled to a chair or bed
check_if_buckled()
handle_clothing()
// Update clothing
// update_clothing()
// TODO: this check and the lyingcheck variable should probably be removed in favor of the visual_lying check
if((lyingcheck != lying) || (buckle_check != (buckled ? 1 : 0))) //This is a fix for falling down / standing up not updating icons. Instead of going through and changing every
spawn(5)
update_clothing() //instance in the code where lying is modified, I've just added a new variable "lyingcheck" which will be compared
update_lying() //instance in the code where lying is modified, I've just added a new variable "lyingcheck" which will be compared
lyingcheck = lying //to lying, so if lying ever changes, update_clothing() will run like normal.
if(stat == 2)
if((!lying || !lyingcheck) && !buckled)
if(!lying && !buckled)
lying = 1
update_clothing()
update_lying()
return
life_tick++
@@ -137,7 +137,7 @@
if (stat != 0)
if(!lying)
lying = 1 //Seriously, stay down :x
update_clothing()
update_lying()
@@ -359,7 +359,7 @@
if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return
var/datum/gas_mixture/environment = loc.return_air()
var/datum/air_group/breath
var/datum/gas_mixture/breath
// HACK NEED CHANGING LATER
if(isbreathing && health < config.health_threshold_crit)
@@ -420,6 +420,16 @@
smoke.reagents.copy_to(src, 10) // I dunno, maybe the reagents enter the blood stream through the lungs?
break // If they breathe in the nasty stuff once, no need to continue checking
if(istype(wear_mask, /obj/item/clothing/mask/gas))
var/datum/gas_mixture/filtered = new()
filtered.toxins = breath.toxins
filtered.trace_gases = breath.trace_gases.Copy()
filtered.update_values()
breath.toxins = 0
breath.trace_gases = list()
breath.update_values()
loc.assume_air(filtered)
else //Still give containing object the chance to interact
if(istype(loc, /obj/))
var/obj/location_as_object = loc
@@ -469,7 +479,7 @@
var/safe_oxygen_min = 16 // Minimum safe partial pressure of O2, in kPa
//var/safe_oxygen_max = 140 // Maximum safe partial pressure of O2, in kPa (Not used for now)
var/safe_co2_max = 10 // Yes it's an arbitrary value who cares?
var/safe_toxins_max = 0.005
var/safe_toxins_max = 0.0025
var/SA_para_min = 1
var/SA_sleep_min = 5
var/oxygen_used = 0
@@ -649,7 +659,7 @@
//Account for massive pressure differences. Done by Polymorph
var/pressure = environment.return_pressure()
if(!istype(wear_suit, /obj/item/clothing/suit/space))
if(!istype(wear_suit, /obj/item/clothing/suit/space) && !istype(wear_suit, /obj/item/clothing/suit/fire))
/*if(pressure < 20)
if(prob(25))
src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
@@ -658,6 +668,9 @@
if(pressure > HAZARD_HIGH_PRESSURE)
adjustBruteLoss(min((10+(round(pressure/(HIGH_STEP_PRESSURE)-2)*5)),MAX_PRESSURE_DAMAGE))
if(environment.toxins > MOLES_PLASMA_VISIBLE)
pl_effects()
return //TODO: DEFERRED
adjust_body_temperature(current, loc_temp, boost)
@@ -1501,4 +1514,54 @@
else if(shock_stage == 40)
src << "<font color='red'><b>"+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")
else if(shock_stage == 80)
src << "<font color='red'><b>"+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.")
src << "<font color='red'><b>"+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.")
/mob/living/carbon/human/proc/handle_clothing()
// Non-visual stuff that was in update_clothing()
if(buckled)
if(istype(buckled, /obj/structure/stool/bed/chair))
lying = 0
else
lying = 1
if(!w_uniform)
// Automatically drop anything in store / id / belt if you're not wearing a uniform.
for (var/obj/item/thing in list(r_store, l_store, wear_id, belt))
if (thing)
u_equip(thing)
if (client)
client.screen -= thing
if (thing)
thing.loc = loc
thing.dropped(src)
thing.layer = initial(thing.layer)
// Why this stuff was in handle_clothing() is beyond me
var/shielded = 0
for (var/obj/item/weapon/cloaking_device/S in src)
if (S.active)
shielded = 2
break
if(istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)&&wear_suit:s_active)
shielded = 3
switch(shielded)
if(1)
if(2)
invisibility = 2
//New stealth. Hopefully doesn't lag too much. /N
if(istype(loc, /turf))//If they are standing on a turf.
AddCamoOverlay(loc)//Overlay camo.
if(3)
if(istype(loc, /turf))
//Ninjas may flick into view once in a while if they are stealthed.
if(prob(90))
NinjaStealthActive(loc)
else
NinjaStealthMalf()
else
invisibility = 0
name = get_visible_name()
@@ -1,7 +1,7 @@
/mob/living/carbon/human/Login()
..()
update_clothing()
rebuild_appearance()
if (!isturf(src.loc))
src.client.eye = src.loc
@@ -1,7 +1,7 @@
/mob/living/carbon/metroid/Login()
..()
update_clothing()
rebuild_appearance()
if (!isturf(src.loc))
src.client.eye = src.loc
@@ -9,7 +9,7 @@
real_name = name
spawn (1)
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
..()
@@ -187,7 +187,7 @@
if(!loc) return //probably ought to make a proper fix for this, but :effort: --NeoFite
var/datum/gas_mixture/environment = loc.return_air()
var/datum/air_group/breath
var/datum/gas_mixture/breath
if(losebreath>0) //Suffocating so do not take a breath
src.losebreath--
@@ -1,7 +1,7 @@
/mob/living/carbon/monkey/Login()
..()
update_clothing()
rebuild_appearance()
/*
if (!( src.primary ))
var/t1 = rand(1000, 1500)
@@ -69,7 +69,7 @@
if(!lying_icon)
lying_icon = new /icon('monkey.dmi', "monkey0")
icon = stand_icon
update_clothing()
rebuild_appearance()
src << "\blue Your icons have been generated!"
..()
@@ -930,7 +930,6 @@
UpdateDamageIcon()
updatehealth()
update_clothing()
return 1
/*/mob/living/carbon/monkey/UpdateDamageIcon()
+1 -7
View File
@@ -40,14 +40,8 @@
return 0
var/mob/living/carbon/human/H = src //make this damage method divide the damage to be done among all the body parts, then burn each body part for that much damage. will have better effect then just randomly picking a body part
var/divided_damage = (burn_amount)/(H.organs.len)
var/extradam = 0 //added to when organ is at max dam
for(var/name in H.organs)
var/datum/organ/external/affecting = H.organs[name]
if(!affecting) continue
if(affecting.take_damage(0, divided_damage+extradam, 0, used_weapon))
extradam = 0
else
extradam += divided_damage
apply_damage(divided_damage, BURN, name, 0, 0, "Skin Burns")
H.UpdateDamageIcon()
H.updatehealth()
return 1
-1
View File
@@ -498,7 +498,6 @@ mob/living/parasite/meme/verb/Analgesic()
mob/proc/clearHUD()
update_clothing()
if(client) client.screen.Cut()
// Take control of the mob
+1 -1
View File
@@ -1,6 +1,6 @@
/mob/living/silicon/ai/Login()
..()
update_clothing()
rebuild_appearance()
for(var/S in src.client.screen)
del(S)
src.flash = new /obj/screen( null )
+1 -1
View File
@@ -202,7 +202,7 @@
mymob.pullin.icon = 'screen1_robot.dmi'
mymob.pullin.icon_state = "pull0"
mymob.pullin.name = "pull"
mymob.pullin.screen_loc = ui_pull_old
mymob.pullin.screen_loc = ui_pull_borg
mymob.blind = new /obj/screen( null )
mymob.blind.icon = 'screen1_robot.dmi'
@@ -1,7 +1,7 @@
/mob/living/silicon/robot/Login()
..()
update_clothing()
rebuild_appearance()
if (!isturf(src.loc))
src.client.eye = src.loc
+24 -5
View File
@@ -177,9 +177,6 @@
item.loc = null
item.layer = initial(item.layer)
u_equip(item)
//if (client)
// client.screen -= item
//update_clothing()
return
/mob/proc/get_active_hand()
@@ -1161,5 +1158,27 @@ note dizziness decrements automatically in the mob's Life() proc.
if(!isemptylist(args))
for(var/file in args)
src << browse_rsc(file)
return 1
return 0
return 1
return 0
/** The stuff below here really should be in /mob/living, but due to tons of procs that should only
take /mob/living only taking /mob(or, indeed, some silly procs relying on usr.. yes, *procs*, not verbs..),
I'm putting this stuff into /mob for now
**/
/mob/proc/rebuild_appearance()
// Rebuild the entire mob appearance completely, this should ONLY be called in rare cases,
// e.g. when the mob spawns.
return update_clothing() // most mobs still implement update_clothing() by simply rebuilding the entire appearance
/mob/proc/update_body_appearance()
// Call this proc whenever something about the appearance of the body itself changes.
// For example, this must be called when you add a wound to a mob.
/mob/proc/update_lying()
// Call this whenever the lying status of a mob changes.
/mob/update_clothing()
// Call this proc whenever something about the clothing of a mob changes. Normally, you
// don't need to call this by hand, as the equip procs will do it for you.
..()
+6 -3
View File
@@ -104,7 +104,7 @@
burn *= 0.66 //~2/3 damage for ROBOLIMBS
if(owner && !robot)
owner.pain(display_name, (brute+burn)*3, 1)
owner.pain(display_name, (brute+burn)*3, 1, burn > brute)
if(sharp)
var/nux = brute * rand(10,15)
if(brute_dam >= max_damage)
@@ -235,7 +235,8 @@
var/datum/autopsy_data/W = autopsy_data[V]
del W
autopsy_data = list()
return update_icon()
var/result = update_icon()
return result
proc/add_wound(var/used_weapon, var/damage)
var/datum/autopsy_data/W = autopsy_data[used_weapon]
@@ -248,6 +249,7 @@
W.damage += damage
W.time_inflicted = world.time
owner.update_body_appearance()
proc/get_damage() //returns total damage
@@ -314,6 +316,7 @@
var/n_is = damage_state_text()
if (n_is != damage_state)
damage_state = n_is
owner.update_body_appearance() // I'm not sure about this, Sky probably knows better where to put it
return 1
return 0
@@ -412,7 +415,7 @@
for(var/datum/organ/wound/W in wounds)
W.update_health()
del(W)
owner.update_body()
owner.update_body_appearance()
owner.update_clothing()
proc/createwound(var/size = 1, var/type = 0, var/damage)
+21 -10
View File
@@ -7,7 +7,7 @@ mob/var/next_pain_time = 0
// partname is the name of a body part
// amount is a num from 1 to 100
mob/proc/pain(var/partname, var/amount, var/force)
mob/proc/pain(var/partname, var/amount, var/force, var/burning = 0)
if(stat >= 2) return
if(world.time < next_pain_time && !force)
return
@@ -17,15 +17,26 @@ mob/proc/pain(var/partname, var/amount, var/force)
if(amount > 50 && prob(amount / 5))
src:drop_item()
var/msg
switch(amount)
if(1 to 10)
msg = "<b>Your [partname] hurts a bit.</b>"
if(11 to 90)
flash_weak_pain()
msg = "<b><font size=1>Ouch! Your [partname] hurts.</font></b>"
if(91 to 10000)
flash_pain()
msg = "<b><font size=3>OH GOD! Your [partname] is hurting terribly!</font></b>"
if(burning)
switch(amount)
if(1 to 10)
msg = "\red <b>Your [partname] burns.</b>"
if(11 to 90)
flash_weak_pain()
msg = "\red <b><font size=2>Your [partname] burns badly!</font></b>"
if(91 to 10000)
flash_pain()
msg = "\red <b><font size=3>OH GOD! Your [partname] is on fire!</font></b>"
else
switch(amount)
if(1 to 10)
msg = "<b>Your [partname] hurts.</b>"
if(11 to 90)
flash_weak_pain()
msg = "<b><font size=2>Your [partname] hurts badly.</font></b>"
if(91 to 10000)
flash_pain()
msg = "<b><font size=3>OH GOD! Your [partname] is hurting terribly!</font></b>"
if(msg && (msg != last_pain_message || prob(10)))
last_pain_message = msg
src << msg
+1 -2
View File
@@ -47,7 +47,7 @@
/mob/living/simple_animal/corgi/Life()
..()
update_clothing()
rebuild_appearance()
/mob/living/simple_animal/corgi/show_inv(mob/user as mob)
/*
@@ -182,7 +182,6 @@
usr.drop_item()
item_to_add.loc = src
src.inventory_head = item_to_add
update_clothing()
//Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a HAT is removed.
+7 -7
View File
@@ -5,7 +5,7 @@
if (W==w_uniform) // will be teared
continue
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
stunned = 1
@@ -69,7 +69,7 @@
return
for(var/obj/item/W in src)
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
icon = null
@@ -156,7 +156,7 @@
return
for(var/obj/item/W in src)
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
icon = null
@@ -222,7 +222,7 @@
return
for(var/obj/item/W in src)
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
icon = null
@@ -262,7 +262,7 @@
return
for(var/obj/item/W in src)
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
icon = null
@@ -313,7 +313,7 @@
return
for(var/obj/item/W in src)
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
icon = null
@@ -347,7 +347,7 @@
return
for(var/obj/item/W in src)
drop_from_slot(W)
update_clothing()
rebuild_appearance()
monkeyizing = 1
canmove = 0
icon = null