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
+8 -11
View File
@@ -145,7 +145,7 @@
verbs += /client/proc/voting
verbs += /client/proc/hide_verbs
verbs += /client/proc/general_report
verbs += /client/proc/air_report
//verbs += /client/proc/air_report
verbs += /client/proc/deadmin_self
//verbs += /client/proc/cmd_admin_prison --Merged with player panel
//verbs += /obj/admins/proc/unprison --Merged with player panel
@@ -249,7 +249,7 @@
// verbs += /client/proc/mapload
verbs += /client/proc/check_words
verbs += /client/proc/drop_bomb
verbs += /client/proc/kill_airgroup
//verbs += /client/proc/kill_airgroup
//verbs += /client/proc/cmd_admin_drop_everything --Merged with view variables
verbs += /client/proc/make_sound
verbs += /client/proc/play_local_sound
@@ -280,7 +280,7 @@
verbs += /client/proc/Force_Event_admin
verbs += /client/proc/radioalert
verbs += /client/proc/CarbonCopy
verbs += /client/proc/jump_to_dead_group
//verbs += /client/proc/jump_to_dead_group
else return
//Game Master
@@ -405,7 +405,7 @@
verbs -= /client/proc/voting
verbs -= /client/proc/hide_verbs
verbs -= /client/proc/general_report
verbs -= /client/proc/air_report
//verbs -= /client/proc/air_report
verbs -= /client/proc/cmd_admin_say
verbs -= /client/proc/cmd_admin_gib_self
verbs -= /client/proc/restartcontroller
@@ -456,13 +456,13 @@
//verbs -= /obj/admins/proc/unprison --Merged with player panel
//verbs -= /client/proc/cmd_switch_radio --removed because tcommsat is staying
verbs -= /client/proc/togglebuildmodeself
verbs -= /client/proc/kill_airgroup
//verbs -= /client/proc/kill_airgroup
verbs -= /client/proc/debug_master_controller
verbs -= /client/proc/make_tajaran
verbs -= /client/proc/admin_deny_shuttle
verbs -= /client/proc/cmd_admin_christmas
verbs -= /client/proc/editappear
verbs -= /client/proc/jump_to_dead_group
//verbs -= /client/proc/jump_to_dead_group
verbs -= /client/proc/playernotes
verbs -= /obj/admins/proc/show_skills
verbs -= /client/proc/enable_debug_verbs
@@ -867,8 +867,7 @@
return
src.admin_invis =! src.admin_invis
if(src.mob)
var/mob/m = src.mob//probably don't need this cast, but I'm too lazy to check if /client.mob is of type /mob or not
m.update_clothing()
mob.rebuild_appearance()
log_admin("[key_name(usr)] has turned their invisibility [src.admin_invis ? "ON" : "OFF"]")
message_admins("[key_name_admin(usr)] has turned their invisibility [src.admin_invis ? "ON" : "OFF"]", 1)
@@ -975,9 +974,7 @@
M.gender = MALE
else
M.gender = FEMALE
M.update_body()
M.update_face()
M.update_clothing()
M.rebuild_appearance()
M.check_dna(M)
+4 -4
View File
@@ -22,7 +22,7 @@
usr << browse(output,"window=generalreport")
//feedback_add_details("admin_verb","SGR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
air_report()
/* air_report()
set category = "Debug"
set name = "Show Air Report"
@@ -83,7 +83,7 @@
for(var/datum/gas/trace_gas in GM.trace_gases)
usr << "[trace_gas.type]: [trace_gas.moles]"
//feedback_add_details("admin_verb","DAST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
*/
fix_next_move()
set category = "Debug"
set name = "Unfreeze Everyone"
@@ -183,7 +183,7 @@
//feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
jump_to_dead_group()
/*jump_to_dead_group()
set name = "Jump to dead group"
set category = "Debug"
if(!holder)
@@ -221,7 +221,7 @@
else
usr << "Local airgroup is unsimulated!"
//feedback_add_details("admin_verb","KLAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
*/
tension_report()
set category = "Debug"
+2 -2
View File
@@ -130,14 +130,14 @@ var/intercom_range_display_status = 0
src.verbs += /client/proc/camera_view //-errorage
src.verbs += /client/proc/sec_camera_report //-errorage
src.verbs += /client/proc/intercom_view //-errorage
src.verbs += /client/proc/air_status //Air things
//src.verbs += /client/proc/air_status //Air things
src.verbs += /client/proc/Cell //More air things
src.verbs += /client/proc/atmosscan //check plumbing
src.verbs += /client/proc/powerdebug //check power
src.verbs += /client/proc/count_objects_on_z_level
src.verbs += /client/proc/count_objects_all
src.verbs += /client/proc/cmd_assume_direct_control //-errorage
src.verbs += /client/proc/jump_to_dead_group
//src.verbs += /client/proc/jump_to_dead_group
src.verbs += /client/proc/startSinglo
src.verbs += /client/proc/ticklag //allows you to set the ticklag.
src.verbs += /client/proc/cmd_admin_grantfullaccess
+6 -3
View File
@@ -261,23 +261,25 @@ datum
for(var/mob/living/carbon/metroid/M in T)
M.adjustToxLoss(rand(15,20))
var/hotspot = (locate(/obj/effect/hotspot) in T)
var/hotspot = (locate(/obj/fire) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
T.apply_fire_protection()
del(hotspot)
return
reaction_obj(var/obj/O, var/volume)
src = null
var/turf/T = get_turf(O)
var/hotspot = (locate(/obj/effect/hotspot) in T)
var/hotspot = (locate(/obj/fire) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
T.apply_fire_protection()
del(hotspot)
if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube))
var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O
@@ -2142,12 +2144,13 @@ datum
if(T.wet_overlay)
T.overlays -= T.wet_overlay
T.wet_overlay = null
var/hotspot = (locate(/obj/effect/hotspot) in T)
var/hotspot = (locate(/obj/fire) in T)
if(hotspot)
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
T.apply_fire_protection()
del(hotspot)
enzyme
@@ -350,8 +350,6 @@ datum
on_reaction(var/datum/reagents/holder, var/created_volume)
var/turf/location = get_turf(holder.my_atom.loc)
for(var/turf/simulated/floor/target_tile in range(0,location))
if(target_tile.parent && target_tile.parent.group_processing)
target_tile.parent.suspend_group_processing()
var/datum/gas_mixture/napalm = new
+10
View File
@@ -1588,6 +1588,7 @@
del(src)
spawn(5)
user.update_clothing()
playsound(M.loc,'eatfood.ogg', rand(10,50), 1)
return 1
else if(istype(M, /mob/living/simple_animal/livestock))
@@ -2916,6 +2917,15 @@
src.pixel_x = rand(-10.0, 10)
src.pixel_y = rand(-10.0, 10)
/obj/item/weapon/reagent_containers/food/drinks/waterbottle
name = "water bottle"
desc = "Straight from the ice lakes of Mars!"
icon_state = "waterbottle"
New()
..()
reagents.add_reagent("water", 30)
src.pixel_x = rand(-10.0, 10)
src.pixel_y = rand(-10.0, 10)
/obj/item/weapon/reagent_containers/food/drinks/sillycup
name = "Paper Cup"
+12
View File
@@ -28,6 +28,18 @@
protective_temperature = 10000
slowdown = 1.5
/obj/item/clothing/head/helmet/space/fire_helmet
name = "Fire Helmet"
desc = "A helmet designed to protect against fires in sealed areas, which often create extreme pressures."
flags = FPRINT | TABLEPASS | HEADSPACE | HEADCOVERSEYES | BLOCKHAIR
see_face = 0.0
permeability_coefficient = 0.01
heat_transfer_coefficient = 0.01
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
icon_state = "hazmat_firered"
item_state = "hazhat_firered"
/obj/item/clothing/head/radiation
+7 -1
View File
@@ -48,5 +48,11 @@
/obj/item/clothing/suit/storage/labcoat/fr_jacket
name = "first responder jacket"
desc = "\"The first moments are the most crucial.\""
desc = "A high-visibility jacket worn by medical first responders."
icon_state = "fr_jacket_open"
item_state = "fr_jacket"
/obj/item/clothing/suit/storage/labcoat/fr_jacket/sleeve
name = "first responder jacket"
desc = "A high-visibility jacket worn by medical first responders. Has rolled up sleeves."
icon_state = "fr_sleeve_open"
+8
View File
@@ -316,6 +316,8 @@
icon_plating = "asteroid_dug"
icon_state = "asteroid_dug"
return
else
return
else
..(W,user)
if ((istype(W,/obj/item/weapon/pickaxe/drill)))
@@ -337,6 +339,9 @@
dug = 1
icon_plating = "asteroid_dug"
icon_state = "asteroid_dug"
return
else
return
else
..(W,user)
@@ -359,6 +364,9 @@
dug = 1
icon_plating = "asteroid_dug"
icon_state = "asteroid_dug"
return
else
return
else
..(W,user)
@@ -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
+1 -1
View File
@@ -388,7 +388,7 @@ mob/proc
spawn(0) //Make it show the 2 states properly
if(target_locked)
target_locked.icon_state = "locking"
update_clothing()
update_clothing() // update_clothing clears overlays, so this might break stuff
sleep(20)
if(target_locked)
target_locked.icon_state = "locked"