This commit is contained in:
LetterJay
2017-04-29 08:24:18 -05:00
203 changed files with 2678 additions and 2737 deletions
@@ -131,6 +131,7 @@
},
/turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth;
},
/obj/structure/fans/tiny/invisible,
/area/ruin/powered)
+4
View File
@@ -36,6 +36,10 @@
#define INFORM_ADMINS_ON_RELOCATE "inform_admins_on_relocate"
#define BANG_PROTECT "bang_protect"
// An item worn in the ear slot with HEALS_EARS will heal your ears each
// Life() tick, even if normally your ears would be too damaged to heal.
#define HEALS_EARS "heals_ears"
// A mob with OMNITONGUE has no restriction in the ability to speak
// languages that they know. So even if they wouldn't normally be able to
// through mob or tongue restrictions, this flag allows them to ignore
+3 -1
View File
@@ -119,4 +119,6 @@
#define GALOSHES_DONT_HELP 4
#define SLIDE_ICE 8
#define MAX_CHICKENS 50
#define MAX_CHICKENS 50
#define UNHEALING_EAR_DAMAGE 100
+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
+2 -2
View File
@@ -25,7 +25,7 @@
announcement += "<br>"
for(var/mob/M in GLOB.player_list)
if(!isnewplayer(M) && !M.ear_deaf)
if(!isnewplayer(M) && M.can_hear())
to_chat(M, announcement)
if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS)
M << sound(sound)
@@ -51,7 +51,7 @@
return
for(var/mob/M in GLOB.player_list)
if(!isnewplayer(M) && !M.ear_deaf)
if(!isnewplayer(M) && M.can_hear())
to_chat(M, "<b><font size = 3><font color = red>[title]</font color><BR>[message]</font size></b><BR>")
if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS)
if(alert)
+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)
@@ -33,12 +33,5 @@ Bonus
if(3, 4)
to_chat(M, "<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>")
if(5)
if(!(M.ear_deaf))
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
M.setEarDamage(-1,INFINITY) //Shall be enough
addtimer(CALLBACK(src, .proc/Undeafen, M), 200)
/datum/symptom/deafness/proc/Undeafen(mob/living/M)
if(M)
to_chat(M, "<span class='warning'>The ringing in your ears fades...</span>")
M.setEarDamage(-1,0)
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
M.minimumDeafTicks(20)
@@ -28,7 +28,7 @@ Bonus
..()
var/mob/living/M = A.affected_mob
if(A.stage >= 2)
M.setEarDamage(0,0)
M.restoreEars()
if(A.stage >= 3)
M.dizziness = 0
@@ -50,7 +50,6 @@ Bonus
if(A.stage >= 5)
M.adjustBrainLoss(-3)
return
/*
//////////////////////////////////////
@@ -127,5 +126,3 @@ Bonus
M.drowsyness += 1
if(24 to INFINITY)
M.Sleeping(2, 0)
return
+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
+87 -87
View File
@@ -1,93 +1,93 @@
/* HUD DATUMS */
//GLOBAL HUD LIST
GLOBAL_LIST_INIT(huds, list(
DATA_HUD_SECURITY_BASIC = new/datum/atom_hud/data/human/security/basic(),
DATA_HUD_SECURITY_ADVANCED = new/datum/atom_hud/data/human/security/advanced(),
DATA_HUD_MEDICAL_BASIC = new/datum/atom_hud/data/human/medical/basic(),
DATA_HUD_MEDICAL_ADVANCED = new/datum/atom_hud/data/human/medical/advanced(),
DATA_HUD_DIAGNOSTIC = new/datum/atom_hud/data/diagnostic(),
ANTAG_HUD_CULT = new/datum/atom_hud/antag(),
ANTAG_HUD_REV = new/datum/atom_hud/antag(),
ANTAG_HUD_OPS = new/datum/atom_hud/antag(),
ANTAG_HUD_WIZ = new/datum/atom_hud/antag(),
ANTAG_HUD_SHADOW = new/datum/atom_hud/antag(),
ANTAG_HUD_TRAITOR = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_DEVIL = new/datum/atom_hud/antag(),
ANTAG_HUD_SINTOUCHED = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(),
))
/datum/atom_hud
var/list/atom/hudatoms = list() //list of all atoms which display this hud
var/list/mob/hudusers = list() //list with all mobs who can see the hud
var/list/hud_icons = list() //these will be the indexes for the atom's hud_list
/datum/atom_hud/proc/remove_hud_from(mob/M)
if(!M)
return
if(src in M.permanent_huds)
return
for(var/atom/A in hudatoms)
remove_from_single_hud(M, A)
hudusers -= M
/datum/atom_hud/proc/remove_from_hud(atom/A)
if(!A)
/* HUD DATUMS */
//GLOBAL HUD LIST
GLOBAL_LIST_INIT(huds, list(
DATA_HUD_SECURITY_BASIC = new/datum/atom_hud/data/human/security/basic(),
DATA_HUD_SECURITY_ADVANCED = new/datum/atom_hud/data/human/security/advanced(),
DATA_HUD_MEDICAL_BASIC = new/datum/atom_hud/data/human/medical/basic(),
DATA_HUD_MEDICAL_ADVANCED = new/datum/atom_hud/data/human/medical/advanced(),
DATA_HUD_DIAGNOSTIC = new/datum/atom_hud/data/diagnostic(),
ANTAG_HUD_CULT = new/datum/atom_hud/antag(),
ANTAG_HUD_REV = new/datum/atom_hud/antag(),
ANTAG_HUD_OPS = new/datum/atom_hud/antag(),
ANTAG_HUD_WIZ = new/datum/atom_hud/antag(),
ANTAG_HUD_SHADOW = new/datum/atom_hud/antag(),
ANTAG_HUD_TRAITOR = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_DEVIL = new/datum/atom_hud/antag(),
ANTAG_HUD_SINTOUCHED = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(),
ANTAG_HUD_CLOCKWORK = new/datum/atom_hud/antag(),
))
/datum/atom_hud
var/list/atom/hudatoms = list() //list of all atoms which display this hud
var/list/mob/hudusers = list() //list with all mobs who can see the hud
var/list/hud_icons = list() //these will be the indexes for the atom's hud_list
/datum/atom_hud/proc/remove_hud_from(mob/M)
if(!M)
return
if(src in M.permanent_huds)
return
for(var/atom/A in hudatoms)
remove_from_single_hud(M, A)
hudusers -= M
/datum/atom_hud/proc/remove_from_hud(atom/A)
if(!A)
return FALSE
for(var/mob/M in hudusers)
remove_from_single_hud(M, A)
hudatoms -= A
for(var/mob/M in hudusers)
remove_from_single_hud(M, A)
hudatoms -= A
return TRUE
/datum/atom_hud/proc/remove_from_single_hud(mob/M, atom/A) //unsafe, no sanity apart from client
if(!M || !M.client || !A)
return
for(var/i in hud_icons)
M.client.images -= A.hud_list[i]
/datum/atom_hud/proc/add_hud_to(mob/M)
if(!M)
return
/datum/atom_hud/proc/remove_from_single_hud(mob/M, atom/A) //unsafe, no sanity apart from client
if(!M || !M.client || !A)
return
for(var/i in hud_icons)
M.client.images -= A.hud_list[i]
/datum/atom_hud/proc/add_hud_to(mob/M)
if(!M)
return
hudusers[M] = TRUE
for(var/atom/A in hudatoms)
add_to_single_hud(M, A)
/datum/atom_hud/proc/add_to_hud(atom/A)
if(!A)
for(var/atom/A in hudatoms)
add_to_single_hud(M, A)
/datum/atom_hud/proc/add_to_hud(atom/A)
if(!A)
return FALSE
hudatoms |= A
for(var/mob/M in hudusers)
add_to_single_hud(M, A)
hudatoms |= A
for(var/mob/M in hudusers)
add_to_single_hud(M, A)
return TRUE
/datum/atom_hud/proc/add_to_single_hud(mob/M, atom/A) //unsafe, no sanity apart from client
if(!M || !M.client || !A)
return
for(var/i in hud_icons)
if(A.hud_list[i])
M.client.images |= A.hud_list[i]
//MOB PROCS
/mob/proc/reload_huds()
var/gang_huds = list()
if(SSticker.mode)
for(var/datum/gang/G in SSticker.mode.gangs)
gang_huds += G.ganghud
/datum/atom_hud/proc/add_to_single_hud(mob/M, atom/A) //unsafe, no sanity apart from client
if(!M || !M.client || !A)
return
for(var/i in hud_icons)
if(A.hud_list[i])
M.client.images |= A.hud_list[i]
//MOB PROCS
/mob/proc/reload_huds()
var/gang_huds = list()
if(SSticker.mode)
for(var/datum/gang/G in SSticker.mode.gangs)
gang_huds += G.ganghud
for(var/datum/atom_hud/hud in (GLOB.huds|gang_huds|GLOB.active_alternate_appearances))
if(hud.hudusers[src])
hud.add_hud_to(src)
/mob/dead/new_player/reload_huds()
return
/mob/proc/add_click_catcher()
client.screen += client.void
/mob/dead/new_player/add_click_catcher()
return
if(hud && hud.hudusers[src])
hud.add_hud_to(src)
/mob/dead/new_player/reload_huds()
return
/mob/proc/add_click_catcher()
client.screen += client.void
/mob/dead/new_player/add_click_catcher()
return
+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)
-7
View File
@@ -129,13 +129,6 @@
suffix = "lavaland_surface_ufo_crash.dmm"
cost = 5
/datum/map_template/ruin/lavaland/ww_vault
name = "Wishgranter Vault"
id = "ww-vault"
description = "Scrawled on the large double doors is both a message and a warning: 'meat grinder requires sacri...'. You're not so sure about this anymore."
suffix = "lavaland_surface_ww_vault.dmm"
cost = 20
/datum/map_template/ruin/lavaland/xeno_nest
name = "Xenomorph Nest"
id = "xeno-nest"
+6 -7
View File
@@ -29,13 +29,12 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
appearance_key = key
/datum/atom_hud/alternate_appearance/Destroy()
if(!QDELETED(src))
for(var/v in hudusers)
remove_hud_from(v)
for(var/v in hudatoms)
remove_from_hud(v)
GLOB.active_alternate_appearances -= src
return ..()
for(var/v in hudusers)
remove_hud_from(v)
for(var/v in hudatoms)
remove_from_hud(v)
GLOB.active_alternate_appearances -= src
return ..()
/datum/atom_hud/alternate_appearance/proc/onNewMob(mob/M)
if(mobShouldSee(M))
+4
View File
@@ -495,6 +495,10 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
/atom/proc/mech_melee_attack(obj/mecha/M)
return
//If a mob logouts/logins in side of an object you can use this proc
/atom/proc/on_log(login)
if(loc)
loc.on_log(login)
/*
+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
@@ -10,12 +10,13 @@
/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(mob/user)
for(var/mob/living/M in get_hearers_in_view(4, user))
if(iscarbon(M))
if(!M.mind || !M.mind.changeling)
M.adjustEarDamage(0,30)
M.confused += 25
M.Jitter(50)
var/mob/living/carbon/C = M
if(!C.mind || !C.mind.changeling)
C.adjustEarDamage(0, 30)
C.confused += 25
C.Jitter(50)
else
M << sound('sound/effects/screech.ogg')
C << sound('sound/effects/screech.ogg')
if(issilicon(M))
M << sound('sound/weapons/flash.ogg')
@@ -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(.)
@@ -770,7 +770,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 10)
if("Blindness")
victim.blind_eyes(2)
if("Deafness")
victim.ear_deaf = 20
victim.minimumDeafTicks(20)
if("Stun")
victim.Weaken(10)
+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()
+1 -1
View File
@@ -471,7 +471,7 @@
else if(istype(I,/obj/item/weapon/bikehorn))
to_chat(target, "<span class='userdanger'>HONK</span>")
target << 'sound/items/AirHorn.ogg'
target.adjustEarDamage(0,3)
target.adjustEarDamage(0,3)
GiveHint(target)
cooldown = world.time +cooldown_time
return
+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 -2
View File
@@ -35,7 +35,6 @@
..()
if(randomdir)
setDir(pick(GLOB.cardinal))
flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation.
timerid = QDEL_IN(src, duration)
@@ -214,7 +213,7 @@
icon = 'icons/effects/fire.dmi'
icon_state = "3"
duration = 20
/obj/effect/overlay/temp/cult
randomdir = 0
duration = 10
+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()
+7 -10
View File
@@ -105,7 +105,7 @@
throw_speed = 3
throw_range = 7
attack_verb = list("HONKED")
var/spam_flag = 0
var/next_usable = 0
var/honksound = 'sound/items/bikehorn.ogg'
var/cooldowntime = 20
@@ -115,18 +115,15 @@
return (BRUTELOSS)
/obj/item/weapon/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
if(!spam_flag)
if(!(next_usable > world.time))
playsound(loc, honksound, 50, 1, -1) //plays instead of tap.ogg!
return ..()
/obj/item/weapon/bikehorn/attack_self(mob/user)
if(!spam_flag)
spam_flag = 1
if(!(next_usable > world.time))
next_usable = world.time + cooldowntime
playsound(src.loc, honksound, 50, 1)
src.add_fingerprint(user)
spawn(cooldowntime)
spam_flag = 0
return
/obj/item/weapon/bikehorn/Crossed(mob/living/L)
if(isliving(L))
@@ -156,12 +153,12 @@
..()
/obj/item/weapon/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
if (!spam_flag)
if(!(next_usable > world.time))
var/turf/T = get_turf(src)
for(M in ohearers(7, T))
if(ishuman(M))
if(ishuman(M) && M.can_hear())
var/mob/living/carbon/human/H = M
if((istype(H.ears, /obj/item/clothing/ears/earmuffs)) || H.ear_deaf)
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
continue
M.emote("flip")
+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)
@@ -432,11 +432,6 @@
update_filling()
user.update_inv_back() //for overlays update
/obj/item/weapon/reagent_containers/chemtank/stim/New()
..()
reagents.add_reagent("stimulants_longterm", 300)
update_filling()
//Operator backpack spray
/obj/item/weapon/watertank/operator
name = "backpack water tank"
@@ -468,4 +463,4 @@
possible_transfer_amounts = list(75,100,150)
/obj/item/weapon/watertank/operator/make_noz()
return new /obj/item/weapon/reagent_containers/spray/mister/operator(src)
return new /obj/item/weapon/reagent_containers/spray/mister/operator(src)
+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)
-8
View File
@@ -165,14 +165,6 @@
/obj/proc/hide(h)
return
//If a mob logouts/logins in side of an object you can use this proc
/obj/proc/on_log()
..()
if(isobj(loc))
var/obj/Loc=loc
Loc.on_log()
/obj/singularity_pull(S, current_size)
if(!anchored || current_size >= STAGE_FIVE)
step_towards(src,S)
@@ -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
+2 -4
View File
@@ -24,9 +24,6 @@
var/locked = 0
var/opendir = SOUTH
/obj/structure/bodycontainer/New()
..()
/obj/structure/bodycontainer/Destroy()
open()
if(connected)
@@ -34,7 +31,8 @@
connected = null
return ..()
/obj/structure/bodycontainer/on_log()
/obj/structure/bodycontainer/on_log(login)
..()
update_icon()
/obj/structure/bodycontainer/update_icon()
@@ -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)
+2 -2
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/mutable_appearance/crack_overlay
var/list/debris = list()
can_be_unanchored = 1
resistance_flags = ACID_PROOF
@@ -380,7 +380,7 @@
cut_overlay(crack_overlay)
if(ratio > 75)
return
crack_overlay = image('icons/obj/structures.dmi',"damage[ratio]",-(layer+0.1))
crack_overlay = mutable_appearance('icons/obj/structures.dmi', "damage[ratio]", -(layer+0.1))
add_overlay(crack_overlay)
/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+1 -1
View File
@@ -81,7 +81,7 @@
src << S
/mob/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1, channel = 0, pressure_affected = TRUE)
if(!client || ear_deaf > 0)
if(!client || !can_hear())
return
..()
+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()
+29 -1
View File
@@ -370,6 +370,34 @@ GLOBAL_LIST(external_rsc_urls)
adminGreet(1)
holder.owner = null
GLOB.admins -= src
if (!GLOB.admins.len && SSticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
if(!GLOB.admins.len) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
var/cheesy_message = pick(
"I have no admins online!",\
"I'm all alone... :(",\
"I'm feeling lonely. :(",\
"I'm so lonely. :(",\
"Why does nobody love me? :(",\
"I want a man. :(",\
"Where has everyone gone?",\
"I need a hug. :(",\
"Someone come hold me. :(",\
"I need someone on me :(",\
"What happened? Where has everyone gone?",\
"My nipples are so stiff, but Zelda ain't here. :(",\
"Leon senpai, play more Spessmans. :(",\
"If only Serdy were here...",\
"Panic bunker can't keep my love for you out.",\
"Cebu needs to Awoo herself back into my heart.",\
"I don't even have a Turry to snuggle viciously here.",\
"MOM, WHERE ARE YOU???",\
"It's a beautiful day outside. Birds are singing, flowers are blooming. On days like this...kids like you...SHOULD BE BURNING IN HELL.",\
"Sometimes when I have sex, I think about putting an entire peanut butter and jelly sandwich in the VCR.",\
"Forever alone :("\
)
send2irc("Server", "[cheesy_message] (No admins online)")
GLOB.ahelp_tickets.ClientLogout(src)
GLOB.directory -= ckey
@@ -613,4 +641,4 @@ GLOBAL_LIST(external_rsc_urls)
if (isnull(new_size))
CRASH("change_view called without argument.")
view = new_size
view = new_size
+19 -18
View File
@@ -201,6 +201,7 @@
/obj/item/clothing/ears/earmuffs/Initialize(mapload)
..()
SET_SECONDARY_FLAG(src, BANG_PROTECT)
SET_SECONDARY_FLAG(src, HEALS_EARS)
//Glasses
/obj/item/clothing/glasses
@@ -250,9 +251,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 +279,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 +304,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 +326,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 +400,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 +455,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 +534,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)

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