From 0d5418df4e3d790224c3f2de8f04e95e93bd0716 Mon Sep 17 00:00:00 2001 From: "petethegoat@gmail.com" Date: Fri, 25 May 2012 16:45:26 +0000 Subject: [PATCH] Added new transfer valve assembly sprites from Baystation 12, and made the transfer valve update_icon() a lot simpler and more robust. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3666 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/objects/transfer_valve.dm | 344 ++++++++++++++-------------- icons/obj/assemblies.dmi | Bin 15134 -> 16435 bytes 2 files changed, 166 insertions(+), 178 deletions(-) diff --git a/code/game/objects/transfer_valve.dm b/code/game/objects/transfer_valve.dm index 395e7cd4ecf..9882bd34fd4 100644 --- a/code/game/objects/transfer_valve.dm +++ b/code/game/objects/transfer_valve.dm @@ -10,195 +10,183 @@ var/valve_open = 0 var/toggle = 1 - proc - process_activation(var/obj/item/device/D) +/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D) - IsAssemblyHolder() - return 1 +/obj/item/device/transfer_valve/IsAssemblyHolder() + return 1 - attackby(obj/item/item, mob/user) - if(istype(item, /obj/item/weapon/tank)) - if(tank_one && tank_two) - user << "There are already two tanks attached, remove one first." - return +/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user) + if(istype(item, /obj/item/weapon/tank)) + if(tank_one && tank_two) + user << "There are already two tanks attached, remove one first." + return - if(!tank_one) - tank_one = item - user.drop_item() - item.loc = src - user << "You attach the tank to the transfer valve." - else if(!tank_two) - tank_two = item - user.drop_item() - item.loc = src - user << "You attach the tank to the transfer valve." + if(!tank_one) + tank_one = item + user.drop_item() + item.loc = src + user << "You attach the tank to the transfer valve." + else if(!tank_two) + tank_two = item + user.drop_item() + item.loc = src + user << "You attach the tank to the transfer valve." - update_icon() + update_icon() //TODO: Have this take an assemblyholder - else if(isassembly(item)) - var/obj/item/device/assembly/A = item - if(A.secured) - user << "The device is secured." - return - if(attached_device) - user << "There is already an device attached to the valve, remove it first." - return - user.remove_from_mob(item) - attached_device = A - A.loc = src - user << "You attach the [item] to the valve controls and secure it." - A.holder = src - A.toggle_secure() - - bombers += "[key_name(user)] attached a [item] to a transfer valve." - message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.") - log_game("[key_name_admin(user)] attached a [item] to a transfer valve.") - attacher = key_name(user) - return - - - HasProximity(atom/movable/AM as mob|obj) - if(!attached_device) return - attached_device.HasProximity(AM) - return - - - attack_self(mob/user as mob) - user.machine = src - var/dat = {" Valve properties: -
Attachment one: [tank_one] [tank_one ? "Remove" : ""] -
Attachment two: [tank_two] [tank_two ? "Remove" : ""] -
Valve attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""] -
Valve status: [ valve_open ? "Closed Open" : "Closed Open"]"} - - user << browse(dat, "window=trans_valve;size=600x300") - onclose(user, "trans_valve") - return - - Topic(href, href_list) - ..() - if ( usr.stat || usr.restrained() ) + else if(isassembly(item)) + var/obj/item/device/assembly/A = item + if(A.secured) + user << "The device is secured." return - if (src.loc == usr) - if(tank_one && href_list["tankone"]) - split_gases() - valve_open = 0 - tank_one.loc = get_turf(src) - tank_one = null - update_icon() - else if(tank_two && href_list["tanktwo"]) - split_gases() - valve_open = 0 - tank_two.loc = get_turf(src) - tank_two = null - update_icon() - else if(href_list["open"]) - toggle_valve() - else if(attached_device) - if(href_list["rem_device"]) - attached_device.loc = get_turf(src) - attached_device:holder = null - attached_device = null - update_icon() - if(href_list["device"]) - attached_device.attack_self(usr) - - src.attack_self(usr) - src.add_fingerprint(usr) - return - return - - process_activation(var/obj/item/device/D) - if(toggle) - toggle = 0 - toggle_valve() - spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever - toggle = 1 - - process() - - update_icon() - src.overlays = new/list() - src.underlays = new/list() - if(!tank_one && !tank_two && !attached_device) - icon_state = "valve_1" - return - icon_state = "valve" - var/tank_one_icon = "" - var/tank_two_icon = "" - if(tank_one) - tank_one_icon = tank_one.icon_state - if(tank_two) - tank_two_icon = tank_two.icon_state - if(tank_one) - var/icon/I = new(src.icon, icon_state = "[tank_one_icon]") - //var/obj/effect/overlay/tank_one_overlay = new - //tank_one_overlay.icon = src.icon - //tank_one_overlay.icon_state = tank_one_icon - src.underlays += I - if(tank_two) - var/icon/J = new(src.icon, icon_state = "[tank_two_icon]") - //I.Flip(EAST) this breaks the perspective! - J.Shift(WEST, 13) - //var/obj/underlay/tank_two_overlay = new - //tank_two_overlay.icon = I - src.underlays += J if(attached_device) - var/icon/K = new(src.icon, icon_state = "device") - //var/obj/effect/overlay/device_overlay = new - //device_overlay.icon = src.icon - //device_overlay.icon_state = device_icon - src.overlays += K - proc - merge_gases() - tank_two.air_contents.volume += tank_one.air_contents.volume - var/datum/gas_mixture/temp - temp = tank_one.air_contents.remove_ratio(1) - tank_two.air_contents.merge(temp) - - split_gases() - if (!valve_open || !tank_one || !tank_two) - return - var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume - var/datum/gas_mixture/temp - temp = tank_two.air_contents.remove_ratio(ratio1) - tank_one.air_contents.merge(temp) - tank_two.air_contents.volume -= tank_one.air_contents.volume - - /* - Exadv1: I know this isn't how it's going to work, but this was just to check - it explodes properly when it gets a signal (and it does). - */ - - toggle_valve() - if(valve_open==0 && (tank_one && tank_two)) - valve_open = 1 - var/turf/bombturf = get_turf(src) - var/bombarea = bombturf.loc.name - var/log_str = "Bomb valve opened in [bombarea] with device attacher: [attacher]. Last touched by: [src.fingerprintslast]" - bombers += log_str - message_admins(log_str) - log_game(log_str) - merge_gases() - spawn(20) // In case one tank bursts - for (var/i=0,i<5,i++) - src.update_icon() - sleep(10) - src.update_icon() - - else if(valve_open==1 && (tank_one && tank_two)) - split_gases() - valve_open = 0 - src.update_icon() - - // this doesn't do anything but the timer etc. expects it to be here - // eventually maybe have it update icon to show state (timer, prox etc.) like old bombs - c_state() + user << "There is already an device attached to the valve, remove it first." return + user.remove_from_mob(item) + attached_device = A + A.loc = src + user << "You attach the [item] to the valve controls and secure it." + A.holder = src + A.toggle_secure() + + bombers += "[key_name(user)] attached a [item] to a transfer valve." + message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.") + log_game("[key_name_admin(user)] attached a [item] to a transfer valve.") + attacher = key_name(user) + return + + +/obj/item/device/transfer_valve/HasProximity(atom/movable/AM as mob|obj) + if(!attached_device) return + attached_device.HasProximity(AM) + return + + +/obj/item/device/transfer_valve/attack_self(mob/user as mob) + user.machine = src + var/dat = {" Valve properties: +
Attachment one: [tank_one] [tank_one ? "Remove" : ""] +
Attachment two: [tank_two] [tank_two ? "Remove" : ""] +
Valve attachment: [attached_device ? "[attached_device]" : "None"] [attached_device ? "Remove" : ""] +
Valve status: [ valve_open ? "Closed Open" : "Closed Open"]"} + + user << browse(dat, "window=trans_valve;size=600x300") + onclose(user, "trans_valve") + return + +/obj/item/device/transfer_valve/Topic(href, href_list) + ..() + if ( usr.stat || usr.restrained() ) + return + if (src.loc == usr) + if(tank_one && href_list["tankone"]) + split_gases() + valve_open = 0 + tank_one.loc = get_turf(src) + tank_one = null + update_icon() + else if(tank_two && href_list["tanktwo"]) + split_gases() + valve_open = 0 + tank_two.loc = get_turf(src) + tank_two = null + update_icon() + else if(href_list["open"]) + toggle_valve() + else if(attached_device) + if(href_list["rem_device"]) + attached_device.loc = get_turf(src) + attached_device:holder = null + attached_device = null + update_icon() + if(href_list["device"]) + attached_device.attack_self(usr) + + src.attack_self(usr) + src.add_fingerprint(usr) + return + return + +/obj/item/device/transfer_valve/process_activation(var/obj/item/device/D) + if(toggle) + toggle = 0 + toggle_valve() + spawn(50) // To stop a signal being spammed from a proxy sensor constantly going off or whatever + toggle = 1 + +/obj/item/device/transfer_valve/process() + return + +/obj/item/device/transfer_valve/update_icon() + overlays = null + underlays = null + + if(!tank_one && !tank_two && !attached_device) + icon_state = "valve_1" + return + icon_state = "valve" + + if(tank_one) + var/icon/I = new(src.icon, icon_state = "[tank_one.icon_state]") + src.underlays += I + if(tank_two) + var/icon/J = new(src.icon, icon_state = "[tank_two.icon_state]") + J.Shift(WEST, 13) + src.underlays += J + + if(attached_device) + var/icon/K = new(src.icon, icon_state = "device") + src.overlays += K + +/obj/item/device/transfer_valve/proc/merge_gases() + tank_two.air_contents.volume += tank_one.air_contents.volume + var/datum/gas_mixture/temp + temp = tank_one.air_contents.remove_ratio(1) + tank_two.air_contents.merge(temp) + +/obj/item/device/transfer_valve/proc/split_gases() + if (!valve_open || !tank_one || !tank_two) + return + var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume + var/datum/gas_mixture/temp + temp = tank_two.air_contents.remove_ratio(ratio1) + tank_one.air_contents.merge(temp) + tank_two.air_contents.volume -= tank_one.air_contents.volume + + /* + Exadv1: I know this isn't how it's going to work, but this was just to check + it explodes properly when it gets a signal (and it does). + */ + +/obj/item/device/transfer_valve/proc/toggle_valve() + if(valve_open==0 && (tank_one && tank_two)) + valve_open = 1 + var/turf/bombturf = get_turf(src) + var/bombarea = bombturf.loc.name + var/log_str = "Bomb valve opened in [bombarea] with device attacher: [attacher]. Last touched by: [src.fingerprintslast]" + bombers += log_str + message_admins(log_str) + log_game(log_str) + merge_gases() + spawn(20) // In case one tank bursts + for (var/i=0,i<5,i++) + src.update_icon() + sleep(10) + src.update_icon() + + else if(valve_open==1 && (tank_one && tank_two)) + split_gases() + valve_open = 0 + src.update_icon() + +// this doesn't do anything but the timer etc. expects it to be here +// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs +/obj/item/device/transfer_valve/proc/c_state() + return -/obj/structure/falsewall/ +/obj/structure/falsewall attack_hand(mob/user as mob) if(density) // Open wall diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index e08ad8249cfb398fd1ef72c1a0083a9d50810dd4..5b9eb036554a02183aba0013316d4cd7fe21e219 100644 GIT binary patch literal 16435 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 WI(O8U9QfTUNdB#gOu3YC!2bZN`U;Bx