mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 17:13:46 +01:00
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:
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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 )
|
||||
|
||||
@@ -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
@@ -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.
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user