From 1af09fbfba6e212b50e93f036eed2f2215bda8ea Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 10 May 2014 01:32:33 +0930 Subject: [PATCH] Cherrypicking vox spike throwers, made crossbows and pneumatic cannons constructable. Conflicts: baystation12.dme code/game/objects/items/stacks/sheets/sheet_types.dm code/modules/projectiles/guns/projectile/bow.dm icons/obj/gun.dmi --- baystation12.dme | 1 + .../items/stacks/sheets/sheet_types.dm | 3 + code/modules/admin/verbs/vox_raiders.dm | 7 +- code/modules/projectiles/guns/alien.dm | 115 ++++++++++++++++++ .../projectiles/guns/projectile/bow.dm | 86 ++++++++++++- .../projectiles/guns/projectile/pneumatic.dm | 82 +++++++++++++ icons/obj/gun.dmi | Bin 51746 -> 52421 bytes 7 files changed, 287 insertions(+), 7 deletions(-) create mode 100644 code/modules/projectiles/guns/alien.dm diff --git a/baystation12.dme b/baystation12.dme index 0c8a2e0f302..26cddade91d 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1232,6 +1232,7 @@ #include "code\modules\projectiles\ammunition\boxes.dm" #include "code\modules\projectiles\ammunition\bullets.dm" #include "code\modules\projectiles\ammunition\magazines.dm" +#include "code\modules\projectiles\guns\alien.dm" #include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\magic.dm" #include "code\modules\projectiles\guns\projectile.dm" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 4996fe60552..510af1d62c3 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -33,6 +33,8 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ null, \ new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1), \ null, \ + new/datum/stack_recipe("cannon frame", /obj/item/weapon/cannonframe, 10, time = 15, one_per_turf = 0, on_floor = 0), \ + null, \ new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \ new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \ null, \ @@ -130,6 +132,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ new/datum/stack_recipe("wooden chair", /obj/structure/stool/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("apiary", /obj/item/apiary, 10, time = 25, one_per_turf = 0, on_floor = 0), \ diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index 34229535cc5..453b10d74ec 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -18,14 +18,9 @@ var/global/vox_tick = 1 equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store) - var/obj/item/weapon/crossbow/W = new(src) - W.cell = new /obj/item/weapon/cell/crap(W) - W.cell.charge = 500 + var/obj/item/weapon/spikethrower/W = new(src) equip_to_slot_or_del(W, slot_r_hand) - var/obj/item/stack/rods/A = new(src) - A.amount = 20 - equip_to_slot_or_del(A, slot_l_hand) if(2) // Vox engineer! equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/pressure(src), slot_wear_suit) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm new file mode 100644 index 00000000000..0f5c8400b06 --- /dev/null +++ b/code/modules/projectiles/guns/alien.dm @@ -0,0 +1,115 @@ +//Vox pinning weapon. + +//Ammo. +/obj/item/weapon/spike + name = "alloy spike" + desc = "It's about a foot of weird silver metal with a wicked point." + sharp = 1 + throwforce = 5 + w_class = 2 + icon = 'icons/obj/weapons.dmi' + icon_state = "metal-rod" + item_state = "bolt" + +//Launcher. + +/obj/item/weapon/spikethrower + + name = "Vox spike thrower" + desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive." + + var/last_regen = 0 + var/spike_gen_time = 100 + var/max_spikes = 3 + var/spikes = 3 + var/obj/item/weapon/spike/spike + var/fire_force = 30 + + //Going to make an effort to get this compatible with the threat targetting system. + var/tmp/list/mob/living/target + var/tmp/mob/living/last_moved_mob + + icon = 'icons/obj/gun.dmi' + icon_state = "spikethrower3" + item_state = "spikethrower" + +/obj/item/weapon/spikethrower/New() + ..() + processing_objects.Add(src) + last_regen = world.time + +/obj/item/weapon/spikethrower/Del() + processing_objects.Remove(src) + ..() + +/obj/item/weapon/spikethrower/process() + + if(spikes < max_spikes && world.time > last_regen + spike_gen_time) + spikes++ + last_regen = world.time + update_icon() + +/obj/item/weapon/spikethrower/examine() + ..() + usr << "It has [spikes] [spikes == 1 ? "spike" : "spikes"] remaining." + +/obj/item/weapon/spikethrower/update_icon() + icon_state = "spikethrower[spikes]" + +/obj/item/weapon/spikethrower/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) + if(flag) return + if(user && user.client && user.client.gun_mode && !(A in target)) + //TODO: Make this compatible with targetting (prolly have to actually make it a gun subtype, ugh.) + //PreFire(A,user,params) + else + Fire(A,user,params) + +/obj/item/weapon/spikethrower/attack(mob/living/M as mob, mob/living/user as mob, def_zone) + + if (M == user && user.zone_sel.selecting == "mouth") + M.visible_message("\red [user] attempts without success to fit [src] into their mouth.") + return + + if (spikes > 0) + if(user.a_intent == "hurt") + user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") + Fire(M,user) + return + else if(target && M in target) + Fire(M,user) + return + else + return ..() + +/obj/item/weapon/spikethrower/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) + + add_fingerprint(user) + + var/turf/curloc = get_turf(user) + var/turf/targloc = get_turf(target) + if (!istype(targloc) || !istype(curloc)) + return + + if(istype(user,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + if(H.species && H.species.name != "Vox") + user << "\red The weapon does not respond to you!" + return + else + user << "\red The weapon does not respond to you!" + return + + if(spikes <= 0) + user << "\red The weapon has nothing to fire!" + return + + if(!spike) + spike = new(src) //Create a spike. + spike.add_fingerprint(user) + spikes-- + + user.visible_message("\red [user] fires [src]!", "\red You fire [src]!") + spike.loc = get_turf(src) + spike.throw_at(target,10,fire_force) + spike = null + update_icon() \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/bow.dm index 49e7f4388d7..0140f1fbada 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/bow.dm @@ -241,4 +241,88 @@ usr << "[src] clunks as you draw the string to its maximum tension!" else user.visible_message("[usr] draws back the string of [src]!","You continue drawing back the string of [src]!") - spawn(25) increase_tension(user) \ No newline at end of file + spawn(25) increase_tension(user) + +// Crossbow construction. + +/obj/item/weapon/crossbowframe + name = "crossbow frame" + desc = "A half-finished crossbow." + icon_state = "crossbowframe0" + item_state = "crossbow-solid" + + var/buildstate = 0 + +/obj/item/weapon/crossbowframe/update_icon() + icon_state = "crossbowframe[buildstate]" + +/obj/item/weapon/crossbowframe/examine() + ..() + switch(buildstate) + if(1) usr << "It has a loose rod frame in place." + if(2) usr << "It has a steel backbone welded in place." + if(3) usr << "It has a steel backbone and a cell mount installed." + if(4) usr << "It has a steel backbone, plastic lath and a cell mount installed." + if(5) usr << "It has a steel cable loosely strung across the lath." + +/obj/item/weapon/crossbowframe/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/stack/rods)) + if(buildstate == 0) + var/obj/item/stack/rods/R = W + if(R.amount >= 3) + R.use(3) + user << "\blue You assemble a backbone of rods around the wooden stock." + buildstate++ + update_icon() + else + user << "\blue You need at least three rods to complete this task." + return + else if(istype(W,/obj/item/weapon/weldingtool)) + if(buildstate == 1) + var/obj/item/weapon/weldingtool/T = W + if(T.remove_fuel(0,user)) + if(!src || !T.isOn()) return + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "\blue You weld the rods into place." + buildstate++ + update_icon() + return + else if(istype(W,/obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = W + if(buildstate == 2) + if(C.amount >= 5) + C.use(5) + user << "\blue You wire a crude cell mount into the top of the crossbow." + buildstate++ + update_icon() + else + user << "\blue You need at least five segments of cable coil to complete this task." + return + else if(buildstate == 4) + if(C.amount >= 5) + C.use(5) + user << "\blue You string a steel cable across the crossbow's lath." + buildstate++ + update_icon() + else + user << "\blue You need at least five segments of cable coil to complete this task." + return + else if(istype(W,/obj/item/stack/sheet/mineral/plastic)) + if(buildstate == 3) + var/obj/item/stack/sheet/mineral/plastic/P = W + if(P.amount >= 3) + P.use(3) + user << "\blue You assemble and install a heavy plastic lath onto the crossbow." + buildstate++ + update_icon() + else + user << "\blue You need at least three plastic sheets to complete this task." + return + else if(istype(W,/obj/item/weapon/screwdriver)) + if(buildstate == 5) + user << "\blue You secure the crossbow's various parts." + new /obj/item/weapon/crossbow(get_turf(src)) + del(src) + return + else + ..() diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 2b71becedff..007a45b0a41 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -20,6 +20,9 @@ var/force_divisor = 400 // Force equates to speed. Speed/5 equates to a damage multiplier for whoever you hit. // For reference, a fully pressurized oxy tank at 50% gas release firing a health // analyzer with a force_divisor of 10 hit with a damage multiplier of 3000+. +/obj/item/weapon/storage/pneumatic/New() + ..() + tank_container.tag = "gas_tank_holder" /obj/item/weapon/storage/pneumatic/verb/set_pressure() //set amount of tank pressure. @@ -138,3 +141,82 @@ spawn(cooldown_time) cooldown = 0 user << "[src]'s gauge informs you it's ready to be fired again." + +//Constructable pneumatic cannon. + +/obj/item/weapon/cannonframe + name = "pneumatic cannon frame" + desc = "A half-finished pneumatic cannon." + icon_state = "pneumatic0" + item_state = "pneumatic" + + var/buildstate = 0 + +/obj/item/weapon/cannonframe/update_icon() + icon_state = "pneumatic[buildstate]" + +/obj/item/weapon/cannonframe/examine() + ..() + switch(buildstate) + if(1) usr << "It has a pipe segment installed." + if(2) usr << "It has a pipe segment welded in place." + if(3) usr << "It has an outer chassis installed." + if(4) usr << "It has an outer chassis welded in place." + if(5) usr << "It has a transfer valve installed." + +/obj/item/weapon/cannonframe/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/pipe)) + if(buildstate == 0) + user.drop_item() + del(W) + user << "\blue You secure the piping inside the frame." + buildstate++ + update_icon() + return + else if(istype(W,/obj/item/stack/sheet/metal)) + if(buildstate == 2) + var/obj/item/stack/sheet/metal/M = W + if(M.amount >= 5) + M.use(5) + user << "\blue You assemble a chassis around the cannon frame." + buildstate++ + update_icon() + else + user << "\blue You need at least five metal sheets to complete this task." + return + else if(istype(W,/obj/item/device/transfer_valve)) + if(buildstate == 4) + user.drop_item() + del(W) + user << "\blue You install the transfer valve and connect it to the piping." + buildstate++ + update_icon() + return + else if(istype(W,/obj/item/weapon/weldingtool)) + if(buildstate == 1) + var/obj/item/weapon/weldingtool/T = W + if(T.remove_fuel(0,user)) + if(!src || !T.isOn()) return + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "\blue You weld the pipe into place." + buildstate++ + update_icon() + if(buildstate == 3) + var/obj/item/weapon/weldingtool/T = W + if(T.remove_fuel(0,user)) + if(!src || !T.isOn()) return + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "\blue You weld the metal chassis together." + buildstate++ + update_icon() + if(buildstate == 5) + var/obj/item/weapon/weldingtool/T = W + if(T.remove_fuel(0,user)) + if(!src || !T.isOn()) return + playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) + user << "\blue You weld the valve into place." + new /obj/item/weapon/storage/pneumatic(get_turf(src)) + del(src) + return + else + ..() diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index d3b9ca97fbc03500f25530b8d935d83bdf54e1df..f7ad8381fa77e3d8400fc720408246a12b391771 100644 GIT binary patch delta 13240 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

AlQL+zY!`E#i*ewVhlWUZ{_L!@Opm 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