mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-17 13:12:37 +00:00
Merge pull request #14992 from KorPhaeron/flashlights
Adds laserguns with rechargeable, swappable magazines
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
return
|
||||
if(istype(user,/mob/living/silicon))
|
||||
return
|
||||
if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton))
|
||||
if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton) || istype(G, /obj/item/ammo_box/magazine/recharge))
|
||||
if(anchored)
|
||||
if(charging || panel_open)
|
||||
return
|
||||
@@ -98,26 +98,31 @@
|
||||
if(stat & (NOPOWER|BROKEN) || !anchored)
|
||||
return
|
||||
|
||||
var/using_power = 0
|
||||
if(charging)
|
||||
if(istype(charging, /obj/item/weapon/gun/energy))
|
||||
var/obj/item/weapon/gun/energy/E = charging
|
||||
if(E.power_supply.charge < E.power_supply.maxcharge)
|
||||
E.power_supply.give(E.power_supply.chargerate * recharge_coeff)
|
||||
icon_state = "recharger1"
|
||||
use_power(250 * recharge_coeff)
|
||||
else
|
||||
icon_state = "recharger2"
|
||||
return
|
||||
using_power = 1
|
||||
|
||||
|
||||
if(istype(charging, /obj/item/weapon/melee/baton))
|
||||
var/obj/item/weapon/melee/baton/B = charging
|
||||
if(B.bcell)
|
||||
if(B.bcell.give(B.bcell.chargerate * recharge_coeff))
|
||||
icon_state = "recharger1"
|
||||
use_power(200 * recharge_coeff)
|
||||
else
|
||||
icon_state = "recharger2"
|
||||
else
|
||||
icon_state = "recharger3"
|
||||
using_power = 1
|
||||
|
||||
if(istype(charging, /obj/item/ammo_box/magazine/recharge))
|
||||
var/obj/item/ammo_box/magazine/recharge/R = charging
|
||||
if(R.stored_ammo.len < R.max_ammo)
|
||||
R.stored_ammo += new R.ammo_type(R)
|
||||
use_power(200 * recharge_coeff)
|
||||
using_power = 1
|
||||
|
||||
update_icon(using_power)
|
||||
|
||||
/obj/machinery/recharger/power_change()
|
||||
..()
|
||||
@@ -140,12 +145,17 @@
|
||||
..(severity)
|
||||
|
||||
|
||||
/obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier.
|
||||
/obj/machinery/recharger/update_icon(using_power = 0) //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier.
|
||||
if(stat & (NOPOWER|BROKEN) || !anchored)
|
||||
icon_state = "rechargeroff"
|
||||
else if(panel_open)
|
||||
return
|
||||
if(panel_open)
|
||||
icon_state = "rechargeropen"
|
||||
else if(charging)
|
||||
return
|
||||
if(charging)
|
||||
if(using_power)
|
||||
icon_state = "recharger1"
|
||||
else
|
||||
icon_state = "recharger2"
|
||||
return
|
||||
icon_state = "recharger0"
|
||||
@@ -0,0 +1,47 @@
|
||||
//Energy guns with swappable, rechargable, magazines.
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge
|
||||
name = "power pack"
|
||||
icon_state = "oldrifle-20"
|
||||
ammo_type = /obj/item/ammo_casing/caseless/laser
|
||||
caliber = "laser"
|
||||
max_ammo = 20
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/update_icon()
|
||||
..()
|
||||
icon_state = "oldrifle-[round(ammo_count(),4)]"
|
||||
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser
|
||||
name = "laser casing"
|
||||
desc = "You shouldn't be seeing this."
|
||||
caliber = "laser"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
|
||||
|
||||
/obj/item/ammo_box/magazine/recharge/attack_self() //No popping out the "bullets"
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser
|
||||
name = "laser rifle"
|
||||
desc = "Though sometimes mocked for the relatively weak firepower of their energy weapons, the logistic miracle of rechargable ammunition has given Nanotrasen a decisive edge over many a foe."
|
||||
icon_state = "oldrifle"
|
||||
item_state = "arg"
|
||||
mag_type = /obj/item/ammo_box/magazine/recharge
|
||||
fire_delay = 2
|
||||
can_suppress = 0
|
||||
burst_size = 0
|
||||
action_button_name = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/process_chamber(eject_casing = 0, empty_chamber = 1)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/laser/update_icon()
|
||||
..()
|
||||
icon_state = "oldrifle[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""]"
|
||||
return
|
||||
@@ -1454,6 +1454,7 @@
|
||||
#include "code\modules\projectiles\guns\projectile\automatic.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\launchers.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\pistol.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\rechargable_magazine.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\revolver.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\saw.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\shotgun.dm"
|
||||
|
||||
Reference in New Issue
Block a user