mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 11:38:12 +01:00
Merge branch 'master' into upstream-merge-8124
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
@@ -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"))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user