From 835623de131c14b535fe927c19003e19ba861237 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Tue, 29 May 2012 00:40:25 +0100 Subject: [PATCH] TG: Added new transfer valve assembly sprites from Baystation 12, and made the transfer valve update_icon() a lot simpler and more robust. Revision: r3666 Author: petethegoat --- code/game/objects/transfer_valve.dm | 341 +++++++++++++--------------- icons/obj/assemblies.dmi | Bin 16698 -> 16867 bytes 2 files changed, 163 insertions(+), 178 deletions(-) diff --git a/code/game/objects/transfer_valve.dm b/code/game/objects/transfer_valve.dm index 395e7cd4ecf..3404d4b6498 100644 --- a/code/game/objects/transfer_valve.dm +++ b/code/game/objects/transfer_valve.dm @@ -10,195 +10,180 @@ 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) + overlays += "[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" + +/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 aee76f5e3e698cbedd80839a0bc91d91507c10ef..80b959a1157ed8a4a46dd837dd669aa47e34e73c 100644 GIT binary patch literal 16867 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