mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Ports Polaris PRs 6424, 6426, 6428, 6430, 6431, 6432, 6433, and 6434 No vorestation edit markings because they are polariscode ports.
528 lines
14 KiB
Plaintext
528 lines
14 KiB
Plaintext
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
|
|
|
/obj/structure/closet/crate
|
|
name = "crate"
|
|
desc = "A rectangular steel crate."
|
|
icon = 'icons/obj/storage_vr.dmi' //VOREStation edit
|
|
icon_state = "crate"
|
|
icon_opened = "crateopen"
|
|
icon_closed = "crate"
|
|
climbable = 1
|
|
var/points_per_crate = 5
|
|
// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //???
|
|
var/rigged = 0
|
|
|
|
/obj/structure/closet/crate/can_open()
|
|
return 1
|
|
|
|
/obj/structure/closet/crate/can_close()
|
|
return 1
|
|
|
|
/obj/structure/closet/crate/open()
|
|
if(src.opened)
|
|
return 0
|
|
if(!src.can_open())
|
|
return 0
|
|
|
|
if(rigged && locate(/obj/item/device/radio/electropack) in src)
|
|
if(isliving(usr))
|
|
var/mob/living/L = usr
|
|
if(L.electrocute_act(17, src))
|
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
|
s.set_up(5, 1, src)
|
|
s.start()
|
|
if(usr.stunned)
|
|
return 2
|
|
|
|
playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
|
|
for(var/obj/O in src)
|
|
O.forceMove(get_turf(src))
|
|
icon_state = icon_opened
|
|
src.opened = 1
|
|
|
|
if(climbable)
|
|
structure_shaken()
|
|
return 1
|
|
|
|
/obj/structure/closet/crate/close()
|
|
if(!src.opened)
|
|
return 0
|
|
if(!src.can_close())
|
|
return 0
|
|
|
|
playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3)
|
|
var/itemcount = 0
|
|
for(var/obj/O in get_turf(src))
|
|
if(itemcount >= storage_capacity)
|
|
break
|
|
if(O.density || O.anchored || istype(O,/obj/structure/closet))
|
|
continue
|
|
if(istype(O, /obj/structure/bed)) //This is only necessary because of rollerbeds and swivel chairs.
|
|
var/obj/structure/bed/B = O
|
|
if(B.has_buckled_mobs())
|
|
continue
|
|
O.forceMove(src)
|
|
itemcount++
|
|
|
|
icon_state = icon_closed
|
|
src.opened = 0
|
|
return 1
|
|
|
|
/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(opened)
|
|
if(isrobot(user))
|
|
return
|
|
if(W.loc != user) // This should stop mounted modules ending up outside the module.
|
|
return
|
|
user.drop_item()
|
|
if(W)
|
|
W.forceMove(src.loc)
|
|
else if(istype(W, /obj/item/weapon/packageWrap))
|
|
return
|
|
else if(istype(W, /obj/item/stack/cable_coil))
|
|
var/obj/item/stack/cable_coil/C = W
|
|
if(rigged)
|
|
user << "<span class='notice'>[src] is already rigged!</span>"
|
|
return
|
|
if (C.use(1))
|
|
user << "<span class='notice'>You rig [src].</span>"
|
|
rigged = 1
|
|
return
|
|
else if(istype(W, /obj/item/device/radio/electropack))
|
|
if(rigged)
|
|
user << "<span class='notice'>You attach [W] to [src].</span>"
|
|
user.drop_item()
|
|
W.forceMove(src)
|
|
return
|
|
else if(W.is_wirecutter())
|
|
if(rigged)
|
|
user << "<span class='notice'>You cut away the wiring.</span>"
|
|
playsound(src.loc, W.usesound, 100, 1)
|
|
rigged = 0
|
|
return
|
|
else return attack_hand(user)
|
|
|
|
/obj/structure/closet/crate/ex_act(severity)
|
|
switch(severity)
|
|
if(1.0)
|
|
for(var/obj/O in src.contents)
|
|
qdel(O)
|
|
qdel(src)
|
|
return
|
|
if(2.0)
|
|
for(var/obj/O in src.contents)
|
|
if(prob(50))
|
|
qdel(O)
|
|
qdel(src)
|
|
return
|
|
if(3.0)
|
|
if (prob(50))
|
|
qdel(src)
|
|
return
|
|
else
|
|
return
|
|
|
|
/obj/structure/closet/crate/secure
|
|
desc = "A secure crate."
|
|
name = "Secure crate"
|
|
icon_state = "securecrate"
|
|
icon_opened = "securecrateopen"
|
|
icon_closed = "securecrate"
|
|
var/redlight = "securecrater"
|
|
var/greenlight = "securecrateg"
|
|
var/sparks = "securecratesparks"
|
|
var/emag = "securecrateemag"
|
|
var/broken = 0
|
|
var/locked = 1
|
|
|
|
/obj/structure/closet/crate/secure/New()
|
|
..()
|
|
if(locked)
|
|
overlays.Cut()
|
|
overlays += redlight
|
|
else
|
|
overlays.Cut()
|
|
overlays += greenlight
|
|
|
|
/obj/structure/closet/crate/secure/can_open()
|
|
return !locked
|
|
|
|
/obj/structure/closet/crate/secure/proc/togglelock(mob/user as mob)
|
|
if(src.opened)
|
|
user << "<span class='notice'>Close the crate first.</span>"
|
|
return
|
|
if(src.broken)
|
|
user << "<span class='warning'>The crate appears to be broken.</span>"
|
|
return
|
|
if(src.allowed(user))
|
|
set_locked(!locked, user)
|
|
else
|
|
user << "<span class='notice'>Access Denied</span>"
|
|
|
|
/obj/structure/closet/crate/secure/proc/set_locked(var/newlocked, mob/user = null)
|
|
if(locked == newlocked) return
|
|
|
|
locked = newlocked
|
|
if(user)
|
|
for(var/mob/O in viewers(user, 3))
|
|
O.show_message( "<span class='notice'>The crate has been [locked ? null : "un"]locked by [user].</span>", 1)
|
|
overlays.Cut()
|
|
overlays += locked ? redlight : greenlight
|
|
|
|
/obj/structure/closet/crate/secure/verb/verb_togglelock()
|
|
set src in oview(1) // One square distance
|
|
set category = "Object"
|
|
set name = "Toggle Lock"
|
|
|
|
if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain
|
|
return
|
|
|
|
if(ishuman(usr) || isrobot(usr))
|
|
src.add_fingerprint(usr)
|
|
src.togglelock(usr)
|
|
else
|
|
usr << "<span class='warning'>This mob type can't use this verb.</span>"
|
|
|
|
/obj/structure/closet/crate/secure/attack_hand(mob/user as mob)
|
|
src.add_fingerprint(user)
|
|
if(locked)
|
|
src.togglelock(user)
|
|
else
|
|
src.toggle(user)
|
|
|
|
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
if(is_type_in_list(W, list(/obj/item/weapon/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/tool/wirecutters)))
|
|
return ..()
|
|
if(istype(W, /obj/item/weapon/melee/energy/blade))
|
|
emag_act(INFINITY, user)
|
|
if(!opened)
|
|
src.togglelock(user)
|
|
return
|
|
return ..()
|
|
|
|
/obj/structure/closet/crate/secure/emag_act(var/remaining_charges, var/mob/user)
|
|
if(!broken)
|
|
overlays.Cut()
|
|
overlays += emag
|
|
overlays += sparks
|
|
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
|
|
playsound(src.loc, "sparks", 60, 1)
|
|
src.locked = 0
|
|
src.broken = 1
|
|
user << "<span class='notice'>You unlock \the [src].</span>"
|
|
return 1
|
|
|
|
/obj/structure/closet/crate/secure/emp_act(severity)
|
|
for(var/obj/O in src)
|
|
O.emp_act(severity)
|
|
if(!broken && !opened && prob(50/severity))
|
|
if(!locked)
|
|
src.locked = 1
|
|
overlays.Cut()
|
|
overlays += redlight
|
|
else
|
|
overlays.Cut()
|
|
overlays += emag
|
|
overlays += sparks
|
|
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
|
|
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
|
src.locked = 0
|
|
if(!opened && prob(20/severity))
|
|
if(!locked)
|
|
open()
|
|
else
|
|
src.req_access = list()
|
|
src.req_access += pick(get_all_station_access())
|
|
..()
|
|
|
|
/obj/structure/closet/crate/plastic
|
|
name = "plastic crate"
|
|
desc = "A rectangular plastic crate."
|
|
icon_state = "plasticcrate"
|
|
icon_opened = "plasticcrateopen"
|
|
icon_closed = "plasticcrate"
|
|
points_per_crate = 1 //5 crates per ordered crate, +5 for the crate it comes in.
|
|
|
|
/obj/structure/closet/crate/internals
|
|
name = "internals crate"
|
|
desc = "A internals crate."
|
|
icon_state = "o2crate"
|
|
icon_opened = "o2crateopen"
|
|
icon_closed = "o2crate"
|
|
|
|
/obj/structure/closet/crate/trashcart
|
|
name = "trash cart"
|
|
desc = "A heavy, metal trashcart with wheels."
|
|
icon_state = "trashcart"
|
|
icon_opened = "trashcartopen"
|
|
icon_closed = "trashcart"
|
|
|
|
/*these aren't needed anymore
|
|
/obj/structure/closet/crate/hat
|
|
desc = "A crate filled with Valuable Collector's Hats!."
|
|
name = "Hat Crate"
|
|
icon_state = "crate"
|
|
icon_opened = "crateopen"
|
|
icon_closed = "crate"
|
|
|
|
/obj/structure/closet/crate/contraband
|
|
name = "Poster crate"
|
|
desc = "A random assortment of posters manufactured by providers NOT listed under NanoTrasen's whitelist."
|
|
icon_state = "crate"
|
|
icon_opened = "crateopen"
|
|
icon_closed = "crate"
|
|
*/
|
|
|
|
/obj/structure/closet/crate/medical
|
|
name = "medical crate"
|
|
desc = "A medical crate."
|
|
icon_state = "medicalcrate"
|
|
icon_opened = "medicalcrateopen"
|
|
icon_closed = "medicalcrate"
|
|
|
|
/obj/structure/closet/crate/rcd
|
|
name = "\improper RCD crate"
|
|
desc = "A crate with rapid construction device."
|
|
icon_state = "engi_crate"
|
|
icon_opened = "engi_crateopen"
|
|
icon_closed = "engi_crate"
|
|
|
|
starts_with = list(
|
|
/obj/item/weapon/rcd_ammo = 3,
|
|
/obj/item/weapon/rcd)
|
|
|
|
/obj/structure/closet/crate/solar
|
|
name = "solar pack crate"
|
|
icon_state = "engi_crate" //VOREStation Edit
|
|
icon_opened = "engi_crateopen" //VOREStation Edit
|
|
icon_closed = "engi_crate" //VOREStation Edit
|
|
|
|
starts_with = list(
|
|
/obj/item/solar_assembly = 21,
|
|
/obj/item/weapon/circuitboard/solar_control,
|
|
/obj/item/weapon/tracker_electronics,
|
|
/obj/item/weapon/paper/solar)
|
|
|
|
/obj/structure/closet/crate/freezer
|
|
name = "freezer"
|
|
desc = "A freezer."
|
|
icon_state = "freezer"
|
|
icon_opened = "freezeropen"
|
|
icon_closed = "freezer"
|
|
var/target_temp = T0C - 40
|
|
var/cooling_power = 40
|
|
|
|
/obj/structure/closet/crate/freezer/return_air()
|
|
var/datum/gas_mixture/gas = (..())
|
|
if(!gas) return null
|
|
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
|
|
newgas.copy_from(gas)
|
|
if(newgas.temperature <= target_temp) return
|
|
|
|
if((newgas.temperature - cooling_power) > target_temp)
|
|
newgas.temperature -= cooling_power
|
|
else
|
|
newgas.temperature = target_temp
|
|
return newgas
|
|
|
|
/obj/structure/closet/crate/freezer/Entered(var/atom/movable/AM)
|
|
if(istype(AM, /obj/item/organ))
|
|
var/obj/item/organ/O = AM
|
|
O.preserved = 1
|
|
for(var/obj/item/organ/organ in O)
|
|
organ.preserved = 1
|
|
..()
|
|
|
|
/obj/structure/closet/crate/freezer/Exited(var/atom/movable/AM)
|
|
if(istype(AM, /obj/item/organ))
|
|
var/obj/item/organ/O = AM
|
|
O.preserved = 0
|
|
for(var/obj/item/organ/organ in O)
|
|
organ.preserved = 0
|
|
..()
|
|
|
|
/obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle
|
|
name = "emergency rations"
|
|
desc = "A crate of emergency rations."
|
|
|
|
starts_with = list(
|
|
/obj/random/mre = 6)
|
|
|
|
|
|
/obj/structure/closet/crate/bin
|
|
name = "large bin"
|
|
desc = "A large bin."
|
|
icon = 'icons/obj/storage.dmi' //VOREStation edit
|
|
icon_state = "largebin"
|
|
icon_opened = "largebinopen"
|
|
icon_closed = "largebin"
|
|
|
|
|
|
/obj/structure/closet/crate/radiation
|
|
name = "radioactive gear crate"
|
|
desc = "A crate with a radiation sign on it."
|
|
icon_state = "radiation"
|
|
icon_opened = "radiationopen"
|
|
icon_closed = "radiation"
|
|
|
|
starts_with = list(
|
|
/obj/item/clothing/suit/radiation = 4,
|
|
/obj/item/clothing/head/radiation = 4)
|
|
|
|
|
|
/obj/structure/closet/crate/secure/weapon
|
|
name = "weapons crate"
|
|
desc = "A secure weapons crate."
|
|
icon_state = "weaponcrate"
|
|
icon_opened = "weaponcrateopen"
|
|
icon_closed = "weaponcrate"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/phoron
|
|
name = "phoron crate"
|
|
desc = "A secure phoron crate."
|
|
icon_state = "phoroncrate"
|
|
icon_opened = "phoroncrateopen"
|
|
icon_closed = "phoroncrate"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/gear
|
|
name = "gear crate"
|
|
desc = "A secure gear crate."
|
|
icon_state = "secgearcrate"
|
|
icon_opened = "secgearcrateopen"
|
|
icon_closed = "secgearcrate"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/hydrosec
|
|
name = "secure hydroponics crate"
|
|
desc = "A crate with a lock on it, painted in the scheme of the station's botanists."
|
|
icon_state = "hydrosecurecrate"
|
|
icon_opened = "hydrosecurecrateopen"
|
|
icon_closed = "hydrosecurecrate"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/engineering
|
|
desc = "A crate with a lock on it, painted in the scheme of the station's engineers."
|
|
name = "secure engineering crate"
|
|
icon_state = "engi_secure_crate"
|
|
icon_opened = "engi_secure_crateopen"
|
|
icon_closed = "engi_secure_crate"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/science
|
|
name = "secure science crate"
|
|
desc = "A crate with a lock on it, painted in the scheme of the station's scientists."
|
|
icon_state = "scisecurecrate"
|
|
icon_opened = "scisecurecrateopen"
|
|
icon_closed = "scisecurecrate"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/bin
|
|
name = "secure bin"
|
|
desc = "A secure bin."
|
|
icon = 'icons/obj/storage.dmi' //VOREStation edit
|
|
icon_state = "largebins"
|
|
icon_opened = "largebinsopen"
|
|
icon_closed = "largebins"
|
|
redlight = "largebinr"
|
|
greenlight = "largebing"
|
|
sparks = "largebinsparks"
|
|
emag = "largebinemag"
|
|
|
|
|
|
/obj/structure/closet/crate/large
|
|
name = "large crate"
|
|
desc = "A hefty metal crate."
|
|
icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit
|
|
icon_state = "largemetal"
|
|
icon_opened = "largemetalopen"
|
|
icon_closed = "largemetal"
|
|
|
|
|
|
/obj/structure/closet/crate/large/close()
|
|
. = ..()
|
|
if (.)//we can hold up to one large item
|
|
var/found = 0
|
|
for(var/obj/structure/S in src.loc)
|
|
if(S == src)
|
|
continue
|
|
if(!S.anchored)
|
|
found = 1
|
|
S.forceMove(src)
|
|
break
|
|
if(!found)
|
|
for(var/obj/machinery/M in src.loc)
|
|
if(!M.anchored)
|
|
M.forceMove(src)
|
|
break
|
|
return
|
|
|
|
|
|
/obj/structure/closet/crate/secure/large
|
|
name = "large crate"
|
|
desc = "A hefty metal crate with an electronic locking system."
|
|
icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit
|
|
icon_state = "largemetalsecure" //VOREStation Edit
|
|
icon_opened = "largemetalsecureopen" //VOREStation Edit
|
|
icon_closed = "largemetalsecure" //VOREStation Edit
|
|
redlight = "largemetalr"
|
|
greenlight = "largemetalg"
|
|
|
|
|
|
/obj/structure/closet/crate/secure/large/close()
|
|
. = ..()
|
|
if (.)//we can hold up to one large item
|
|
var/found = 0
|
|
for(var/obj/structure/S in src.loc)
|
|
if(S == src)
|
|
continue
|
|
if(!S.anchored)
|
|
found = 1
|
|
S.forceMove(src)
|
|
break
|
|
if(!found)
|
|
for(var/obj/machinery/M in src.loc)
|
|
if(!M.anchored)
|
|
M.forceMove(src)
|
|
break
|
|
return
|
|
|
|
|
|
//fluff variant
|
|
/obj/structure/closet/crate/secure/large/reinforced
|
|
desc = "A hefty, reinforced metal crate with an electronic locking system."
|
|
icon_state = "largermetal"
|
|
icon_opened = "largermetalopen"
|
|
icon_closed = "largermetal"
|
|
|
|
/obj/structure/closet/crate/engineering
|
|
name = "engineering crate"
|
|
icon_state = "engi_crate"
|
|
icon_opened = "engi_crateopen"
|
|
icon_closed = "engi_crate"
|
|
|
|
/obj/structure/closet/crate/engineering/electrical
|
|
icon_state = "engi_e_crate"
|
|
icon_opened = "engi_crateopen"
|
|
icon_closed = "engi_e_crate"
|
|
|
|
/obj/structure/closet/crate/science
|
|
name = "science crate"
|
|
icon_state = "scicrate"
|
|
icon_opened = "scicrateopen"
|
|
icon_closed = "scicrate"
|
|
|
|
/obj/structure/closet/crate/hydroponics
|
|
name = "hydroponics crate"
|
|
desc = "All you need to destroy those pesky weeds and pests."
|
|
icon_state = "hydrocrate"
|
|
icon_opened = "hydrocrateopen"
|
|
icon_closed = "hydrocrate"
|
|
|
|
|
|
/obj/structure/closet/crate/hydroponics/prespawned
|
|
starts_with = list(
|
|
/obj/item/weapon/reagent_containers/spray/plantbgone = 2,
|
|
/obj/item/weapon/material/minihoe)
|