From 61f1c5ee190025cf9704ec9515fbcd2e89e8affa Mon Sep 17 00:00:00 2001 From: Fikou <23585223+Fikou@users.noreply.github.com> Date: Tue, 19 Apr 2022 13:55:37 +0200 Subject: [PATCH] [MDB IGNORE] makes ebows and kinetic accelerators share a parent (#66247) Moves recharging functionality from kinetic accelerator to /obj/item/gun/energy/recharge base type --- _maps/RandomZLevels/caves.dmm | 6 +- code/datums/components/crafting/recipes.dm | 8 +- code/game/objects/items/storage/holsters.dm | 2 +- .../game/objects/items/storage/uplink_kits.dm | 2 +- code/game/objects/structures/mystery_box.dm | 2 +- .../antagonists/traitor/datum_traitor.dm | 2 +- code/modules/clothing/outfits/standard.dm | 2 +- code/modules/clothing/suits/cloaks.dm | 4 +- code/modules/clothing/suits/wintercoats.dm | 2 +- code/modules/jobs/job_types/shaft_miner.dm | 4 +- .../modules/mining/equipment/explorer_gear.dm | 2 +- .../modules/mining/lavaland/megafauna_loot.dm | 2 +- code/modules/mining/machine_vending.dm | 4 +- code/modules/mining/mine_items.dm | 2 +- code/modules/mining/minebot.dm | 4 +- .../mob/living/silicon/robot/robot_model.dm | 2 +- .../hostile/megafauna/blood_drunk_miner.dm | 4 +- .../guns/energy/kinetic_accelerator.dm | 161 +++++------------- .../projectiles/guns/energy/recharge.dm | 129 ++++++++++++++ .../projectiles/guns/energy/special.dm | 36 ---- .../spells/spell_types/rightandwrong.dm | 4 +- code/modules/uplink/uplink_items/stealthy.dm | 2 +- tgstation.dme | 1 + 23 files changed, 198 insertions(+), 189 deletions(-) create mode 100644 code/modules/projectiles/guns/energy/recharge.dm diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index 65506463dd4..af080819eac 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -739,7 +739,7 @@ /area/awaymission/caves/northblock) "dA" = ( /obj/structure/closet/secure_closet/personal, -/obj/item/gun/energy/kinetic_accelerator, +/obj/item/gun/energy/recharge/kinetic_accelerator, /turf/open/floor/wood, /area/awaymission/caves/northblock) "dB" = ( @@ -989,8 +989,8 @@ /area/awaymission/caves/listeningpost) "eK" = ( /obj/structure/table, -/obj/item/gun/energy/kinetic_accelerator, -/obj/item/gun/energy/kinetic_accelerator, +/obj/item/gun/energy/recharge/kinetic_accelerator, +/obj/item/gun/energy/recharge/kinetic_accelerator, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron, /area/awaymission/caves/listeningpost) diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index a3ae2554dca..83a6e40a710 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -241,8 +241,8 @@ /datum/crafting_recipe/ebow name = "Energy Crossbow" tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) - result = /obj/item/gun/energy/kinetic_accelerator/crossbow/large - reqs = list(/obj/item/gun/energy/kinetic_accelerator = 1, + result = /obj/item/gun/energy/recharge/ebow/large + reqs = list(/obj/item/gun/energy/recharge/kinetic_accelerator = 1, /obj/item/stack/cable_coil = 5, /obj/item/weaponcrafting/gunkit/ebow = 1, /datum/reagent/uranium/radium = 15) @@ -250,10 +250,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/ebow/New() - ..() - blacklist += subtypesof(/obj/item/gun/energy/kinetic_accelerator) - /datum/crafting_recipe/xraylaser name = "X-ray Laser Gun" tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) diff --git a/code/game/objects/items/storage/holsters.dm b/code/game/objects/items/storage/holsters.dm index 1cc2039b6cf..ce8cda00113 100644 --- a/code/game/objects/items/storage/holsters.dm +++ b/code/game/objects/items/storage/holsters.dm @@ -149,7 +149,7 @@ /obj/item/ammo_box/a357, /obj/item/ammo_box/a762, /obj/item/ammo_box/magazine/toy/pistol, - /obj/item/gun/energy/kinetic_accelerator/crossbow, + /obj/item/gun/energy/recharge/ebow, /obj/item/gun/energy/e_gun/mini, /obj/item/gun/energy/disabler, /obj/item/gun/energy/dueling diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index dcb07f09a02..37db789e2cf 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -61,7 +61,7 @@ new /obj/item/chameleon(src) // 7 tc if(KIT_STEALTHY) - new /obj/item/gun/energy/kinetic_accelerator/crossbow(src) + new /obj/item/gun/energy/recharge/ebow(src) new /obj/item/pen/sleepy(src) new /obj/item/healthanalyzer/rad_laser(src) new /obj/item/chameleon(src) diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index 2d59a0e61e8..2ffcf1ce82b 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(mystery_box_guns, list( /obj/item/gun/energy/lasercannon, - /obj/item/gun/energy/kinetic_accelerator/crossbow/large, + /obj/item/gun/energy/recharge/ebow/large, /obj/item/gun/energy/e_gun, /obj/item/gun/energy/e_gun/advtaser, /obj/item/gun/energy/e_gun/nuclear, diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index ec724ee7182..1ce69e9d907 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -325,7 +325,7 @@ gloves = /obj/item/clothing/gloves/color/yellow mask = /obj/item/clothing/mask/gas l_hand = /obj/item/melee/energy/sword - r_hand = /obj/item/gun/energy/kinetic_accelerator/crossbow + r_hand = /obj/item/gun/energy/recharge/ebow /datum/outfit/traitor/post_equip(mob/living/carbon/human/H, visualsOnly) var/obj/item/melee/energy/sword/sword = locate() in H.held_items diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index cd7a1339f47..c6f8901e354 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -252,7 +252,7 @@ qdel(briefcase_item) for(var/i = 3 to 0 step -1) SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/stack/spacecash/c1000, null, TRUE, TRUE) - SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/kinetic_accelerator/crossbow, null, TRUE, TRUE) + SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/energy/recharge/ebow, null, TRUE, TRUE) SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/gun/ballistic/revolver/mateba, null, TRUE, TRUE) SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE) SEND_SIGNAL(sec_briefcase, COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/c4/x4, null, TRUE, TRUE) diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index e9c745b2dd4..3cd48509c3d 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -71,7 +71,7 @@ name = "drake armour" icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) armor = list(MELEE = 65, BULLET = 15, LASER = 40, ENERGY = 40, BOMB = 70, BIO = 60, FIRE = 100, ACID = 100) hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -98,7 +98,7 @@ name = "godslayer armour" icon_state = "godslayer" desc = "A suit of armour fashioned from the remnants of a knight's armor, and parts of a wendigo." - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/pickaxe, /obj/item/spear) armor = list(MELEE = 50, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 50, FIRE = 100, ACID = 100) clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL hoodtype = /obj/item/clothing/head/hooded/cloakhood/godslayer diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 8f2d9f51b42..440d3cc307c 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -422,7 +422,7 @@ icon_state = "coatminer" inhand_icon_state = "coatminer" allowed = list( - /obj/item/gun/energy/kinetic_accelerator, + /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/mining_scanner, /obj/item/pickaxe, /obj/item/resonator, diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 8a950babf33..3a5342b6dfb 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -51,7 +51,7 @@ duffelbag = /obj/item/storage/backpack/duffelbag/explorer box = /obj/item/storage/box/survival/mining - chameleon_extras = /obj/item/gun/energy/kinetic_accelerator + chameleon_extras = /obj/item/gun/energy/recharge/kinetic_accelerator /datum/outfit/job/miner/equipped name = "Shaft Miner (Equipment)" @@ -60,7 +60,7 @@ suit_store = /obj/item/tank/internals/oxygen backpack_contents = list( /obj/item/flashlight/seclite = 1, - /obj/item/gun/energy/kinetic_accelerator = 1, + /obj/item/gun/energy/recharge/kinetic_accelerator = 1, /obj/item/knife/combat/survival = 1, /obj/item/mining_voucher = 1, /obj/item/stack/marker_beacon/ten = 1, diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 7aea6835aff..20dd85a50f5 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -11,7 +11,7 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT hoodtype = /obj/item/clothing/head/hooded/explorer armor = list(MELEE = 30, BULLET = 10, LASER = 10, ENERGY = 20, BOMB = 50, BIO = 100, FIRE = 50, ACID = 50) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/storage/bag/ore) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/pickaxe, /obj/item/storage/bag/ore) resistance_flags = FIRE_PROOF /obj/item/clothing/head/hooded/explorer diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index ebc8600eb0d..75e9a7ef4f0 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -273,7 +273,7 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS clothing_flags = THICKMATERIAL resistance_flags = FIRE_PROOF|LAVA_PROOF|ACID_PROOF - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/pickaxe) /obj/item/clothing/suit/hooded/hostile_environment/Initialize(mapload) . = ..() diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 44c43aee415..25b23ce9b38 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -32,7 +32,7 @@ new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750), - new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/recharge/kinetic_accelerator, 750), new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800), new /datum/data/mining_equipment("Luxury Medipen", /obj/item/reagent_containers/hypospray/medipen/survival/luxury, 1000), @@ -273,6 +273,6 @@ new /obj/item/encryptionkey/headset_mining(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/card/id/advanced/mining(src) - new /obj/item/gun/energy/kinetic_accelerator(src) + new /obj/item/gun/energy/recharge/kinetic_accelerator(src) new /obj/item/knife/combat/survival(src) new /obj/item/flashlight/seclite(src) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index e2e779053a5..7326cbc4da2 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -61,7 +61,7 @@ new /obj/item/storage/bag/plants(src) new /obj/item/storage/bag/ore(src) new /obj/item/t_scanner/adv_mining_scanner/lesser(src) - new /obj/item/gun/energy/kinetic_accelerator(src) + new /obj/item/gun/energy/recharge/kinetic_accelerator(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/survivalcapsule(src) new /obj/item/assault_pod/mining(src) diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index df318a8bd51..01f83396d4c 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -39,7 +39,7 @@ light_range = 6 light_on = FALSE var/mode = MINEDRONE_COLLECT - var/obj/item/gun/energy/kinetic_accelerator/minebot/stored_gun + var/obj/item/gun/energy/recharge/kinetic_accelerator/minebot/stored_gun /mob/living/simple_animal/hostile/mining_drone/Initialize(mapload) . = ..() @@ -319,7 +319,7 @@ minebot.melee_damage_lower = initial(minebot.melee_damage_lower) + base_damage_add minebot.melee_damage_upper = initial(minebot.melee_damage_upper) + base_damage_add minebot.move_to_delay = initial(minebot.move_to_delay) + base_speed_add - minebot.stored_gun?.overheat_time += base_cooldown_add + minebot.stored_gun?.recharge_time += base_cooldown_add #undef MINEDRONE_COLLECT #undef MINEDRONE_ATTACK diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 73040d7928b..db9636a6d0b 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -638,7 +638,7 @@ /obj/item/weldingtool/mini, /obj/item/extinguisher/mini, /obj/item/storage/bag/sheetsnatcher/borg, - /obj/item/gun/energy/kinetic_accelerator/cyborg, + /obj/item/gun/energy/recharge/kinetic_accelerator/cyborg, /obj/item/gps/cyborg, /obj/item/stack/marker_beacon) radio_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_SUPPLY) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 30528abb72e..0e58e5398a6 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -37,8 +37,8 @@ Difficulty: Medium ranged_cooldown_time = 1.6 SECONDS pixel_x = -16 base_pixel_x = -16 - crusher_loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator, /obj/item/crusher_trophy/miner_eye) - loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator) + crusher_loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/crusher_trophy/miner_eye) + loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/recharge/kinetic_accelerator) wander = FALSE del_on_death = TRUE blood_volume = BLOOD_VOLUME_NORMAL diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 97b61e3dc67..a6e73985001 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -1,34 +1,24 @@ -/obj/item/gun/energy/kinetic_accelerator +/obj/item/gun/energy/recharge/kinetic_accelerator name = "proto-kinetic accelerator" desc = "A self recharging, ranged mining tool that does increased damage in low pressure." icon_state = "kineticgun" base_icon_state = "kineticgun" inhand_icon_state = "kineticgun" ammo_type = list(/obj/item/ammo_casing/energy/kinetic) - cell_type = /obj/item/stock_parts/cell/emproof item_flags = NONE obj_flags = UNIQUE_RENAME weapon_weight = WEAPON_LIGHT can_flashlight = TRUE flight_x_offset = 15 flight_y_offset = 9 - automatic_charge_overlays = FALSE can_bayonet = TRUE knife_x_offset = 20 knife_y_offset = 12 - var/overheat_time = 16 - var/holds_charge = FALSE - var/unique_frequency = FALSE // modified by KA modkits - var/overheat = FALSE var/mob/holder - - var/max_mod_capacity = 100 var/list/modkits = list() - var/recharge_timerid - -/obj/item/gun/energy/kinetic_accelerator/examine(mob/user) +/obj/item/gun/energy/recharge/kinetic_accelerator/examine(mob/user) . = ..() if(max_mod_capacity) . += "[get_remaining_mod_capacity()]% mod capacity remaining." @@ -37,7 +27,7 @@ var/obj/item/borg/upgrade/modkit/M = A . += span_notice("There is \a [M] installed, using [M.cost]% capacity.") -/obj/item/gun/energy/kinetic_accelerator/crowbar_act(mob/living/user, obj/item/I) +/obj/item/gun/energy/recharge/kinetic_accelerator/crowbar_act(mob/living/user, obj/item/I) . = TRUE if(modkits.len) to_chat(user, span_notice("You pry the modifications out.")) @@ -48,115 +38,44 @@ else to_chat(user, span_notice("There are no modifications currently installed.")) -/obj/item/gun/energy/kinetic_accelerator/Exited(atom/movable/gone, direction) +/obj/item/gun/energy/recharge/kinetic_accelerator/Exited(atom/movable/gone, direction) if(gone in modkits) var/obj/item/borg/upgrade/modkit/MK = gone MK.uninstall(src) return ..() -/obj/item/gun/energy/kinetic_accelerator/attackby(obj/item/I, mob/user) +/obj/item/gun/energy/recharge/kinetic_accelerator/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/borg/upgrade/modkit)) var/obj/item/borg/upgrade/modkit/MK = I MK.install(src, user) else ..() -/obj/item/gun/energy/kinetic_accelerator/proc/get_remaining_mod_capacity() +/obj/item/gun/energy/recharge/kinetic_accelerator/proc/get_remaining_mod_capacity() var/current_capacity_used = 0 for(var/A in modkits) var/obj/item/borg/upgrade/modkit/M = A current_capacity_used += M.cost return max_mod_capacity - current_capacity_used -/obj/item/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/projectile/kinetic/K) +/obj/item/gun/energy/recharge/kinetic_accelerator/proc/modify_projectile(obj/projectile/kinetic/K) K.kinetic_gun = src //do something special on-hit, easy! for(var/A in modkits) var/obj/item/borg/upgrade/modkit/M = A M.modify_projectile(K) -/obj/item/gun/energy/kinetic_accelerator/cyborg +/obj/item/gun/energy/recharge/kinetic_accelerator/cyborg icon_state = "kineticgun_b" holds_charge = TRUE unique_frequency = TRUE max_mod_capacity = 80 -/obj/item/gun/energy/kinetic_accelerator/minebot +/obj/item/gun/energy/recharge/kinetic_accelerator/minebot trigger_guard = TRIGGER_GUARD_ALLOW_ALL - overheat_time = 20 + recharge_time = 2 SECONDS holds_charge = TRUE unique_frequency = TRUE -/obj/item/gun/energy/kinetic_accelerator/Initialize(mapload) - . = ..() - if(!holds_charge) - empty() - -/obj/item/gun/energy/kinetic_accelerator/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) - . = ..() - attempt_reload() - -/obj/item/gun/energy/kinetic_accelerator/equipped(mob/user) - . = ..() - holder = user - if(!can_shoot()) - attempt_reload() - -/obj/item/gun/energy/kinetic_accelerator/dropped() - . = ..() - holder = null - if(!QDELING(src) && !holds_charge) - // Put it on a delay because moving item from slot to hand - // calls dropped(). - addtimer(CALLBACK(src, .proc/empty_if_not_held), 2) - -/obj/item/gun/energy/kinetic_accelerator/proc/empty_if_not_held() - if(!ismob(loc)) - empty() - -/obj/item/gun/energy/kinetic_accelerator/proc/empty() - if(cell) - cell.use(cell.charge) - update_appearance() - -/obj/item/gun/energy/kinetic_accelerator/proc/attempt_reload(recharge_time) - if(!cell) - return - if(overheat) - return - if(!recharge_time) - recharge_time = overheat_time - overheat = TRUE - - var/carried = 0 - if(!unique_frequency) - for(var/obj/item/gun/energy/kinetic_accelerator/K in loc.get_all_contents()) - if(!K.unique_frequency) - carried++ - - carried = max(carried, 1) - else - carried = 1 - - deltimer(recharge_timerid) - recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried, TIMER_STOPPABLE) - -/obj/item/gun/energy/kinetic_accelerator/emp_act(severity) - return - -/obj/item/gun/energy/kinetic_accelerator/proc/reload() - cell.give(cell.maxcharge) - if(!suppressed) - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, TRUE) - else - to_chat(loc, span_warning("[src] silently charges up.")) - update_appearance() - overheat = FALSE - -/obj/item/gun/energy/kinetic_accelerator/update_overlays() - . = ..() - if(!can_shoot()) - . += "[base_icon_state]_empty" - //Casing /obj/item/ammo_casing/energy/kinetic projectile_type = /obj/projectile/kinetic @@ -166,8 +85,8 @@ /obj/item/ammo_casing/energy/kinetic/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") ..() - if(loc && istype(loc, /obj/item/gun/energy/kinetic_accelerator)) - var/obj/item/gun/energy/kinetic_accelerator/KA = loc + if(loc && istype(loc, /obj/item/gun/energy/recharge/kinetic_accelerator)) + var/obj/item/gun/energy/recharge/kinetic_accelerator/KA = loc KA.modify_projectile(loaded_projectile) //Projectiles @@ -182,7 +101,7 @@ var/pressure_decrease_active = FALSE var/pressure_decrease = 0.25 - var/obj/item/gun/energy/kinetic_accelerator/kinetic_gun + var/obj/item/gun/energy/recharge/kinetic_accelerator/kinetic_gun /obj/projectile/kinetic/Destroy() kinetic_gun = null @@ -228,7 +147,7 @@ // If there is a mind, check for skill modifier to allow them to reload faster. if(carbon_firer.mind) skill_modifier = carbon_firer.mind.get_skill_modifier(/datum/skill/mining, SKILL_SPEED_MODIFIER) - kinetic_gun.attempt_reload(kinetic_gun.overheat_time * skill_modifier) //If you hit a mineral, you might get a quicker reload. epic gamer style. + kinetic_gun.attempt_reload(kinetic_gun.recharge_time * skill_modifier) //If you hit a mineral, you might get a quicker reload. epic gamer style. var/obj/effect/temp_visual/kinetic_blast/K = new /obj/effect/temp_visual/kinetic_blast(target_turf) K.color = color @@ -258,7 +177,7 @@ . += span_notice("Occupies [cost]% of mod capacity.") /obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user) - if(istype(A, /obj/item/gun/energy/kinetic_accelerator) && !issilicon(user)) + if(istype(A, /obj/item/gun/energy/recharge/kinetic_accelerator) && !issilicon(user)) install(A, user) else ..() @@ -266,10 +185,10 @@ /obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R) . = ..() if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/H in R.model.modules) + for(var/obj/item/gun/energy/recharge/kinetic_accelerator/cyborg/H in R.model.modules) return install(H, usr, FALSE) -/obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user, transfer_to_loc = TRUE) +/obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user, transfer_to_loc = TRUE) . = TRUE if(minebot_upgrade) if(minebot_exclusive && !istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone)) @@ -303,20 +222,20 @@ /obj/item/borg/upgrade/modkit/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.model.modules) + for(var/obj/item/gun/energy/recharge/kinetic_accelerator/cyborg/KA in R.model.modules) uninstall(KA) -/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) KA.modkits -= src /obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/projectile/kinetic/K) //use this one for effects you want to trigger before any damage is done at all and before damage is decreased by pressure -/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) //use this one for effects you want to trigger before mods that do damage -/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) //and this one for things that don't need to trigger before other damage-dealing mods -/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) //Range /obj/item/borg/upgrade/modkit/range @@ -346,13 +265,13 @@ modifier = 3.2 minebot_upgrade = FALSE -/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) +/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() if(.) - KA.overheat_time -= modifier + KA.recharge_time -= modifier -/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) - KA.overheat_time += modifier +/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) + KA.recharge_time += modifier ..() /obj/item/borg/upgrade/modkit/cooldown/minebot @@ -373,7 +292,7 @@ var/turf_aoe = FALSE var/stats_stolen = FALSE -/obj/item/borg/upgrade/modkit/aoe/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) +/obj/item/borg/upgrade/modkit/aoe/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() if(.) for(var/obj/item/borg/upgrade/modkit/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple @@ -385,7 +304,7 @@ AOE.turf_aoe = FALSE AOE.stats_stolen = TRUE -/obj/item/borg/upgrade/modkit/aoe/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/aoe/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) ..() modifier = initial(modifier) //get our modifiers back turf_aoe = initial(turf_aoe) @@ -394,7 +313,7 @@ /obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K) K.name = "kinetic explosion" -/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(stats_stolen) return new /obj/effect/temp_visual/explosion/fast(target_turf) @@ -440,7 +359,7 @@ modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss. cost = 50 -/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) var/valid_repeat = FALSE if(isliving(target)) var/mob/living/L = target @@ -449,8 +368,8 @@ if(ismineralturf(target_turf)) valid_repeat = TRUE if(valid_repeat) - KA.overheat = FALSE - KA.attempt_reload(KA.overheat_time * 0.25) //If you hit, the cooldown drops to 0.75 seconds. + KA.cell.use(KA.cell.charge) + KA.attempt_reload(KA.recharge_time * 0.25) //If you hit, the cooldown drops to 0.75 seconds. /obj/item/borg/upgrade/modkit/lifesteal name = "lifesteal crystal" @@ -460,7 +379,7 @@ cost = 20 var/static/list/damage_heal_order = list(BRUTE, BURN, OXY) -/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(isliving(target) && isliving(K.firer)) var/mob/living/L = target if(L.stat == DEAD) @@ -475,7 +394,7 @@ cost = 30 modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it. -/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs. var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in target_turf if(R) @@ -493,7 +412,7 @@ var/maximum_bounty = 25 var/list/bounties_reaped = list() -/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/bounty/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(isliving(target)) var/mob/living/L = target var/list/existing_marks = L.has_status_effect_list(/datum/status_effect/syphon_mark) @@ -504,7 +423,7 @@ qdel(SM) L.apply_status_effect(/datum/status_effect/syphon_mark, src) -/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/bounty/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA) if(isliving(target)) var/mob/living/L = target if(bounties_reaped[L.type]) @@ -543,12 +462,12 @@ cost = 20 denied_type = /obj/item/borg/upgrade/modkit/trigger_guard -/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) +/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() if(.) KA.trigger_guard = TRIGGER_GUARD_ALLOW_ALL -/obj/item/borg/upgrade/modkit/trigger_guard/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/trigger_guard/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) KA.trigger_guard = TRIGGER_GUARD_NORMAL ..() @@ -563,7 +482,7 @@ var/chassis_icon = "kineticgun_u" var/chassis_name = "super-kinetic accelerator" -/obj/item/borg/upgrade/modkit/chassis_mod/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) +/obj/item/borg/upgrade/modkit/chassis_mod/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user) . = ..() if(.) KA.icon_state = chassis_icon @@ -573,7 +492,7 @@ var/mob/living/carbon/holder = KA.loc holder.update_inv_hands() -/obj/item/borg/upgrade/modkit/chassis_mod/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) +/obj/item/borg/upgrade/modkit/chassis_mod/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA) KA.icon_state = initial(KA.icon_state) KA.inhand_icon_state = initial(KA.inhand_icon_state) KA.name = initial(KA.name) diff --git a/code/modules/projectiles/guns/energy/recharge.dm b/code/modules/projectiles/guns/energy/recharge.dm new file mode 100644 index 00000000000..1c667e12e74 --- /dev/null +++ b/code/modules/projectiles/guns/energy/recharge.dm @@ -0,0 +1,129 @@ +//Recharge subtype - used by stuff like protokinetic accelerators and ebows, one shot at a time, recharges. +/obj/item/gun/energy/recharge + icon_state = "kineticgun" + base_icon_state = "kineticgun" + desc = "A self recharging gun. Holds one shot at a time." + automatic_charge_overlays = FALSE + cell_type = /obj/item/stock_parts/cell/emproof + /// If set to something, instead of an overlay, sets the icon_state directly. + var/no_charge_state + /// Does it hold charge when not put away? + var/holds_charge = FALSE + /// How much time we need to recharge + var/recharge_time = 1.6 SECONDS + /// Sound we use when recharged + var/recharge_sound = 'sound/weapons/kenetic_reload.ogg' + /// An ID for our recharging timer. + var/recharge_timerid + /// Do we recharge slower with more of our type? + var/unique_frequency = FALSE + +/obj/item/gun/energy/recharge/Initialize(mapload) + . = ..() + if(!holds_charge) + empty() + +/obj/item/gun/energy/recharge/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) + . = ..() + attempt_reload() + +/obj/item/gun/energy/recharge/equipped(mob/user) + . = ..() + if(!can_shoot()) + attempt_reload() + +/obj/item/gun/energy/recharge/dropped() + . = ..() + if(!QDELING(src) && !holds_charge) + // Put it on a delay because moving item from slot to hand + // calls dropped(). + addtimer(CALLBACK(src, .proc/empty_if_not_held), 0.1 SECONDS) + +/obj/item/gun/energy/recharge/handle_chamber() + . = ..() + attempt_reload() + +/obj/item/gun/energy/recharge/proc/empty_if_not_held() + if(!ismob(loc)) + empty() + deltimer(recharge_timerid) + +/obj/item/gun/energy/recharge/proc/empty() + if(cell) + cell.use(cell.charge) + update_appearance() + +/obj/item/gun/energy/recharge/proc/attempt_reload(set_recharge_time) + if(!cell) + return + if(cell.charge == cell.maxcharge) + return + if(!set_recharge_time) + set_recharge_time = recharge_time + var/carried = 0 + if(!unique_frequency) + for(var/obj/item/gun/energy/recharge/recharging_gun in loc.get_all_contents()) + if(recharging_gun.type != type || recharging_gun.unique_frequency) + continue + carried++ + carried = max(carried, 1) + deltimer(recharge_timerid) + recharge_timerid = addtimer(CALLBACK(src, .proc/reload), set_recharge_time * carried, TIMER_STOPPABLE) + +/obj/item/gun/energy/recharge/emp_act(severity) + return + +/obj/item/gun/energy/recharge/proc/reload() + cell.give(cell.maxcharge) + if(!suppressed && recharge_sound) + playsound(src.loc, recharge_sound, 60, TRUE) + else + to_chat(loc, span_warning("[src] silently charges up.")) + update_appearance() + +/obj/item/gun/energy/recharge/update_overlays() + . = ..() + if(!no_charge_state && !can_shoot()) + . += "[base_icon_state]_empty" + +/obj/item/gun/energy/recharge/update_icon_state() + . = ..() + if(no_charge_state && !can_shoot()) + icon_state = no_charge_state + +/obj/item/gun/energy/recharge/ebow + name = "mini energy crossbow" + desc = "A weapon favored by syndicate stealth specialists." + icon_state = "crossbow" + base_icon_state = "crossbow" + inhand_icon_state = "crossbow" + no_charge_state = "crossbow_empty" + w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/iron=2000) + suppressed = TRUE + ammo_type = list(/obj/item/ammo_casing/energy/bolt) + recharge_time = 2 SECONDS + holds_charge = TRUE + unique_frequency = TRUE + can_bayonet = TRUE + knife_x_offset = 20 + knife_y_offset = 12 + +/obj/item/gun/energy/recharge/ebow/halloween + name = "candy corn crossbow" + desc = "A weapon favored by Syndicate trick-or-treaters." + icon_state = "crossbow_halloween" + base_icon_state = "crossbow_halloween" + no_charge_state = "crossbow_halloween_empty" + ammo_type = list(/obj/item/ammo_casing/energy/bolt/halloween) + +/obj/item/gun/energy/recharge/ebow/large + name = "energy crossbow" + desc = "A reverse engineered weapon using syndicate technology." + icon_state = "crossbowlarge" + base_icon_state = "crossbowlarge" + no_charge_state = "crossbowlarge_empty" + w_class = WEIGHT_CLASS_BULKY + custom_materials = list(/datum/material/iron=4000) + suppressed = null + ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 4ea68efdd1c..f14ab16058e 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -85,42 +85,6 @@ ammo_type = list(/obj/item/ammo_casing/energy/mindflayer) ammo_x_offset = 2 -/obj/item/gun/energy/kinetic_accelerator/crossbow - name = "mini energy crossbow" - desc = "A weapon favored by syndicate stealth specialists." - icon_state = "crossbow" - base_icon_state = "crossbow" - inhand_icon_state = "crossbow" - w_class = WEIGHT_CLASS_SMALL - custom_materials = list(/datum/material/iron=2000) - suppressed = TRUE - ammo_type = list(/obj/item/ammo_casing/energy/bolt) - weapon_weight = WEAPON_LIGHT - obj_flags = 0 - overheat_time = 20 - holds_charge = TRUE - unique_frequency = TRUE - can_flashlight = FALSE - max_mod_capacity = -1 - -/obj/item/gun/energy/kinetic_accelerator/crossbow/halloween - name = "candy corn crossbow" - desc = "A weapon favored by Syndicate trick-or-treaters." - icon_state = "crossbow_halloween" - base_icon_state = "crossbow_halloween" - inhand_icon_state = "crossbow" - ammo_type = list(/obj/item/ammo_casing/energy/bolt/halloween) - -/obj/item/gun/energy/kinetic_accelerator/crossbow/large - name = "energy crossbow" - desc = "A reverse engineered weapon using syndicate technology." - icon_state = "crossbowlarge" - base_icon_state = "crossbowlarge" - w_class = WEIGHT_CLASS_BULKY - custom_materials = list(/datum/material/iron=4000) - suppressed = null - ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) - /obj/item/gun/energy/plasmacutter name = "plasma cutter" desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off xenos! Or, you know, mine stuff." diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 7a31b45c0f7..bc4fdda5e8c 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(summoned_guns, list( /obj/item/gun/ballistic/rifle/boltaction/harpoon, /obj/item/gun/ballistic/automatic/mini_uzi, /obj/item/gun/energy/lasercannon, - /obj/item/gun/energy/kinetic_accelerator/crossbow/large, + /obj/item/gun/energy/recharge/ebow/large, /obj/item/gun/energy/e_gun/nuclear, /obj/item/gun/ballistic/automatic/proto, /obj/item/gun/ballistic/automatic/c20r, @@ -39,7 +39,7 @@ GLOBAL_LIST_INIT(summoned_guns, list( /obj/item/gun/energy/pulse/carbine, /obj/item/gun/energy/decloner, /obj/item/gun/energy/mindflayer, - /obj/item/gun/energy/kinetic_accelerator, + /obj/item/gun/energy/recharge/kinetic_accelerator, /obj/item/gun/energy/plasmacutter/adv, /obj/item/gun/energy/wormhole_projector, /obj/item/gun/ballistic/automatic/wt550, diff --git a/code/modules/uplink/uplink_items/stealthy.dm b/code/modules/uplink/uplink_items/stealthy.dm index 466d69fd13c..2d867744d16 100644 --- a/code/modules/uplink/uplink_items/stealthy.dm +++ b/code/modules/uplink/uplink_items/stealthy.dm @@ -93,7 +93,7 @@ toxin that will damage and disorient targets, causing them to \ slur as if inebriated. It can produce an infinite number \ of bolts, but takes time to automatically recharge after each shot." - item = /obj/item/gun/energy/kinetic_accelerator/crossbow + item = /obj/item/gun/energy/recharge/ebow progression_minimum = 30 MINUTES cost = 10 surplus = 50 diff --git a/tgstation.dme b/tgstation.dme index 63b4c51fd9d..1b02a5967c2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3776,6 +3776,7 @@ #include "code\modules\projectiles\guns\energy\laser_gatling.dm" #include "code\modules\projectiles\guns\energy\mounted.dm" #include "code\modules\projectiles\guns\energy\pulse.dm" +#include "code\modules\projectiles\guns\energy\recharge.dm" #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\magic\staff.dm"