Merge branch 'master' into upstream-merge-8124

This commit is contained in:
Novacat
2021-06-18 00:33:10 -04:00
committed by GitHub
805 changed files with 211982 additions and 17895 deletions
@@ -203,6 +203,7 @@
desc = "Weird glowing organic growth."
layer = ABOVE_TURF_LAYER+0.01
light_range = NODERANGE
light_on = TRUE
var/node_range = NODERANGE
var/set_color = "#321D37"
@@ -87,10 +87,10 @@ var/global/list/image/splatter_cache=list()
if(!S.blood_DNA)
S.blood_DNA = list()
S.blood_overlay.color = basecolor
S.overlays += S.blood_overlay
S.add_overlay(S.blood_overlay)
if(S.blood_overlay && S.blood_overlay.color != basecolor)
S.blood_overlay.color = basecolor
S.overlays += S.blood_overlay
S.add_overlay(S.blood_overlay)
S.blood_DNA |= blood_DNA.Copy()
perp.update_inv_shoes()
@@ -191,8 +191,8 @@ var/global/list/image/splatter_cache=list()
blood.Blend(basecolor,ICON_MULTIPLY)
icon = blood
overlays.Cut()
overlays += giblets
cut_overlays()
add_overlay(giblets)
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib5", "gib6","gibup1","gibup1","gibup1")
@@ -129,7 +129,7 @@ var/global/list/image/fluidtrack_cache=list()
update_icon()
update_icon()
overlays.Cut()
cut_overlays()
color = "#FFFFFF"
var/truedir=0
@@ -150,7 +150,7 @@ var/global/list/image/fluidtrack_cache=list()
track.fresh=0
track.overlay=I
stack[stack_idx]=track
overlays += I
add_overlay(I)
updatedtracks=0 // Clear our memory of updated tracks.
/obj/effect/decal/cleanable/blood/tracks/footprints
+2 -2
View File
@@ -24,7 +24,7 @@
mainOverlay.Blend(main,ICON_ADD)
shadeOverlay.Blend(shade,ICON_ADD)
overlays += mainOverlay
overlays += shadeOverlay
add_overlay(mainOverlay)
add_overlay(shadeOverlay)
add_hiddenprint(usr)
@@ -6,5 +6,5 @@
var/turf/T=get_turf(src)
var/image/I=image(icon, icon_state = icon_state, dir = dir)
I.color=color
T.overlays += I
T.add_overlay(I)
return INITIALIZE_HINT_QDEL
+4 -1
View File
@@ -4,7 +4,8 @@ defined, then set up when it is created with New(). Then this same system can ju
it needs to create more trails.A beaker could have a steam_trail_follow system set up, then the steam
would spawn and follow the beaker, even if it is carried or thrown.
*/
/obj/effect
light_on = TRUE
/obj/effect/effect
name = "effect"
@@ -12,6 +13,8 @@ would spawn and follow the beaker, even if it is carried or thrown.
mouse_opacity = 0
unacidable = 1//So effect are not targeted by alien acid.
pass_flags = PASSTABLE | PASSGRILLE
blocks_emissive = EMISSIVE_BLOCK_GENERIC
light_on = TRUE
/datum/effect/effect/system
var/number = 3
@@ -7,6 +7,7 @@
light_range = 3
light_power = 1
light_color = "#FFFFFF"
light_on = TRUE
/obj/effect/map_effect/perma_light/brighter
name = "permanent light (bright)"
@@ -25,4 +26,14 @@
/obj/effect/map_effect/perma_light/concentrated/incandescent
name = "permanent light (concentrated incandescent)"
light_color = LIGHT_COLOR_INCANDESCENT_TUBE
light_color = LIGHT_COLOR_INCANDESCENT_TUBE
// VOREStation Addition Start
/obj/effect/map_effect/perma_light/gateway
name = "permanent light (gateway)"
icon_state = "permalight"
light_range = 10
light_power = 5
light_color = "#b6cdff"
// VOREStation Addition End
+39 -1
View File
@@ -61,4 +61,42 @@
/obj/effect/temporary_effect/lightning_strike/Initialize()
icon_state += "[rand(1,2)]" // To have two variants of lightning sprites.
animate(src, alpha = 0, time = time_to_die - 1)
. = ..()
. = ..()
/obj/effect/dummy/lighting_obj
name = "lighting fx obj"
desc = "Tell a coder if you're seeing this."
icon_state = "nothing"
light_system = MOVABLE_LIGHT
light_range = MINIMUM_USEFUL_LIGHT_RANGE
light_color = COLOR_WHITE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
light_on = TRUE
blocks_emissive = FALSE
/obj/effect/dummy/lighting_obj/Initialize(mapload, _range, _power, _color, _duration)
. = ..()
if(!isnull(_range))
set_light_range(_range)
if(!isnull(_power))
set_light_power(_power)
if(!isnull(_color))
set_light_color(_color)
if(_duration)
QDEL_IN(src, _duration)
/obj/effect/dummy/lighting_obj/moblight
name = "mob lighting fx"
/obj/effect/dummy/lighting_obj/moblight/Initialize(mapload, _color, _range, _power, _duration)
. = ..()
if(!ismob(loc))
return INITIALIZE_HINT_QDEL
/obj/effect/dummy/lighting_obj/moblight/fire
name = "fire"
light_color = LIGHT_COLOR_FIRE
light_range = LIGHT_RANGE_FIRE
/obj/effect/abstract/directional_lighting
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+45
View File
@@ -109,3 +109,48 @@
plane = PLANE_LIGHTING_ABOVE
pixel_x = -32
pixel_y = -32
/obj/effect/overlay/vis
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = TRUE
vis_flags = VIS_INHERIT_DIR
///When detected to be unused it gets set to world.time, after a while it gets removed
var/unused = 0
///overlays which go unused for this amount of time get cleaned up
var/cache_expiration = 2 MINUTES
/*
/obj/effect/overlay/atmos_excited
name = "excited group"
icon = null
icon_state = null
anchored = TRUE // should only appear in vis_contents, but to be safe
appearance_flags = RESET_TRANSFORM | TILE_BOUND
invisibility = INVISIBILITY_ABSTRACT
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
plane = ATMOS_GROUP_PLANE
*/
/obj/effect/overlay/light_visible
name = ""
icon = 'icons/effects/light_overlays/light_32.dmi'
icon_state = "light"
plane = PLANE_O_LIGHTING_VISUAL
appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
alpha = 0
vis_flags = NONE
blocks_emissive = FALSE
/obj/effect/overlay/light_cone
name = ""
icon = 'icons/effects/light_overlays/light_cone.dmi'
icon_state = "light"
plane = PLANE_O_LIGHTING_VISUAL
appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
vis_flags = NONE
alpha = 110
blocks_emissive = FALSE
File diff suppressed because it is too large Load Diff
+15 -1
View File
@@ -2,6 +2,7 @@
name = "item"
icon = 'icons/obj/items.dmi'
w_class = ITEMSIZE_NORMAL
blocks_emissive = EMISSIVE_BLOCK_GENERIC
var/image/blood_overlay = null //this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite
var/randpixel = 6
@@ -269,6 +270,7 @@
R.hud_used.update_robot_modules_display()
/obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob)
. = ..()
if(istype(W, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = W
if(S.use_to_pickup)
@@ -632,7 +634,7 @@ var/list/global/slot_flags_enumeration = list(
//Make the blood_overlay have the proper color then apply it.
blood_overlay.color = blood_color
overlays += blood_overlay
add_overlay(blood_overlay)
//if this blood isn't already in the list, add it
if(istype(M))
@@ -824,6 +826,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
if(!inhands)
apply_blood(standing) //Some items show blood when bloodied
apply_accessories(standing) //Some items sport accessories like webbing
//Apply overlays to our...overlay
apply_overlays(standing)
//Return our icon
return standing
@@ -905,6 +910,15 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
/obj/item/proc/apply_accessories(var/image/standing)
return standing
/obj/item/proc/apply_overlays(var/image/standing)
if(!blocks_emissive)
return standing
var/mutable_appearance/blocker_overlay = mutable_appearance(standing.icon, standing.icon_state, plane = PLANE_EMISSIVE, appearance_flags = KEEP_APART)
blocker_overlay.color = GLOB.em_block_color
standing.add_overlay(blocker_overlay)
return standing
/obj/item/MouseEntered(location,control,params)
. = ..()
if(usr.is_preference_enabled(/datum/client_preference/inv_tooltips) && ((src in usr) || isstorage(loc))) // If in inventory or in storage we're looking at
+6 -6
View File
@@ -51,7 +51,7 @@
if (t)
src.name = "body bag - "
src.name += t
src.overlays += image(src.icon, "bodybag_label")
add_overlay("bodybag_label")
else
src.name = "body bag"
//..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri
@@ -59,7 +59,7 @@
else if(W.is_wirecutter())
to_chat(user, "You cut the tag off the bodybag")
src.name = "body bag"
src.overlays.Cut()
cut_overlays()
return
/obj/structure/closet/body_bag/store_mobs(var/stored_units)
@@ -107,10 +107,10 @@
else
icon_state = "closed_unlocked"
src.overlays.Cut()
cut_overlays()
/* Ours don't have toetags
if(has_label)
src.overlays += image(src.icon, "bodybag_label")
add_overlay("bodybag_label")
*/
@@ -172,11 +172,11 @@
/obj/structure/closet/body_bag/cryobag/update_icon()
..()
overlays.Cut()
cut_overlays()
var/image/I = image(icon, "indicator[opened]")
I.appearance_flags = RESET_COLOR
I.color = COLOR_LIME
overlays += I
add_overlay(I)
/obj/structure/closet/body_bag/cryobag/MouseDrop(over_object, src_location, over_location)
. = ..()
+2 -2
View File
@@ -87,10 +87,10 @@
return TRUE
/obj/item/device/aicard/update_icon()
overlays.Cut()
cut_overlays()
if(carded_ai)
if (!carded_ai.control_disabled)
overlays += image('icons/obj/pda.dmi', "aicard-on")
add_overlay("aicard-on")
if(carded_ai.stat)
icon_state = "aicard-404"
else
+7 -9
View File
@@ -43,25 +43,23 @@
/obj/item/device/defib_kit/update_icon()
var/list/new_overlays = list()
cut_overlays()
if(paddles && paddles.loc == src) //in case paddles got destroyed somehow.
new_overlays += "[initial(icon_state)]-paddles"
add_overlay("[initial(icon_state)]-paddles")
if(bcell && paddles)
if(bcell.check_charge(paddles.chargecost))
if(paddles.combat)
new_overlays += "[initial(icon_state)]-combat"
add_overlay("[initial(icon_state)]-combat")
else if(!paddles.safety)
new_overlays += "[initial(icon_state)]-emagged"
add_overlay("[initial(icon_state)]-emagged")
else
new_overlays += "[initial(icon_state)]-powered"
add_overlay("[initial(icon_state)]-powered")
var/ratio = CEILING(bcell.percent()/25, 1) * 25
new_overlays += "[initial(icon_state)]-charge[ratio]"
add_overlay("[initial(icon_state)]-charge[ratio]")
else
new_overlays += "[initial(icon_state)]-nocell"
overlays = new_overlays
add_overlay("[initial(icon_state)]-nocell")
/obj/item/device/defib_kit/ui_action_click()
toggle_paddles()
@@ -0,0 +1,186 @@
/mob/living/simple_mob //makes it so that any simplemob can potentially be revived by players and joined by ghosts
var/ghostjoin = 0
var/ic_revivable = 0
var/revivedby = "no one"
//The stuff we want to be revivable normally
/mob/living/simple_mob/animal
ic_revivable = 1
/mob/living/simple_mob/otie
ic_revivable = 1
/mob/living/simple_mob/vore
ic_revivable = 1
//The stuff that would be revivable but that we don't want to be revivable
/mob/living/simple_mob/animal/giant_spider/nurse //no you can't revive the ones who can lay eggs and get webs everywhere
ic_revivable = 0
/mob/living/simple_mob/animal/giant_spider/carrier //or the ones who fart babies when they die
ic_revivable = 0
//WHEN GHOSTS ATTACK!!!!!
/mob/living/simple_mob/attack_ghost(mob/observer/dead/user as mob)
if(!ghostjoin)
return ..()
var/reply = alert("Would you like to become [src]? It is bound to [revivedby].",,"Yes","No")
if(reply == "No")
return
if(ckey) //FIRST ONE TO CLICK YES GETS IT!!!!!! Channel your inner youtube commenter.
to_chat(src, "<span class='notice'>Sorry, someone else has already inhabited [src].</span>")
return
log_and_message_admins("[key_name_admin(user)] joined [src] as a ghost [ADMIN_FLW(src)]")
active_ghost_pods -= src
if(user.mind)
user.mind.active = TRUE
user.mind.transfer_to(src)
else
src.ckey = user.ckey
qdel(user)
ghostjoin = 0
ghostjoin_icon()
if(revivedby != "no one")
to_chat(src, "<span class='notice'>Where once your life had been rough and scary, you have been assisted by [revivedby]. They seem to be the reason you are on your feet again... so perhaps you should help them out.</span> <span class= warning> Being as you were revived, you are allied with the station. Do not attack anyone unless they are threatening the one who revived you. And try to listen to the one who revived you within reason. Of course, you may do scenes as you like, but you must still respect preferences.</span>")
visible_message("[src]'s eyes flicker with a curious intelligence.")
/obj/item/device/denecrotizer //Away map reward. FOR TRAINED NECROMANCERS ONLY. >:C
name = "experimental denecrotizer"
desc = "It looks simple on the outside but this device radiates some unknown dread. It does not appear to be of any ordinary make, and just how it works is unclear, but this device seems to interact with dead flesh."
icon = 'icons/obj/device_vr.dmi'
icon_state = "denecrotizer"
w_class = ITEMSIZE_COST_NORMAL
var/charges = 5 //your army of minions can only be this big
var/last_used
var/cooldown = 10 MINUTES //LONG
var/revive_time = 30 SECONDS //Don't do this in combat
var/advanced = 1 //allows for ghosts to join mobs who get revived by this, and updates their faction to yours
/obj/item/device/denecrotizer/examine(var/mob/user)
. = ..()
var/cooldowntime = round((cooldown - (world.time - last_used)) * 0.1)
if(Adjacent(user))
if(cooldowntime <= 0)
. += "<span class='notice'>The screen indicates that this device is ready to be used, and that it has enough energy for [charges] uses.</span>"
else
. += "<span class='notice'>The screen indicates that this device can be used again in [cooldowntime] seconds, and that it has enough energy for [charges] uses.</span>"
/obj/item/device/denecrotizer/proc/check_target(mob/living/simple_mob/target, mob/living/user)
if(!target.Adjacent(user))
return FALSE
if(user.a_intent != I_HELP) //be gentle
user.visible_message("[user] bonks [target] with [src].", runemessage = "bonks [target]")
return FALSE
if(!istype(target))
to_chat(user, "<span class='notice'>[target] seems to be too complicated for [src] to interface with.</span>")
return FALSE
if(!(world.time - last_used > cooldown))
to_chat(user, "<span class='notice'>[src] doesn't seem to be ready yet.</span>")
return FALSE
if(!charges)
to_chat(user, "<span class='notice'>[src] doesn't seem to be active anymore.</span>")
return FALSE
if(!target.ic_revivable)
to_chat(user, "<span class='notice'>[src] doesn't seem to interface with [target].</span>")
return FALSE
if(target.stat != DEAD)
if(!advanced)
to_chat(user, "<span class='notice'>[src] doesn't seem to work on that.</span>")
return FALSE
if(target.ai_holder.retaliate || target.ai_holder.hostile) // You can be friends with still living mobs if they are passive I GUESS
to_chat(user, "<span class='notice'>[src] doesn't seem to work on that.</span>")
return FALSE
if(!target.mind)
user.visible_message("[user] gently presses [src] to [target]...", runemessage = "presses [src] to [target]")
if(do_after(user, revive_time, exclusive = 1, target = target))
target.faction = user.faction
target.revivedby = user.name
target.ghostjoin = 1
active_ghost_pods += target
target.ghostjoin_icon()
last_used = world.time
charges--
log_and_message_admins("[key_name_admin(user)] used a denecrotizer to tame/offer a simplemob to ghosts: [target]. [ADMIN_FLW(src)]")
target.visible_message("[target]'s eyes widen, as though in revelation as it looks at [user].", runemessage = "eyes widen")
if(charges == 0)
icon_state = "[initial(icon_state)]-o"
update_icon()
return FALSE
else
to_chat(user, "<span class='notice'>[src] doesn't seem to work on that.</span>")
return FALSE
return TRUE
/obj/item/device/denecrotizer/proc/ghostjoin_rez(mob/living/simple_mob/target, mob/living/user)
user.visible_message("[user] gently presses [src] to [target]...", runemessage = "presses [src] to [target]")
if(do_after(user, revive_time, exclusive = 1, target = target))
target.faction = user.faction
target.revivedby = user.name
target.revive()
target.sight = initial(target.sight)
target.see_in_dark = initial(target.see_in_dark)
target.see_invisible = initial(target.see_invisible)
target.update_icon()
visible_message("[target] lifts its head and looks at [user].", runemessage = "lifts its head and looks at [user]")
log_and_message_admins("[key_name_admin(user)] used a denecrotizer to revive a simple mob: [target]. [ADMIN_FLW(src)]")
if(!target.mind) //if it doesn't have a mind then no one has been playing as it, and it is safe to offer to ghosts.
target.ghostjoin = 1
active_ghost_pods += target
target.ghostjoin_icon()
last_used = world.time
charges--
if(charges == 0)
icon_state = "[initial(icon_state)]-o"
update_icon()
return
/obj/item/device/denecrotizer/proc/basic_rez(mob/living/simple_mob/target, mob/living/user) //so medical can have a way to bring back people's pets or whatever, does not change any settings about the mob or offer it to ghosts.
user.visible_message("[user] presses [src] to [target]...", runemessage = "presses [src] to [target]")
if(do_after(user, revive_time, exclusive = 1, target = target))
target.revive()
target.sight = initial(target.sight)
target.see_in_dark = initial(target.see_in_dark)
target.see_invisible = initial(target.see_invisible)
target.update_icon()
visible_message("[target] lifts its head and looks at [user].", runemessage = "lifts its head and looks at [user]")
last_used = world.time
charges--
if(charges == 0)
icon_state = "[initial(icon_state)]-o"
update_icon()
return
else
user.visible_message("[user] bonks [target] with [src]. Nothing happened.")
return
/obj/item/device/denecrotizer/attack(mob/living/simple_mob/target, mob/living/user)
if(check_target(target, user))
if(advanced)
ghostjoin_rez(target, user)
else
basic_rez(target, user)
else
return ..()
/mob/living/simple_mob/proc/ghostjoin_icon() //puts an icon on mobs for ghosts, so they can see if a mob has been revived and is joinable
var/static/image/I
if(!I)
I = image('icons/mob/hud_vr.dmi', "ghostjoin")
I.invisibility = INVISIBILITY_OBSERVER
I.plane = PLANE_GHOSTS
I.appearance_flags = KEEP_APART|RESET_TRANSFORM
if(ghostjoin)
add_overlay(I)
else
cut_overlay(I)
/obj/item/device/denecrotizer/medical //Can revive more things, but without the special ghost and faction stuff. For medical use.
name = "commercial denecrotizer"
desc = "A curious device who's purpose is reviving simpler life forms. It seems to radiate menace."
icon_state = "m-denecrotizer"
advanced = 0 //This one isn't as fancy
cooldown = 5 MINUTES //not as long
charges = 20 //in case spiders merc Ian
+58 -80
View File
@@ -7,15 +7,18 @@
slot_flags = SLOT_BELT
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
action_button_name = "Toggle Flashlight"
light_system = MOVABLE_LIGHT_DIRECTIONAL
light_range = 4 //luminosity when on
light_power = 0.8 //lighting power when on
light_color = "#FFFFFF" //LIGHT_COLOR_INCANDESCENT_FLASHLIGHT //lighting colour when on
light_cone_y_offset = -7
var/on = 0
var/brightness_on = 4 //luminosity when on
var/flashlight_power = 0.8 //lighting power when on
var/flashlight_colour = LIGHT_COLOR_INCANDESCENT_FLASHLIGHT //lighting colour when on
var/obj/item/weapon/cell/cell
var/cell_type = /obj/item/weapon/cell/device
var/list/brightness_levels
var/brightness_level = "medium"
var/power_usage
var/power_usage = 1
var/power_use = 1
/obj/item/device/flashlight/Initialize()
@@ -23,12 +26,8 @@
if(power_use && cell_type)
cell = new cell_type(src)
brightness_levels = list("low" = 0.25, "medium" = 0.5, "high" = 1)
power_usage = brightness_levels[brightness_level]
else
verbs -= /obj/item/device/flashlight/verb/toggle
update_icon()
update_brightness()
/obj/item/device/flashlight/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -38,63 +37,40 @@
/obj/item/device/flashlight/get_cell()
return cell
/obj/item/device/flashlight/verb/toggle()
set name = "Toggle Flashlight Brightness"
set category = "Object"
set src in usr
set_brightness(usr)
/obj/item/device/flashlight/proc/set_brightness(mob/user as mob)
var/choice = input("Choose a brightness level.") as null|anything in brightness_levels
if(choice)
brightness_level = choice
power_usage = brightness_levels[choice]
to_chat(user, "<span class='notice'>You set the brightness level on \the [src] to [brightness_level].</span>")
update_icon()
/obj/item/device/flashlight/process()
if(!on || !cell)
return PROCESS_KILL
if(brightness_level && power_usage)
if(power_usage)
if(cell.use(power_usage) != power_usage) // we weren't able to use our full power_usage amount!
visible_message("<span class='warning'>\The [src] flickers before going dull.</span>")
set_light(0)
playsound(src, 'sound/effects/sparks3.ogg', 10, 1, -3) //Small cue that your light went dull in your pocket.
playsound(src, 'sound/effects/sparks3.ogg', 10, 1, -3) //Small cue that your light went dull in your pocket. //VOREStation Edit
on = 0
update_icon()
update_brightness()
return PROCESS_KILL
/obj/item/device/flashlight/update_icon()
/obj/item/device/flashlight/proc/update_brightness()
if(on)
icon_state = "[initial(icon_state)]-on"
if(brightness_level == "low")
set_light(brightness_on/2, flashlight_power*0.75, flashlight_colour)
else if(brightness_level == "high")
set_light(brightness_on*1.5, flashlight_power*1.1, flashlight_colour)
else
set_light(brightness_on, flashlight_power, flashlight_colour)
else
icon_state = "[initial(icon_state)]"
set_light(0)
icon_state = initial(icon_state)
set_light_on(on)
if(light_system == STATIC_LIGHT)
update_light()
/obj/item/device/flashlight/examine(mob/user)
. = ..()
if(power_use && brightness_level)
. += "\The [src] is set to [brightness_level]."
if(cell)
. += "\The [src] has a \the [cell] attached."
if(power_use && cell)
. += "\The [src] has a \the [cell] attached."
if(cell.charge <= cell.maxcharge*0.25)
. += "It appears to have a low amount of power remaining."
else if(cell.charge > cell.maxcharge*0.25 && cell.charge <= cell.maxcharge*0.5)
. += "It appears to have an average amount of power remaining."
else if(cell.charge > cell.maxcharge*0.5 && cell.charge <= cell.maxcharge*0.75)
. += "It appears to have an above average amount of power remaining."
else if(cell.charge > cell.maxcharge*0.75 && cell.charge <= cell.maxcharge)
. += "It appears to have a high amount of power remaining."
if(cell.charge <= cell.maxcharge*0.25)
. += "It appears to have a low amount of power remaining."
else if(cell.charge > cell.maxcharge*0.25 && cell.charge <= cell.maxcharge*0.5)
. += "It appears to have an average amount of power remaining."
else if(cell.charge > cell.maxcharge*0.5 && cell.charge <= cell.maxcharge*0.75)
. += "It appears to have an above average amount of power remaining."
else if(cell.charge > cell.maxcharge*0.75 && cell.charge <= cell.maxcharge)
. += "It appears to have a high amount of power remaining."
/obj/item/device/flashlight/attack_self(mob/user)
if(power_use)
@@ -109,8 +85,8 @@
START_PROCESSING(SSobj, src)
else if(power_use)
STOP_PROCESSING(SSobj, src)
playsound(src, 'sound/weapons/empty.ogg', 15, 1, -3)
update_icon()
playsound(src, 'sound/weapons/empty.ogg', 15, 1, -3) // VOREStation Edit
update_brightness()
user.update_action_buttons()
return 1
@@ -177,7 +153,7 @@
to_chat(user, "<span class='notice'>You remove the cell from the [src].</span>")
playsound(src, 'sound/machines/button.ogg', 30, 1, 0)
on = 0
update_icon()
update_brightness()
return
..()
else
@@ -225,7 +201,7 @@
cell = W
to_chat(user, "<span class='notice'>You install a cell in \the [src].</span>")
playsound(src, 'sound/machines/button.ogg', 30, 1, 0)
update_icon()
update_brightness()
else
to_chat(user, "<span class='notice'>\The [src] already has a cell.</span>")
else
@@ -242,7 +218,7 @@
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
slot_flags = SLOT_EARS
brightness_on = 2
light_range = 2
w_class = ITEMSIZE_TINY
power_use = 0
@@ -270,7 +246,7 @@
name = "maglight"
desc = "A very, very heavy duty flashlight."
icon_state = "maglight"
flashlight_colour = LIGHT_COLOR_FLUORESCENT_FLASHLIGHT
light_color = LIGHT_COLOR_FLUORESCENT_FLASHLIGHT
force = 10
slot_flags = SLOT_BELT
w_class = ITEMSIZE_SMALL
@@ -283,7 +259,7 @@
desc = "A miniature lamp, that might be used by small robots."
icon_state = "penlight"
item_state = null
brightness_on = 2
light_range = 2
w_class = ITEMSIZE_TINY
power_use = 0
@@ -294,10 +270,11 @@
icon_state = "lamp"
force = 10
center_of_mass = list("x" = 13,"y" = 11)
brightness_on = 10
light_range = 5
w_class = ITEMSIZE_LARGE
power_use = 0
on = 1
light_system = STATIC_LIGHT
// green-shaded desk lamp
@@ -305,8 +282,7 @@
desc = "A classic green-shaded desk lamp."
icon_state = "lampgreen"
center_of_mass = list("x" = 15,"y" = 11)
brightness_on = 5
flashlight_colour = "#FFC58F"
light_color = "#FFC58F"
/obj/item/device/flashlight/lamp/verb/toggle_light()
set name = "Toggle light"
@@ -322,9 +298,9 @@
name = "flare"
desc = "A red standard-issue flare. There are instructions on the side reading 'pull cord, make light'."
w_class = ITEMSIZE_SMALL
brightness_on = 8 // Pretty bright.
flashlight_power = 0.8
flashlight_colour = LIGHT_COLOR_FLARE
light_range = 8 // Pretty bright.
light_power = 0.8
light_color = LIGHT_COLOR_FLARE
icon_state = "flare"
item_state = "flare"
action_button_name = null //just pull it manually, neckbeard.
@@ -334,6 +310,7 @@
power_use = 0
drop_sound = 'sound/items/drop/gloves.ogg'
pickup_sound = 'sound/items/pickup/gloves.ogg'
light_system = MOVABLE_LIGHT
/obj/item/device/flashlight/flare/New()
fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds.
@@ -354,7 +331,7 @@
on = 0
src.force = initial(src.force)
src.damtype = initial(src.damtype)
update_icon()
update_brightness()
/obj/item/device/flashlight/flare/attack_self(mob/user)
@@ -375,7 +352,7 @@
/obj/item/device/flashlight/flare/proc/ignite() //Used for flare launchers.
on = !on
update_icon()
update_brightness()
force = on_damage
damtype = "fire"
START_PROCESSING(SSobj, src)
@@ -387,9 +364,10 @@
name = "green glowstick"
desc = "A green military-grade glowstick."
w_class = ITEMSIZE_SMALL
brightness_on = 4
flashlight_power = 0.9
flashlight_colour = "#49F37C"
light_system = MOVABLE_LIGHT
light_range = 4
light_power = 0.9
light_color = "#49F37C"
icon_state = "glowstick"
item_state = "glowstick"
var/fuel = 0
@@ -409,7 +387,7 @@
/obj/item/device/flashlight/glowstick/proc/turn_off()
on = 0
update_icon()
update_brightness()
/obj/item/device/flashlight/glowstick/attack_self(mob/user)
@@ -427,28 +405,28 @@
/obj/item/device/flashlight/glowstick/red
name = "red glowstick"
desc = "A red military-grade glowstick."
flashlight_colour = "#FC0F29"
light_color = "#FC0F29"
icon_state = "glowstick_red"
item_state = "glowstick_red"
/obj/item/device/flashlight/glowstick/blue
name = "blue glowstick"
desc = "A blue military-grade glowstick."
flashlight_colour = "#599DFF"
light_color = "#599DFF"
icon_state = "glowstick_blue"
item_state = "glowstick_blue"
/obj/item/device/flashlight/glowstick/orange
name = "orange glowstick"
desc = "A orange military-grade glowstick."
flashlight_colour = "#FA7C0B"
light_color = "#FA7C0B"
icon_state = "glowstick_orange"
item_state = "glowstick_orange"
/obj/item/device/flashlight/glowstick/yellow
name = "yellow glowstick"
desc = "A yellow military-grade glowstick."
flashlight_colour = "#FEF923"
light_color = "#FEF923"
icon_state = "glowstick_yellow"
item_state = "glowstick_yellow"
@@ -460,17 +438,17 @@
icon = 'icons/obj/lighting.dmi'
icon_state = "floor1" //not a slime extract sprite but... something close enough!
item_state = "slime"
flashlight_colour = "#FFF423"
light_color = "#FFF423"
w_class = ITEMSIZE_TINY
brightness_on = 6
light_range = 6
on = 1 //Bio-luminesence has one setting, on.
power_use = 0
/obj/item/device/flashlight/slime/New()
..()
set_light(brightness_on, flashlight_power, flashlight_colour)
set_light(light_range, light_power, light_color)
/obj/item/device/flashlight/slime/update_icon()
/obj/item/device/flashlight/slime/update_brightness()
return
/obj/item/device/flashlight/slime/attack_self(mob/user)
@@ -1,8 +1,9 @@
/obj/item/device/flashlight/glowstick/radioisotope
name = "radioisotope glowstick"
desc = "A radioisotope powered glowstick. Escaping particles light up the area far brighter on similar levels to flares and for longer"
flashlight_colour = "#599DFF"
icon_state = "glowstick_blue"
item_state = "glowstick_blue"
flashlight_power = 0.1
brightness_on = 8
light_range = 8
light_power = 0.1
light_color = "#599DFF"
@@ -29,6 +29,7 @@
var/obj/machinery/connectable //Used to connect machinery.
var/weakref_wiring //Used to store weak references for integrated circuitry. This is now the Omnitool.
toolspeed = 1
tool_qualities = list(TOOL_MULTITOOL)
/obj/item/device/multitool/attack_self(mob/living/user)
var/choice = alert("What do you want to do with \the [src]?","Multitool Menu", "Switch Mode", "Clear Buffers", "Cancel")
+20 -20
View File
@@ -24,7 +24,7 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
/obj/item/device/paicard/New()
..()
overlays += "pai-off"
add_overlay("pai-off")
/obj/item/device/paicard/Destroy()
//Will stop people throwing friend pAIs into the singularity so they can respawn
@@ -304,34 +304,34 @@ GLOBAL_LIST_BOILERPLATE(all_pai_cards, /obj/item/device/paicard)
/obj/item/device/paicard/proc/setPersonality(mob/living/silicon/pai/personality)
src.pai = personality
src.overlays += "pai-happy"
add_overlay("pai-happy")
/obj/item/device/paicard/proc/removePersonality()
src.pai = null
src.overlays.Cut()
src.overlays += "pai-off"
cut_overlays()
add_overlay("pai-off")
/obj/item/device/paicard
var/current_emotion = 1
/obj/item/device/paicard/proc/setEmotion(var/emotion)
if(pai)
src.overlays.Cut()
cut_overlays()
switch(emotion)
if(1) src.overlays += "pai-happy"
if(2) src.overlays += "pai-cat"
if(3) src.overlays += "pai-extremely-happy"
if(4) src.overlays += "pai-face"
if(5) src.overlays += "pai-laugh"
if(6) src.overlays += "pai-off"
if(7) src.overlays += "pai-sad"
if(8) src.overlays += "pai-angry"
if(9) src.overlays += "pai-what"
if(10) src.overlays += "pai-neutral"
if(11) src.overlays += "pai-silly"
if(12) src.overlays += "pai-nose"
if(13) src.overlays += "pai-smirk"
if(14) src.overlays += "pai-exclamation"
if(15) src.overlays += "pai-question"
if(1) add_overlay("pai-happy")
if(2) add_overlay("pai-cat")
if(3) add_overlay("pai-extremely-happy")
if(4) add_overlay("pai-face")
if(5) add_overlay("pai-laugh")
if(6) add_overlay("pai-off")
if(7) add_overlay("pai-sad")
if(8) add_overlay("pai-angry")
if(9) add_overlay("pai-what")
if(10) add_overlay("pai-neutral")
if(11) add_overlay("pai-silly")
if(12) add_overlay("pai-nose")
if(13) add_overlay("pai-smirk")
if(14) add_overlay("pai-exclamation")
if(15) add_overlay("pai-question")
current_emotion = emotion
/obj/item/device/paicard/proc/alertUpdate()
@@ -109,8 +109,7 @@ var/global/list/active_radio_jammers = list()
// Only Cut() if we need to.
if(overlay_percent != last_overlay_percent)
overlays.Cut()
var/image/I = image(src.icon, src, "jammer_overlay_[overlay_percent]")
overlays += I
cut_overlays()
add_overlay("jammer_overlay_[overlay_percent]")
last_overlay_percent = overlay_percent
+2 -2
View File
@@ -28,7 +28,7 @@
/obj/item/device/t_scanner/proc/set_active(var/active)
on = active
if(on)
START_PROCESSING(SSobj, src)
START_PROCESSING(SSobj, src)
flicker = 0
else
STOP_PROCESSING(SSobj, src)
@@ -87,7 +87,7 @@
if(istype(scanned, /obj/machinery/atmospherics/pipe))
var/obj/machinery/atmospherics/pipe/P = scanned
I.color = P.pipe_color
I.overlays += P.overlays
I.add_overlay(P.overlays)
I.alpha = 128
I.mouse_opacity = 0
@@ -372,9 +372,9 @@
/obj/item/device/tape/update_icon()
overlays.Cut()
cut_overlays()
if(ruined)
overlays += "ribbonoverlay"
add_overlay("ribbonoverlay")
/obj/item/device/tape/fire_act()
@@ -119,7 +119,7 @@
VARSET_IN(src, toggle, TRUE, 5 SECONDS)
/obj/item/device/transfer_valve/update_icon()
overlays.Cut()
cut_overlays()
underlays = null
if(!tank_one && !tank_two && !attached_device)
@@ -128,13 +128,13 @@
icon_state = "valve"
if(tank_one)
overlays += "[tank_one.icon_state]"
add_overlay("[tank_one.icon_state]")
if(tank_two)
var/icon/J = new(icon, icon_state = "[tank_two.icon_state]")
J.Shift(WEST, 13)
underlays += J
if(attached_device)
overlays += "device"
add_overlay("device")
/obj/item/device/transfer_valve/proc/remove_tank(obj/item/weapon/tank/T)
if(tank_one == T)
@@ -73,9 +73,9 @@
var/obj/item/device/perfect_tele_beacon/beacon = beacons[bcn]
if(destination == beacon)
I.overlays += radial_seton
I.add_overlay(radial_seton)
else
I.overlays += radial_set
I.add_overlay(radial_set)
radial_images[bcn] = I
@@ -83,7 +83,7 @@
if(beacons_left)
var/image/I = image(icon = 'icons/mob/radial_vr.dmi', icon_state = "tl_[index]")
I.overlays += radial_plus
I.add_overlay(radial_plus)
radial_images["New Beacon"] = I
/obj/item/device/perfect_tele/attack_hand(mob/user)
+2 -2
View File
@@ -86,7 +86,7 @@
/obj/item/glass_jar/update_icon() // Also updates name and desc
underlays.Cut()
overlays.Cut()
cut_overlays()
switch(contains)
if(JAR_NOTHING)
name = initial(name)
@@ -138,7 +138,7 @@
/obj/item/glass_jar/fish/update_icon() // Also updates name and desc
underlays.Cut()
overlays.Cut()
cut_overlays()
if(filled)
underlays += image(icon, "[icon_state]_water")
+2 -3
View File
@@ -32,7 +32,7 @@
. += "<span class='notice'>[src] has a [corptag] attached to it.</span>"
/obj/structure/closet/body_bag/cryobag/robobag/update_icon()
overlays.Cut()
cut_overlays()
..()
if(corptag)
var/corptag_icon_state = "tag_blank"
@@ -45,8 +45,7 @@
else if(istype(corptag, /obj/item/clothing/accessory/badge/corporate_tag))
corptag_icon_state = corptag.icon_state
var/image/I = image(icon, corptag_icon_state)
overlays += I
add_overlay(corptag_icon_state)
/obj/structure/closet/body_bag/cryobag/robobag/AltClick(mob/user)
if(!Adjacent(user))
+7 -7
View File
@@ -76,19 +76,19 @@
src.updateicon()
/obj/item/robot_parts/robot_suit/proc/updateicon()
src.overlays.Cut()
cut_overlays()
if(src.l_arm)
src.overlays += "l_arm+o"
add_overlay("l_arm+o")
if(src.r_arm)
src.overlays += "r_arm+o"
add_overlay("r_arm+o")
if(src.chest)
src.overlays += "chest+o"
add_overlay("chest+o")
if(src.l_leg)
src.overlays += "l_leg+o"
add_overlay("l_leg+o")
if(src.r_leg)
src.overlays += "r_leg+o"
add_overlay("r_leg+o")
if(src.head)
src.overlays += "head+o"
add_overlay("head+o")
/obj/item/robot_parts/robot_suit/proc/check_completion()
if(src.l_arm && src.r_arm)
+2 -2
View File
@@ -36,7 +36,7 @@
if (istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
overlays.Cut()
cut_overlays()
to_chat(usr, "You slice off [src]'s uneven chunks of aluminum and scorch marks.")
return
@@ -139,7 +139,7 @@
virtualIcon.DrawBox(null, B.b1x1, B.b1y, B.b1x2, B.b1y) // horizontal line, left to right
virtualIcon.DrawBox(null, B.b2x, B.b2y1, B.b2x, B.b2y2) // vertical line, top to bottom
overlays += bmark // add the decal
add_overlay(bmark) // add the decal
icon = virtualIcon // apply bulletholes over decals
@@ -65,7 +65,7 @@
message_admins("[key_name(user, user.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>) with [timer] second fuse",0,1)
log_game("[key_name(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse")
target.overlays += image_overlay
target.add_overlay(image_overlay, TRUE)
to_chat(user, "Bomb has been planted. Timer counting down from [timer].")
spawn(timer*10)
explode(get_turf(target))
@@ -87,7 +87,7 @@
else
target.ex_act(1)
if(target)
target.overlays -= image_overlay
target.cut_overlay(image_overlay, TRUE)
qdel(src)
/obj/item/weapon/plastique/attack(mob/M as mob, mob/user as mob, def_zone)
@@ -10,7 +10,7 @@
var/turf/T = get_turf(target)
if(T.z in using_map.station_levels)
target.visible_message("<span class='danger'>\The [src] lets out a loud beep as safeties trigger, before imploding and falling apart.</span>")
target.overlays -= image_overlay
target.cut_overlay(image_overlay, TRUE)
qdel(src)
return 0
else
@@ -46,13 +46,13 @@
/obj/item/weapon/flamethrower/update_icon()
overlays.Cut()
cut_overlays()
if(igniter)
overlays += "+igniter[status]"
add_overlay("+igniter[status]")
if(ptank)
overlays += "+ptank"
add_overlay("+ptank")
if(lit)
overlays += "+lit"
add_overlay("+lit")
item_state = "flamethrower_1"
else
item_state = "flamethrower_0"
@@ -19,9 +19,9 @@
playsound(src, 'sound/weapons/wave.ogg', 100)
/obj/item/weapon/grenade/supermatter/update_icon()
overlays.Cut()
cut_overlays()
if(implode_at)
overlays += image(icon = 'icons/rust.dmi', icon_state = "emfield_s1")
add_overlay(image(icon = 'icons/rust.dmi', icon_state = "emfield_s1"))
/obj/item/weapon/grenade/supermatter/process()
if(!isturf(loc))
@@ -22,23 +22,23 @@ var/global/list/ashtray_cache = list()
/obj/item/weapon/material/ashtray/update_icon()
color = null
overlays.Cut()
cut_overlays()
var/cache_key = "base-[material.name]"
if(!ashtray_cache[cache_key])
var/image/I = image('icons/obj/objects.dmi',"ashtray")
I.color = material.icon_colour
ashtray_cache[cache_key] = I
overlays |= ashtray_cache[cache_key]
add_overlay(ashtray_cache[cache_key])
if (contents.len == max_butts)
if(!ashtray_cache["full"])
ashtray_cache["full"] = image('icons/obj/objects.dmi',"ashtray_full")
overlays |= ashtray_cache["full"]
add_overlay(ashtray_cache["full"])
desc = "It's stuffed full."
else if (contents.len > max_butts/2)
if(!ashtray_cache["half"])
ashtray_cache["half"] = image('icons/obj/objects.dmi',"ashtray_half")
overlays |= ashtray_cache["half"]
add_overlay(ashtray_cache["half"])
desc = "It's half-filled."
else
desc = "An ashtray made of [material.display_name]."
@@ -49,7 +49,7 @@
return
M.visible_message("<span class='notice'>\The [user] feeds some [loaded] to \the [M] with \the [src].</span>")
playsound(src,'sound/items/eatfood.ogg', rand(10,40), 1)
overlays.Cut()
cut_overlays()
return
else
to_chat(user, "<span class='warning'>You don't have anything on \the [src].</span>") //if we have help intent and no food scooped up DON'T STAB OURSELVES WITH THE FORK
@@ -114,7 +114,7 @@ var/list/tape_roll_applications = list()
color = COLOR_DEEP_SKY_BLUE
/obj/item/taperoll/update_icon()
overlays.Cut()
cut_overlays()
var/image/overlay = image(icon = src.icon)
overlay.appearance_flags = RESET_COLOR
if(ismob(loc))
@@ -122,7 +122,7 @@ var/list/tape_roll_applications = list()
overlay.icon_state = "start"
else
overlay.icon_state = "stop"
overlays += overlay
add_overlay(overlay)
/obj/item/taperoll/dropped(mob/user)
@@ -303,11 +303,11 @@ var/list/tape_roll_applications = list()
if(tape_roll_applications[F] & direction) // hazard_overlay in F.overlays wouldn't work.
user.visible_message("\The [user] uses the adhesive of \the [src] to remove area markings from \the [F].", "You use the adhesive of \the [src] to remove area markings from \the [F].")
F.overlays -= hazard_overlay
F.cut_overlay(hazard_overlay)
tape_roll_applications[F] &= ~direction
else
user.visible_message("\The [user] applied \the [src] on \the [F] to create area markings.", "You apply \the [src] on \the [F] to create area markings.")
F.overlays |= hazard_overlay
F.add_overlay(hazard_overlay)
tape_roll_applications[F] |= direction
return
@@ -115,6 +115,38 @@
icon_override = 'icons/mob/back_vr.dmi'
icon_state = "explorer_duffle"
///Talon Bags///
/obj/item/weapon/storage/backpack/talon
name = "ITV backpack"
desc = "A backpack for carrying a large number of supplies easily."
icon = 'icons/obj/clothing/backpack_vr.dmi'
icon_override = 'icons/mob/back_vr.dmi'
icon_state = "talon"
/obj/item/weapon/storage/backpack/satchel/talon
name = "ITV satchel"
desc = "A satchel for carrying a large number of supplies easily."
icon = 'icons/obj/clothing/backpack_vr.dmi'
icon_override = 'icons/mob/back_vr.dmi'
icon_state = "talon_satchel"
item_state_slots = null
/obj/item/weapon/storage/backpack/messenger/talon
name = "ITV messenger bag"
desc = "A sturdy backpack worn over one shoulder."
icon = 'icons/obj/clothing/backpack_vr.dmi'
icon_override = 'icons/mob/back_vr.dmi'
icon_state = "talon_courier"
item_state_slots = null
/obj/item/weapon/storage/backpack/dufflebag/talon
name = "ITV dufflebag"
desc = "A large dufflebag for holding extra supplies."
icon = 'icons/obj/clothing/backpack_vr.dmi'
icon_override = 'icons/mob/back_vr.dmi'
icon_state = "talon_duffle"
///Roboticist Bags///
/obj/item/weapon/storage/backpack/satchel/roboticist
@@ -125,9 +125,9 @@
/obj/item/weapon/storage/fancy/crayons/update_icon()
var/mutable_appearance/ma = new(src)
ma.overlays = list()
ma.cut_overlays()
for(var/obj/item/weapon/pen/crayon/crayon in contents)
ma.overlays += image('icons/obj/crayons.dmi',crayon.colourName)
add_overlay(image('icons/obj/crayons.dmi',crayon.colourName))
appearance = ma
/obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob)
@@ -167,9 +167,9 @@
/obj/item/weapon/storage/fancy/markers/update_icon()
var/mutable_appearance/ma = new(src)
ma.overlays = list()
ma.cut_overlays()
for(var/obj/item/weapon/pen/crayon/marker/marker in contents)
ma.overlays += image('icons/obj/crayons.dmi',"m"+marker.colourName)
ma.add_overlay(image('icons/obj/crayons.dmi',"m"+marker.colourName))
appearance = ma
/obj/item/weapon/storage/fancy/markers/attackby(obj/item/W as obj, mob/user as mob)
@@ -398,14 +398,13 @@
/obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0)
var/total_contents = contents.len - itemremoved
icon_state = "vialbox[total_contents]"
overlays.Cut()
cut_overlays()
if (!broken)
overlays += image(icon, src, "led[locked]")
add_overlay("led[locked]")
if(locked)
overlays += image(icon, src, "cover")
add_overlay("cover")
else
overlays += image(icon, src, "ledb")
return
add_overlay("ledb")
/obj/item/weapon/storage/lockbox/vials/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
@@ -200,11 +200,11 @@
update_icon()
/obj/item/weapon/storage/pill_bottle/update_icon()
overlays.Cut()
cut_overlays()
if(wrapper_color)
var/image/I = image(icon, "pillbottle_wrap")
I.color = wrapper_color
overlays += I
add_overlay(I)
/obj/item/weapon/storage/pill_bottle/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
@@ -18,10 +18,10 @@
update_icon()
/obj/item/weapon/storage/box/donut/update_icon()
overlays.Cut()
cut_overlays()
var/i = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/donut/D in contents)
overlays += image('icons/obj/food.dmi', "[i][D.overlay_state]")
add_overlay("[i][D.overlay_state]")
i++
/obj/item/weapon/storage/box/donut/empty
@@ -111,15 +111,15 @@
src.l_set = 1
else if ((src.code == src.l_code) && (src.emagged == 0) && (src.l_set == 1))
src.locked = 0
src.overlays = null
overlays += image('icons/obj/storage.dmi', icon_opened)
cut_overlays()
add_overlay(icon_opened)
src.code = null
else
src.code = "ERROR"
else
if ((digit == "R") && (src.emagged == 0) && (!src.l_setshort))
src.locked = 1
src.overlays = null
cut_overlays()
src.code = null
src.close(usr)
else
@@ -133,10 +133,10 @@
/obj/item/weapon/storage/secure/emag_act(var/remaining_charges, var/mob/user, var/feedback)
if(!emagged)
emagged = 1
src.overlays += image('icons/obj/storage.dmi', icon_sparking)
src.add_overlay(icon_sparking)
sleep(6)
src.overlays = null
overlays += image('icons/obj/storage.dmi', icon_locking)
cut_overlays()
add_overlay(icon_locking)
locked = 0
to_chat(user, (feedback ? feedback : "You short out the lock of \the [src]."))
return 1
@@ -226,7 +226,7 @@
var/stored_cap_width = 4 //length of sprite for start and end of the box representing the stored item
var/storage_width = min( round( 224 * max_storage_space/baseline_max_storage_space ,1) ,274) //length of sprite for the box representing total storage space
storage_start.overlays.Cut()
storage_start.cut_overlays()
var/matrix/M = matrix()
M.Scale((storage_width-storage_cap_width*2+3)/32,1)
@@ -253,9 +253,9 @@
src.stored_start.transform = M_start
src.stored_continue.transform = M_continue
src.stored_end.transform = M_end
storage_start.overlays += src.stored_start
storage_start.overlays += src.stored_continue
storage_start.overlays += src.stored_end
storage_start.add_overlay(stored_start)
storage_start.add_overlay(stored_continue)
storage_start.add_overlay(stored_end)
O.screen_loc = "4:[round((startpoint+endpoint)/2)+2],2:16"
O.maptext = ""
@@ -701,7 +701,7 @@
var/closed_state
/obj/item/weapon/storage/trinketbox/update_icon()
overlays.Cut()
cut_overlays()
if(open)
icon_state = open_state
@@ -714,7 +714,7 @@
else if(istype(contents[1], /obj/item/clothing/accessory/medal))
contained_image = "medal_trinket"
if(contained_image)
overlays += contained_image
add_overlay(contained_image)
else
icon_state = closed_state
@@ -67,14 +67,14 @@
update_icon()
/obj/item/weapon/storage/wallet/update_icon()
overlays.Cut()
cut_overlays()
if(front_id)
var/tiny_state = "id-generic"
if("id-[front_id.icon_state]" in cached_icon_states(icon))
tiny_state = "id-"+front_id.icon_state
var/image/tiny_image = new/image(icon, icon_state = tiny_state)
tiny_image.appearance_flags = RESET_COLOR
overlays += tiny_image
add_overlay(tiny_image)
/obj/item/weapon/storage/wallet/GetID()
return front_id
@@ -85,14 +85,14 @@
add_fingerprint(user)
if(blood_overlay && blood_DNA && (blood_DNA.len >= 1)) //updates blood overlay, if any
overlays.Cut()//this might delete other item overlays as well but eeeeeeeh
cut_overlays()
var/icon/I = new /icon(src.icon, src.icon_state)
I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD)
I.Blend(new /icon('icons/effects/blood.dmi', "itemblood"),ICON_MULTIPLY)
blood_overlay = I
overlays += blood_overlay
add_overlay(blood_overlay)
return
+10 -10
View File
@@ -138,7 +138,7 @@ var/list/global/tank_gauge_cache = list()
to_chat(user, "<span class='notice'>You carefully begin clipping the wires that attach to the tank.</span>")
if(do_after(user, 100,src))
wired = 0
src.overlays -= "bomb_assembly"
cut_overlay("bomb_assembly")
to_chat(user, "<span class='notice'>You cut the wire and remove the device.</span>")
var/obj/item/device/assembly_holder/assy = src.proxyassembly.assembly
@@ -153,7 +153,7 @@ var/list/global/tank_gauge_cache = list()
assy.a_right = null
src.proxyassembly.assembly = null
qdel(assy)
src.overlays.Cut()
cut_overlays()
last_gauge_pressure = 0
update_gauge()
@@ -166,7 +166,7 @@ var/list/global/tank_gauge_cache = list()
if(do_after(user, 10, src))
to_chat(user, "<span class='notice'>You quickly clip the wire from the tank.</span>")
wired = 0
src.overlays -= "bomb_assembly"
cut_overlay("bomb_assembly")
else
to_chat(user, "<span class='notice'>There are no wires to cut!</span>")
@@ -352,12 +352,12 @@ var/list/global/tank_gauge_cache = list()
/obj/item/weapon/tank/proc/add_bomb_overlay()
if(src.wired)
src.overlays += "bomb_assembly"
add_overlay("bomb_assembly")
if(src.proxyassembly.assembly)
var/icon/test = getFlatIcon(src.proxyassembly.assembly)
test.Shift(SOUTH,1)
test.Shift(WEST,3)
overlays += test
add_overlay(test)
/obj/item/weapon/tank/proc/update_gauge()
@@ -373,12 +373,12 @@ var/list/global/tank_gauge_cache = list()
return
last_gauge_pressure = gauge_pressure
overlays.Cut()
cut_overlays()
add_bomb_overlay()
var/indicator = "[gauge_icon][(gauge_pressure == -1) ? "overload" : gauge_pressure]"
if(!tank_gauge_cache[indicator])
tank_gauge_cache[indicator] = image(icon, indicator)
overlays += tank_gauge_cache[indicator]
add_overlay(tank_gauge_cache[indicator])
@@ -562,7 +562,7 @@ var/list/global/tank_gauge_cache = list()
H.update_icon()
src.overlays += "bomb_assembly"
add_overlay("bomb_assembly")
/obj/item/weapon/tank/phoron/onetankbomb/New()
@@ -658,10 +658,10 @@ var/list/global/tank_gauge_cache = list()
/obj/item/device/tankassemblyproxy/update_icon()
if(assembly)
tank.update_icon()
tank.overlays += "bomb_assembly"
tank.add_overlay("bomb_assembly")
else
tank.update_icon()
tank.overlays -= "bomb_assembly"
tank.cut_overlay("bomb_assembly")
/obj/item/device/tankassemblyproxy/HasProximity(turf/T, atom/movable/AM, old_loc)
assembly?.HasProximity(T, AM, old_loc)
@@ -208,11 +208,10 @@
/obj/item/weapon/weldingtool/update_icon()
..()
overlays.Cut()
cut_overlays()
// Welding overlay.
if(welding)
var/image/I = image(icon, src, "[icon_state]-on")
overlays.Add(I)
add_overlay("[icon_state]-on")
item_state = "[initial(item_state)]1"
else
item_state = initial(item_state)
@@ -221,8 +220,7 @@
if(change_icons && get_max_fuel())
var/ratio = get_fuel() / get_max_fuel()
ratio = CEILING(ratio * 4, 1) * 25
var/image/I = image(icon, src, "[icon_state][ratio]")
overlays.Add(I)
add_overlay("[icon_state][ratio]")
// Lights
if(welding && flame_intensity)
+3 -3
View File
@@ -19,7 +19,7 @@
/obj/item/weapon/tray/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
user.setClickCooldown(user.get_attack_speed(src))
// Drop all the things. All of them.
overlays.Cut()
cut_overlays()
for(var/obj/item/I in carrying)
I.loc = M.loc
carrying.Remove(I)
@@ -193,7 +193,7 @@
var/obj/item/weapon/material/O = I
if(O.applies_material_colour)
Img.color = O.color
overlays += Img
add_overlay(Img)
/obj/item/weapon/tray/dropped(mob/user)
var/noTable = null
@@ -203,7 +203,7 @@
noTable = 1
if(isturf(loc) && !(locate(/mob/living) in src.loc))
overlays.Cut()
cut_overlays()
for(var/obj/item/I in carrying)
I.forceMove(src.loc)
carrying.Remove(I)
+22
View File
@@ -1345,6 +1345,28 @@
/obj/random/multiple/large_corp_crate
)
)
//VOREStation Add - Random good, no guns gooder
/obj/random/multiple/random_size_crate/no_weapons
name = "random size corporate crate (no weapons)"
desc = "A random size corporate crate with thematic contents: prefers small crates."
icon = 'icons/obj/storage.dmi'
icon_state = "largermetal"
spawn_nothing_percentage = 50
/obj/random/multiple/random_size_crate/no_weapons/item_to_spawn()
return pick(
prob(85);list(
/obj/random/multiple/corp_crate/no_weapons
),
prob(15);list(
/obj/random/multiple/large_corp_crate/no_weapons
)
)
/obj/random/multiple/random_size_crate/no_weapons/nofail
spawn_nothing_percentage = 0
//VOREStation Add End
/*
* Turf swappers.
*/
+1
View File
@@ -249,6 +249,7 @@
prob(8);/obj/item/weapon/storage/firstaid/o2,
prob(6);/obj/item/weapon/storage/firstaid/adv,
prob(8);/obj/item/weapon/storage/firstaid/fire,
prob(1);/obj/item/device/denecrotizer/medical, //VOREStation Add,
prob(1);/obj/item/weapon/storage/firstaid/combat)
/obj/random/contraband
+41 -1
View File
@@ -8,4 +8,44 @@
/obj/random/explorer_shield/item_to_spawn()
return pick(/obj/item/weapon/shield/riot/explorer,
/obj/item/weapon/shield/riot/explorer/purple)
/obj/item/weapon/shield/riot/explorer/purple)
/obj/random/awayloot
name = "random away mission loot"
desc = "A list of things that people can find in away missions."
icon = 'icons/mob/randomlandmarks.dmi'
icon_state = "awayloot"
spawn_nothing_percentage = 50
/obj/random/awayloot/item_to_spawn()
return pick(prob(50);/obj/item/weapon/aliencoin,
prob(40);/obj/item/weapon/aliencoin/silver,
prob(30);/obj/item/weapon/aliencoin/gold,
prob(20);/obj/item/weapon/aliencoin/phoron,
prob(10);/obj/item/device/denecrotizer,
prob(5);/obj/item/device/perfect_tele,
prob(5);/obj/item/weapon/bluespace_harpoon,
prob(1);/obj/item/weapon/cell/infinite,
prob(1);/obj/item/weapon/cell/void,
prob(1);/obj/item/weapon/cell/device/weapon/recharge/alien,
prob(1);/obj/item/clothing/shoes/boots/speed,
prob(1);/obj/item/device/nif,
prob(1);/obj/item/device/paicard,
prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie,
prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,
prob(2);/obj/item/weapon/storage/backpack/dufflebag/syndie/med,
prob(2);/obj/item/clothing/mask/gas/voice,
prob(2);/obj/item/device/radio_jammer,
prob(1);/obj/item/toy/bosunwhistle,
prob(1);/obj/item/weapon/bananapeel,
prob(5);/obj/fiftyspawner/platinum,
prob(3);/obj/fiftyspawner/gold,
prob(3);/obj/fiftyspawner/silver,
prob(1);/obj/fiftyspawner/diamond,
prob(5);/obj/fiftyspawner/phoron,
prob(1);/obj/item/weapon/telecube/randomized
)
/obj/random/awayloot/nofail
name = "garunteed random away mission loot"
spawn_nothing_percentage = 0
+5 -1
View File
@@ -257,4 +257,8 @@
prob(5);/obj/item/weapon/rig/eva,
prob(4);/obj/item/weapon/rig/light/stealth,
prob(3);/obj/item/weapon/rig/hazard,
prob(1);/obj/item/weapon/rig/merc/empty)
prob(1);/obj/item/weapon/rig/merc/empty)
//VOREStation Add Start
/obj/random/rigsuit/chancetofail
spawn_nothing_percentage = 50
//VOREStation Add End
+1
View File
@@ -1,6 +1,7 @@
/obj/structure
icon = 'icons/obj/structures.dmi'
w_class = ITEMSIZE_NO_CONTAINER
blocks_emissive = EMISSIVE_BLOCK_GENERIC
var/climbable
var/climb_delay = 3.5 SECONDS
+6 -6
View File
@@ -184,7 +184,7 @@
L.IgniteMob()
/obj/structure/bonfire/update_icon()
overlays.Cut()
cut_overlays()
if(burning)
var/state
switch(get_fuel_amount())
@@ -194,14 +194,14 @@
state = "bonfire_hot"
var/image/I = image(icon, state)
I.appearance_flags = RESET_COLOR
overlays += I
add_overlay(I)
if(has_buckled_mobs() && get_fuel_amount() >= 5)
I = image(icon, "bonfire_intense")
I.pixel_y = 13
I.layer = MOB_LAYER + 0.1
I.appearance_flags = RESET_COLOR
overlays += I
add_overlay(I)
var/light_strength = max(get_fuel_amount() / 2, 2)
set_light(light_strength, light_strength, "#FF9933")
@@ -211,7 +211,7 @@
if(grill)
var/image/grille_image = image(icon, "bonfire_grill")
grille_image.appearance_flags = RESET_COLOR
overlays += grille_image
add_overlay(grille_image)
/obj/structure/bonfire/process()
@@ -373,7 +373,7 @@
O.fire_act(null, 1000, 500)
/obj/structure/fireplace/update_icon()
overlays.Cut()
cut_overlays()
if(burning)
var/state
switch(get_fuel_amount())
@@ -385,7 +385,7 @@
state = "fireplace_intense" //don't need to throw a corpse inside to make it burn hotter.
var/image/I = image(icon, state)
I.appearance_flags = RESET_COLOR
overlays += I
add_overlay(I)
var/light_strength = max(get_fuel_amount() / 2, 2)
set_light(light_strength, light_strength, "#FF9933")
+4 -4
View File
@@ -43,10 +43,10 @@
return 1
/obj/structure/coatrack/update_icon()
overlays.Cut()
cut_overlays()
if (istype(coat, /obj/item/clothing/suit/storage/toggle/labcoat))
overlays += image(icon, icon_state = "coat_lab")
add_overlay("coat_lab")
if (istype(coat, /obj/item/clothing/suit/storage/toggle/labcoat/cmo))
overlays += image(icon, icon_state = "coat_cmo")
add_overlay("coat_cmo")
if (istype(coat, /obj/item/clothing/suit/storage/det_trench))
overlays += image(icon, icon_state = "coat_det")
add_overlay("coat_det")
@@ -7,6 +7,7 @@
density = 1
w_class = ITEMSIZE_HUGE
layer = UNDER_JUNK_LAYER
blocks_emissive = EMISSIVE_BLOCK_GENERIC
var/opened = 0
var/sealed = 0
@@ -14,9 +14,9 @@
update_icon()
/obj/structure/closet/secure_closet/guncabinet/update_icon()
overlays.Cut()
cut_overlays()
if(opened)
overlays += icon(icon,"door_open")
add_overlay("door_open")
else
var/lazors = 0
var/shottas = 0
@@ -35,17 +35,17 @@
shottas--
gun.icon_state = "projectile"
gun.pixel_x = i*4
overlays += gun
add_overlay(gun)
overlays += icon(src.icon, "door")
add_overlay("door")
if(sealed)
overlays += icon(src.icon,"sealed")
add_overlay("sealed")
if(broken)
overlays += icon(src.icon,"broken")
add_overlay("broken")
else if (locked)
overlays += icon(src.icon,"locked")
add_overlay("locked")
else
overlays += icon(src.icon,"open")
add_overlay("open")
@@ -6,6 +6,7 @@
density = 1
anchored = 1
health = 0 //destroying the statue kills the mob within
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock
var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils.
var/intialBrute = 0
@@ -43,7 +44,7 @@
qdel(src)
return
START_PROCESSING(SSobj, src)
START_PROCESSING(SSobj, src)
..()
/obj/structure/closet/statue/process()
@@ -44,13 +44,13 @@
/obj/structure/vehiclecage/update_icon()
..()
overlays.Cut()
cut_overlays()
underlays.Cut()
var/image/framepaint = new(icon = 'icons/obj/storage.dmi', icon_state = "[initial(icon_state)]_a", layer = MOB_LAYER + 1.1)
framepaint.plane = MOB_PLANE
framepaint.color = paint_color
overlays += framepaint
add_overlay(framepaint)
for(var/obj/vehicle/V in src.contents)
var/image/showcase = new(V)
@@ -6,9 +6,9 @@
var/obj/item/assembly/shock_kit/part = null
var/last_time = 1.0
/obj/structure/bed/chair/e_chair/New()
..()
overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)
/obj/structure/bed/chair/e_chair/Initialize()
. = ..()
add_overlay(image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir))
return
/obj/structure/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -39,8 +39,8 @@
/obj/structure/bed/chair/e_chair/rotate_clockwise()
..()
overlays.Cut()
overlays += image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir) //there's probably a better way of handling this, but eh. -Pete
cut_overlays()
add_overlay(image('icons/obj/objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)) //there's probably a better way of handling this, but eh. -Pete
return
/obj/structure/bed/chair/e_chair/proc/shock()
+1
View File
@@ -29,6 +29,7 @@
name = "weightlifting machine"
desc = "A machine used to lift weights."
icon_state = "weightlifter"
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
var/weight = 1
var/list/qualifiers = list("with ease", "without any trouble", "with great effort")
@@ -313,6 +313,7 @@
light_range = 2
light_power = 0.6
light_color = "#33CCFF"
light_on = TRUE
catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree)
/obj/structure/flora/pottedplant/orientaltree
@@ -372,6 +373,7 @@
light_range = 2
light_power = 0.6
light_color = "#FF6633"
light_on = TRUE
/obj/structure/flora/pottedplant/minitree
name = "potted tree"
@@ -439,6 +441,7 @@
light_range = 2
light_power = 0.6
light_color = "#FF6633"
light_on = TRUE
catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs)
/obj/structure/flora/sif/subterranean/Initialize()
@@ -0,0 +1,22 @@
/obj/structure/flora/tree/bigtree
icon = 'icons/obj/flora/moretrees_vr.dmi'
icon_state = "bigtree1"
base_state = "tree"
product = /obj/item/stack/material/log
product_amount = 20
health = 2000
max_health = 2000
pixel_x = -65
pixel_y = -8
layer = MOB_LAYER - 1
shake_animation_degrees = 2
/obj/structure/flora/tree/bigtree/choose_icon_state()
return "[base_state][rand(1, 4)]"
/obj/structure/flora/tree/bigtree/Initialize()
. = ..()
var/image/i = image('icons/obj/flora/moretrees_vr.dmi', "[icon_state]-b")
i.plane = ABOVE_MOB_PLANE
add_overlay(i)
+9 -5
View File
@@ -115,7 +115,7 @@
is_stump = TRUE
density = FALSE
icon_state = "[base_state]_stump"
overlays.Cut() // For the Sif tree and other future glowy trees.
cut_overlays() // For the Sif tree and other future glowy trees.
set_light(0)
/obj/structure/flora/tree/ex_act(var/severity)
@@ -265,6 +265,7 @@
icon = 'icons/obj/flora/deadtrees.dmi'
icon_state = "tree_sif"
base_state = "tree_sif"
blocks_emissive = FALSE
product = /obj/item/stack/material/log/sif
catalogue_data = list(/datum/category_item/catalogue/flora/sif_tree)
randomize_size = TRUE
@@ -289,7 +290,10 @@
update_icon()
/obj/structure/flora/tree/sif/update_icon()
set_light(5 - light_shift, 1, "#33ccff") // 5 variants, missing bulbs. 5th has no bulbs, so no glow.
var/image/glow = image(icon = icon, icon_state = "[base_state][light_shift]_glow")
glow.plane = PLANE_LIGHTING_ABOVE
overlays = list(glow)
cut_overlays()
var/bulbs = (5 - light_shift)
if(bulbs > 0)
set_light(bulbs, 1, "#33ccff") // 5 variants, missing bulbs. 5th has no bulbs, so no glow.
add_overlay(mutable_appearance(icon, "[base_state][bulbs]_glow"))
add_overlay(emissive_appearance(icon, "[base_state][bulbs]_glow"))
+7 -6
View File
@@ -46,12 +46,13 @@
return
plant = prepare_icon(emagged ? "emagged" : null)
overlays = list(plant)
cut_overlays()
add_overlay(plant)
set_light(2)
update_use_power(USE_POWER_ACTIVE)
/obj/machinery/holoplant/proc/deactivate()
overlays.Cut()
cut_overlays()
QDEL_NULL(plant)
set_light(0)
update_use_power(USE_POWER_OFF)
@@ -66,16 +67,16 @@
/obj/machinery/holoplant/proc/flicker()
interference = TRUE
spawn(0)
overlays.Cut()
cut_overlays()
set_light(0)
sleep(rand(2,4))
overlays = list(plant)
add_overlay(plant)
set_light(2)
sleep(rand(2,4))
overlays.Cut()
cut_overlays()
set_light(0)
sleep(rand(2,4))
overlays = list(plant)
add_overlay(plant)
set_light(2)
interference = FALSE
+8 -8
View File
@@ -288,22 +288,22 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
return TRUE
/obj/structure/janitorialcart/update_icon()
overlays.Cut()
cut_overlays()
if(mybucket)
overlays += "cart_bucket"
add_overlay("cart_bucket")
if(mybucket.reagents.total_volume >= 1)
overlays += "water_cart"
add_overlay("water_cart")
if(mybag)
overlays += "cart_garbage"
add_overlay("cart_garbage")
if(mymop)
overlays += "cart_mop"
add_overlay("cart_mop")
if(myspray)
overlays += "cart_spray"
add_overlay("cart_spray")
if(myreplacer)
overlays += "cart_replacer"
add_overlay("cart_replacer")
if(signs)
overlays += "cart_sign[signs]"
add_overlay("cart_sign[signs]")
//This is called if the cart is caught in an explosion, or destroyed by weapon fire
/obj/structure/janitorialcart/proc/spill(var/chance = 100)
+1 -1
View File
@@ -82,7 +82,7 @@
//if(!(istype(src.loc, /turf/space)))
// qdel(src)
spawn(1)
overlays = list()
cut_overlays()
var/dir_sum = 0
@@ -29,32 +29,32 @@
update_icon()
/obj/structure/medical_stand/update_icon()
overlays.Cut()
cut_overlays()
if (tank)
if (breather)
overlays += "tube_active"
add_overlay("tube_active")
else
overlays += "tube"
add_overlay("tube")
if(istype(tank,/obj/item/weapon/tank/anesthetic))
overlays += "tank_anest"
add_overlay("tank_anest")
else if(istype(tank,/obj/item/weapon/tank/nitrogen))
overlays += "tank_nitro"
add_overlay("tank_nitro")
else if(istype(tank,/obj/item/weapon/tank/oxygen))
overlays += "tank_oxyg"
add_overlay("tank_oxyg")
else if(istype(tank,/obj/item/weapon/tank/phoron))
overlays += "tank_plasma"
add_overlay("tank_plasma")
//else if(istype(tank,/obj/item/weapon/tank/hydrogen))
// overlays += "tank_hydro"
// add_overlay("tank_hydro")
else
overlays += "tank_other"
add_overlay("tank_other")
if(beaker)
overlays += "beaker"
add_overlay("beaker")
if(attached)
overlays += "line_active"
add_overlay("line_active")
else
overlays += "line"
add_overlay("line")
var/datum/reagents/reagents = beaker.reagents
var/percent = round((reagents.total_volume / beaker.volume) * 100)
if(reagents.total_volume)
@@ -69,7 +69,7 @@
if(91 to INFINITY) filling.icon_state = "reagent100"
if (filling.icon)
filling.icon += reagents.get_color()
overlays += filling
add_overlay(filling)
/obj/structure/medical_stand/Destroy()
STOP_PROCESSING(SSobj,src)
+8 -8
View File
@@ -108,27 +108,27 @@
/obj/structure/railing/update_icon(var/UpdateNeighgors = 1)
NeighborsCheck(UpdateNeighgors)
//layer = (dir == SOUTH) ? FLY_LAYER : initial(layer) // wtf does this even do
overlays.Cut()
cut_overlays()
if (!check || !anchored)//|| !anchored
icon_state = "[icon_modifier]railing0"
else
icon_state = "[icon_modifier]railing1"
if (check & 32)
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]corneroverlay")
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]corneroverlay"))
if ((check & 16) || !(check & 32) || (check & 64))
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]frontoverlay_l")
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]frontoverlay_l"))
if (!(check & 2) || (check & 1) || (check & 4))
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]frontoverlay_r")
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]frontoverlay_r"))
if(check & 4)
switch (src.dir)
if (NORTH)
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_x = 32)
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_x = 32))
if (SOUTH)
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_x = -32)
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_x = -32))
if (EAST)
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_y = -32)
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_y = -32))
if (WEST)
overlays += image ('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_y = 32)
add_overlay(image('icons/obj/railing.dmi', src, "[icon_modifier]mcorneroverlay", pixel_y = 32))
/obj/structure/railing/verb/rotate_counterclockwise()
set name = "Rotate Railing Counter-Clockwise"
+35 -31
View File
@@ -12,7 +12,7 @@
var/isSwitchingStates = 0
var/hardness = 1
var/oreAmount = 7
/obj/structure/simple_door/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
TemperatureAct(exposed_temperature)
@@ -20,13 +20,22 @@
hardness -= material.combustion_effect(get_turf(src),temperature, 0.3)
CheckHardness()
/obj/structure/simple_door/New(var/newloc, var/material_name)
..()
/obj/structure/simple_door/Initialize(mapload, var/material_name)
. = ..()
set_material(material_name)
if(!material)
return INITIALIZE_HINT_QDEL
/obj/structure/simple_door/Destroy()
STOP_PROCESSING(SSobj, src)
update_nearby_tiles()
return ..()
/obj/structure/simple_door/proc/set_material(var/material_name)
if(!material_name)
material_name = DEFAULT_WALL_MATERIAL
material = get_material_by_name(material_name)
if(!material)
qdel(src)
return
hardness = max(1,round(material.integrity/10))
icon_state = material.door_icon_base
@@ -40,11 +49,6 @@
START_PROCESSING(SSobj, src)
update_nearby_tiles(need_rebuild=1)
/obj/structure/simple_door/Destroy()
STOP_PROCESSING(SSobj, src)
update_nearby_tiles()
return ..()
/obj/structure/simple_door/get_material()
return material
@@ -198,38 +202,38 @@
return
SSradiation.radiate(src, round(material.radioactivity/3))
/obj/structure/simple_door/iron/New(var/newloc,var/material_name)
..(newloc, "iron")
/obj/structure/simple_door/iron/Initialize(mapload,var/material_name)
..(mapload, material_name || "iron")
/obj/structure/simple_door/silver/New(var/newloc,var/material_name)
..(newloc, "silver")
/obj/structure/simple_door/silver/Initialize(mapload,var/material_name)
..(mapload, material_name || "silver")
/obj/structure/simple_door/gold/New(var/newloc,var/material_name)
..(newloc, "gold")
/obj/structure/simple_door/gold/Initialize(mapload,var/material_name)
..(mapload, material_name || "gold")
/obj/structure/simple_door/uranium/New(var/newloc,var/material_name)
..(newloc, "uranium")
/obj/structure/simple_door/uranium/Initialize(mapload,var/material_name)
..(mapload, material_name || "uranium")
/obj/structure/simple_door/sandstone/New(var/newloc,var/material_name)
..(newloc, "sandstone")
/obj/structure/simple_door/sandstone/Initialize(mapload,var/material_name)
..(mapload, material_name || "sandstone")
/obj/structure/simple_door/phoron/New(var/newloc,var/material_name)
..(newloc, "phoron")
/obj/structure/simple_door/phoron/Initialize(mapload,var/material_name)
..(mapload, material_name || "phoron")
/obj/structure/simple_door/diamond/New(var/newloc,var/material_name)
..(newloc, "diamond")
/obj/structure/simple_door/diamond/Initialize(mapload,var/material_name)
..(mapload, material_name || "diamond")
/obj/structure/simple_door/wood/New(var/newloc,var/material_name)
..(newloc, MAT_WOOD)
/obj/structure/simple_door/wood/Initialize(mapload,var/material_name)
..(mapload, material_name || MAT_WOOD)
/obj/structure/simple_door/sifwood/New(var/newloc,var/material_name)
..(newloc, MAT_SIFWOOD)
/obj/structure/simple_door/sifwood/Initialize(mapload,var/material_name)
..(mapload, material_name || MAT_SIFWOOD)
/obj/structure/simple_door/resin/New(var/newloc,var/material_name)
..(newloc, "resin")
/obj/structure/simple_door/resin/Initialize(mapload,var/material_name)
..(mapload, material_name || "resin")
/obj/structure/simple_door/cult/New(var/newloc,var/material_name)
..(newloc, "cult")
/obj/structure/simple_door/cult/Initialize(mapload,var/material_name)
..(mapload, material_name || "cult")
/obj/structure/simple_door/cult/TryToSwitchState(atom/user)
if(isliving(user))
@@ -28,13 +28,13 @@
update_icon()
/obj/structure/dispenser/update_icon()
overlays.Cut()
cut_overlays()
switch(oxygentanks)
if(1 to 3) overlays += "oxygen-[oxygentanks]"
if(4 to INFINITY) overlays += "oxygen-4"
if(1 to 3) add_overlay("oxygen-[oxygentanks]")
if(4 to INFINITY) add_overlay("oxygen-4")
switch(phorontanks)
if(1 to 4) overlays += "phoron-[phorontanks]"
if(5 to INFINITY) overlays += "phoron-5"
if(1 to 4) add_overlay("phoron-[phorontanks]")
if(5 to INFINITY) add_overlay("phoron-5")
/obj/structure/dispenser/attack_ai(mob/user)
// This looks silly, but robots also call attack_ai, and they're allowed physical state stuff.
+2 -2
View File
@@ -179,13 +179,13 @@
add_fingerprint(user)
/obj/machinery/shower/update_icon() //this is terribly unreadable, but basically it makes the shower mist up
overlays.Cut() //once it's been on for a while, in addition to handling the water overlay.
cut_overlay() //once it's been on for a while, in addition to handling the water overlay.
if(mymist)
qdel(mymist)
mymist = null
if(on)
overlays += image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir)
add_overlay(image('icons/obj/watercloset.dmi', src, "water", MOB_LAYER + 1, dir))
if(temperature_settings[watertemp] < T20C)
return //no mist for cold water
if(!ismist)
File diff suppressed because it is too large Load Diff