mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 14:08:31 +01:00
Emitter gun mounts (#39367)
* different guns can be inserted into emitters * fixes portal gun runtime * You can now switch type through wires * makes one line more readable * Fixes being able to grab nodrop guns from emitters
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
|
||||
/datum/wires/emitter
|
||||
randomize = 1 //Only one wire don't need blueprints
|
||||
holder_type = /obj/machinery/power/emitter
|
||||
|
||||
/datum/wires/emitter/New(atom/holder)
|
||||
wires = list(WIRE_ZAP)
|
||||
wires = list(WIRE_ZAP,WIRE_HACK)
|
||||
..()
|
||||
|
||||
/datum/wires/emitter/on_pulse(wire)
|
||||
var/obj/machinery/power/emitter/E = holder
|
||||
E.fire_beam_pulse()
|
||||
switch(wire)
|
||||
if(WIRE_ZAP)
|
||||
E.fire_beam_pulse()
|
||||
if(WIRE_HACK)
|
||||
E.mode = !E.mode
|
||||
E.set_projectile()
|
||||
..()
|
||||
|
||||
@@ -31,16 +31,19 @@
|
||||
var/allow_switch_interact = TRUE
|
||||
|
||||
var/projectile_type = /obj/item/projectile/beam/emitter
|
||||
|
||||
var/projectile_sound = 'sound/weapons/emitter.ogg'
|
||||
|
||||
var/datum/effect_system/spark_spread/sparks
|
||||
|
||||
var/obj/item/gun/energy/gun
|
||||
var/list/gun_properties
|
||||
var/mode = 0
|
||||
|
||||
// The following 3 vars are mostly for the prototype
|
||||
var/manual = FALSE
|
||||
var/charge = 0
|
||||
var/last_projectile_params
|
||||
|
||||
|
||||
/obj/machinery/power/emitter/anchored
|
||||
anchored = TRUE
|
||||
|
||||
@@ -269,6 +272,8 @@
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/power/emitter/crowbar_act(mob/living/user, obj/item/I)
|
||||
if(panel_open && gun)
|
||||
return remove_gun(user)
|
||||
default_deconstruction_crowbar(I)
|
||||
return TRUE
|
||||
|
||||
@@ -295,9 +300,42 @@
|
||||
else if(is_wire_tool(I) && panel_open)
|
||||
wires.interact(user)
|
||||
return
|
||||
|
||||
else if(panel_open && !gun && istype(I,/obj/item/gun/energy))
|
||||
if(integrate(I,user))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/emitter/proc/integrate(obj/item/gun/energy/E,mob/user)
|
||||
if(istype(E, /obj/item/gun/energy))
|
||||
if(!user.transferItemToLoc(E, src))
|
||||
return
|
||||
gun = E
|
||||
gun_properties = gun.get_turret_properties()
|
||||
set_projectile()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/power/emitter/proc/remove_gun(mob/user)
|
||||
if(!gun)
|
||||
return
|
||||
user.put_in_hands(gun)
|
||||
gun = null
|
||||
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
gun_properties = list()
|
||||
set_projectile()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/power/emitter/proc/set_projectile()
|
||||
if(LAZYLEN(gun_properties))
|
||||
if(mode || !gun_properties["lethal_projectile"])
|
||||
projectile_type = gun_properties["stun_projectile"]
|
||||
projectile_sound = gun_properties["stun_projectile_sound"]
|
||||
else
|
||||
projectile_type = gun_properties["lethal_projectile"]
|
||||
projectile_sound = gun_properties["lethal_projectile_sound"]
|
||||
return
|
||||
projectile_type = initial(projectile_type)
|
||||
projectile_sound = initial(projectile_sound)
|
||||
|
||||
/obj/machinery/power/emitter/emag_act(mob/user)
|
||||
if(obj_flags & EMAGGED)
|
||||
return
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
if(casing)
|
||||
gun = casing.gun
|
||||
|
||||
|
||||
/obj/item/projectile/beam/wormhole/on_hit(atom/target)
|
||||
if(!gun)
|
||||
qdel(src)
|
||||
return
|
||||
gun.create_portal(src, get_turf(src))
|
||||
|
||||
Reference in New Issue
Block a user