From fbb3d5c668e18d7bd81381debff8d2bf5a47ff56 Mon Sep 17 00:00:00 2001 From: IronK Date: Thu, 26 Oct 2023 23:37:40 -0700 Subject: [PATCH] ITS TIME --- .../orders/order_items/mining/order_pka.dm | 24 ++ .../guns/energy/kinetic_accelerator.dm | 5 +- .../projectiles/guns/energy/recharge.dm | 3 +- .../projectiles/guns/special/meat_hook.dm | 30 +- .../code/game/objects/items/miningweapons.dm | 308 ++++++++++++++++++ 5 files changed, 353 insertions(+), 17 deletions(-) diff --git a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm index 7ba37721e365..1bdc9699084d 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_pka.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_pka.dm @@ -5,6 +5,30 @@ item_path = /obj/item/gun/energy/recharge/kinetic_accelerator cost_per_order = 750 +/datum/orderable_item/accelerator/gun/repeater //monke edit + item_path = /obj/item/gun/energy/recharge/kinetic_accelerator/repeater + cost_per_order = 1250 + +/datum/orderable_item/accelerator/gun/shotgun //monke edit + item_path = /obj/item/gun/energy/recharge/kinetic_accelerator/shotgun + cost_per_order = 1250 + +/datum/orderable_item/accelerator/gun/pounder //monke edit + item_path = /obj/item/gun/energy/recharge/kinetic_accelerator/pounder + cost_per_order = 1250 + +/datum/orderable_item/accelerator/gun/glock //monke edit + item_path = /obj/item/gun/energy/recharge/kinetic_accelerator/glock + cost_per_order = 1250 + +/datum/orderable_item/accelerator/gun/railgun //monke edit + item_path = /obj/item/gun/energy/recharge/kinetic_accelerator/railgun + cost_per_order = 1250 + +/datum/orderable_item/accelerator/gun/hook //monke edit + item_path = /obj/item/gun/energy/recharge/kinetic_accelerator/hook + cost_per_order = 1250 + /datum/orderable_item/accelerator/range item_path = /obj/item/borg/upgrade/modkit/range cost_per_order = 1000 diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 702b86c5475e..ea5b575c2c66 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -15,6 +15,7 @@ var/max_mod_capacity = 100 var/list/modkits = list() gun_flags = NOT_A_REAL_GUN + var/disablemodification = FALSE //monkeedit - stops removal and addition of mods /obj/item/gun/energy/recharge/kinetic_accelerator/Initialize(mapload) . = ..() @@ -53,7 +54,7 @@ /obj/item/gun/energy/recharge/kinetic_accelerator/crowbar_act(mob/living/user, obj/item/I) . = TRUE - if(modkits.len) + if(modkits.len && !disablemodification) //monkeedit to_chat(user, span_notice("You pry all the modifications out.")) I.play_tool_sound(src, 100) for(var/a in modkits) @@ -109,7 +110,7 @@ return ..() /obj/item/gun/energy/recharge/kinetic_accelerator/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/borg/upgrade/modkit)) + if(istype(I, /obj/item/borg/upgrade/modkit) && !disablemodification) //monkeedit var/obj/item/borg/upgrade/modkit/MK = I MK.install(src, user) else diff --git a/code/modules/projectiles/guns/energy/recharge.dm b/code/modules/projectiles/guns/energy/recharge.dm index 3e84b8761af6..ce5f9907693a 100644 --- a/code/modules/projectiles/guns/energy/recharge.dm +++ b/code/modules/projectiles/guns/energy/recharge.dm @@ -17,6 +17,7 @@ var/recharge_timerid /// Do we recharge slower with more of our type? var/unique_frequency = FALSE + var/override_dualweild = FALSE //monkeedit /obj/item/gun/energy/recharge/Initialize(mapload) . = ..() @@ -61,7 +62,7 @@ if(!set_recharge_time) set_recharge_time = recharge_time var/carried = 0 - if(!unique_frequency) + if(!unique_frequency && !override_dualweild) //Monke edit for(var/obj/item/gun/energy/recharge/recharging_gun in loc.get_all_contents()) if(recharging_gun.type != type || recharging_gun.unique_frequency) continue diff --git a/code/modules/projectiles/guns/special/meat_hook.dm b/code/modules/projectiles/guns/special/meat_hook.dm index ac9e5361999e..25bde0c8ce15 100644 --- a/code/modules/projectiles/guns/special/meat_hook.dm +++ b/code/modules/projectiles/guns/special/meat_hook.dm @@ -43,6 +43,7 @@ hitsound = 'sound/effects/splat.ogg' var/chain var/knockdown_time = (0.5 SECONDS) + var/disablepull = FALSE //monke edit /obj/projectile/hook/fire(setAngle) if(firer) @@ -52,20 +53,21 @@ /obj/projectile/hook/on_hit(atom/target) . = ..() - if(ismovable(target)) - var/atom/movable/A = target - if(A.anchored) - return - A.visible_message(span_danger("[A] is snagged by [firer]'s hook!")) - //Should really be a movement loop, but I don't want to support moving 5 tiles a tick - //It just looks bad - new /datum/forced_movement(A, get_turf(firer), 5, TRUE) - if (isliving(target)) - var/mob/living/fresh_meat = target - fresh_meat.Knockdown(knockdown_time) - return - //TODO: keep the chain beamed to A - //TODO: needs a callback to delete the chain + if(!disablepull) //monke edit + if(ismovable(target)) + var/atom/movable/A = target + if(A.anchored) + return + A.visible_message(span_danger("[A] is snagged by [firer]'s hook!")) + //Should really be a movement loop, but I don't want to support moving 5 tiles a tick + //It just looks bad + new /datum/forced_movement(A, get_turf(firer), 5, TRUE) + if (isliving(target)) + var/mob/living/fresh_meat = target + fresh_meat.Knockdown(knockdown_time) + return + //TODO: keep the chain beamed to A + //TODO: needs a callback to delete the chain /obj/projectile/hook/Destroy() qdel(chain) diff --git a/monkestation/code/game/objects/items/miningweapons.dm b/monkestation/code/game/objects/items/miningweapons.dm index 40dc6511156e..c5e6219eddaf 100644 --- a/monkestation/code/game/objects/items/miningweapons.dm +++ b/monkestation/code/game/objects/items/miningweapons.dm @@ -1,3 +1,4 @@ +//Proto-Kinetic Crushers /obj/item/kinetic_crusher/machete icon = 'monkestation/icons/obj/items_and_weapons.dmi' icon_state = "PKMachete" @@ -187,3 +188,310 @@ speed = 5 SECONDS, \ effectiveness = 100, \ ) + +//Proto-Kinetic Accelerators + +/obj/item/gun/energy/recharge/kinetic_accelerator/railgun + name = "proto-kinetic railgun" + desc = "Before the nice streamlined and modern day Proto-Kinetic Accelerator was created, multiple designs were drafted by the Mining Research and Development \ + team. Many were failures, including this one, which came out too bulky and too ineffective. Well recently the MR&D Team got drunk and said 'fuck it we ball' and \ + went back to the bulky design, overclocked it, and made it functional, turning it into what is essentially a literal man portable particle accelerator.\ + The design results in a massive hard to control blast of kinetic energy, with the power to punch right through creatures and cause massive damage. The \ + only problem with the design is that it is so bulky you need to carry it with two hands, and the technology has no optimization for a pressured enviorment, \ + resulting in a near zero force value in pressurized areas." + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + w_class = WEIGHT_CLASS_HUGE + recharge_time = 3 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/railgun) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_HEAVY + can_bayonet = FALSE + max_mod_capacity = 0 //fuck off + recoil = 3 //railgun go brrrrr + gun_flags = NOT_A_REAL_GUN + disablemodification = TRUE + +/obj/item/gun/energy/recharge/kinetic_accelerator/repeater + name = "proto-kinetic repeater" + desc = "During the pizza party celebrating the release of the new crusher designs, the Mining Research and Development team members were only allowed one slice.\ + One member exclaimed 'I wish we could have more than one slice' and another replied 'I wish we could shoot the accelerator more than once' and thus, the repeater\ + on the spot. The repeater trades a bit of power for the ability to fire three shots before becoming empty, while retaining the ability to fully recharge in one\ + go. The extra technology packed inside to make this possible unfortunately reduces mod space meaning you cnat carry as many mods compared to a regular accelerator." + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 2 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/repeater) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_LIGHT + can_bayonet = TRUE + knife_x_offset = 20 + knife_y_offset = 12 + max_mod_capacity = 60 + +/obj/item/gun/energy/recharge/kinetic_accelerator/shotgun + name = "proto-kinetic shotgun" + desc = "During the crusher design pizza party, one member of the Mining Research and Development team brought out a real riot shotgun, and killed three\ + other research members with one blast. The MR&D Director immedietly thought of a genuis idea, creating the proto-kinetic shotgun moments later, which he\ + immedietly used to execute the research member who brought the real shotgun. The proto-kinetic shotgun trades off some mod capacity and cooldown in favor\ + of firing three shots at once with reduce range and power. The total damage of all three shots is higher than a regular PKA but the individual shots are weaker." + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 2 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/shotgun) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_LIGHT + can_bayonet = TRUE + knife_x_offset = 20 + knife_y_offset = 12 + max_mod_capacity = 60 + +/obj/item/gun/energy/recharge/kinetic_accelerator/glock + name = "proto-kinetic pistol" + desc = "During the pizza party for the Mining Research and Development team, one special snowflake researcher wanted a mini murphy instead of a regular\ + pizza slice, so reluctantly the Director bought him his mini murphy, which the dumbass immedietly dropped ontop of a PKA. Suddenly the idea to create\ + a 'build your own PKA' design was created. The proto-kinetic pistol is arguably worse than the base PKA, sporting lower damage and range. But this lack\ + of base efficiency allows room for nearly double the mods, making it truely 'your own PKA'." + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 1.45 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/glock) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_LIGHT + can_bayonet = FALSE + max_mod_capacity = 200 + +/obj/item/gun/energy/recharge/kinetic_accelerator/pounder + name = "proto-kinetic pounder" + desc = "Quite frankly, we have no idea how the Mining Research and Development team came up with this one, all we know is that alot of \ + beer was involved. This proto-kinetic design will slam the ground, creating a shockwave around the user, with the same power as the base PKA.\ + The only downside is the lowered mod capacity, the lack of range it offers, and the higher cooldown, but its pretty good for clearing rocks." + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 2 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/pounder) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_LIGHT + can_bayonet = FALSE + max_mod_capacity = 60 + +/obj/item/gun/energy/recharge/kinetic_accelerator/grappling + name = "Miner Zip Hook" + desc = "During the pizza party for the Mining Research and Development team, the Mining Research Director went outside, and played with his favorite ball.\ + Unfortunetly he accidently tossed it to the other side of a massive lavalake. Out of pure spite he decided that instead of getting an RCD like any sane individual\ + he would create a brand new PKA type using the meathook he kept in his office. Thus the grappleing hook was (finally) created. The Proto-Kinetic grapple hook\ + allows quick traversal over pits, chasms, and lava, by firing a high speed grapple hook and yanking the user towards it. Dont worry about the inertia, the nerds\ + in RND took care of that problem (after six test subjects)." + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 5 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/hook) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_LIGHT + can_bayonet = FALSE + max_mod_capacity = 0 + disablemodification = TRUE + +//Accelerator Casing +/obj/item/ammo_casing/energy/kinetic/railgun + projectile_type = /obj/projectile/kinetic/railgun + select_name = "kinetic" + e_cost = 500 + fire_sound = 'sound/weapons/beam_sniper.ogg' + +/obj/item/ammo_casing/energy/kinetic/repeater + projectile_type = /obj/projectile/kinetic/repeater + select_name = "kinetic" + e_cost = 150 //about three shots + fire_sound = 'sound/weapons/kenetic_accel.ogg' + +/obj/item/ammo_casing/energy/kinetic/shotgun + projectile_type = /obj/projectile/kinetic/shotgun + select_name = "kinetic" + e_cost = 500 + pellets = 3 + variance = 80 + fire_sound = 'sound/weapons/kenetic_accel.ogg' + +/obj/item/ammo_casing/energy/kinetic/glock + projectile_type = /obj/projectile/kinetic/glock + select_name = "kinetic" + e_cost = 500 + fire_sound = 'sound/weapons/kenetic_accel.ogg' + +/obj/item/ammo_casing/energy/kinetic/pounder + projectile_type = /obj/projectile/kinetic/pounder + select_name = "kinetic" + e_cost = 500 + pellets = 8 + variance = 360 + fire_sound = 'sound/weapons/gun/general/cannon.ogg' + +/obj/item/ammo_casing/energy/kinetic/hook + name = "grappling hook" + desc = "A mining grapple hook." + e_cost = 500 + projectile_type = /obj/projectile/hook/mining + caliber = ENERGY + firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy + harmful = FALSE //finally, some good fucking food for pacafists + + +//Accelerator Projectiles +/obj/projectile/kinetic/railgun + name = "hyper kinetic force" + icon_state = null + damage = 100 + damage_type = BRUTE + armor_flag = BOMB + range = 7 + log_override = TRUE + pressure_decrease = 0.10 //Pressured enviorments are a no go for the railgun + speed = 0.1 //NYOOM + projectile_piercing = PASSMOB + +/obj/projectile/kinetic/repeater + name = "rapid kinetic force" + icon_state = null + damage = 20 + damage_type = BRUTE + armor_flag = BOMB + range = 4 + log_override = TRUE + +/obj/projectile/kinetic/shotgun + name = "split kinetic force" + icon_state = null + damage = 20 + damage_type = BRUTE + armor_flag = BOMB + range = 3 + log_override = TRUE + +/obj/projectile/kinetic/glock + name = "light kinetic force" + icon_state = null + damage = 15 + damage_type = BRUTE + armor_flag = BOMB + range = 3 + log_override = TRUE + +/obj/projectile/kinetic/pounder + name = "concussive kinetic force" + icon_state = null + damage = 40 + damage_type = BRUTE + armor_flag = BOMB + range = 1 + log_override = TRUE + +/obj/projectile/hook/mining + name = "grapple hook" + icon_state = "hook" + icon = 'icons/obj/lavaland/artefacts.dmi' + pass_flags = PASSTABLE + damage = 0 + stamina = 0 + armour_penetration = 0 + damage_type = BRUTE + hitsound = 'sound/effects/splat.ogg' + knockdown_time = (0 SECONDS) + disablepull = TRUE + range = 10 + speed = 0.1 + +//Procs for mining grapplehook + +/obj/projectile/hook/mining/on_hit(atom/target) + . = ..() + var/atom/A = target + A.visible_message(span_danger("[firer] zips towards [A] as the hook latches on!")) + ADD_TRAIT(firer, TRAIT_MOVE_FLYING, null) + new /datum/forced_movement(firer, A, 10, TRUE) + sleep(0.5 SECONDS) + REMOVE_TRAIT(firer, TRAIT_MOVE_FLYING, null) + +//ADMIN ONLY MEMES +/obj/item/gun/energy/recharge/kinetic_accelerator/meme + name = "adminium reaper" + desc = "Mining RnD broke the fabric of space time, please return to your nearest centralcommand officer. WARNING FROM THE MINING RND DIRECTOR : DO NOT RAPIDLY PULL TRIGGER : FABRIC OF SPACE TIME LIABLE TO BREAK " + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 0.1 + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/meme) + item_flags = NONE + obj_flags = UNIQUE_RENAME + weapon_weight = WEAPON_LIGHT + can_bayonet = TRUE + knife_x_offset = 20 + knife_y_offset = 12 + max_mod_capacity = 420 + +/obj/item/ammo_casing/energy/kinetic/meme + projectile_type = /obj/projectile/kinetic/meme + select_name = "kinetic" + e_cost = 1 + pellets = 69 + variance = 90 + fire_sound = 'sound/effects/adminhelp.ogg' + variance = 3 + +/obj/projectile/kinetic/meme + name = "proto kinetic meme force" + icon_state = null + damage = 420 + damage_type = BRUTE + range = 300 + log_override = TRUE + pressure_decrease = 1 + dismemberment = 10 + catastropic_dismemberment = TRUE + hitsound = 'sound/effects/adminhelp.ogg' + +/obj/item/gun/energy/recharge/kinetic_accelerator/meme/nonlethal + name = "adminium stunner" + desc = "Mining RnD broke the fabric of space time AGAIN, please return to your nearest centralcommand officer. WARNING FROM THE MINING RND DIRECTOR : DO NOT RAPIDLY PULL TRIGGER : FABRIC OF SPACE TIME LIABLE TO BREAK \ + Im being bullied by the admins" + icon_state = "kineticgun" + base_icon_state = "kineticgun" + inhand_icon_state = "kineticgun" + recharge_time = 0.1 + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/meme/nonlethal) + can_bayonet = FALSE + max_mod_capacity = 0 + +/obj/item/ammo_casing/energy/kinetic/meme/nonlethal + projectile_type = /obj/projectile/kinetic/meme/nonlethal + select_name = "kinetic" + fire_sound = 'sound/effects/adminhelp.ogg' + +/obj/projectile/kinetic/meme/nonlethal + name = "surprisingly soft proto kinetic meme force" + damage = 0 + dismemberment = 0 + catastropic_dismemberment = FALSE + stun = 69 + knockdown = 69 + paralyze = 69 + immobilize = 69 + unconscious = 69 + eyeblur = 69 + drowsy = 69 SECONDS + jitter = 69 SECONDS + stamina = 69 SECONDS + stutter = 69 SECONDS + slur = 69 SECONDS