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:
Time-Green
2018-08-01 09:12:45 +02:00
committed by AnturK
parent 47f5cf87fd
commit 3f8dbf2b0b
3 changed files with 50 additions and 6 deletions
+7 -3
View File
@@ -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()
..()
+41 -3
View File
@@ -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))