From fafe58190aec175aabacbd047324b5d0a933b58e Mon Sep 17 00:00:00 2001 From: "morikou@gmail.com" Date: Mon, 28 Feb 2011 23:18:46 +0000 Subject: [PATCH] Bomberman Update - Added a new trait to cameras: Hardened. Hardened is a modifier to the chance a camera will be affected by an EMP. By default, all cameras are affected 100% of the time by a full strength EMP. Will add some hardening to existing cameras once some pending map changes get finished. - New R&D Invention: LARGE GRENADES. You can now put basically any container (except blender jugs) into it and they affect a larger area. Want a 100 x 100 unit grenade? You now can! The basic casings are made in a protolathe (Materials 3, Combat 3). Unless you've developed them a lot, you'll occasionally get duds (which just spits out the beakers). Duds can be deconstructed in the DA to improve reliability. - On a related note, an unintended side effect of making large beakers hold more has been fixed. - Constructible frames, after the circuit board has been inserted, can be right-click/examined to reveal what parts it needs to be finished. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1146 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/Chemistry-Tools.dm | 131 +++++++++++------- code/defines/obj/machinery.dm | 2 +- code/game/machinery/camera.dm | 37 ++--- .../game/machinery/computer/buildandrepair.dm | 1 + code/game/machinery/constructable_frame.dm | 12 +- code/game/research/designs.dm | 10 +- code/game/research/rd-readme.dm | 2 +- icons/obj/chemical.dmi | Bin 28702 -> 29027 bytes icons/obj/grenade.dmi | Bin 1923 -> 476 bytes 9 files changed, 118 insertions(+), 77 deletions(-) diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm index 0cbcc2701f6..02f70efd72e 100644 --- a/code/WorkInProgress/Chemistry-Tools.dm +++ b/code/WorkInProgress/Chemistry-Tools.dm @@ -4,8 +4,8 @@ ///////////////////////////////Grenades /obj/item/weapon/chem_grenade - name = "metal casing" - icon_state = "chemg1" + name = "grenade" + icon_state = "chemg" icon = 'chemical.dmi' item_state = "flashbang" w_class = 2.0 @@ -13,10 +13,12 @@ var/stage = 0 var/state = 0 var/list/beakers = new/list() + var/list/allowed_containers = list("/obj/item/weapon/reagent_containers/glass/beaker", "/obj/item/weapon/reagent_containers/glass/dispenser") + var/list/disallowed_container = "/obj/item/weapon/reagent_containers/glass/large" + var/affected_area = 3 throw_speed = 4 throw_range = 20 flags = FPRINT | TABLEPASS | CONDUCT | ONBELT | USEDELAY - New() var/datum/reagents/R = new/datum/reagents(1000) reagents = R @@ -27,54 +29,65 @@ user << "\blue You add [W] to the metal casing." playsound(src.loc, 'Screwdriver2.ogg', 25, -3) del(W) //Okay so we're not really adding anything here. cheating. - icon_state = "chemg2" - name = "unsecured grenade" + icon_state = initial(icon_state)+"_ass" stage = 1 else if(istype(W,/obj/item/weapon/screwdriver) && stage == 1) if(beakers.len) user << "\blue You lock the assembly." playsound(src.loc, 'Screwdriver.ogg', 25, -3) - name = "grenade" - icon_state = "chemg3" + icon_state = initial(icon_state)+"_locked" stage = 2 else user << "\red You need to add at least one beaker before locking the assembly." - else if ((istype(W,/obj/item/weapon/reagent_containers/glass/beaker) || istype(W, /obj/item/weapon/reagent_containers/glass/dispenser)) && stage == 1) - if(beakers.len == 2) - user << "\red The grenade can not hold more containers." - return - else - if(W.reagents.total_volume) - user << "\blue You add \the [W] to the assembly." - user.drop_item() - W.loc = src - beakers += W + else + var/found = 0 + for(var/container_type in allowed_containers) + if(istype(W, text2path(container_type))) + found = 1 + break + if(disallowed_container) + if(istype(W, disallowed_container)) + return + if(found) + if(beakers.len == 2) + user << "\red The grenade can not hold more containers." + return else - user << "\red \the [W] is empty." + if(W.reagents.total_volume) + user << "\blue You add \the [W] to the assembly." + user.drop_item() + W.loc = src + beakers += W + else + user << "\red \the [W] is empty." afterattack(atom/target as mob|obj|turf|area, mob/user as mob) if (istype(target, /obj/item/weapon/storage)) return ..() - if (!src.state && stage == 2) + if (!src.state && stage == 2 && !crit_fail) user << "\red You prime the grenade! 3 seconds!" message_admins("[key_name_admin(user)] used a chemistry grenade ([src.name]).") src.state = 1 - src.icon_state = "chemg4" + src.icon_state = initial(icon_state)+"_armed" playsound(src.loc, 'armbomb.ogg', 75, 1, -3) spawn(30) explode() user.drop_item() var/t = (isturf(target) ? target : target.loc) walk_towards(src, t, 3) + else if(crit_fail) + user << "\red This grenade is a dud and unusable!" attack_self(mob/user as mob) - if (!src.state && stage == 2) + if (!src.state && stage == 2 && !crit_fail) user << "\red You prime the grenade! 3 seconds!" message_admins("[key_name_admin(user)] used a chemistry grenade ([src.name]).") src.state = 1 - src.icon_state = "chemg4" + src.icon_state = initial(icon_state)+"_armed" playsound(src.loc, 'armbomb.ogg', 75, 1, -3) spawn(30) explode() + else if(crit_fail) + user << "\red This grenade is a dud and unusable!" attack_hand() walk(src,0) @@ -84,46 +97,59 @@ proc explode() - var/has_reagents = 0 - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - if(G.reagents.total_volume) has_reagents = 1 + if(reliability) + var/has_reagents = 0 + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + if(G.reagents.total_volume) has_reagents = 1 - if(!has_reagents) - playsound(src.loc, 'Screwdriver2.ogg', 50, 1) - state = 0 - return + if(!has_reagents) + playsound(src.loc, 'Screwdriver2.ogg', 50, 1) + state = 0 + return - playsound(src.loc, 'bamf.ogg', 50, 1) + playsound(src.loc, 'bamf.ogg', 50, 1) - for(var/obj/item/weapon/reagent_containers/glass/G in beakers) - G.reagents.trans_to(src, G.reagents.total_volume) + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + G.reagents.trans_to(src, G.reagents.total_volume) - if(src.reagents.total_volume) //The possible reactions didnt use up all reagents. - var/datum/effects/system/steam_spread/steam = new /datum/effects/system/steam_spread() - steam.set_up(10, 0, get_turf(src)) - steam.attach(src) - steam.start() + if(src.reagents.total_volume) //The possible reactions didnt use up all reagents. + var/datum/effects/system/steam_spread/steam = new /datum/effects/system/steam_spread() + steam.set_up(10, 0, get_turf(src)) + steam.attach(src) + steam.start() - for(var/atom/A in view(3, src.loc)) - if( A == src ) continue - src.reagents.reaction(A, 1, 10) + for(var/atom/A in view(affected_area, src.loc)) + if( A == src ) continue + src.reagents.reaction(A, 1, 10) - invisibility = 100 //Why am i doing this? - spawn(50) //To make sure all reagents can work - del(src) //correctly before deleting the grenade. + invisibility = 100 //Why am i doing this? + spawn(50) //To make sure all reagents can work + del(src) //correctly before deleting the grenade. + else + icon_state = initial(icon_state) + "_locked" + crit_fail = 1 + for(var/obj/item/weapon/reagent_containers/glass/G in beakers) + G.loc = get_turf(src.loc) +/obj/item/weapon/chem_grenade/large + name = "Large Chem Grenade" + desc = "An oversized grenade that affects a larger area." + icon_state = "large_grenade" + allowed_containers = list("/obj/item/weapon/reagent_containers/glass") + disallowed_container = "/obj/item/weapon/reagent_containers/glass/blender_jug" + origin_tech = "combat=3;materials=3" + affected_area = 4 /obj/item/weapon/chem_grenade/metalfoam name = "Metal-Foam Grenade" desc = "Used for emergency sealing of air breaches." - icon_state = "chemg3" stage = 2 New() ..() - var/obj/item/weapon/reagent_containers/glass/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/B2 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent("aluminium", 30) B2.reagents.add_reagent("foaming_agent", 10) @@ -131,17 +157,17 @@ beakers += B1 beakers += B2 + icon_state = "chemg_locked" /obj/item/weapon/chem_grenade/incendiary name = "Incendiary Grenade" desc = "Used for clearing rooms of living things." - icon_state = "chemg3" stage = 2 New() ..() - var/obj/item/weapon/reagent_containers/glass/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/B2 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent("aluminium", 25) B2.reagents.add_reagent("plasma", 25) @@ -149,17 +175,17 @@ beakers += B1 beakers += B2 + icon_state = "chemg_locked" /obj/item/weapon/chem_grenade/cleaner name = "Cleaner Grenade" desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas." - icon_state = "chemg3" stage = 2 New() ..() - var/obj/item/weapon/reagent_containers/glass/B1 = new(src) - var/obj/item/weapon/reagent_containers/glass/B2 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) + var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent("fluorosurfactant", 30) B2.reagents.add_reagent("water", 10) @@ -167,6 +193,7 @@ beakers += B1 beakers += B2 + icon_state = "chemg_locked" /* /obj/item/weapon/chem_grenade/poo name = "poo grenade" diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm index f7c996dc5d3..84079d5e123 100644 --- a/code/defines/obj/machinery.dm +++ b/code/defines/obj/machinery.dm @@ -64,11 +64,11 @@ anchored = 1.0 var/invuln = null var/bugged = 0 + var/hardened = 0 use_power = 2 idle_power_usage = 5 active_power_usage = 10 - /obj/machinery/dispenser desc = "A simple yet bulky one-way storage device for gas tanks. Holds 10 plasma and 10 oxygen tanks." name = "Tank Storage Unit" diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm index 8a5d38cb49d..9fdd5c16c8f 100644 --- a/code/game/machinery/camera.dm +++ b/code/game/machinery/camera.dm @@ -232,24 +232,25 @@ return /obj/machinery/camera/emp_act(severity) - icon_state = "cameraemp" - network = null //Not the best way but it will do. I think. - spawn(900) - network = initial(network) - icon_state = initial(icon_state) - for(var/mob/living/silicon/ai/O in world) - if (O.current == src) - O.cancel_camera() - O << "Your connection to the camera has been lost." - for(var/mob/O in world) - if (istype(O.machine, /obj/machinery/computer/security)) - var/obj/machinery/computer/security/S = O.machine - if (S.current == src) - O.machine = null - S.current = null - O.reset_view(null) - O << "The screen bursts into static." - ..() + if(prob(100/(hardened + severity))) + icon_state = "cameraemp" + network = null //Not the best way but it will do. I think. + spawn(900) + network = initial(network) + icon_state = initial(icon_state) + for(var/mob/living/silicon/ai/O in world) + if (O.current == src) + O.cancel_camera() + O << "Your connection to the camera has been lost." + for(var/mob/O in world) + if (istype(O.machine, /obj/machinery/computer/security)) + var/obj/machinery/computer/security/S = O.machine + if (S.current == src) + O.machine = null + S.current = null + O.reset_view(null) + O << "The screen bursts into static." + ..() /obj/machinery/camera/ex_act(severity) if(src.invuln) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 7b1915c290d..a8fec98642d 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -25,6 +25,7 @@ list/req_components = null powernet = null list/records = null + frame_desc = null /obj/item/weapon/circuitboard/security name = "Circuit board (Security)" diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 5c8b2593dfc..76fdc97239e 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -11,10 +11,6 @@ list/req_components = null state = 1 -/* -To Do: Add deconstruct code to constructable machines. A marvelous idea, I know. -*/ - /obj/machinery/constructable_frame/machine_frame attackby(obj/item/P as obj, mob/user as mob) if(P.crit_fail) @@ -52,6 +48,7 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know. req_components = circuit.req_components.Copy() for(var/A in circuit.req_components) req_components[A] = circuit.req_components[A] + if(circuit.frame_desc) desc = circuit.frame_desc else user << "\red This frame does not accept circuit boards of this type!" if(istype(P, /obj/item/weapon/wirecutters)) @@ -74,6 +71,7 @@ To Do: Add deconstruct code to constructable machines. A marvelous idea, I know. user << "\blue You remove the circuit board and other components." for(var/obj/item/weapon/W in components) W.loc = src.loc + desc = initial(desc) req_components = null components = null icon_state = "box_1" @@ -128,6 +126,7 @@ to destroy them and players will be able to make replacements. build_path = "/obj/machinery/r_n_d/destructive_analyzer" board_type = "machine" origin_tech = "magnets=2;materials=2" + frame_desc = "Requires 2 Scanning Modules, 1 Manipulator, and 1 Micro-Laser." req_components = list( "/obj/item/weapon/stock_parts/scanning_module" = 1, "/obj/item/weapon/stock_parts/manipulator" = 1, @@ -138,6 +137,7 @@ to destroy them and players will be able to make replacements. build_path = "/obj/machinery/autolathe" board_type = "machine" origin_tech = "materials=3" + frame_desc = "Requires 3 Matter Bins, 1 Manipulator, and 1 Console Screen." req_components = list( "/obj/item/weapon/stock_parts/matter_bin" = 3, "/obj/item/weapon/stock_parts/manipulator" = 1, @@ -148,6 +148,7 @@ to destroy them and players will be able to make replacements. build_path = "/obj/machinery/r_n_d/protolathe" board_type = "machine" origin_tech = "materials=2" + frame_desc = "Requires 2 Matter Bins, 2 Manipulators, and 2 Beakers." req_components = list( "/obj/item/weapon/stock_parts/matter_bin" = 2, "/obj/item/weapon/stock_parts/manipulator" = 2, @@ -159,6 +160,7 @@ to destroy them and players will be able to make replacements. build_path = "/obj/machinery/r_n_d/circuit_imprinter" board_type = "machine" origin_tech = "materials=2;programming=2" + frame_desc = "Requires 1 Matter Bin, 1 Manipulator, and 2 Beakers." req_components = list( "/obj/item/weapon/stock_parts/matter_bin" = 1, "/obj/item/weapon/stock_parts/manipulator" = 1, @@ -169,6 +171,7 @@ to destroy them and players will be able to make replacements. build_path = "/obj/machinery/power/port_gen/pacman" board_type = "machine" origin_tech = "powerstorage=3;plasmatech=3" + frame_desc = "Requires 1 Matter Bin, 1 Micro-Laser, 2 Pieces of Cable, and 1 Capacitor." req_components = list( "/obj/item/weapon/stock_parts/matter_bin" = 1, "/obj/item/weapon/stock_parts/micro_laser" = 1, @@ -188,6 +191,7 @@ obj/item/weapon/circuitboard/rdserver build_path = "/obj/machinery/r_n_d/server" board_type = "machine" origin_tech = "programming=3" + frame_desc = "Requires 2 pieces of cable, and 1 Scanning Module." req_components = list( "/obj/item/weapon/cable_coil" = 2, "/obj/item/weapon/stock_parts/scanning_module" = 1) \ No newline at end of file diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm index 879e273d085..67cb6dace0c 100644 --- a/code/game/research/designs.dm +++ b/code/game/research/designs.dm @@ -775,7 +775,15 @@ datum reliability_base = 76 build_path = "/obj/item/weapon/gun/energy/general/nuclear" - + large_grenade + name = "Large Grenade" + desc = "A grenade that affects a larger area and use larger containers." + id = "large_Grenade" + req_tech = list("combat" = 3, "materials" = 3) + build_type = PROTOLATHE + materials = list("$metal" = 3000) + reliability_base = 79 + build_path = "/obj/item/weapon/chem_grenade/large" ///////////////////////////////////////// //////////////////Test/////////////////// diff --git a/code/game/research/rd-readme.dm b/code/game/research/rd-readme.dm index 1038939472c..f8ee6744d90 100644 --- a/code/game/research/rd-readme.dm +++ b/code/game/research/rd-readme.dm @@ -189,7 +189,7 @@ When thinking about new stuff, check here to see if there are any slots unfilled //SYNDICATE 1 | Sleepypen 2 | TYRANT Module, Emag -3 | Cloaking Device, Powre Sink +3 | Cloaking Device, Power Sink 4 | 5 | 6 | diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 371f4992f38974c4f7827e4c64b69470606b80bb..2a0a85780779840fb3149dd549bd4e9ebb02022f 100644 GIT binary patch delta 9989 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