Replaces /image with /mutable_appearance (#556)

* Replaces /image with /mutable_appearance, where appropriate

* Update miscellaneous.dm

* Delete miscellaneous.dm.rej

* Delete pet.dm.rej

* Update pet.dm

* Update species.dm

* Update miscellaneous.dm

* Update species.dm

* Update miscellaneous.dm

* Delete species.dm.rej

* Update species.dm

pretty sure I got all the indentation correct THIS time, ffs

* Update species.dm

* Update species.dm

fucking tabs man, fucking tabs.
This commit is contained in:
CitadelStationBot
2017-04-26 08:18:35 -05:00
committed by Poojawa
parent a8c4c86e1c
commit a905c15dad
151 changed files with 1379 additions and 1531 deletions
+17 -13
View File
@@ -1,7 +1,7 @@
//generic (by snowflake) tile smoothing code; smooth your icons with this!
/*
Each tile is divided in 4 corners, each corner has an image associated to it; the tile is then overlayed by these 4 images
Each tile is divided in 4 corners, each corner has an appearance associated to it; the tile is then overlayed by these 4 appearances
To use this, just set your atom's 'smooth' var to 1. If your atom can be moved/unanchored, set its 'can_be_unanchored' var to 1.
If you don't want your atom's icon to smooth with anything but atoms of the same type, set the list 'canSmoothWith' to null;
Otherwise, put all types you want the atom icon to smooth with in 'canSmoothWith' INCLUDING THE TYPE OF THE ATOM ITSELF.
@@ -44,7 +44,6 @@
#define DEFAULT_UNDERLAY_ICON 'icons/turf/floors.dmi'
#define DEFAULT_UNDERLAY_ICON_STATE "plating"
#define DEFAULT_UNDERLAY_IMAGE image(DEFAULT_UNDERLAY_ICON, DEFAULT_UNDERLAY_ICON_STATE)
/atom/var/smooth = SMOOTH_FALSE
/atom/var/top_left_corner
@@ -157,14 +156,16 @@
/turf/closed/wall/diagonal_smooth(adjacencies)
adjacencies = reverse_ndir(..())
if(adjacencies)
var/list/U = list()
var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER)
var/list/U = list(underlay_appearance)
if(fixed_underlay)
if(fixed_underlay["space"])
var/image/I = image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER)
I.plane = PLANE_SPACE
U += I
underlay_appearance.icon = 'icons/turf/space.dmi'
underlay_appearance.icon_state = SPACE_ICON_STATE
underlay_appearance.plane = PLANE_SPACE
else
U += image(fixed_underlay["icon"], fixed_underlay["icon_state"], layer=TURF_LAYER)
underlay_appearance.icon = fixed_underlay["icon"]
underlay_appearance.icon_state = fixed_underlay["icon_state"]
else
var/turf/T = get_step(src, turn(adjacencies, 180))
if(T && (T.density || T.smooth))
@@ -173,15 +174,18 @@
T = get_step(src, turn(adjacencies, 225))
if(isspaceturf(T) && !istype(T, /turf/open/space/transit))
var/image/I = image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER)
I.plane = PLANE_SPACE
U += I
underlay_appearance.icon = 'icons/turf/space.dmi'
underlay_appearance.icon_state = SPACE_ICON_STATE
underlay_appearance.plane = PLANE_SPACE
else if(T && !T.density && !T.smooth)
U += T
underlay_appearance.icon = T.icon
underlay_appearance.icon_state = T.icon_state
else if(baseturf && !initial(baseturf.density) && !initial(baseturf.smooth))
U += image(initial(baseturf.icon), initial(baseturf.icon_state), layer=TURF_LAYER)
underlay_appearance.icon = initial(baseturf.icon)
underlay_appearance.icon_state = initial(baseturf.icon_state)
else
U += DEFAULT_UNDERLAY_IMAGE
underlay_appearance.icon = DEFAULT_UNDERLAY_ICON
underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE
underlays = U
+4 -4
View File
@@ -1138,13 +1138,13 @@ B --><-- A
if(location == src)
return 1
/proc/flick_overlay_static(image/I, atom/A, duration)
/proc/flick_overlay_static(O, atom/A, duration)
set waitfor = 0
if(!A || !I)
if(!A || !O)
return
A.add_overlay(I)
A.add_overlay(O)
sleep(duration)
A.cut_overlay(I)
A.cut_overlay(O)
/proc/get_areas_in_z(zlevel)
. = list()
+1 -2
View File
@@ -57,8 +57,7 @@
/obj/screen/movable/action_button/hide_toggle/proc/UpdateIcon()
cut_overlays()
var/image/img = image(hide_icon, src, hidden ? show_state : hide_state)
add_overlay(img)
add_overlay(mutable_appearance(hide_icon, hidden ? show_state : hide_state))
/obj/screen/movable/action_button/MouseEntered(location,control,params)
+3 -3
View File
@@ -261,9 +261,9 @@
for(var/y in -count to count)
if(x == 0 && y == 0)
continue
var/image/I = image(icon, null, icon_state)
I.transform = matrix(1, 0, x*480, 0, 1, y*480)
new_overlays += I
var/mutable_appearance/texture_overlay = mutable_appearance(icon, icon_state)
texture_overlay.transform = matrix(1, 0, x*480, 0, 1, y*480)
new_overlays += texture_overlay
cut_overlays()
add_overlay(new_overlays)
view_sized = view
+6 -11
View File
@@ -134,21 +134,16 @@
icon_state = icon_empty
/obj/screen/inventory/hand
var/image/active_overlay
var/image/handcuff_overlay
var/image/blocked_overlay
var/mutable_appearance/handcuff_overlay
var/static/mutable_appearance/blocked_overlay = mutable_appearance('icons/mob/screen_gen.dmi', "blocked")
var/held_index = 0
/obj/screen/inventory/hand/update_icon()
..()
if(!active_overlay)
active_overlay = image("icon"=icon, "icon_state"="hand_active")
if(!handcuff_overlay)
var/state = (!(held_index % 2)) ? "markus" : "gabrielle"
handcuff_overlay = image("icon"='icons/mob/screen_gen.dmi', "icon_state"=state)
if(!blocked_overlay)
blocked_overlay = image("icon"='icons/mob/screen_gen.dmi', "icon_state"="blocked")
handcuff_overlay = mutable_appearance('icons/mob/screen_gen.dmi', state)
cut_overlays()
@@ -163,7 +158,7 @@
add_overlay(blocked_overlay)
if(held_index == hud.mymob.active_hand_index)
add_overlay(active_overlay)
add_overlay("hand_active")
/obj/screen/inventory/hand/Click(location, control, params)
@@ -445,7 +440,7 @@
/obj/screen/zone_sel/update_icon(mob/user)
cut_overlays()
add_overlay(image('icons/mob/screen_gen.dmi', "[selecting]"))
add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[selecting]"))
user.zone_selected = selecting
/obj/screen/zone_sel/alien
@@ -453,7 +448,7 @@
/obj/screen/zone_sel/alien/update_icon(mob/user)
cut_overlays()
add_overlay(image('icons/mob/screen_alien.dmi', "[selecting]"))
add_overlay(mutable_appearance('icons/mob/screen_alien.dmi', "[selecting]"))
user.zone_selected = selecting
/obj/screen/zone_sel/robot
@@ -55,7 +55,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
/proc/iconstate2appearance(icon, iconstate)
var/static/image/stringbro = new()
var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
var/list/icon_states_cache = SSoverlays.overlay_icon_state_caches
var/list/cached_icon = icon_states_cache[icon]
if (cached_icon)
var/cached_appearance = cached_icon["[iconstate]"]
@@ -91,7 +91,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
new_overlays[i] = iconstate2appearance(icon, cached_overlay)
else if(isicon(cached_overlay))
new_overlays[i] = icon2appearance(cached_overlay)
else //image probable
else //image/mutable_appearance probable
appearance_bro.appearance = cached_overlay
if(!ispath(cached_overlay))
appearance_bro.dir = cached_overlay.dir
@@ -99,11 +99,11 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
return new_overlays
#define NOT_QUEUED_ALREADY (!(flags & OVERLAY_QUEUED))
#define QUEUE_FOR_COMPILE flags |= OVERLAY_QUEUED; SSoverlays.processing += src;
#define QUEUE_FOR_COMPILE flags |= OVERLAY_QUEUED; SSoverlays.processing += src;
/atom/proc/cut_overlays(priority = FALSE)
var/list/cached_overlays = our_overlays
var/list/cached_priority = priority_overlays
var/need_compile = FALSE
if(LAZYLEN(cached_overlays)) //don't queue empty lists, don't cut priority overlays
@@ -165,7 +165,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
if(cut_old)
cut_overlays()
return
var/list/cached_other = other.our_overlays
if(cached_other)
if(cut_old || !LAZYLEN(our_overlays))
+1 -5
View File
@@ -110,12 +110,8 @@
/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button)
if(icon_icon && button_icon_state && current_button.button_icon_state != button_icon_state)
var/image/img
img = image(icon_icon, current_button, button_icon_state)
img.pixel_x = 0
img.pixel_y = 0
current_button.cut_overlays(TRUE)
current_button.add_overlay(img)
current_button.add_overlay(mutable_appearance(icon_icon, button_icon_state))
current_button.button_icon_state = button_icon_state
+1 -1
View File
@@ -83,7 +83,7 @@
var/mob/living/silicon/ai/A = S
A.can_be_carded = FALSE
A.requires_power = POWER_REQ_CLOCKCULT
var/list/AI_frame = list(image('icons/mob/clockwork_mobs.dmi', A, "aiframe")) //make the AI's cool frame
var/list/AI_frame = list(mutable_appearance('icons/mob/clockwork_mobs.dmi', "aiframe")) //make the AI's cool frame
for(var/d in GLOB.cardinal)
AI_frame += image('icons/mob/clockwork_mobs.dmi', A, "eye[rand(1, 10)]", dir = d) //the eyes are randomly fast or slow
A.add_overlay(AI_frame)
+2 -2
View File
@@ -31,9 +31,9 @@
if(speak_emote)
D.speak_emote = speak_emote
/datum/dog_fashion/proc/get_image(var/dir)
/datum/dog_fashion/proc/get_overlay(var/dir)
if(icon_file && obj_icon_state)
var/image/corgI = image(icon_file, icon_state = obj_icon_state, dir = dir)
var/image/corgI = image(icon_file, obj_icon_state, dir = dir)
corgI.alpha = obj_alpha
corgI.color = obj_color
return corgI
+18
View File
@@ -0,0 +1,18 @@
// Mutable appearances are an inbuilt byond datastructure. Read the documentation on them by hitting F1 in DM.
// Basically use them instead of images for overlays/underlays and when changing an object's appearance if you're doing so with any regularity.
// Unless you need the overlay/underlay to have a different direction than the base object. Then you have to use an image due to a bug.
// Mutable appearances are children of images, just so you know.
/mutable_appearance/New()
..()
plane = FLOAT_PLANE // No clue why this is 0 by default yet images are on FLOAT_PLANE
// And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var
// Helper similar to image()
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER)
var/mutable_appearance/MA = new()
MA.icon = icon
MA.icon_state = icon_state
MA.layer = layer
return MA
+7 -7
View File
@@ -15,7 +15,7 @@ GLOBAL_LIST_EMPTY(mutations_list)
var/lowest_value = 256 * 8
var/text_gain_indication = ""
var/text_lose_indication = ""
var/list/visual_indicators = list()
var/list/mutable_appearance/visual_indicators = list()
var/layer_used = MUTATIONS_LAYER //which mutation layer to use
var/list/species_allowed = list() //to restrict mutation to only certain species
var/health_req //minimum health required to acquire the mutation
@@ -161,7 +161,7 @@ GLOBAL_LIST_EMPTY(mutations_list)
/datum/mutation/human/telekinesis/New()
..()
visual_indicators |= image("icon"='icons/effects/genetics.dmi', "icon_state"="telekinesishead", "layer"=-MUTATIONS_LAYER)
visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "telekinesishead", -MUTATIONS_LAYER)
/datum/mutation/human/telekinesis/get_visual_indicator(mob/living/carbon/human/owner)
return visual_indicators[1]
@@ -180,7 +180,7 @@ GLOBAL_LIST_EMPTY(mutations_list)
/datum/mutation/human/cold_resistance/New()
..()
visual_indicators |= image("icon"='icons/effects/genetics.dmi', "icon_state"="fire", "layer"=-MUTATIONS_LAYER)
visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "fire", -MUTATIONS_LAYER)
/datum/mutation/human/cold_resistance/get_visual_indicator(mob/living/carbon/human/owner)
return visual_indicators[1]
@@ -618,7 +618,7 @@ GLOBAL_LIST_EMPTY(mutations_list)
/datum/mutation/human/laser_eyes/New()
..()
visual_indicators |= image("icon"='icons/effects/genetics.dmi', "icon_state"="lasereyes", "layer"=-FRONT_MUTATIONS_LAYER)
visual_indicators |= mutable_appearance('icons/effects/genetics.dmi', "lasereyes", -FRONT_MUTATIONS_LAYER)
/datum/mutation/human/laser_eyes/get_visual_indicator(mob/living/carbon/human/owner)
return visual_indicators[1]
@@ -640,11 +640,11 @@ GLOBAL_LIST_EMPTY(mutations_list)
var/list/mut_overlay = list()
if(overlays_standing[CM.layer_used])
mut_overlay = overlays_standing[CM.layer_used]
var/image/V = CM.get_visual_indicator(src)
var/mutable_appearance/V = CM.get_visual_indicator(src)
if(!mut_overlay.Find(V)) //either we lack the visual indicator or we have the wrong one
remove_overlay(CM.layer_used)
for(var/image/I in CM.visual_indicators)
mut_overlay.Remove(I)
for(var/mutable_appearance/MA in CM.visual_indicators)
mut_overlay.Remove(MA)
mut_overlay |= V
overlays_standing[CM.layer_used] = mut_overlay
apply_overlay(CM.layer_used)
+3 -3
View File
@@ -179,11 +179,11 @@
remove_atom_colour(FIXED_COLOUR_PRIORITY)
if(is_zombie)
copy_overlays(oldguy, TRUE)
var/image/I = image('icons/mob/blob.dmi', icon_state = "blob_head")
var/mutable_appearance/blob_head_overlay = mutable_appearance('icons/mob/blob.dmi', "blob_head")
if(overmind)
I.color = overmind.blob_reagent_datum.complementary_color
blob_head_overlay.color = overmind.blob_reagent_datum.complementary_color
color = initial(color)//looks better.
add_overlay(I)
add_overlay(blob_head_overlay)
/mob/living/simple_animal/hostile/blob/blobspore/weak
name = "fragile blob spore"
+4 -5
View File
@@ -33,12 +33,11 @@
/obj/structure/blob/core/update_icon()
cut_overlays()
color = null
var/image/I = new('icons/mob/blob.dmi', "blob")
var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob")
if(overmind)
I.color = overmind.blob_reagent_datum.color
add_overlay(I)
var/image/C = new('icons/mob/blob.dmi', "blob_core_overlay")
add_overlay(C)
blob_overlay.color = overmind.blob_reagent_datum.color
add_overlay(blob_overlay)
add_overlay(mutable_appearance('icons/mob/blob.dmi', "blob_core_overlay"))
/obj/structure/blob/core/Destroy()
GLOB.blob_cores -= src
+4 -5
View File
@@ -21,12 +21,11 @@
/obj/structure/blob/node/update_icon()
cut_overlays()
color = null
var/image/I = new('icons/mob/blob.dmi', "blob")
var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob")
if(overmind)
I.color = overmind.blob_reagent_datum.color
add_overlay(I)
var/image/C = new('icons/mob/blob.dmi', "blob_node_overlay")
add_overlay(C)
blob_overlay.color = overmind.blob_reagent_datum.color
add_overlay(blob_overlay)
add_overlay(mutable_appearance('icons/mob/blob.dmi', "blob_node_overlay"))
/obj/structure/blob/node/Destroy()
GLOB.blob_nodes -= src
@@ -42,8 +42,7 @@
icon_state = "geisbinding"
mob_layer = M.layer
layer = M.layer - 0.01
var/image/GB = new('icons/effects/clockwork_effects.dmi', src, "geisbinding_top", M.layer + 0.01)
add_overlay(GB)
add_overlay(mutable_appearance('icons/effects/clockwork_effects.dmi', "geisbinding_top", M.layer + 0.01))
for(var/obj/item/I in M.held_items)
M.dropItemToGround(I)
for(var/i in M.get_empty_held_indexes())
@@ -25,7 +25,7 @@
START_PROCESSING(SSobj, src)
send_to_playing_players("<span class='ratvar'>\"[text2ratvar("ONCE AGAIN MY LIGHT SHALL SHINE ACROSS THIS PATHETIC REALM")]!!\"</span>")
send_to_playing_players('sound/effects/ratvar_reveal.ogg')
var/image/alert_overlay = image('icons/effects/clockwork_effects.dmi', "ratvar_alert")
var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/clockwork_effects.dmi', "ratvar_alert")
var/area/A = get_area(src)
notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [A.name] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay)
INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency..proc/request, null, 0)
@@ -14,8 +14,8 @@
debris = list(/obj/item/clockwork/alloy_shards/medium = 1, \
/obj/item/clockwork/alloy_shards/small = 6, \
/obj/item/clockwork/component/replicant_alloy/replication_plate = 1)
var/image/daemon_glow
var/image/component_glow
var/static/mutable_appearance/daemon_glow = mutable_appearance('icons/obj/clockwork_objects.dmi', "tinkerglow")
var/static/mutable_appearance/component_glow = mutable_appearance('icons/obj/clockwork_objects.dmi', "t_random_component")
var/component_id_to_produce
var/production_time = 0 //last time we produced a component
var/production_cooldown = 120
@@ -119,14 +119,9 @@
. = ..()
if(active)
var/component_color = get_component_color(component_id_to_produce)
if(!daemon_glow)
daemon_glow = new('icons/obj/clockwork_objects.dmi', "tinkerglow")
daemon_glow.color = component_color
add_overlay(daemon_glow)
if(!component_glow)
component_glow = new('icons/obj/clockwork_objects.dmi', "t_[component_id_to_produce ? component_id_to_produce :"random_component"]")
else
component_glow.icon_state = "t_[component_id_to_produce ? component_id_to_produce :"random_component"]"
component_glow.icon_state = "t_[component_id_to_produce ? component_id_to_produce :"random_component"]"
component_glow.color = component_color
add_overlay(component_glow)
production_time = world.time + production_cooldown //don't immediately produce when turned on after being off
+3 -3
View File
@@ -201,9 +201,9 @@
return 0
/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands)
. = list()
if(!isinhands && current_charges)
. += image(layer = MOB_LAYER+0.01, icon = 'icons/effects/effects.dmi', icon_state = "shield-cult")
. = list()
if(!isinhands && current_charges)
. += mutable_appearance('icons/effects/effects.dmi', "shield-cult", MOB_LAYER + 0.01)
/obj/item/clothing/suit/hooded/cultrobes/berserker
name = "flagellant's robes"
+5 -5
View File
@@ -775,11 +775,11 @@ structure_check() searches for nearby cultist structures required for the invoca
deltimer(density_timer)
air_update_turf(1)
if(density)
var/image/I = image(layer = ABOVE_MOB_LAYER, icon = 'icons/effects/effects.dmi', icon_state = "barriershimmer")
I.appearance_flags = RESET_COLOR
I.alpha = 60
I.color = "#701414"
add_overlay(I)
var/mutable_appearance/shimmer = mutable_appearance('icons/effects/effects.dmi', "barriershimmer", ABOVE_MOB_LAYER)
shimmer.appearance_flags |= RESET_COLOR
shimmer.alpha = 60
shimmer.color = "#701414"
add_overlay(shimmer)
add_atom_colour("#FF0000", FIXED_COLOUR_PRIORITY)
else
cut_overlays()
@@ -5,7 +5,7 @@
return 0
/mob/living/carbon/true_devil/update_inv_hands()
//TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_image should use the down sprite when facing down, left, or right, and the up sprite when facing up.
//TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_overlay should use the down sprite when facing down, left, or right, and the up sprite when facing up.
remove_overlay(DEVIL_HANDS_LAYER)
var/list/hands_overlays = list()
var/obj/item/l_hand = get_item_for_held_index(1) //hardcoded 2-hands only, for now.
@@ -17,9 +17,9 @@
if(!r_state)
r_state = r_hand.icon_state
var/image/r_hand_image = r_hand.build_worn_icon(state = r_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(state = r_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
hands_overlays += r_hand_image
hands_overlays += r_hand_overlay
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
r_hand.layer = ABOVE_HUD_LAYER
@@ -33,9 +33,9 @@
if(!l_state)
l_state = l_hand.icon_state
var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(state = l_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
hands_overlays += l_hand_image
hands_overlays += l_hand_overlay
if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD)
l_hand.layer = ABOVE_HUD_LAYER
@@ -54,6 +54,5 @@
/mob/living/carbon/true_devil/apply_overlay(cache_index)
var/image/I = devil_overlays[cache_index]
if(I)
add_overlay(I)
if((. = devil_overlays[cache_index]))
add_overlay(.)
+15 -13
View File
@@ -37,8 +37,8 @@
var/previous_level = ""
var/obj/item/nuke_core/core = null
var/deconstruction_state = NUKESTATE_INTACT
var/image/lights = null
var/image/interior = null
var/lights = ""
var/interior = ""
var/obj/effect/countdown/nuclearbomb/countdown
var/static/bomb_set
@@ -201,30 +201,32 @@
cut_overlay(interior)
switch(deconstruction_state)
if(NUKESTATE_UNSCREWED)
interior = image(icon,"panel-unscrewed")
interior = "panel-unscrewed"
if(NUKESTATE_PANEL_REMOVED)
interior = image(icon,"panel-removed")
interior = "panel-removed"
if(NUKESTATE_WELDED)
interior = image(icon,"plate-welded")
interior = "plate-welded"
if(NUKESTATE_CORE_EXPOSED)
interior = image(icon,"plate-removed")
interior = "plate-removed"
if(NUKESTATE_CORE_REMOVED)
interior = image(icon,"core-removed")
interior = "core-removed"
if(NUKESTATE_INTACT)
interior = null
return
add_overlay(interior)
/obj/machinery/nuclearbomb/proc/update_icon_lights()
cut_overlay(lights)
if(lights)
cut_overlay(lights)
switch(get_nuke_state())
if(NUKE_OFF_LOCKED)
lights = null
lights = ""
return
if(NUKE_OFF_UNLOCKED)
lights = image(icon,"lights-safety")
lights = "lights-safety"
if(NUKE_ON_TIMING)
lights = image(icon,"lights-timing")
lights = "lights-timing"
if(NUKE_ON_EXPLODING)
lights = image(icon,"lights-exploding")
lights = "lights-exploding"
add_overlay(lights)
/obj/machinery/nuclearbomb/process()
+4 -5
View File
@@ -96,7 +96,6 @@
return
if(!usr || !usr.canUseTopic(src) || usr.incapacitated() || stat || QDELETED(src))
return
var/image/I = image(src) //For feedback message flavor
if(href_list["authenticate"])
var/obj/item/weapon/card/id/ID = usr.get_active_held_item()
if(!istype(ID))
@@ -117,24 +116,24 @@
authenticated = FALSE
auth_id = "\[NULL\]"
if(href_list["restore_logging"])
to_chat(usr, "<span class='robot notice'>\icon[I] Logging functionality restored from backup data.</span>")
to_chat(usr, "<span class='robot notice'>\icon[src] Logging functionality restored from backup data.</span>")
emagged = FALSE
LAZYADD(logs, "<b>-=- Logging restored to full functionality at this point -=-</b>")
if(href_list["access_apc"])
playsound(src, "terminal_type", 50, 0)
var/obj/machinery/power/apc/APC = locate(href_list["access_apc"]) in GLOB.apcs_list
if(!APC || APC.aidisabled || APC.panel_open || QDELETED(APC))
to_chat(usr, "<span class='robot danger'>\icon[I] APC does not return interface request. Remote access may be disabled.</span>")
to_chat(usr, "<span class='robot danger'>\icon[src] APC does not return interface request. Remote access may be disabled.</span>")
return
if(active_apc)
to_chat(usr, "<span class='robot danger'>\icon[I] Disconnected from [active_apc].</span>")
to_chat(usr, "<span class='robot danger'>\icon[src] Disconnected from [active_apc].</span>")
active_apc.say("Remote access canceled. Interface locked.")
playsound(active_apc, 'sound/machines/BoltsDown.ogg', 25, 0)
playsound(active_apc, 'sound/machines/terminal_alert.ogg', 50, 0)
active_apc.locked = TRUE
active_apc.update_icon()
active_apc = null
to_chat(usr, "<span class='robot notice'>\icon[I] Connected to APC in [get_area(APC)]. Interface request sent.</span>")
to_chat(usr, "<span class='robot notice'>\icon[src] Connected to APC in [get_area(APC)]. Interface request sent.</span>")
log_activity("remotely accessed APC in [get_area(APC)]")
APC.interact(usr, GLOB.not_incapacitated_state)
playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0)
+2 -2
View File
@@ -419,7 +419,7 @@
to_chat(H, "\icon[customrecepient] <b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)")
log_pda("[usr]/([usr.ckey]) (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]")
customrecepient.cut_overlays()
customrecepient.add_overlay(image('icons/obj/pda.dmi', "pda-r"))
customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
//Sender is faking as someone who exists
else
src.linkedServer.send_pda_message("[customrecepient.owner]", "[PDARec.owner]","[custommessage]")
@@ -432,7 +432,7 @@
to_chat(H, "\icon[customrecepient] <b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[customrecepient];choice=Message;skiprefresh=1;target=\ref[PDARec]'>Reply</a>)")
log_pda("[usr]/([usr.ckey]) (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]")
customrecepient.cut_overlays()
customrecepient.add_overlay(image('icons/obj/pda.dmi', "pda-r"))
customrecepient.add_overlay(mutable_appearance('icons/obj/pda.dmi', "pda-r"))
//Finally..
ResetMessage()
+9 -11
View File
@@ -366,13 +366,13 @@
set_airlock_overlays(state)
/obj/machinery/door/airlock/proc/set_airlock_overlays(state)
var/image/frame_overlay
var/image/filling_overlay
var/image/lights_overlay
var/image/panel_overlay
var/image/weld_overlay
var/image/damag_overlay
var/image/sparks_overlay
var/mutable_appearance/frame_overlay
var/mutable_appearance/filling_overlay
var/mutable_appearance/lights_overlay
var/mutable_appearance/panel_overlay
var/mutable_appearance/weld_overlay
var/mutable_appearance/damag_overlay
var/mutable_appearance/sparks_overlay
switch(state)
if(AIRLOCK_CLOSED)
@@ -494,10 +494,8 @@
pass(A) //suppress unused warning
var/list/airlock_overlays = A.airlock_overlays
var/iconkey = "[icon_state][icon_file]"
if(airlock_overlays[iconkey])
return airlock_overlays[iconkey]
airlock_overlays[iconkey] = image(icon_file, icon_state)
return airlock_overlays[iconkey]
if((!(. = airlock_overlays[iconkey])))
. = airlock_overlays[iconkey] = mutable_appearance(icon_file, icon_state)
/obj/machinery/door/airlock/do_animate(animation)
switch(animation)
+1 -1
View File
@@ -184,7 +184,7 @@
if(maptext)
maptext = ""
cut_overlays()
add_overlay(image('icons/obj/status_display.dmi', icon_state=state))
add_overlay(mutable_appearance('icons/obj/status_display.dmi', state))
//Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display
+10 -10
View File
@@ -36,27 +36,27 @@
else
add_overlay("beakeridle")
if(beaker.reagents.total_volume)
var/image/filling = image('icons/obj/iv_drip.dmi', src, "reagent")
var/mutable_appearance/filling_overlay = mutable_appearance('icons/obj/iv_drip.dmi', "reagent")
var/percent = round((beaker.reagents.total_volume / beaker.volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "reagent0"
filling_overlay.icon_state = "reagent0"
if(10 to 24)
filling.icon_state = "reagent10"
filling_overlay.icon_state = "reagent10"
if(25 to 49)
filling.icon_state = "reagent25"
filling_overlay.icon_state = "reagent25"
if(50 to 74)
filling.icon_state = "reagent50"
filling_overlay.icon_state = "reagent50"
if(75 to 79)
filling.icon_state = "reagent75"
filling_overlay.icon_state = "reagent75"
if(80 to 90)
filling.icon_state = "reagent80"
filling_overlay.icon_state = "reagent80"
if(91 to INFINITY)
filling.icon_state = "reagent100"
filling_overlay.icon_state = "reagent100"
filling.icon += mix_color_from_reagents(beaker.reagents.reagent_list)
add_overlay(filling)
filling_overlay.color = list("#0000", "#0000", "#0000", "#000f", mix_color_from_reagents(beaker.reagents.reagent_list))
add_overlay(filling_overlay)
/obj/machinery/iv_drip/MouseDrop(mob/living/target)
if(!ishuman(usr) || !usr.canUseTopic(src,BE_CLOSE) || !isliving(target))
+2 -2
View File
@@ -146,7 +146,7 @@
/obj/machinery/status_display/proc/set_picture(state)
picture_state = state
remove_display()
add_overlay(image('icons/obj/status_display.dmi', icon_state=picture_state))
add_overlay(picture_state)
/obj/machinery/status_display/proc/update_display(line1, line2)
var/new_text = {"<div style="font-size:[FONT_SIZE];color:[FONT_COLOR];font:'[FONT_STYLE]';text-align:center;" valign="top">[line1]<br>[line2]</div>"}
@@ -278,7 +278,7 @@
/obj/machinery/ai_status_display/proc/set_picture(state)
picture_state = state
cut_overlays()
add_overlay(image('icons/obj/status_display.dmi', icon_state=picture_state))
add_overlay(picture_state)
#undef CHARS_PER_LINE
#undef FOND_SIZE
+1 -1
View File
@@ -297,7 +297,7 @@
to_chat(user, "<span class='notice'>You [panel_open ? "open" : "close"] the maintenance panel.</span>")
cut_overlays()
if(panel_open)
add_overlay(image(icon, "[initial(icon_state)]-panel"))
add_overlay("[initial(icon_state)]-panel")
playsound(src.loc, W.usesound, 50, 1)
updateUsrDialog()
else
+1 -1
View File
@@ -186,7 +186,7 @@
var/full = contents.len ? 1 : 0
icon_state = "wm_[state_open]_[full]"
if(panel_open)
add_overlay(image(icon, icon_state = "wm_panel"))
add_overlay("wm_panel")
/obj/machinery/washing_machine/attackby(obj/item/weapon/W, mob/user, params)
if(default_deconstruction_screwdriver(user, null, null, W))
+1 -1
View File
@@ -23,7 +23,7 @@
AI.apply_damage(150, BURN) //Give the AI a bit of damage from the "shock" of being suddenly shut down
AI.death() //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair.
AI.forceMove(src) //Put the dead AI inside the wreckage for recovery
add_overlay(image('icons/obj/projectiles.dmi', icon_state = "green_laser")) //Overlay for the recovery beacon
add_overlay(mutable_appearance('icons/obj/projectiles.dmi', "green_laser")) //Overlay for the recovery beacon
AI.controlled_mech = null
AI.remote_control = null
+2 -2
View File
@@ -48,9 +48,9 @@
if (hides)
cut_overlays()
if(hides < 3)
add_overlay(image("icon" = "mecha.dmi", "icon_state" = occupant ? "ripley-g" : "ripley-g-open"))
add_overlay(occupant ? "ripley-g" : "ripley-g-open")
else
add_overlay(image("icon" = "mecha.dmi", "icon_state" = occupant ? "ripley-g-full" : "ripley-g-full-open"))
add_overlay(occupant ? "ripley-g-full" : "ripley-g-full-open")
/obj/mecha/working/ripley/firefighter
@@ -161,23 +161,15 @@
for(var/Ddir in GLOB.cardinal)
if(entered_dirs & Ddir)
var/image/I
if(GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"])
I = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
else
I = image(icon,"[blood_state]1",dir = Ddir)
GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = I
if(I)
add_overlay(I)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]1", dir = Ddir)
add_overlay(bloodstep_overlay)
if(exited_dirs & Ddir)
var/image/I
if(GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"])
I = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"]
else
I = image(icon,"[blood_state]2",dir = Ddir)
GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = I
if(I)
add_overlay(I)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"]
if(!bloodstep_overlay)
GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir)
add_overlay(bloodstep_overlay)
alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness
+1 -1
View File
@@ -1,4 +1,4 @@
GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/effects/fire.dmi', "icon_state" = "fire"))
GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/effects/fire.dmi', "fire"))
GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
// if true, everyone item when created will have its name changed to be
+4 -5
View File
@@ -521,7 +521,7 @@
/obj/item/weapon/storage/crayons/update_icon()
cut_overlays()
for(var/obj/item/toy/crayon/crayon in contents)
add_overlay(image('icons/obj/crayons.dmi',crayon.item_color))
add_overlay(mutable_appearance('icons/obj/crayons.dmi', crayon.item_color))
/obj/item/weapon/storage/crayons/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/toy/crayon))
@@ -667,10 +667,9 @@
icon_state = is_capped ? icon_capped : icon_uncapped
if(use_overlays)
cut_overlays()
var/image/I = image('icons/obj/crayons.dmi',
icon_state = "[is_capped ? "spraycan_cap_colors" : "spraycan_colors"]")
I.color = paint_color
add_overlay(I)
var/mutable_appearance/spray_overlay = mutable_appearance('icons/obj/crayons.dmi', "[is_capped ? "spraycan_cap_colors" : "spraycan_colors"]")
spray_overlay.color = paint_color
add_overlay(spray_overlay)
/obj/item/toy/crayon/spraycan/gang
//desc = "A modified container containing suspicious paint."
+14 -12
View File
@@ -51,7 +51,7 @@ GLOBAL_LIST_EMPTY(PDAs)
var/obj/item/device/paicard/pai = null // A slot for a personal AI device
var/image/photo = null //Scanned photo
var/icon/photo //Scanned photo
var/list/contained_item = list(/obj/item/weapon/pen, /obj/item/toy/crayon, /obj/item/weapon/lipstick, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/cigarette)
var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above.
@@ -82,22 +82,24 @@ GLOBAL_LIST_EMPTY(PDAs)
/obj/item/device/pda/update_icon()
cut_overlays()
var/mutable_appearance/overlay = new()
overlay.pixel_x = overlays_x_offset
if(id)
var/image/I = image(icon_state = "id_overlay", pixel_x = overlays_x_offset)
add_overlay(I)
overlay.icon_state = "id_overlay"
add_overlay(new /mutable_appearance(overlay))
if(inserted_item)
var/image/I = image(icon_state = "insert_overlay", pixel_x = overlays_x_offset)
add_overlay(I)
overlay.icon_state = "insert_overlay"
add_overlay(new /mutable_appearance(overlay))
if(fon)
var/image/I = image(icon_state = "light_overlay", pixel_x = overlays_x_offset)
add_overlay(I)
overlay.icon_state = "light_overlay"
add_overlay(new /mutable_appearance(overlay))
if(pai)
if(pai.pai)
var/image/I = image(icon_state = "pai_overlay", pixel_x = overlays_x_offset)
add_overlay(I)
overlay.icon_state = "pai_overlay"
add_overlay(new /mutable_appearance(overlay))
else
var/image/I = image(icon_state = "pai_off_overlay", pixel_x = overlays_x_offset)
add_overlay(I)
overlay.icon_state = "pai_off_overlay"
add_overlay(new /mutable_appearance(overlay))
/obj/item/device/pda/MouseDrop(obj/over_object, src_location, over_location)
var/mob/M = usr
@@ -633,7 +635,7 @@ GLOBAL_LIST_EMPTY(PDAs)
to_chat(L, "\icon[src] <b>Message from [source.owner] ([source.ownjob]), </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
update_icon()
add_overlay(image(icon, icon_alert))
add_overlay(icon_alert)
/obj/item/device/pda/proc/show_to_ghosts(mob/living/user, datum/data_pda_msg/msg,multiple = 0)
for(var/mob/M in GLOB.player_list)
+2 -2
View File
@@ -23,6 +23,7 @@
update_icon() //Whatever happened, update the card's state (icon, name) to match.
/obj/item/device/aicard/update_icon()
cut_overlays()
if(AI)
name = "[initial(name)]- [AI.name]"
if(AI.stat == DEAD)
@@ -30,12 +31,11 @@
else
icon_state = "aicard-full"
if(!AI.control_disabled)
add_overlay(image('icons/obj/aicards.dmi', "aicard-on"))
add_overlay("aicard-on")
AI.cancel_camera()
else
name = initial(name)
icon_state = initial(icon_state)
cut_overlays()
/obj/item/device/aicard/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
@@ -344,8 +344,9 @@
cut_overlays()
set_light(0)
else if(on)
var/image/I = image(icon,"glowstick-glow",color)
add_overlay(I)
var/mutable_appearance/glowstick_overlay = mutable_appearance(icon, "glowstick-glow")
glowstick_overlay.color = color
add_overlay(glowstick_overlay)
item_state = "glowstick-on"
set_light(brightness_on)
else
+1 -1
View File
@@ -493,7 +493,7 @@
/obj/item/projectile/bullet/reusable/lollipop/New()
var/obj/item/weapon/reagent_containers/food/snacks/lollipop/S = new ammo_type(src)
color2 = S.headcolor
var/image/head = image(icon = 'icons/obj/projectiles.dmi', icon_state = "lollipop_2")
var/mutable_appearance/head = mutable_appearance('icons/obj/projectiles.dmi', "lollipop_2")
head.color = color2
add_overlay(head)
+8 -8
View File
@@ -73,18 +73,18 @@
if(hp <= 0)
visible_message("<span class='danger'>[src] breaks into tiny pieces and collapses!</span>")
qdel(src)
var/image/I = image("icon"='icons/effects/effects.dmi', "icon_state"="scorch", "layer"=OBJ_LAYER+0.5)
I.pixel_x = p_x - 1 //offset correction
I.pixel_y = p_y - 1
var/image/bullet_hole = image('icons/effects/effects.dmi', "scorch", OBJ_LAYER + 0.5)
bullet_hole.pixel_x = p_x - 1 //offset correction
bullet_hole.pixel_y = p_y - 1
if(decaltype == DECALTYPE_SCORCH)
I.setDir(pick(NORTH,SOUTH,EAST,WEST))// random scorch design
bullet_hole.setDir(pick(NORTH,SOUTH,EAST,WEST))// random scorch design
if(P.damage >= 20 || istype(P, /obj/item/projectile/beam/practice))
I.setDir(pick(NORTH,SOUTH,EAST,WEST))
bullet_hole.setDir(pick(NORTH,SOUTH,EAST,WEST))
else
I.icon_state = "light_scorch"
bullet_hole.icon_state = "light_scorch"
else
I.icon_state = "dent"
add_overlay(I)
bullet_hole.icon_state = "dent"
add_overlay(bullet_hole)
return
return -1
@@ -155,7 +155,7 @@
var/mob/living/captured = null
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
var/tickstokill = 15
var/image/mob_underlay = null
var/mutable_appearance/mob_underlay
var/preloaded = 0
var/RPpos = null
@@ -172,7 +172,7 @@
mob_icon.Blend(removing_frame, ICON_MULTIPLY)
cached_icon.Insert(mob_icon, "frame[i]")
mob_underlay = new(cached_icon, "frame1")
mob_underlay = mutable_appearance(cached_icon, "frame1")
update_icon()
desc = initial(desc) + "<br><span class='info'>It appears to contain [target.name].</span>"
@@ -496,11 +496,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/weapon/lighter/greyscale/update_icon()
cut_overlays()
var/image/I = image(icon,"[initial(icon_state)]_base")
I.appearance_flags = RESET_COLOR //the edging doesn't change color
var/mutable_appearance/base_overlay = mutable_appearance(icon,"[initial(icon_state)]_base")
base_overlay.appearance_flags = RESET_COLOR //the edging doesn't change color
if(lit)
I.icon_state = "[initial(icon_state)]_on"
add_overlay(I)
base_overlay.icon_state = "[initial(icon_state)]_on"
add_overlay(base_overlay)
/obj/item/weapon/lighter/greyscale/ignition_effect(atom/A, mob/user)
. = "<span class='notice'>After some fiddling, [user] manages to light [A] with [src].</span>"
@@ -651,9 +651,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
screw = 1
to_chat(user, "<span class='notice'>You open the cap on the [src]</span>")
if(super)
add_overlay(image(icon, "vapeopen_med"))
add_overlay("vapeopen_med")
else
add_overlay(image(icon, "vapeopen_low"))
add_overlay("vapeopen_low")
else
screw = 0
to_chat(user, "<span class='notice'>You close the cap on the [src]</span>")
@@ -665,12 +665,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
cut_overlays()
super = 1
to_chat(user, "<span class='notice'>You increase the voltage in the [src]</span>")
add_overlay(image(icon, "vapeopen_med"))
add_overlay("vapeopen_med")
else
cut_overlays()
super = 0
to_chat(user, "<span class='notice'>You decrease the voltage in the [src]</span>")
add_overlay(image(icon, "vapeopen_low"))
add_overlay("vapeopen_low")
if(screw && emagged)
to_chat(user, "<span class='notice'>The [name] can't be modified!</span>")
@@ -683,7 +683,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
emagged = 1
super = 0
to_chat(user, "<span class='warning'>You maximize the voltage in the [src]</span>")
add_overlay(image(icon, "vapeopen_high"))
add_overlay("vapeopen_high")
var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread //for effect
sp.set_up(5, 1, src)
sp.start()
+3 -3
View File
@@ -38,10 +38,10 @@
to_chat(user, "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>")
open = !open
if(open)
var/image/colored = image("icon"='icons/obj/items.dmi', "icon_state"="lipstick_uncap_color")
colored.color = colour
var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color")
colored_overlay.color = colour
icon_state = "lipstick_uncap"
add_overlay(colored)
add_overlay(colored_overlay)
else
icon_state = "lipstick"
@@ -16,7 +16,7 @@
/obj/item/weapon/c4/New()
wires = new /datum/wires/explosive/c4(src)
image_overlay = image('icons/obj/grenade.dmi', "plastic-explosive2")
plastic_overlay = mutable_appearance(icon, "plastic-explosive2")
..()
/obj/item/weapon/c4/Destroy()
@@ -92,7 +92,7 @@
message_admins(message,0,1)
log_game("[key_name(user)] planted [name] on [target.name] at [COORD(target)] with [timer] second fuse")
target.add_overlay(image_overlay, 1)
target.add_overlay(plastic_overlay, 1)
to_chat(user, "<span class='notice'>You plant the bomb. Timer counting down from [timer].</span>")
addtimer(CALLBACK(src, .proc/explode), timer * 10)
@@ -103,7 +103,7 @@
if(target)
if(!QDELETED(target))
location = get_turf(target)
target.cut_overlay(image_overlay, TRUE)
target.cut_overlay(plastic_overlay, TRUE)
else
location = get_turf(src)
if(location)
@@ -19,8 +19,8 @@
/obj/item/weapon/grenade/iedcasing/New(loc)
..()
add_overlay(image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled"))
add_overlay(image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_wired"))
add_overlay("improvised_grenade_filled")
add_overlay("improvised_grenade_wired")
times = list("5" = 10, "-1" = 20, "[rand(30,80)]" = 50, "[rand(65,180)]" = 20)// "Premature, Dud, Short Fuse, Long Fuse"=[weighting value]
det_time = text2num(pickweight(times))
if(det_time < 0) //checking for 'duds'
@@ -33,13 +33,10 @@
..()
var/obj/item/weapon/reagent_containers/food/drinks/soda_cans/can = locate() in contents
if(can)
var/muh_layer = can.layer
var/muh_plane = can.plane
can.layer = FLOAT_LAYER
can.plane = FLOAT_PLANE
underlays += can
can.layer = muh_layer
can.plane = muh_plane
var/mutable_appearance/can_underlay = new(can)
can_underlay.layer = FLOAT_LAYER
can_underlay.plane = FLOAT_PLANE
underlays += can_underlay
/obj/item/weapon/grenade/iedcasing/attack_self(mob/user) //
@@ -47,7 +44,7 @@
if(clown_check(user))
to_chat(user, "<span class='warning'>You light the [name]!</span>")
active = 1
cut_overlay(image('icons/obj/grenade.dmi', icon_state = "improvised_grenade_filled"), TRUE) //this line make no sense
cut_overlay("improvised_grenade_filled")
icon_state = initial(icon_state) + "_active"
add_fingerprint(user)
var/turf/bombturf = get_turf(src)
@@ -7,7 +7,7 @@
det_time = 10
display_timer = 0
var/atom/target = null
var/image_overlay = null
var/mutable_appearance/plastic_overlay
var/obj/item/device/assembly_holder/nadeassembly = null
var/assemblyattacher
var/directional = FALSE
@@ -15,7 +15,7 @@
var/boom_sizes = list(0, 0, 3)
/obj/item/weapon/grenade/plastic/New()
image_overlay = image('icons/obj/grenade.dmi', "[item_state]2")
plastic_overlay = mutable_appearance(icon, "[item_state]2")
..()
/obj/item/weapon/grenade/plastic/Destroy()
@@ -50,7 +50,7 @@
if(target)
if(!QDELETED(target))
location = get_turf(target)
target.cut_overlay(image_overlay, TRUE)
target.cut_overlay(plastic_overlay, TRUE)
else
location = get_turf(src)
if(location)
@@ -111,7 +111,7 @@
message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1)
log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse")
target.add_overlay(image_overlay, 1)
target.add_overlay(plastic_overlay, 1)
if(!nadeassembly)
to_chat(user, "<span class='notice'>You plant the bomb. Timer counting down from [det_time].</span>")
addtimer(CALLBACK(src, .proc/prime), det_time*10)
@@ -71,7 +71,7 @@
/obj/item/weapon/nullrod/staff/worn_overlays(isinhands)
. = list()
if(isinhands)
. += image(layer = MOB_LAYER+0.01, icon = 'icons/effects/effects.dmi', icon_state = "[shield_icon]")
. += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01)
/obj/item/weapon/nullrod/staff/blue
name = "blue holy staff"
@@ -162,5 +162,5 @@
src.cut_overlays()
if(!tank)
return
src.add_overlay(image('icons/obj/pneumaticCannon.dmi', "[tank.icon_state]"))
add_overlay(tank.icon_state)
src.update_icon()
@@ -334,14 +334,14 @@
/obj/item/weapon/storage/bag/tray/proc/rebuild_overlays()
cut_overlays()
for(var/obj/item/I in contents)
add_overlay(image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = -1))
add_overlay(mutable_appearance(I.icon, I.icon_state))
/obj/item/weapon/storage/bag/tray/remove_from_storage(obj/item/W as obj, atom/new_location)
..()
rebuild_overlays()
/obj/item/weapon/storage/bag/tray/handle_item_insertion(obj/item/I, prevent_warning = 0)
add_overlay(image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = -1))
add_overlay(mutable_appearance(I.icon, I.icon_state))
. = ..()
@@ -38,7 +38,7 @@
. = ..()
if(illustration)
cut_overlays()
add_overlay(image('icons/obj/storage.dmi', "[illustration]"))
add_overlay(illustration)
/obj/item/weapon/storage/box/attack_self(mob/user)
..()
@@ -141,12 +141,15 @@
add_overlay("[icon_state]_open")
var/i = contents.len
for(var/C in contents)
var/mutable_appearance/inserted_overlay = mutable_appearance(icon)
inserted_overlay.pixel_x = 1 * (i - 1)
if(istype(C, /obj/item/weapon/lighter/greyscale))
add_overlay(image(icon = src.icon, icon_state = "lighter_in", pixel_x = 1 * (i -1)))
inserted_overlay.icon_state = "lighter_in"
else if(istype(C, /obj/item/weapon/lighter))
add_overlay(image(icon = src.icon, icon_state = "zippo_in", pixel_x = 1 * (i -1)))
inserted_overlay.icon_state = "zippo_in"
else
add_overlay(image(icon = src.icon, icon_state = "cigarette", pixel_x = 1 * (i -1)))
inserted_overlay.icon_state = "cigarette"
add_overlay(inserted_overlay)
i--
else
cut_overlays()
@@ -247,13 +250,14 @@
spawn_type = /obj/item/clothing/mask/cigarette/cigar
/obj/item/weapon/storage/fancy/cigarettes/cigars/update_icon()
cut_overlays()
if(fancy_open)
cut_overlays()
add_overlay("[icon_state]_open")
var/mutable_appearance/cigar_overlay = mutable_appearance(icon, icon_type)
for(var/c = contents.len, c >= 1, c--)
add_overlay(image(icon = src.icon, icon_state = icon_type, pixel_x = 4 * (c -1)))
cigar_overlay.pixel_x = 4 * (c - 1)
add_overlay(cigar_overlay)
else
cut_overlays()
icon_state = "cigarcase"
/obj/item/weapon/storage/fancy/cigarettes/cigars/cohiba
@@ -94,7 +94,7 @@
else if ((src.code == src.l_code) && (src.l_set == 1))
src.locked = 0
cut_overlays()
add_overlay(image('icons/obj/storage.dmi', icon_opened))
add_overlay(icon_opened)
src.code = null
else
src.code = "ERROR"
@@ -29,7 +29,7 @@
..()
cut_overlays()
if(has_latches)
add_overlay(image('icons/obj/storage.dmi', "[latches]"))
add_overlay(latches)
/obj/item/weapon/storage/toolbox/suicide_act(mob/user)
@@ -370,7 +370,7 @@
cut_overlays()
if(reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi',icon_state = "backpack-10")
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "backpack-10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
@@ -388,7 +388,7 @@
. = list()
//inhands + reagent_filling
if(!isinhands && reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi',icon_state = "backpackmob-10")
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "backpackmob-10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
+1 -1
View File
@@ -148,7 +148,7 @@
///// ACID
GLOBAL_DATUM_INIT(acid_overlay, /image, image("icon" = 'icons/effects/effects.dmi', "icon_state" = "acid"))
GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/effects/effects.dmi', "acid"))
//the obj's reaction when touched by acid
/obj/acid_act(acidpwr, acid_volume)
@@ -12,11 +12,7 @@
canSmoothWith = null
buildstacktype = null
flags = NODECONSTRUCT
var/image/nest_overlay
/obj/structure/bed/nest/New()
nest_overlay = image('icons/mob/alien.dmi', "nestoverlay", layer=LYING_MOB_LAYER)
return ..()
var/static/mutable_appearance/nest_overlay = mutable_appearance('icons/mob/alien.dmi', "nestoverlay", LYING_MOB_LAYER)
/obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/living/user)
if(has_buckled_mobs())
@@ -145,11 +145,11 @@
obj_integrity = 70
max_integrity = 70
buildstackamount = 2
var/image/armrest = null
var/mutable_appearance/armrest
item_chair = null
/obj/structure/chair/comfy/Initialize()
armrest = image("icons/obj/chairs.dmi", "comfychair_armrest")
armrest = mutable_appearance('icons/obj/chairs.dmi', "comfychair_armrest")
armrest.layer = ABOVE_MOB_LAYER
return ..()
@@ -8,7 +8,7 @@
/obj/structure/chair/e_chair/New()
..()
add_overlay(image('icons/obj/chairs.dmi', src, "echair_over", MOB_LAYER + 1))
add_overlay(mutable_appearance('icons/obj/chairs.dmi', "echair_over", MOB_LAYER + 1))
/obj/structure/chair/e_chair/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
+4 -2
View File
@@ -7,7 +7,7 @@
anchored = 0
density = 1
opacity = 0
var/case_type = null
var/case_type = ""
var/gun_category = /obj/item/weapon/gun
var/open = 1
var/capacity = 4
@@ -25,8 +25,10 @@
/obj/structure/guncase/update_icon()
cut_overlays()
if(case_type && LAZYLEN(contents))
var/mutable_appearance/gun_overlay = mutable_appearance(icon, case_type)
for(var/i in 1 to contents.len)
add_overlay(image(icon = src.icon, icon_state = "[case_type]", pixel_x = 3 * (i - 1) ))
gun_overlay.pixel_x = 3 * (i - 1)
add_overlay(gun_overlay)
if(open)
add_overlay("[icon_state]_open")
else
@@ -143,21 +143,21 @@
/obj/structure/transit_tube/proc/create_tube_overlay(direction, shift_dir)
var/image/I
var/image/tube_overlay = new(dir = direction)
if(shift_dir)
I = image(loc = src, icon_state = "decorative_diag", dir = direction)
tube_overlay.icon_state = "decorative_diag"
switch(shift_dir)
if(NORTH)
I.pixel_y = 32
tube_overlay.pixel_y = 32
if(SOUTH)
I.pixel_y = -32
tube_overlay.pixel_y = -32
if(EAST)
I.pixel_x = 32
tube_overlay.pixel_x = 32
if(WEST)
I.pixel_x = -32
tube_overlay.pixel_x = -32
else
I = image(loc = src, icon_state = "decorative", dir = direction)
add_overlay(I)
tube_overlay.icon_state = "decorative"
add_overlay(tube_overlay)
+1 -1
View File
@@ -239,7 +239,7 @@
qdel(mymist)
if(on)
add_overlay(image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir))
add_overlay(mutable_appearance('icons/obj/watercloset.dmi', "water", MOB_LAYER + 1))
if(watertemp == "freezing")
return
if(!ismist)
+3 -3
View File
@@ -18,7 +18,7 @@
var/fulltile = 0
var/glass_type = /obj/item/stack/sheet/glass
var/glass_amount = 1
var/image/crack_overlay
var/static/mutable_appearance/crack_overlay = mutable_appearance('icons/obj/structures.dmi')
var/list/debris = list()
can_be_unanchored = 1
resistance_flags = ACID_PROOF
@@ -377,10 +377,10 @@
if(smooth)
queue_smooth(src)
cut_overlay(crack_overlay)
cut_overlays()
if(ratio > 75)
return
crack_overlay = image('icons/obj/structures.dmi',"damage[ratio]",-(layer+0.1))
crack_overlay.icon_state = "damage[ratio]"
add_overlay(crack_overlay)
/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+2 -4
View File
@@ -71,10 +71,8 @@
/turf/closed/indestructible/fakeglass/Initialize()
..()
icon_state = null //set the icon state to null, so our base state isn't visible
var/image/I = image('icons/obj/structures.dmi', loc = src, icon_state = "grille")
underlays += I //add a grille underlay
I = image('icons/turf/floors.dmi', loc = src, icon_state = "plating")
underlays += I //add the plating underlay, below the grille
underlays += mutable_appearance('icons/obj/structures.dmi', "grille") //add a grille underlay
underlays += mutable_appearance('icons/turf/floors.dmi', "plating") //add the plating underlay, below the grille
/turf/closed/indestructible/fakedoor
name = "Centcom Access"
+11 -6
View File
@@ -3,7 +3,7 @@
var/wet = 0
var/wet_time = 0 // Time in seconds that this floor will be wet for.
var/image/wet_overlay = null
var/mutable_appearance/wet_overlay
/turf/open/indestructible
name = "floor"
@@ -183,17 +183,22 @@
if(wet_setting != TURF_DRY)
if(wet_overlay)
cut_overlay(wet_overlay)
wet_overlay = null
else
wet_overlay = mutable_appearance()
var/turf/open/floor/F = src
if(istype(F))
if(wet_setting == TURF_WET_PERMAFROST)
wet_overlay = image('icons/effects/water.dmi', src, "ice_floor")
wet_overlay.icon = 'icons/effects/water.dmi'
wet_overlay.icon_state = "ice_floor"
else if(wet_setting == TURF_WET_ICE)
wet_overlay = image('icons/turf/overlays.dmi', src, "snowfloor")
wet_overlay.icon = 'icons/turf/overlays.dmi'
wet_overlay.icon_state = "snowfloor"
else
wet_overlay = image('icons/effects/water.dmi', src, "wet_floor_static")
wet_overlay.icon = 'icons/effects/water.dmi'
wet_overlay.icon_state = "wet_floor_static"
else
wet_overlay = image('icons/effects/water.dmi', src, "wet_static")
wet_overlay.icon = 'icons/effects/water.dmi'
wet_overlay.icon_state = "wet_static"
add_overlay(wet_overlay)
HandleWet()
+7 -8
View File
@@ -21,7 +21,7 @@
var/spread = 0 //will the seam spread?
var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles
var/last_act = 0
var/scan_state = null //Holder for the image we display when we're pinged by a mining scanner
var/scan_state = "" //Holder for the image we display when we're pinged by a mining scanner
var/defer_change = 0
/turf/closed/mineral/Initialize()
@@ -380,7 +380,7 @@
var/stage = 0 //How far into the lifecycle of gibtonite we are, 0 is untouched, 1 is active and attempting to detonate, 2 is benign and ready for extraction
var/activated_ckey = null //These are to track who triggered the gibtonite deposit for logging purposes
var/activated_name = null
var/activated_image = null
var/mutable_appearance/activated_overlay
/turf/closed/mineral/gibtonite/Initialize()
det_time = rand(8,10) //So you don't know exactly when the hot potato will explode
@@ -394,9 +394,8 @@
/turf/closed/mineral/gibtonite/proc/explosive_reaction(mob/user = null, triggered_by_explosion = 0)
if(stage == 0)
var/image/I = image('icons/turf/smoothrocks.dmi', loc = src, icon_state = "rock_Gibtonite_active", layer = ON_EDGED_TURF_LAYER)
add_overlay(I)
activated_image = I
activated_overlay = mutable_appearance('icons/turf/smoothrocks.dmi', "rock_Gibtonite_active", ON_EDGED_TURF_LAYER)
add_overlay(activated_overlay)
name = "gibtonite deposit"
desc = "An active gibtonite reserve. Run!"
stage = 1
@@ -433,9 +432,9 @@
/turf/closed/mineral/gibtonite/proc/defuse()
if(stage == 1)
cut_overlay(activated_image)
var/image/I = image('icons/turf/smoothrocks.dmi', loc = src, icon_state = "rock_Gibtonite_inactive", layer = ON_EDGED_TURF_LAYER)
add_overlay(I)
cut_overlay(activated_overlay)
activated_overlay.icon_state = "rock_Gibtonite_inactive"
add_overlay(activated_overlay)
desc = "An inactive gibtonite reserve. The ore can be extracted."
stage = 2
if(det_time < 0)
+3 -3
View File
@@ -17,18 +17,18 @@
if(src.client.handle_spam_prevention(msg,MUTE_PRAY))
return
var/image/cross = image('icons/obj/storage.dmi',"bible")
var/mutable_appearance/cross = mutable_appearance('icons/obj/storage.dmi', "bible")
var/font_color = "purple"
var/prayer_type = "PRAYER"
var/deity
if(usr.job == "Chaplain")
cross = image('icons/obj/storage.dmi',"kingyellow")
cross.icon_state = "kingyellow"
font_color = "blue"
prayer_type = "CHAPLAIN PRAYER"
if(SSreligion.deity)
deity = SSreligion.deity
else if(iscultist(usr))
cross = image('icons/obj/storage.dmi',"tome")
cross.icon_state = "tome"
font_color = "red"
prayer_type = "CULTIST PRAYER"
deity = "Nar-Sie"
+4 -7
View File
@@ -44,14 +44,11 @@
add_overlay("[O]_l")
if(a_right)
var/list/images = list()
images += image(icon, icon_state = "[a_right.icon_state]_left")
var/mutable_appearance/right = mutable_appearance(icon, "[a_right.icon_state]_left")
right.transform = matrix(-1, 0, 0, 0, 1, 0)
for(var/O in a_right.attached_overlays)
images += image(icon, icon_state = "[O]_l")
var/matrix = matrix(-1, 0, 0, 0, 1, 0)
for(var/image/I in images)
I.transform = matrix
add_overlay(I)
right.add_overlay("[O]_l")
add_overlay(right)
if(master)
master.update_icon()
@@ -201,17 +201,10 @@ Pipelines + Other Objects -> Pipe network
//Generate a unique identifier for this image combination
var/identifier = iconsetids[iconset] + "_[iconstate]_[direction]_[col]"
var/image/img
if(pipeimages[identifier] == null)
img = image(iconset, icon_state=iconstate, dir=direction)
img.color = col
pipeimages[identifier] = img
else
img = pipeimages[identifier]
return img
if((!(. = pipeimages[identifier])))
var/image/pipe_overlay
pipe_overlay = . = pipeimages[identifier] = image(iconset, iconstate, dir = direction)
pipe_overlay.color = col
/obj/machinery/atmospherics/on_construction(pipe_type, obj_color)
if(can_unwrench)
@@ -98,12 +98,11 @@
/obj/machinery/atmospherics/miner/update_icon()
overlays.Cut()
if(broken)
var/image/A = image(icon, "broken")
add_overlay(A)
add_overlay("broken")
else if(active)
var/image/A = image(icon, "on")
A.color = overlay_color
add_overlay(A)
var/mutable_appearance/on_overlay = mutable_appearance(icon, "on")
on_overlay.color = overlay_color
add_overlay(on_overlay)
/obj/machinery/atmospherics/miner/process()
update_power()
+18 -18
View File
@@ -250,9 +250,9 @@ BLIND // can't see anything
. = list()
if(!isinhands)
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedgloves")
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedgloves")
if(blood_DNA)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands")
. += mutable_appearance('icons/effects/blood.dmi', "bloodyhands")
/obj/item/clothing/gloves/update_clothes_damaged_state(damaging = TRUE)
..()
@@ -278,9 +278,9 @@ BLIND // can't see anything
. = list()
if(!isinhands)
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedhelmet")
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedhelmet")
if(blood_DNA)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="helmetblood")
. += mutable_appearance('icons/effects/blood.dmi', "helmetblood")
/obj/item/clothing/head/update_clothes_damaged_state(damaging = TRUE)
..()
@@ -303,9 +303,9 @@ BLIND // can't see anything
if(!isinhands)
if(body_parts_covered & HEAD)
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedmask")
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
if(blood_DNA)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="maskblood")
. += mutable_appearance('icons/effects/blood.dmi', "maskblood")
//Mask
@@ -325,9 +325,9 @@ BLIND // can't see anything
if(!isinhands)
if(body_parts_covered & HEAD)
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedmask")
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedmask")
if(blood_DNA)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="maskblood")
. += mutable_appearance('icons/effects/blood.dmi', "maskblood")
/obj/item/clothing/mask/update_clothes_damaged_state(damaging = TRUE)
..()
@@ -399,9 +399,9 @@ BLIND // can't see anything
bloody = bloody_shoes[BLOOD_STATE_HUMAN]
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damagedshoe")
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
if(bloody)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="shoeblood")
. += mutable_appearance('icons/effects/blood.dmi', "shoeblood")
/obj/item/clothing/shoes/equipped(mob/user, slot)
. = ..()
@@ -454,9 +454,9 @@ BLIND // can't see anything
. = list()
if(!isinhands)
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damaged[blood_overlay_type]")
. += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]")
if(blood_DNA)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="[blood_overlay_type]blood")
. += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood")
/obj/item/clothing/suit/update_clothes_damaged_state(damaging = TRUE)
..()
@@ -533,17 +533,17 @@ BLIND // can't see anything
if(!isinhands)
if(damaged_clothes)
. += image("icon"='icons/effects/item_damage.dmi', "icon_state"="damageduniform")
. += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform")
if(blood_DNA)
. += image("icon"='icons/effects/blood.dmi', "icon_state"="uniformblood")
. += mutable_appearance('icons/effects/blood.dmi', "uniformblood")
if(hastie)
var/tie_color = hastie.item_color
if(!tie_color)
tie_color = hastie.icon_state
var/image/tI = image("icon"='icons/mob/ties.dmi', "icon_state"="[tie_color]")
tI.alpha = hastie.alpha
tI.color = hastie.color
. += tI
var/mutable_appearance/tie = mutable_appearance('icons/mob/ties.dmi', "[tie_color]")
tie.alpha = hastie.alpha
tie.color = hastie.color
. += tie
/obj/item/clothing/under/update_clothes_damaged_state(damaging = TRUE)
..()
@@ -30,7 +30,6 @@
var/list/hands_nodrop = list()
var/obj/item/clothing/head/helmet/space/chronos/helmet = null
var/obj/effect/chronos_cam/camera = null
var/image/phase_underlay = null
var/datum/action/innate/chrono_teleport/teleport_now = new
var/activating = 0
var/activated = 0
@@ -97,10 +96,6 @@
for(var/obj/item/I in user.held_items)
if(I in hands_nodrop)
I.flags &= ~NODROP
if(phase_underlay && !QDELETED(phase_underlay))
user.underlays -= phase_underlay
qdel(phase_underlay)
phase_underlay = null
if(camera)
camera.remove_target_ui()
camera.loc = user
@@ -133,8 +128,6 @@
user.ExtinguishMob()
phase_underlay = create_phase_underlay(user)
hands_nodrop = list()
for(var/obj/item/I in user.held_items)
if(!(I.flags & NODROP))
@@ -171,15 +164,6 @@
else
finish_chronowalk(user, to_turf)
/obj/item/clothing/suit/space/chronos/proc/create_phase_underlay(var/mob/user)
var/icon/user_icon = icon('icons/effects/alphacolors.dmi', "")
user_icon.AddAlphaMask(getFlatIcon(user))
var/image/phase = new(user_icon)
phase.appearance_flags = RESET_COLOR|RESET_ALPHA
user.underlays += phase
return phase
/obj/item/clothing/suit/space/chronos/process()
if(activated)
var/mob/living/carbon/human/user = src.loc
+3 -3
View File
@@ -597,9 +597,9 @@
C.update_inv_wear_suit()
/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands)
. = list()
if(!isinhands)
. += image(layer = MOB_LAYER+0.01, icon = 'icons/effects/effects.dmi', icon_state = "[shield_state]")
. = list()
if(!isinhands)
. += mutable_appearance('icons/effects/effects.dmi', shield_state, MOB_LAYER + 0.01)
/obj/item/clothing/head/helmet/space/hardsuit/shielded
resistance_flags = FIRE_PROOF | ACID_PROOF
File diff suppressed because it is too large Load Diff
+6 -9
View File
@@ -47,15 +47,12 @@
icon_state = "evidence"
var/xx = I.pixel_x //save the offset of the item
var/yy = I.pixel_y
I.pixel_x = 0 //then remove it so it'll stay within the evidence bag
I.pixel_y = 0
var/image/img = image("icon"=I, "layer"=FLOAT_LAYER) //take a snapshot. (necessary to stop the underlays appearing under our inventory-HUD slots ~Carn
img.plane = FLOAT_PLANE
I.pixel_x = xx //and then return it
I.pixel_y = yy
add_overlay(img)
var/mutable_appearance/in_evidence = new(I)
in_evidence.plane = FLOAT_PLANE
in_evidence.layer = FLOAT_LAYER
in_evidence.pixel_x = 0
in_evidence.pixel_y = 0
add_overlay(in_evidence)
add_overlay("evidence") //should look nicer for transparent stuff. not really that important, but hey.
desc = "An evidence bag containing [I]. [I.desc]"
+2 -2
View File
@@ -34,10 +34,10 @@
var/list/hostile_types = list()
var/number_of_hostiles
var/list/station_areas = list()
var/image/storm
var/mutable_appearance/storm
/datum/round_event/portal_storm/setup()
storm = image('icons/obj/tesla_engine/energy_ball.dmi', "energy_ball_fast", layer=FLY_LAYER)
storm = storm = mutable_appearance('icons/obj/tesla_engine/energy_ball.dmi', "energy_ball_fast", FLY_LAYER)
storm.color = "#00FF00"
station_areas = get_areas_in_z(ZLEVEL_STATION)
@@ -22,9 +22,9 @@
if(R.glass_icon_state)
icon_state = R.glass_icon_state
else
var/image/I = image(icon, "glassoverlay")
I.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(I)
var/mutable_appearance/reagent_overlay = mutable_appearance(icon, "glassoverlay")
reagent_overlay.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(reagent_overlay)
else
icon_state = "glass_empty"
name = "drinking glass"
@@ -64,9 +64,9 @@
icon_state = largest_reagent.shot_glass_icon_state
else
icon_state = "shotglassclear"
var/image/I = image(icon, "shotglassoverlay")
I.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(I)
var/mutable_appearance/shot_overlay = mutable_appearance(icon, "shotglassoverlay")
shot_overlay.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(shot_overlay)
else
@@ -101,37 +101,36 @@
filling_color = rgb(rgbcolor[1], rgbcolor[2], rgbcolor[3], rgbcolor[4])
/obj/item/weapon/reagent_containers/food/snacks/customizable/update_overlays(obj/item/weapon/reagent_containers/food/snacks/S)
var/image/I = new(icon, "[initial(icon_state)]_filling")
var/mutable_appearance/filling = mutable_appearance(icon, "[initial(icon_state)]_filling")
if(S.filling_color == "#FFFFFF")
I.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
filling.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
else
I.color = S.filling_color
filling.color = S.filling_color
switch(ingredients_placement)
if(INGREDIENTS_SCATTER)
I.pixel_x = rand(-1,1)
I.pixel_y = rand(-1,1)
filling.pixel_x = rand(-1,1)
filling.pixel_y = rand(-1,1)
if(INGREDIENTS_STACK)
I.pixel_x = rand(-1,1)
I.pixel_y = 2 * ingredients.len - 1
filling.pixel_x = rand(-1,1)
filling.pixel_y = 2 * ingredients.len - 1
if(INGREDIENTS_STACKPLUSTOP)
I.pixel_x = rand(-1,1)
I.pixel_y = 2 * ingredients.len - 1
filling.pixel_x = rand(-1,1)
filling.pixel_y = 2 * ingredients.len - 1
if(our_overlays)
our_overlays.Cut(ingredients.len) //???, add overlay calls later in this proc will queue the compile if necessary
var/image/TOP = new(icon, "[icon_state]_top")
var/mutable_appearance/TOP = mutable_appearance(icon, "[icon_state]_top")
TOP.pixel_y = 2 * ingredients.len + 3
add_overlay(I)
add_overlay(filling)
add_overlay(TOP)
return
if(INGREDIENTS_FILL)
cut_overlays()
I.color = filling_color
filling.color = filling_color
if(INGREDIENTS_LINE)
I.pixel_y = rand(-8,3)
I.pixel_x = I.pixel_y
filling.pixel_x = filling.pixel_y = rand(-8,3)
add_overlay(I)
add_overlay(filling)
/obj/item/weapon/reagent_containers/food/snacks/customizable/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice)
@@ -248,14 +247,14 @@
name = "[customname] sandwich"
BS.reagents.trans_to(src, BS.reagents.total_volume)
ingMax = ingredients.len //can't add more ingredients after that
var/image/TOP = new(icon, "[BS.icon_state]")
var/mutable_appearance/TOP = mutable_appearance(icon, "[BS.icon_state]")
TOP.pixel_y = 2 * ingredients.len + 3
add_overlay(TOP)
if(istype(BS, /obj/item/weapon/reagent_containers/food/snacks/breadslice/custom))
var/image/O = new(icon, "[initial(BS.icon_state)]_filling")
O.color = BS.filling_color
O.pixel_y = 2 * ingredients.len + 3
add_overlay(O)
var/mutable_appearance/filling = new(icon, "[initial(BS.icon_state)]_filling")
filling.color = BS.filling_color
filling.pixel_y = 2 * ingredients.len + 3
add_overlay(filling)
qdel(BS)
return
else
@@ -313,7 +312,7 @@
/obj/item/weapon/reagent_containers/glass/bowl/update_icon()
cut_overlays()
if(reagents && reagents.total_volume)
var/image/filling = image('icons/obj/food/soupsalad.dmi', "fullbowl")
var/mutable_appearance/filling = mutable_appearance('icons/obj/food/soupsalad.dmi', "fullbowl")
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
else
+4 -4
View File
@@ -234,13 +234,13 @@
/obj/item/weapon/reagent_containers/food/snacks/proc/update_overlays(obj/item/weapon/reagent_containers/food/snacks/S)
cut_overlays()
var/image/I = new(src.icon, "[initial(icon_state)]_filling")
var/mutable_appearance/filling = mutable_appearance(icon, "[initial(icon_state)]_filling")
if(S.filling_color == "#FFFFFF")
I.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
filling.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
else
I.color = S.filling_color
filling.color = S.filling_color
add_overlay(I)
add_overlay(filling)
// initialize_cooked_food() is called when microwaving the food
/obj/item/weapon/reagent_containers/food/snacks/proc/initialize_cooked_food(obj/item/weapon/reagent_containers/food/snacks/S, cooking_efficiency = 1)
@@ -17,9 +17,9 @@
/obj/item/weapon/reagent_containers/food/snacks/meat/slab/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/meat/rawcutlet/slice, reagents_per_slice)
..()
var/image/I = new(icon, "rawcutlet_coloration")
I.color = filling_color
slice.add_overlay(I)
var/mutable_appearance/filling = mutable_appearance(icon, "rawcutlet_coloration")
filling.color = filling_color
slice.add_overlay(filling)
slice.filling_color = filling_color
slice.name = "raw [name] cutlet"
slice.meat_type = name
@@ -383,13 +383,13 @@
icon = 'icons/obj/lollipop.dmi'
icon_state = "lollipop_stick"
list_reagents = list("nutriment" = 1, "vitamin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //Honk
var/image/head
var/mutable_appearance/head
var/headcolor = rgb(0, 0, 0)
tastes = list("candy" = 1)
/obj/item/weapon/reagent_containers/food/snacks/lollipop/New()
..()
head = image(icon = 'icons/obj/lollipop.dmi', icon_state = "lollipop_head")
head = mutable_appearance('icons/obj/lollipop.dmi', "lollipop_head")
change_head_color(rgb(rand(0, 255), rand(0, 255), rand(0, 255)))
/obj/item/weapon/reagent_containers/food/snacks/lollipop/proc/change_head_color(C)
@@ -33,7 +33,7 @@
if(ishuman(hit_atom))
var/mob/living/carbon/human/H = hit_atom
var/image/creamoverlay = image('icons/effects/creampie.dmi')
var/mutable_appearance/creamoverlay = mutable_appearance('icons/effects/creampie.dmi')
if(H.dna.species.id == "lizard")
creamoverlay.icon_state = "creampie_lizard"
else
@@ -47,7 +47,7 @@
/obj/machinery/gibber/New()
..()
src.add_overlay(image('icons/obj/kitchen.dmi', "grjam"))
add_overlay("grjam")
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/gibber(null)
B.apply_default_parts(src)
@@ -72,15 +72,15 @@
/obj/machinery/gibber/update_icon()
cut_overlays()
if (dirty)
src.add_overlay(image('icons/obj/kitchen.dmi', "grbloody"))
add_overlay("grbloody")
if(stat & (NOPOWER|BROKEN))
return
if (!occupant)
src.add_overlay(image('icons/obj/kitchen.dmi', "grjam"))
add_overlay("grjam")
else if (operating)
src.add_overlay(image('icons/obj/kitchen.dmi', "gruse"))
add_overlay("gruse")
else
src.add_overlay(image('icons/obj/kitchen.dmi', "gridle"))
add_overlay("gridle")
/obj/machinery/gibber/attack_paw(mob/user)
return src.attack_hand(user)
+9 -10
View File
@@ -59,21 +59,20 @@
icon_state = "pizzabox_open"
if(pizza)
icon_state = "pizzabox_messy"
var/image/pizzaimg = image(pizza.icon, icon_state = pizza.icon_state)
pizzaimg.pixel_y = -3
add_overlay(pizzaimg)
var/mutable_appearance/pizza_overlay = mutable_appearance(pizza.icon, pizza.icon_state)
pizza_overlay.pixel_y = -3
add_overlay(pizza_overlay)
if(bomb)
bomb.icon_state = "pizzabomb_[bomb_active ? "active" : "inactive"]"
var/image/bombimg = image(bomb.icon, icon_state = bomb.icon_state)
bombimg.pixel_y = 5
add_overlay(bombimg)
else
var/mutable_appearance/bomb_overlay = mutable_appearance(bomb.icon, bomb.icon_state)
bomb_overlay.pixel_y = 5
add_overlay(bomb_overlay)
icon_state = "pizzabox[boxes.len + 1]"
var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
if(box.boxtag != "")
var/image/tagimg = image(icon, icon_state = "pizzabox_tag")
tagimg.pixel_y = boxes.len * 3
add_overlay(tagimg)
var/mutable_appearance/tag_overlay = mutable_appearance(icon, "pizzabox_tag")
tag_overlay.pixel_y = boxes.len * 3
add_overlay(tag_overlay)
/obj/item/pizzabox/attack_self(mob/user)
if(boxes.len > 0)
+14 -15
View File
@@ -234,31 +234,30 @@
if (cards.len == 1)
var/datum/playingcard/P = cards[1]
var/image/I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") )
var/mutable_appearance/card_overlay = mutable_appearance(icon, (concealed ? "card_back" : "[P.card_icon]") )
I.pixel_x = I.pixel_x + (-5 + rand(10))
I.pixel_y = I.pixel_y + (-5 + rand(10))
card_overlay.pixel_x = card_overlay.pixel_x + (-5 + rand(10))
card_overlay.pixel_y = card_overlay.pixel_y + (-5 + rand(10))
add_overlay(I)
add_overlay(card_overlay)
else
var/origin = -12
var/offset = round(32 / cards.len)
var/origin = -12
var/offset = round(32 / cards.len)
var/i = 0
var/image/I
var/i = 0
var/mutable_appearance/card_overlay
for(var/datum/playingcard/P in cards)
I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") )
I.pixel_x = origin + (offset * i)
card_overlay = mutable_appearance(icon, (concealed ? "card_back" : P.card_icon))
card_overlay.pixel_x = origin + (offset * i)
add_overlay(I)
add_overlay(card_overlay)
i = i + 1
i = i + 1
var/html = ""
var/html = ""
for(var/datum/playingcard/card in cards)
html = html + "<a href=\"byond://?src=\ref[src.hi]&action=play_card&card=\ref[card]\" class=\"card [card.suit] [card.number]\"></a>"
html = html + "<a href=\"byond://?src=\ref[src.hi]&action=play_card&card=\ref[card]\" class=\"card [card.suit] [card.number]\"></a>"
src.hi.updateContent("hand", html)
+2 -2
View File
@@ -73,8 +73,8 @@
/obj/item/weapon/storage/bag/easterbasket/proc/countEggs()
cut_overlays()
add_overlay(image("icon" = icon, "icon_state" = "basket-grass", "layer" = -1))
add_overlay(image("icon" = icon, "icon_state" = "basket-egg[contents.len <= 5 ? contents.len : 5]", "layer" = -1))
add_overlay("basket-grass")
add_overlay("basket-egg[min(contents.len, 5)]")
/obj/item/weapon/storage/bag/easterbasket/remove_from_storage(obj/item/W as obj, atom/new_location)
..()
@@ -21,13 +21,11 @@
/obj/item/weapon/reagent_containers/honeycomb/update_icon()
cut_overlays()
var/image/honey
var/mutable_appearance/honey_overlay = mutable_appearance(icon, "honey")
if(honey_color)
honey = image(icon = 'icons/obj/hydroponics/harvest.dmi', icon_state = "greyscale_honey")
honey.color = honey_color
else
honey = image(icon = 'icons/obj/hydroponics/harvest.dmi', icon_state = "honey")
add_overlay(honey)
honey_overlay.icon_state = "greyscale_honey"
honey_overlay.color = honey_color
add_overlay(honey_overlay)
/obj/item/weapon/reagent_containers/honeycomb/proc/set_reagent(reagent)
+3 -2
View File
@@ -116,8 +116,9 @@
can_buckle = 1
buckle_requires_restraints = 1
to_chat(user, "<span class='italics'>You add a rod to [src].")
var/image/U = image(icon='icons/obj/hydroponics/equipment.dmi',icon_state="bonfire_rod",pixel_y=16)
underlays += U
var/mutable_appearance/rod_underlay = mutable_appearance('icons/obj/hydroponics/equipment.dmi', "bonfire_rod")
rod_underlay.pixel_y = 16
underlays += rod_underlay
if(W.is_hot())
StartBurning()
+12 -13
View File
@@ -259,7 +259,7 @@
if(istype(src, /obj/machinery/hydroponics/soil))
add_atom_colour(rgb(255, 175, 0), FIXED_COLOUR_PRIORITY)
else
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "gaia_blessing"))
overlays += mutable_appearance('icons/obj/hydroponics/equipment.dmi', "gaia_blessing")
set_light(3)
update_icon_hoses()
@@ -287,31 +287,30 @@
icon_state = "hoses-[n]"
/obj/machinery/hydroponics/proc/update_icon_plant()
var/image/I
var/mutable_appearance/plant_overlay = mutable_appearance(myseed.growing_icon, layer = OBJ_LAYER + 0.01)
if(dead)
I = image(icon = myseed.growing_icon, icon_state = myseed.icon_dead)
plant_overlay.icon_state = myseed.icon_dead
else if(harvest)
if(!myseed.icon_harvest)
I = image(icon = myseed.growing_icon, icon_state = "[myseed.icon_grow][myseed.growthstages]")
plant_overlay.icon_state = "[myseed.icon_grow][myseed.growthstages]"
else
I = image(icon = myseed.growing_icon, icon_state = myseed.icon_harvest)
plant_overlay.icon_state = myseed.icon_harvest
else
var/t_growthstate = min(round((age / myseed.maturation) * myseed.growthstages), myseed.growthstages)
I = image(icon = myseed.growing_icon, icon_state = "[myseed.icon_grow][t_growthstate]")
I.layer = OBJ_LAYER + 0.01
add_overlay(I)
plant_overlay.icon_state = "[myseed.icon_grow][t_growthstate]"
add_overlay(plant_overlay)
/obj/machinery/hydroponics/proc/update_icon_lights()
if(waterlevel <= 10)
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowwater3"))
add_overlay(mutable_appearance('icons/obj/hydroponics/equipment.dmi', "over_lowwater3"))
if(nutrilevel <= 2)
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lownutri3"))
add_overlay(mutable_appearance('icons/obj/hydroponics/equipment.dmi', "over_lownutri3"))
if(plant_health <= (myseed.endurance / 2))
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowhealth3"))
add_overlay(mutable_appearance('icons/obj/hydroponics/equipment.dmi', "over_lowhealth3"))
if(weedlevel >= 5 || pestlevel >= 5 || toxic >= 40)
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_alert3"))
add_overlay(mutable_appearance('icons/obj/hydroponics/equipment.dmi', "over_alert3"))
if(harvest)
add_overlay(image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_harvest3"))
add_overlay(mutable_appearance('icons/obj/hydroponics/equipment.dmi', "over_harvest3"))
/obj/machinery/hydroponics/examine(user)
+3 -3
View File
@@ -8,9 +8,9 @@
/obj/item/seeds/sample/New()
..()
if(sample_color)
var/image/I = image(icon, icon_state = "sample-filling")
I.color = sample_color
add_overlay(I)
var/mutable_appearance/filling = mutable_appearance(icon, "sample-filling")
filling.color = sample_color
add_overlay(filling)
/obj/item/seeds/sample/get_analyzer_text()
return " The DNA of this sample is damaged beyond recovery, it can't support life on its own.\n*---------*"
+10 -10
View File
@@ -513,7 +513,7 @@
var/charged = 1
var/charge_time = 16
var/atom/mark = null
var/marked_image = null
var/mutable_appearance/marked_underlay
/obj/item/projectile/destabilizer
name = "destabilizing force"
@@ -530,15 +530,16 @@
if(hammer_synced.mark == target)
return ..()
if(isliving(target))
if(hammer_synced.mark && hammer_synced.marked_image)
hammer_synced.mark.underlays -= hammer_synced.marked_image
hammer_synced.marked_image = null
if(hammer_synced.mark && hammer_synced.marked_underlay)
hammer_synced.mark.underlays -= hammer_synced.marked_underlay
hammer_synced.marked_underlay = null
var/mob/living/L = target
if(L.mob_size >= MOB_SIZE_LARGE)
hammer_synced.mark = L
var/image/I = image('icons/effects/effects.dmi', loc = L, icon_state = "shield2",pixel_y = (-L.pixel_y),pixel_x = (-L.pixel_x))
L.underlays += I
hammer_synced.marked_image = I
hammer_synced.marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2")
hammer_synced.marked_underlay.pixel_x = -L.pixel_x
hammer_synced.marked_underlay.pixel_y = -L.pixel_y
L.underlays += hammer_synced.marked_underlay
var/target_turf = get_turf(target)
if(ismineralturf(target_turf))
var/turf/closed/mineral/M = target_turf
@@ -570,9 +571,8 @@
new /obj/effect/overlay/temp/kinetic_blast(get_turf(L))
mark = 0
if(L.mob_size >= MOB_SIZE_LARGE)
L.underlays -= marked_image
qdel(marked_image)
marked_image = null
L.underlays -= marked_underlay
QDEL_NULL(marked_underlay)
var/backstab_dir = get_dir(user, L)
var/def_check = L.getarmor(type = "bomb")
if((user.dir & backstab_dir) && (L.dir & backstab_dir))
+6 -6
View File
@@ -69,9 +69,9 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
if(uses_left <= 0)
user.drop_item(src)
loc = A
var/image/balloon
var/image/balloon2
var/image/balloon3
var/mutable_appearance/balloon
var/mutable_appearance/balloon2
var/mutable_appearance/balloon3
if(isliving(A))
var/mob/living/M = A
M.Weaken(16) // Keep them from moving during the duration of the extraction
@@ -82,12 +82,12 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
var/obj/effect/extraction_holder/holder_obj = new(A.loc)
holder_obj.appearance = A.appearance
A.loc = holder_obj
balloon2 = image('icons/obj/fulton_balloon.dmi',"fulton_expand")
balloon2 = mutable_appearance('icons/obj/fulton_balloon.dmi', "fulton_expand")
balloon2.pixel_y = 10
balloon2.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
holder_obj.add_overlay(balloon2)
sleep(4)
balloon = image('icons/obj/fulton_balloon.dmi',"fulton_balloon")
balloon = mutable_appearance('icons/obj/fulton_balloon.dmi', "fulton_balloon")
balloon.pixel_y = 10
balloon.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
holder_obj.cut_overlay(balloon2)
@@ -121,7 +121,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
sleep(10)
animate(holder_obj, pixel_z = 10, time = 10)
sleep(10)
balloon3 = image('icons/obj/fulton_balloon.dmi',"fulton_retract")
balloon3 = mutable_appearance('icons/obj/fulton_balloon.dmi', "fulton_retract")
balloon3.pixel_y = 10
balloon3.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
holder_obj.cut_overlay(balloon)
+3 -4
View File
@@ -68,9 +68,8 @@
user.setDir(SOUTH)
user.Stun(4)
user.loc = src.loc
var/image/W = image('goon/icons/obj/fitness.dmi',"fitnessweight-w")
W.layer = WALL_OBJ_LAYER
add_overlay(W)
var/mutable_appearance/swole_overlay = mutable_appearance(icon, "fitnessweight-w", WALL_OBJ_LAYER)
add_overlay(swole_overlay)
var/bragmessage = pick("pushing it to the limit","going into overdrive","burning with determination","rising up to the challenge", "getting strong now","getting ripped")
user.visible_message("<B>[user] is [bragmessage]!</B>")
var/reps = 0
@@ -93,5 +92,5 @@
animate(user, pixel_y = 0, time = 3)
var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!")
icon_state = "fitnessweight"
cut_overlay(W)
cut_overlay(swole_overlay)
to_chat(user, "[finishmessage]")
+1 -1
View File
@@ -392,7 +392,7 @@
return
if (CC.use(1))
add_overlay(image('icons/obj/economy.dmi',"coin_string_overlay"))
add_overlay("coin_string_overlay")
string_attached = 1
to_chat(user, "<span class='notice'>You attach a string to the coin.</span>")
else
+16 -16
View File
@@ -37,10 +37,10 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
//These variables store hair data if the ghost originates from a species with head and/or facial hair.
var/hair_style
var/hair_color
var/image/hair_image
var/mutable_appearance/hair_overlay
var/facial_hair_style
var/facial_hair_color
var/image/facial_hair_image
var/mutable_appearance/facial_hair_overlay
var/updatedir = 1 //Do we have to update our dir as the ghost moves around?
var/lastsetting = null //Stores the last setting that ghost_others was set to, for a little more efficiency when we update ghost images. Null means no update is necessary
@@ -161,13 +161,13 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
ghost_accs = client.prefs.ghost_accs
ghost_others = client.prefs.ghost_others
if(hair_image)
cut_overlay(hair_image)
hair_image = null
if(hair_overlay)
cut_overlay(hair_overlay)
hair_overlay = null
if(facial_hair_image)
cut_overlay(facial_hair_image)
facial_hair_image = null
if(facial_hair_overlay)
cut_overlay(facial_hair_overlay)
facial_hair_overlay = null
if(new_form)
@@ -188,19 +188,19 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
if(facial_hair_style)
S = GLOB.facial_hair_styles_list[facial_hair_style]
if(S)
facial_hair_image = image("icon" = S.icon, "icon_state" = "[S.icon_state]", "layer" = -HAIR_LAYER)
facial_hair_overlay = mutable_appearance(S.icon, "[S.icon_state]", -HAIR_LAYER)
if(facial_hair_color)
facial_hair_image.color = "#" + facial_hair_color
facial_hair_image.alpha = 200
add_overlay(facial_hair_image)
facial_hair_overlay.color = "#" + facial_hair_color
facial_hair_overlay.alpha = 200
add_overlay(facial_hair_overlay)
if(hair_style)
S = GLOB.hair_styles_list[hair_style]
if(S)
hair_image = image("icon" = S.icon, "icon_state" = "[S.icon_state]", "layer" = -HAIR_LAYER)
hair_overlay = mutable_appearance(S.icon, "[S.icon_state]", -HAIR_LAYER)
if(hair_color)
hair_image.color = "#" + hair_color
hair_image.alpha = 200
add_overlay(hair_image)
hair_overlay.color = "#" + hair_color
hair_overlay.alpha = 200
add_overlay(hair_overlay)
/*
* Increase the brightness of a color by calculating the average distance between the R, G and B values,
@@ -1,7 +1,7 @@
/mob/living/carbon/alien/humanoid/update_icons()
cut_overlays()
for(var/image/I in overlays_standing)
for(var/I in overlays_standing)
add_overlay(I)
if(stat == DEAD)
@@ -66,7 +66,7 @@
dmi_file = 'icons/mob/alienqueen.dmi'
if(handcuffed)
overlays_standing[HANDCUFF_LAYER] = image(dmi_file,icon_state= cuff_icon, layer =-HANDCUFF_LAYER)
overlays_standing[HANDCUFF_LAYER] = mutable_appearance(dmi_file, cuff_icon, -HANDCUFF_LAYER)
apply_overlay(HANDCUFF_LAYER)
//Royals have bigger sprites, so inhand things must be handled differently.
@@ -80,16 +80,14 @@
var/itm_state = l_hand.item_state
if(!itm_state)
itm_state = l_hand.icon_state
var/image/I = image("icon" = alt_inhands_file , "icon_state"="[itm_state][caste]_l", "layer"=-HANDS_LAYER)
hands += I
hands += mutable_appearance(alt_inhands_file, "[itm_state][caste]_l", -HANDS_LAYER)
var/obj/item/r_hand = get_item_for_held_index(2)
if(r_hand)
var/itm_state = r_hand.item_state
if(!itm_state)
itm_state = r_hand.icon_state
var/image/I = image("icon" = alt_inhands_file , "icon_state"="[itm_state][caste]_r", "layer"=-HANDS_LAYER)
hands += I
hands += mutable_appearance(alt_inhands_file, "[itm_state][caste]_r", -HANDS_LAYER)
overlays_standing[HANDS_LAYER] = hands
apply_overlay(HANDS_LAYER)
@@ -18,7 +18,6 @@
return
var/Qdir = get_dir(src, Q)
var/Qdist = get_dist(src, Q)
image(icon,loc,icon_state,layer,dir)
var/finder_icon = "finder_center" //Overlay showed when adjacent to or on top of the queen!
switch(Qdist)
if(2 to 7)
@@ -27,7 +26,7 @@
finder_icon = "finder_med"
if(21 to INFINITY)
finder_icon = "finder_far"
var/image/finder_eye = image('icons/mob/screen_alien.dmi', icon_state = finder_icon, dir = Qdir)
var/image/finder_eye = image('icons/mob/screen_alien.dmi', finder_icon, dir = Qdir)
hud_used.alien_queen_finder.add_overlay(finder_eye)
/mob/living/carbon/alien/humanoid/royal/queen/findQueen()
@@ -81,7 +81,7 @@
var/mob/dead/observer/ghost = pick(candidates)
var/overlay = image('icons/mob/alien.dmi', loc = owner, icon_state = "burst_lie")
var/mutable_appearance/overlay = mutable_appearance('icons/mob/alien.dmi', "burst_lie")
owner.add_overlay(overlay)
var/atom/xeno_loc = get_turf(owner)
+1 -1
View File
@@ -751,7 +751,7 @@
..()
/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning")
var/image/new_fire_overlay = image("icon"='icons/mob/OnFire.dmi', "icon_state"= fire_icon, "layer"=-FIRE_LAYER)
var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, -FIRE_LAYER)
new_fire_overlay.appearance_flags = RESET_COLOR
overlays_standing[FIRE_LAYER] = new_fire_overlay
apply_overlay(FIRE_LAYER)
+10 -8
View File
@@ -732,8 +732,8 @@
/mob/living/carbon/human/wash_cream()
//clean both to prevent a rare bug
cut_overlay(image('icons/effects/creampie.dmi', "creampie_lizard"))
cut_overlay(image('icons/effects/creampie.dmi', "creampie_human"))
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_lizard"))
cut_overlay(mutable_appearance('icons/effects/creampie.dmi', "creampie_human"))
//Turns a mob black, flashes a skeleton overlay
@@ -742,17 +742,19 @@
//Handle mutant parts if possible
if(dna && dna.species)
add_atom_colour("#000000", TEMPORARY_COLOUR_PRIORITY)
var/static/image/electrocution_skeleton_anim = image(icon = icon, icon_state = "electrocuted_base")
electrocution_skeleton_anim.appearance_flags = RESET_COLOR
var/static/mutable_appearance/electrocution_skeleton_anim
if(!electrocution_skeleton_anim)
electrocution_skeleton_anim = mutable_appearance(icon, "electrocuted_base")
electrocution_skeleton_anim.appearance_flags |= RESET_COLOR
add_overlay(electrocution_skeleton_anim)
addtimer(CALLBACK(src, .proc/end_electrocution_animation, electrocution_skeleton_anim), anim_duration)
else //or just do a generic animation
flick_overlay_view(image(icon,src,"electrocuted_generic",ABOVE_MOB_LAYER), src, anim_duration)
/mob/living/carbon/human/proc/end_electrocution_animation(image/I)
/mob/living/carbon/human/proc/end_electrocution_animation(mutable_appearance/MA)
remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, "#000000")
cut_overlay(I)
cut_overlay(MA)
/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close = 0)
if(incapacitated() || lying )
@@ -821,9 +823,9 @@
if(hal_screwyhud == SCREWYHUD_HEALTHY)
icon_num = 0
if(icon_num)
hud_used.healthdoll.add_overlay(image('icons/mob/screen_gen.dmi',"[BP.body_zone][icon_num]"))
hud_used.healthdoll.add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[BP.body_zone][icon_num]"))
for(var/t in get_missing_limbs()) //Missing limbs
hud_used.healthdoll.add_overlay(image('icons/mob/screen_gen.dmi',"[t]6"))
hud_used.healthdoll.add_overlay(mutable_appearance('icons/mob/screen_gen.dmi', "[t]6"))
else
hud_used.healthdoll.icon_state = "healthdoll_DEAD"
+127 -123
View File
@@ -229,22 +229,22 @@
fhair_state += dynamic_fhair_suffix
fhair_file = 'icons/mob/facialhair_extensions.dmi'
var/image/img_facial = image("icon" = fhair_file, "icon_state" = fhair_state, "layer" = -HAIR_LAYER)
var/mutable_appearance/facial_overlay = mutable_appearance(fhair_file, fhair_state, -HAIR_LAYER)
if(!forced_colour)
if(hair_color)
if(hair_color == "mutcolor")
img_facial.color = "#" + H.dna.features["mcolor"]
facial_overlay.color = "#" + H.dna.features["mcolor"]
else
img_facial.color = "#" + hair_color
facial_overlay.color = "#" + hair_color
else
img_facial.color = "#" + H.facial_hair_color
facial_overlay.color = "#" + H.facial_hair_color
else
img_facial.color = forced_colour
facial_overlay.color = forced_colour
img_facial.alpha = hair_alpha
facial_overlay.alpha = hair_alpha
standing += img_facial
standing += facial_overlay
if(H.head)
var/obj/item/I = H.head
@@ -262,9 +262,11 @@
hair_hidden = TRUE
if(!hair_hidden || dynamic_hair_suffix)
var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER)
if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
if(!(NOBLOOD in species_traits))
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained", "layer" = -HAIR_LAYER)
hair_overlay.icon = 'icons/mob/human_face.dmi'
hair_overlay.icon_state = "debrained"
else if(H.hair_style && (HAIR in species_traits))
S = GLOB.hair_styles_list[H.hair_style]
@@ -286,70 +288,70 @@
hair_state += dynamic_hair_suffix
hair_file = 'icons/mob/hair_extensions.dmi'
var/image/img_hair = image("icon" = hair_file, "icon_state" = hair_state, "layer" = -HAIR_LAYER)
hair_overlay.icon = hair_file
hair_overlay.icon_state = hair_state
if(!forced_colour)
if(hair_color)
if(hair_color == "mutcolor")
img_hair.color = "#" + H.dna.features["mcolor"]
hair_overlay.color = "#" + H.dna.features["mcolor"]
else
img_hair.color = "#" + hair_color
hair_overlay.color = "#" + hair_color
else
img_hair.color = "#" + H.hair_color
hair_overlay.color = "#" + H.hair_color
else
img_hair.color = forced_colour
img_hair.alpha = hair_alpha
img_hair.pixel_y += hair_y_offset
standing += img_hair
hair_overlay.color = forced_colour
hair_overlay.alpha = hair_alpha
hair_overlay.pixel_y += hair_y_offset
if(hair_overlay.icon)
standing += hair_overlay
if(standing.len)
H.overlays_standing[HAIR_LAYER] = standing
H.overlays_standing[HAIR_LAYER] = standing
H.apply_overlay(HAIR_LAYER)
/datum/species/proc/handle_body(mob/living/carbon/human/H)
H.remove_overlay(BODY_LAYER)
var/list/standing = list()
var/list/standing = list()
var/obj/item/bodypart/head/HD = H.get_bodypart("head")
if(!(H.disabilities & HUSK))
// lipstick
if(H.lip_style && (LIPS in species_traits) && HD)
var/image/lips = image("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[H.lip_style]", "layer" = -BODY_LAYER)
lips.color = H.lip_color
lips.pixel_y += face_y_offset
standing += lips
var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER)
lip_overlay.color = H.lip_color
lip_overlay.pixel_y += face_y_offset
standing += lip_overlay
// eyes
if((EYECOLOR in species_traits) && HD)
var/image/img_eyes = image("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes", "layer" = -BODY_LAYER)
img_eyes.color = "#" + H.eye_color
img_eyes.pixel_y += face_y_offset
standing += img_eyes
var/mutable_appearance/eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER)
eye_overlay.color = "#" + H.eye_color
eye_overlay.pixel_y += face_y_offset
standing += eye_overlay
//Underwear, Undershirts & Socks
/*This will be refactored at a later date
if(H.underwear)
var/datum/sprite_accessory/underwear/underwear = GLOB.underwear_list[H.underwear]
if(underwear)
standing += image("icon"=underwear.icon, "icon_state"="[underwear.icon_state]", "layer"=-BODY_LAYER)
standing += mutable_appearance(underwear.icon, underwear.icon_state, -BODY_LAYER)
if(H.undershirt)
var/datum/sprite_accessory/undershirt/undershirt = GLOB.undershirt_list[H.undershirt]
if(undershirt)
if(H.dna.species.sexes && H.gender == FEMALE)
standing += wear_female_version("[undershirt.icon_state]", undershirt.icon, BODY_LAYER)
standing += wear_female_version(undershirt.icon_state, undershirt.icon, -BODY_LAYER)
else
standing += image("icon"=undershirt.icon, "icon_state"="[undershirt.icon_state]", "layer"=-BODY_LAYER)
standing += mutable_appearance(undershirt.icon, undershirt.icon_state, -BODY_LAYER)
if(H.socks && H.get_num_legs() >= 2 && !(DIGITIGRADE in species_traits))
var/datum/sprite_accessory/socks/socks = GLOB.socks_list[H.socks]
if(socks)
standing += image("icon"=socks.icon, "icon_state"="[socks.icon_state]", "layer"=-BODY_LAYER)
*/
standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
if(standing.len)
H.overlays_standing[BODY_LAYER] = standing
@@ -486,8 +488,6 @@
var/g = (H.gender == FEMALE) ? "f" : "m"
var/image/I
for(var/layer in relevant_layers)
var/layertext = mutant_bodyparts_layertext(layer)
@@ -552,7 +552,9 @@
S = /datum/sprite_accessory/slimecoon_snout*/
if(!S || S.icon_state == "none")
continue
var/mutable_appearance/accessory_overlay = mutable_appearance(S.icon, layer = -layer)
//A little rename so we don't have to use tail_lizard or tail_human when naming the sprites.
if(bodypart == "tail_lizard" || bodypart == "tail_human" || bodypart == "mam_tail" || bodypart == "slimecoontail" || bodypart == "xenotail")
bodypart = "tail"
@@ -563,134 +565,136 @@
if(bodypart == "xenohead")
bodypart = "xhead"
var/icon_string
if(S.gender_specific)
icon_string = "[g]_[bodypart]_[S.icon_state]_[layertext]"
accessory_overlay.icon_state = "[g]_[bodypart]_[S.icon_state]_[layertext]"
else
icon_string = "m_[bodypart]_[S.icon_state]_[layertext]"
I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer)
accessory_overlay.icon_state = "m_[bodypart]_[S.icon_state]_[layertext]"
if(S.center)
I = center_image(I,S.dimension_x,S.dimension_y)
accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y)
if(!(H.disabilities & HUSK))
if(!forced_colour)
switch(S.color_src)
if(MUTCOLORS)
if(fixed_mut_color)
I.color = "#[fixed_mut_color]"
accessory_overlay.color = "#[fixed_mut_color]"
else
I.color = "#[H.dna.features["mcolor"]]"
accessory_overlay.color = "#[H.dna.features["mcolor"]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
I.color = "#[fixed_mut_color2]"
accessory_overlay.color = "#[fixed_mut_color2]"
else
I.color = "#[H.dna.features["mcolor2"]]"
accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
I.color = "#[fixed_mut_color3]"
accessory_overlay.color = "#[fixed_mut_color3]"
else
I.color = "#[H.dna.features["mcolor3"]]"
accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
if(HAIR)
if(hair_color == "mutcolor")
I.color = "#[H.dna.features["mcolor"]]"
accessory_overlay.color = "#[H.dna.features["mcolor"]]"
else
I.color = "#[H.hair_color]"
accessory_overlay.color = "#[H.hair_color]"
if(FACEHAIR)
I.color = "#[H.facial_hair_color]"
accessory_overlay.color = "#[H.facial_hair_color]"
if(EYECOLOR)
I.color = "#[H.eye_color]"
accessory_overlay.color = "#[H.eye_color]"
else
I.color = forced_colour
standing += I
accessory_overlay.color = forced_colour
standing += accessory_overlay
if(S.hasinner)
var/mutable_appearance/inner_accessory_overlay = mutable_appearance(S.icon, layer = -layer)
if(S.gender_specific)
icon_string = "[g]_[bodypart]inner_[S.icon_state]_[layertext]"
inner_accessory_overlay.icon_state = "[g]_[bodypart]inner_[S.icon_state]_[layertext]"
else
icon_string = "m_[bodypart]inner_[S.icon_state]_[layertext]"
I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer)
inner_accessory_overlay.icon_state = "m_[bodypart]inner_[S.icon_state]_[layertext]"
if(S.center)
I = center_image(I,S.dimension_x,S.dimension_y)
inner_accessory_overlay = center_image(inner_accessory_overlay, S.dimension_x, S.dimension_y)
standing += I
standing += inner_accessory_overlay
if(S.extra) //apply the extra overlay, if there is one
var/mutable_appearance/extra_accessory_overlay = mutable_appearance(S.icon, layer = -layer)
if(S.gender_specific)
icon_string = "[g]_[bodypart]_extra_[S.icon_state]_[layertext]"
extra_accessory_overlay.icon_state = "[g]_[bodypart]_extra_[S.icon_state]_[layertext]"
else
icon_string = "m_[bodypart]_extra_[S.icon_state]_[layertext]"
I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer)
extra_accessory_overlay.icon_state = "m_[bodypart]_extra_[S.icon_state]_[layertext]"
if(S.center)
I = center_image(I,S.dimension_x,S.dimension_y)
switch(S.extra_color_src) //change the color of the extra overlay
if(MUTCOLORS)
if(fixed_mut_color)
I.color = "#[fixed_mut_color]"
else
I.color = "#[H.dna.features["mcolor"]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
I.color = "#[fixed_mut_color2]"
else
I.color = "#[H.dna.features["mcolor2"]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
I.color = "#[fixed_mut_color3]"
else
I.color = "#[H.dna.features["mcolor3"]]"
if(HAIR)
if(hair_color == "mutcolor")
I.color = "#[H.dna.features["mcolor"]]"
else
I.color = "#[H.hair_color]"
if(FACEHAIR)
I.color = "#[H.facial_hair_color]"
if(EYECOLOR)
I.color = "#[H.eye_color]"
standing += I
extra_accessory_overlay.icon_state = center_image(extra_accessory_overlay, S.dimension_x, S.dimension_y)
if(!forced_colour)
switch(S.extra_color_src) //change the color of the extra overlay
if(MUTCOLORS)
if(fixed_mut_color)
extra_accessory_overlay.color = "#[fixed_mut_color]"
else
extra_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
extra_accessory_overlay.color = "#[fixed_mut_color2]"
else
extra_accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
extra_accessory_overlay.color = "#[fixed_mut_color3]"
else
extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
if(HAIR)
if(hair_color == "mutcolor")
extra_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
else
extra_accessory_overlay.color = "#[H.hair_color]"
if(FACEHAIR)
extra_accessory_overlay.color = "#[H.facial_hair_color]"
if(EYECOLOR)
extra_accessory_overlay.color = "#[H.eye_color]"
else
extra_accessory_overlay.color = forced_colour
standing += extra_accessory_overlay
if(S.extra2) //apply the extra overlay, if there is one
var/mutable_appearance/extra2_accessory_overlay = mutable_appearance(S.icon, layer = -layer)
if(S.gender_specific)
icon_string = "[g]_[bodypart]_extra2_[S.icon_state]_[layertext]"
extra2_accessory_overlay.icon_state = "[g]_[bodypart]_extra2_[S.icon_state]_[layertext]"
else
icon_string = "m_[bodypart]_extra2_[S.icon_state]_[layertext]"
I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer)
extra2_accessory_overlay.icon_state = "m_[bodypart]_extra2_[S.icon_state]_[layertext]"
if(S.center)
I = center_image(I,S.dimension_x,S.dimension_y)
switch(S.extra2_color_src) //change the color of the extra overlay
if(MUTCOLORS)
if(fixed_mut_color)
I.color = "#[fixed_mut_color]"
else
I.color = "#[H.dna.features["mcolor"]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
I.color = "#[fixed_mut_color2]"
else
I.color = "#[H.dna.features["mcolor2"]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
I.color = "#[fixed_mut_color3]"
else
I.color = "#[H.dna.features["mcolor3"]]"
if(HAIR)
if(hair_color == "mutcolor")
I.color = "#[H.dna.features["mcolor"]]"
else
I.color = "#[H.hair_color]"
standing += I
extra2_accessory_overlay.icon_state = center_image(extra2_accessory_overlay, S.dimension_x, S.dimension_y)
if(!forced_colour)
switch(S.extra_color_src) //change the color of the extra overlay
if(MUTCOLORS)
if(fixed_mut_color)
extra2_accessory_overlay.color = "#[fixed_mut_color]"
else
extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
if(MUTCOLORS2)
if(fixed_mut_color2)
extra2_accessory_overlay.color = "#[fixed_mut_color2]"
else
extra2_accessory_overlay.color = "#[H.dna.features["mcolor2"]]"
if(MUTCOLORS3)
if(fixed_mut_color3)
extra2_accessory_overlay.color = "#[fixed_mut_color3]"
else
extra2_accessory_overlay.color = "#[H.dna.features["mcolor3"]]"
if(HAIR)
if(hair_color == "mutcolor")
extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]"
else
extra2_accessory_overlay.color = "#[H.hair_color]"
if(FACEHAIR)
extra2_accessory_overlay.color = "#[H.facial_hair_color]"
if(EYECOLOR)
extra2_accessory_overlay.color = "#[H.eye_color]"
else
extra2_accessory_overlay.color = forced_colour
standing += extra2_accessory_overlay
H.overlays_standing[layer] = standing.Copy()
standing = list()
@@ -126,17 +126,17 @@ There are several things that need to be remembered:
else if(U.adjusted == DIGITIGRADE_STYLE)
t_color = "[t_color]_l"
var/image/standing
var/mutable_appearance/uniform_overlay
if(dna && dna.species.sexes)
var/G = (gender == FEMALE) ? "f" : "m"
if(G == "f" && U.fitted != NO_FEMALE_UNIFORM)
standing = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = 'icons/mob/uniform.dmi', isinhands = FALSE, femaleuniform = U.fitted)
uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = 'icons/mob/uniform.dmi', isinhands = FALSE, femaleuniform = U.fitted)
if(!standing)
standing = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = 'icons/mob/uniform.dmi', isinhands = FALSE)
if(!uniform_overlay)
uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = 'icons/mob/uniform.dmi', isinhands = FALSE)
overlays_standing[UNIFORM_LAYER] = standing
overlays_standing[UNIFORM_LAYER] = uniform_overlay
else if(!(dna && dna.species.nojumpsuit) && invdrop)
// Automatically drop anything in store / id / belt if you're not wearing a uniform. //CHECK IF NECESARRY
@@ -161,8 +161,7 @@ There are several things that need to be remembered:
update_observer_view(wear_id)
//TODO: add an icon file for ID slot stuff, so it's less snowflakey
var/image/standing = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi')
overlays_standing[ID_LAYER] = standing
overlays_standing[ID_LAYER] = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi')
apply_overlay(ID_LAYER)
@@ -170,20 +169,20 @@ There are several things that need to be remembered:
/mob/living/carbon/human/update_inv_gloves()
remove_overlay(GLOVES_LAYER)
if(get_num_arms() <2)
if(!gloves && blood_DNA)
if(has_left_hand())
overlays_standing[GLOVES_LAYER] = image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands_left", "layer"=-GLOVES_LAYER)
apply_overlay(GLOVES_LAYER)
else if(has_right_hand())
overlays_standing[GLOVES_LAYER] = image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands_right", "layer"=-GLOVES_LAYER)
apply_overlay(GLOVES_LAYER)
return
if(client && hud_used && hud_used.inv_slots[slot_gloves])
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_gloves]
inv.update_icon()
if(!gloves && blood_DNA)
var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyhands", -GLOVES_LAYER)
if(get_num_arms() < 2)
if(has_left_hand())
bloody_overlay.icon_state = "bloodyhands_left"
else if(has_right_hand())
bloody_overlay.icon_state = "bloodyhands_right"
overlays_standing[GLOVES_LAYER] = bloody_overlay
if(gloves)
gloves.screen_loc = ui_gloves
if(client && hud_used && hud_used.hud_shown)
@@ -193,14 +192,7 @@ There are several things that need to be remembered:
var/t_state = gloves.item_state
if(!t_state)
t_state = gloves.icon_state
var/image/standing = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/hands.dmi')
overlays_standing[GLOVES_LAYER] = standing
else
if(blood_DNA)
overlays_standing[GLOVES_LAYER] = image("icon"='icons/effects/blood.dmi', "icon_state"="bloodyhands", "layer"=-GLOVES_LAYER)
overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/hands.dmi')
apply_overlay(GLOVES_LAYER)
@@ -223,8 +215,7 @@ There are several things that need to be remembered:
update_observer_view(glasses,1)
if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
var/image/standing = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi')
overlays_standing[GLASSES_LAYER] = standing
overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi')
apply_overlay(GLASSES_LAYER)
@@ -246,8 +237,7 @@ There are several things that need to be remembered:
client.screen += ears //add it to the client's screen
update_observer_view(ears,1)
var/image/standing = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi')
overlays_standing[EARS_LAYER] = standing
overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi')
apply_overlay(EARS_LAYER)
@@ -268,8 +258,7 @@ There are several things that need to be remembered:
if(hud_used.inventory_shown) //if the inventory is open
client.screen += shoes //add it to client's screen
update_observer_view(shoes,1)
var/image/standing = shoes.build_worn_icon(state = shoes.icon_state, default_layer = SHOES_LAYER, default_icon_file = 'icons/mob/feet.dmi')
overlays_standing[SHOES_LAYER] = standing
overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = shoes.icon_state, default_layer = SHOES_LAYER, default_icon_file = 'icons/mob/feet.dmi')
apply_overlay(SHOES_LAYER)
@@ -289,7 +278,7 @@ There are several things that need to be remembered:
var/t_state = s_store.item_state
if(!t_state)
t_state = s_store.icon_state
overlays_standing[SUIT_STORE_LAYER] = image("icon"='icons/mob/belt_mirror.dmi', "icon_state"="[t_state]", "layer"=-SUIT_STORE_LAYER)
overlays_standing[SUIT_STORE_LAYER] = mutable_appearance('icons/mob/belt_mirror.dmi', t_state, -SUIT_STORE_LAYER)
apply_overlay(SUIT_STORE_LAYER)
@@ -315,8 +304,7 @@ There are several things that need to be remembered:
if(!t_state)
t_state = belt.icon_state
var/image/standing = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = 'icons/mob/belt.dmi')
overlays_standing[BELT_LAYER] = standing
overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = 'icons/mob/belt.dmi')
apply_overlay(BELT_LAYER)
@@ -337,8 +325,7 @@ There are several things that need to be remembered:
client.screen += wear_suit
update_observer_view(wear_suit,1)
var/image/standing = wear_suit.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = 'icons/mob/suit.dmi')
overlays_standing[SUIT_LAYER] = standing
overlays_standing[SUIT_LAYER] = wear_suit.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = 'icons/mob/suit.dmi')
if(wear_suit.breakouttime) //suit is restraining
drop_all_held_items()
@@ -381,7 +368,7 @@ There are several things that need to be remembered:
remove_overlay(LEGCUFF_LAYER)
clear_alert("legcuffed")
if(legcuffed)
overlays_standing[LEGCUFF_LAYER] = image("icon"='icons/mob/mob.dmi', "icon_state"="legcuff1", "layer"=-LEGCUFF_LAYER)
overlays_standing[LEGCUFF_LAYER] = mutable_appearance('icons/mob/mob.dmi', "legcuff1", -LEGCUFF_LAYER)
apply_overlay(LEGCUFF_LAYER)
throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = src.legcuffed)
@@ -390,8 +377,7 @@ There are several things that need to be remembered:
var/icon/female_clothing_icon = GLOB.female_clothing_icons[index]
if(!female_clothing_icon) //Create standing/laying icons if they don't exist
generate_female_clothing(index,t_color,icon,type)
var/standing = image("icon"=GLOB.female_clothing_icons["[t_color]"], "layer"=-layer)
return(standing)
return mutable_appearance(GLOB.female_clothing_icons[t_color], layer = -layer)
/mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers)
var/list/out = new
@@ -440,12 +426,12 @@ There are several things that need to be remembered:
/*
Does everything in relation to building the /image used in the mob's overlays list
Does everything in relation to building the /mutable_appearance used in the mob's overlays list
covers:
inhands and any other form of worn item
centering large images
layering images on custom layers
building images from custom icon files
centering large appearances
layering appearances on custom layers
building appearances from custom icon files
By Remie Richards (yes I'm taking credit because this just removed 90% of the copypaste in update_icons())
@@ -480,13 +466,13 @@ generate/load female uniform sprites matching all previously decided variables
if(!layer2use)
layer2use = default_layer
var/image/standing
var/mutable_appearance/standing
if(femaleuniform)
standing = wear_female_version(state,file2use,layer2use,femaleuniform)
if(!standing)
standing = image("icon"=file2use, "icon_state"=state,"layer"=-layer2use)
standing = mutable_appearance(file2use, state, -layer2use)
//Get the overlay images for this item when it's being worn
//Get the overlays for this item when it's being worn
//eg: ammo counters, primed grenade flashes, etc.
var/list/worn_overlays = worn_overlays(isinhands)
if(worn_overlays && worn_overlays.len)

Some files were not shown because too many files have changed in this diff Show More