diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 5538620b138..3c8710caf1a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -338,9 +338,9 @@ src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/weapon/melee/energy/sword/cyborg(src) - src.modules += new /obj/item/weapon/gun/energy/crossbow/cyborg(src) + src.modules += new /obj/item/weapon/gun/energy/printer(src) + src.modules += new /obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg(src) src.modules += new /obj/item/weapon/card/emag(src) - src.modules += new /obj/item/weapon/gun/energy/laser/cyborg(src) src.modules += new /obj/item/weapon/tank/jetpack/carbondioxide(src) src.modules += new /obj/item/weapon/crowbar(src) src.emag = null diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 99dd27d88d6..f020e350b8d 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -256,4 +256,44 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. item_state = null projectile_type = "/obj/item/projectile/beam/disabler" cell_type = "/obj/item/weapon/cell" - charge_cost = 500 \ No newline at end of file + charge_cost = 500 + + + +/* 3d printer 'pseudo guns' for borgs */ + +/obj/item/weapon/gun/energy/printer + name = "cyborg lmg" + desc = "A machinegun that fires 3d-printed flachettes slowly regenerated using a cyborg's internal power source." + icon_state = "l6closed0" + icon = 'icons/obj/gun.dmi' + fire_sound = 'sound/weapons/Gunshot_smg.ogg' + cell_type = "/obj/item/weapon/cell/secborg" + projectile_type = "/obj/item/projectile/bullet/midbullet3" + charge_cost = 400 //Yeah, let's NOT give them a 300 round clip that recharges, 15 is more reasonable and will actually hurt the borg's battery for overuse. + var/charge_tick = 0 + var/recharge_time = 5 + +/obj/item/weapon/gun/energy/printer/update_icon() + return + +/obj/item/weapon/gun/energy/printer/New() + ..() + processing_objects.Add(src) + +/obj/item/weapon/gun/energy/printer/Destroy() + processing_objects.Remove(src) + ..() + +/obj/item/weapon/gun/energy/printer/process() + charge_tick++ + if(charge_tick < recharge_time) return 0 + charge_tick = 0 + + if(!power_supply) return 0 //sanity + if(isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + if(R && R.cell) + if(R.cell.use(charge_cost)) //Take power from the borg... + power_supply.give(charge_cost) //...to recharge the shot + return 1 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 66cbe616edf..ce9e12a51f8 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -28,19 +28,19 @@ ..() /obj/item/weapon/gun/energy/taser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg - return 1 + charge_tick++ + if(charge_tick < recharge_time) return 0 + charge_tick = 0 -/obj/item/weapon/gun/energy/taser/cyborg/process_chambered() - if(in_chamber) - return 1 + if(!power_supply) return 0 //sanity if(isrobot(src.loc)) var/mob/living/silicon/robot/R = src.loc - if(R && R.cell && R.cell.charge >= 250) - R.cell.use(250) - in_chamber = new /obj/item/projectile/energy/electrode(src) - return 1 - return 0 + if(R && R.cell) + if(R.cell.use(charge_cost)) //Take power from the borg... + power_supply.give(charge_cost) //... to recharge the shot + update_icon() + return 1 /obj/item/weapon/gun/energy/stunrevolver name = "stun revolver" @@ -87,24 +87,6 @@ /obj/item/weapon/gun/energy/crossbow/update_icon() return - -/obj/item/weapon/gun/energy/crossbow/cyborg - desc = "An energy-based crossbow that draws power from the cyborg's internal energy cell directly." - -/obj/item/weapon/gun/energy/crossbow/cyborg/process() - return 1 - -/obj/item/weapon/gun/energy/crossbow/cyborg/process_chambered() - if(in_chamber) - return 1 - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - if(R && R.cell && R.cell.charge >= 250) - R.cell.use(250) - in_chamber = new /obj/item/projectile/energy/bolt(src) - return 1 - return 0 - /obj/item/weapon/gun/energy/crossbow/largecrossbow name = "Energy Crossbow" desc = "A weapon favored by syndicate carp hunters." diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm index 9c5dc867dc4..5e53c71efa9 100644 --- a/code/modules/projectiles/guns/projectile/launchers.dm +++ b/code/modules/projectiles/guns/projectile/launchers.dm @@ -47,4 +47,12 @@ icon_state = "bulldog" item_state = "bulldog" icon_override = 'icons/mob/in-hand/guns.dmi' - mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi" \ No newline at end of file + mag_type = "/obj/item/ammo_box/magazine/internal/cylinder/grenadelauncher/multi" + +/obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg + desc = "A 6-shot grenade launcher." + icon = 'icons/mecha/mecha_equipment.dmi' + icon_state = "mecha_grenadelnchr" + +/obj/item/weapon/gun/projectile/revolver/grenadelauncher/multi/cyborg/attack_self() + return \ No newline at end of file