From ace205b3239ee59fdecf5428e0c70f4ea1661a81 Mon Sep 17 00:00:00 2001 From: Segrain Date: Fri, 18 Oct 2013 08:40:45 +0300 Subject: [PATCH] Code cleanup. --- .../objects/items/stacks/sheets/mineral.dm | 2 +- .../structures/crates_lockers/crates.dm | 726 +++++++++--------- 2 files changed, 355 insertions(+), 373 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 120a6ffa70..a47b091da9 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -126,7 +126,7 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \ perunit = 2000 var/global/list/datum/stack_recipe/plastic_recipes = list ( \ - new/datum/stack_recipe("plastic crate", /obj/structure/closet/pcrate, 10, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("plastic ashtray", /obj/item/ashtray/plastic, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("plastic fork", /obj/item/weapon/kitchen/utensil/pfork, 1, on_floor = 1), \ new/datum/stack_recipe("plastic spoon", /obj/item/weapon/kitchen/utensil/pspoon, 1, on_floor = 1), \ diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 61b1750a82..ccace6a8f0 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -5,392 +5,62 @@ desc = "A rectangular steel crate." icon = 'icons/obj/storage.dmi' icon_state = "crate" - density = 1 icon_opened = "crateopen" icon_closed = "crate" - req_access = null - opened = 0 - flags = FPRINT // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? var/rigged = 0 -/obj/structure/closet/pcrate - name = "plastic crate" - desc = "A rectangular plastic crate." - icon = 'icons/obj/storage.dmi' - icon_state = "plasticcrate" - density = 1 - icon_opened = "plasticcrateopen" - icon_closed = "plasticcrate" - req_access = null - opened = 0 - flags = FPRINT -// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? - var/rigged = 0 +/obj/structure/closet/crate/can_open() + return 1 -/obj/structure/closet/crate/internals - desc = "A internals crate." - name = "Internals crate" - icon = 'icons/obj/storage.dmi' - icon_state = "o2crate" - density = 1 - icon_opened = "o2crateopen" - icon_closed = "o2crate" - -/obj/structure/closet/crate/trashcart - desc = "A heavy, metal trashcart with wheels." - name = "Trash Cart" - icon = 'icons/obj/storage.dmi' - icon_state = "trashcart" - density = 1 - 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 = 'icons/obj/storage.dmi' - icon_state = "crate" - density = 1 - 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 = 'icons/obj/storage.dmi' - icon_state = "crate" - density = 1 - icon_opened = "crateopen" - icon_closed = "crate" -*/ - -/obj/structure/closet/crate/medical - desc = "A medical crate." - name = "Medical crate" - icon = 'icons/obj/storage.dmi' - icon_state = "medicalcrate" - density = 1 - icon_opened = "medicalcrateopen" - icon_closed = "medicalcrate" - -/obj/structure/closet/crate/rcd - desc = "A crate for the storage of the RCD." - name = "RCD crate" - icon = 'icons/obj/storage.dmi' - icon_state = "crate" - density = 1 - icon_opened = "crateopen" - icon_closed = "crate" - -/obj/structure/closet/crate/freezer - desc = "A freezer." - name = "Freezer" - icon = 'icons/obj/storage.dmi' - icon_state = "freezer" - density = 1 - icon_opened = "freezeropen" - icon_closed = "freezer" - var/target_temp = T0C - 40 - var/cooling_power = 40 - - return_air() - var/datum/gas_mixture/gas = (..()) - if(!gas) return null - var/datum/gas_mixture/newgas = new/datum/gas_mixture() - newgas.oxygen = gas.oxygen - newgas.carbon_dioxide = gas.carbon_dioxide - newgas.nitrogen = gas.nitrogen - newgas.toxins = gas.toxins - newgas.volume = gas.volume - newgas.temperature = gas.temperature - 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/bin - desc = "A large bin." - name = "Large bin" - icon = 'icons/obj/storage.dmi' - icon_state = "largebin" - density = 1 - icon_opened = "largebinopen" - icon_closed = "largebin" - -/obj/structure/closet/crate/radiation - desc = "A crate with a radiation sign on it." - name = "Radioactive gear crate" - icon = 'icons/obj/storage.dmi' - icon_state = "radiation" - density = 1 - icon_opened = "radiationopen" - icon_closed = "radiation" - -/obj/structure/closet/crate/secure/weapon - desc = "A secure weapons crate." - name = "Weapons crate" - icon = 'icons/obj/storage.dmi' - icon_state = "weaponcrate" - density = 1 - icon_opened = "weaponcrateopen" - icon_closed = "weaponcrate" - -/obj/structure/closet/crate/secure/plasma - desc = "A secure plasma crate." - name = "Plasma crate" - icon = 'icons/obj/storage.dmi' - icon_state = "plasmacrate" - density = 1 - icon_opened = "plasmacrateopen" - icon_closed = "plasmacrate" - -/obj/structure/closet/crate/secure/gear - desc = "A secure gear crate." - name = "Gear crate" - icon = 'icons/obj/storage.dmi' - icon_state = "secgearcrate" - density = 1 - icon_opened = "secgearcrateopen" - icon_closed = "secgearcrate" - -/obj/structure/closet/crate/secure/hydrosec - desc = "A crate with a lock on it, painted in the scheme of the station's botanists." - name = "secure hydroponics crate" - icon = 'icons/obj/storage.dmi' - icon_state = "hydrosecurecrate" - density = 1 - icon_opened = "hydrosecurecrateopen" - icon_closed = "hydrosecurecrate" - -/obj/structure/closet/crate/secure/bin - desc = "A secure bin." - name = "Secure bin" - icon_state = "largebins" - icon_opened = "largebinsopen" - icon_closed = "largebins" - redlight = "largebinr" - greenlight = "largebing" - sparks = "largebinsparks" - emag = "largebinemag" - -/obj/structure/closet/crate/secure/large - name = "large crate" - desc = "A hefty metal crate with an electronic locking system." - icon = 'icons/obj/storage.dmi' - icon_state = "largemetal" - icon_opened = "largemetalopen" - icon_closed = "largemetal" - redlight = "largemetalr" - greenlight = "largemetalg" - -/obj/structure/closet/crate/secure/large/close() - //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.loc = src - break - if(!found) - for(var/obj/machinery/M in src.loc) - if(!M.anchored) - M.loc = src - break - ..() - -//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/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/large - name = "large crate" - desc = "A hefty metal crate." - icon = 'icons/obj/storage.dmi' - icon_state = "largemetal" - icon_opened = "largemetalopen" - icon_closed = "largemetal" - -/obj/structure/closet/crate/large/close() - //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.loc = src - break - if(!found) - for(var/obj/machinery/M in src.loc) - if(!M.anchored) - M.loc = src - break - ..() - -/obj/structure/closet/crate/hydroponics - name = "Hydroponics crate" - desc = "All you need to destroy those pesky weeds and pests." - icon = 'icons/obj/storage.dmi' - icon_state = "hydrocrate" - icon_opened = "hydrocrateopen" - icon_closed = "hydrocrate" - density = 1 - -/obj/structure/closet/crate/hydroponics/prespawned - //This exists so the prespawned hydro crates spawn with their contents. -/* name = "Hydroponics crate" - desc = "All you need to destroy those pesky weeds and pests." - icon = 'icons/obj/storage.dmi' - icon_state = "hydrocrate" - icon_opened = "hydrocrateopen" - icon_closed = "hydrocrate" - density = 1*/ - New() - ..() - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/minihoe(src) -// new /obj/item/weapon/weedspray(src) -// new /obj/item/weapon/weedspray(src) -// new /obj/item/weapon/pestspray(src) -// new /obj/item/weapon/pestspray(src) -// new /obj/item/weapon/pestspray(src) - - -/obj/structure/closet/crate/secure/New() - ..() - if(locked) - overlays.Cut() - overlays += redlight - else - overlays.Cut() - overlays += greenlight - -/obj/structure/closet/crate/rcd/New() - ..() - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd(src) - -/obj/structure/closet/crate/radiation/New() - ..() - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) +/obj/structure/closet/crate/can_close() + return 1 /obj/structure/closet/crate/open() - playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) + 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() + return 2 + + playsound(src.loc, 'sound/machines/click.ogg', 15, 1, -3) for(var/obj/O in src) O.loc = get_turf(src) - icon_state = icon_opened src.opened = 1 + 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/stool/bed)) //This is only necessary because of rollerbeds and swivel chairs. var/obj/structure/stool/bed/B = O if(B.buckled_mob) continue - O.loc = src itemcount++ icon_state = icon_closed src.opened = 0 - -/obj/structure/closet/crate/attack_hand(mob/user as mob) - if(opened) - close() - else - if(rigged && locate(/obj/item/device/radio/electropack) in src) - if(isliving(user)) - var/mob/living/L = user - 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() - return - open() - return - -/obj/structure/closet/crate/secure/attack_hand(mob/user as mob) - if(locked && !broken) - if (allowed(user)) - user << "You unlock [src]." - src.locked = 0 - overlays.Cut() - overlays += greenlight - return - else - user << "[src] is locked." - return - else - ..() - -/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) - user << "You lock \the [src]." - src.locked = 1 - overlays.Cut() - overlays += redlight - return - else if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && locked &&!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 << "You unlock \the [src]." - return - - return ..() - -/obj/structure/closet/crate/attack_paw(mob/user as mob) - return attack_hand(user) + return 1 /obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob) if(opened) @@ -424,6 +94,107 @@ 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) + del(O) + del(src) + return + if(2.0) + for(var/obj/O in src.contents) + if(prob(50)) + del(O) + del(src) + return + if(3.0) + if (prob(50)) + del(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 << "Close the crate first." + return + if(src.broken) + user << "The crate appears to be broken." + return + if(src.allowed(user)) + src.locked = !src.locked + for(var/mob/O in viewers(user, 3)) + if((O.client && !( O.blinded ))) + O << "The crate has been [locked ? null : "un"]locked by [user]." + overlays.Cut() + overlays += locked ? redlight : greenlight + else + user << "Access Denied" + +/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)) + src.add_fingerprint(usr) + src.togglelock(usr) + else + usr << "This mob type can't use this verb." + +/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/weapon/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters))) + return ..() + if(locked && (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade))) + 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 << "You unlock \the [src]." + return + if(!opened) + src.togglelock(user) + return + return ..() + /obj/structure/closet/crate/secure/emp_act(severity) for(var/obj/O in src) O.emp_act(severity) @@ -447,23 +218,234 @@ src.req_access += pick(get_all_accesses()) ..() +/obj/structure/closet/crate/plastic + name = "plastic crate" + desc = "A rectangular plastic crate." + icon_state = "plasticcrate" + icon_opened = "plasticcrateopen" + icon_closed = "plasticcrate" -/obj/structure/closet/crate/ex_act(severity) - switch(severity) - if(1.0) - for(var/obj/O in src.contents) - del(O) - del(src) - return - if(2.0) - for(var/obj/O in src.contents) - if(prob(50)) - del(O) - del(src) - return - if(3.0) - if (prob(50)) - del(src) - return +/obj/structure/closet/crate/internals + desc = "A internals crate." + name = "Internals crate" + icon_state = "o2crate" + icon_opened = "o2crateopen" + icon_closed = "o2crate" + +/obj/structure/closet/crate/trashcart + desc = "A heavy, metal trashcart with wheels." + name = "Trash Cart" + 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 + desc = "A medical crate." + name = "Medical crate" + icon_state = "medicalcrate" + icon_opened = "medicalcrateopen" + icon_closed = "medicalcrate" + +/obj/structure/closet/crate/rcd + desc = "A crate for the storage of the RCD." + name = "RCD crate" + icon_state = "crate" + icon_opened = "crateopen" + icon_closed = "crate" + +/obj/structure/closet/crate/rcd/New() + ..() + new /obj/item/weapon/rcd_ammo(src) + new /obj/item/weapon/rcd_ammo(src) + new /obj/item/weapon/rcd_ammo(src) + new /obj/item/weapon/rcd(src) + +/obj/structure/closet/crate/freezer + desc = "A freezer." + name = "Freezer" + icon_state = "freezer" + icon_opened = "freezeropen" + icon_closed = "freezer" + var/target_temp = T0C - 40 + var/cooling_power = 40 + + return_air() + var/datum/gas_mixture/gas = (..()) + if(!gas) return null + var/datum/gas_mixture/newgas = new/datum/gas_mixture() + newgas.oxygen = gas.oxygen + newgas.carbon_dioxide = gas.carbon_dioxide + newgas.nitrogen = gas.nitrogen + newgas.toxins = gas.toxins + newgas.volume = gas.volume + newgas.temperature = gas.temperature + 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/bin + desc = "A large bin." + name = "Large bin" + icon_state = "largebin" + icon_opened = "largebinopen" + icon_closed = "largebin" + +/obj/structure/closet/crate/radiation + desc = "A crate with a radiation sign on it." + name = "Radioactive gear crate" + icon_state = "radiation" + icon_opened = "radiationopen" + icon_closed = "radiation" + +/obj/structure/closet/crate/radiation/New() + ..() + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + +/obj/structure/closet/crate/secure/weapon + desc = "A secure weapons crate." + name = "Weapons crate" + icon_state = "weaponcrate" + icon_opened = "weaponcrateopen" + icon_closed = "weaponcrate" + +/obj/structure/closet/crate/secure/plasma + desc = "A secure plasma crate." + name = "Plasma crate" + icon_state = "plasmacrate" + icon_opened = "plasmacrateopen" + icon_closed = "plasmacrate" + +/obj/structure/closet/crate/secure/gear + desc = "A secure gear crate." + name = "Gear crate" + icon_state = "secgearcrate" + icon_opened = "secgearcrateopen" + icon_closed = "secgearcrate" + +/obj/structure/closet/crate/secure/hydrosec + desc = "A crate with a lock on it, painted in the scheme of the station's botanists." + name = "secure hydroponics crate" + icon_state = "hydrosecurecrate" + icon_opened = "hydrosecurecrateopen" + icon_closed = "hydrosecurecrate" + +/obj/structure/closet/crate/secure/bin + desc = "A secure bin." + name = "Secure bin" + 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.dmi' + 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.loc = src + break + if(!found) + for(var/obj/machinery/M in src.loc) + if(!M.anchored) + M.loc = 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.dmi' + icon_state = "largemetal" + icon_opened = "largemetalopen" + icon_closed = "largemetal" + 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.loc = src + break + if(!found) + for(var/obj/machinery/M in src.loc) + if(!M.anchored) + M.loc = 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/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 + //This exists so the prespawned hydro crates spawn with their contents. + + New() + ..() + new /obj/item/weapon/reagent_containers/spray/plantbgone(src) + new /obj/item/weapon/reagent_containers/spray/plantbgone(src) + new /obj/item/weapon/minihoe(src) +// new /obj/item/weapon/weedspray(src) +// new /obj/item/weapon/weedspray(src) +// new /obj/item/weapon/pestspray(src) +// new /obj/item/weapon/pestspray(src) +// new /obj/item/weapon/pestspray(src) \ No newline at end of file