diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 5717c594127..0edf01caed3 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -381,19 +381,6 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. update_icon() return 1 -// Telegun for Tator RDs - -/obj/item/weapon/gun/energy/telegun - name = "Teleporter Gun" - desc = "An extremely high-tech bluespace energy gun capable of teleporting targets to far off locations." - icon_state = "telegun" - item_state = "ionrifle" - fire_sound = 'sound/weapons/wave.ogg' - origin_tech = "combat=6;materials=7;powerstorage=5;bluespace=5;syndicate=4" - cell_type = "/obj/item/weapon/stock_parts/cell/crap" - projectile_type = "/obj/item/projectile/energy/teleport" - charge_cost = 1250 - /* 3d printer 'pseudo guns' for borgs */ /obj/item/weapon/gun/energy/printer diff --git a/code/modules/projectiles/guns/energy/telegun.dm b/code/modules/projectiles/guns/energy/telegun.dm new file mode 100644 index 00000000000..3819401e031 --- /dev/null +++ b/code/modules/projectiles/guns/energy/telegun.dm @@ -0,0 +1,39 @@ +// Telegun for Tator RDs + +/obj/item/weapon/gun/energy/telegun + name = "Teleporter Gun" + desc = "An extremely high-tech bluespace energy gun capable of teleporting targets to far off locations." + icon_state = "telegun" + item_state = "ionrifle" + fire_sound = 'sound/weapons/wave.ogg' + origin_tech = "combat=6;materials=7;powerstorage=5;bluespace=5;syndicate=4" + cell_type = "/obj/item/weapon/stock_parts/cell/crap" + projectile_type = "/obj/item/projectile/energy/teleport" + charge_cost = 1250 + var/teleport_target = null + +/obj/item/weapon/gun/energy/telegun/Destroy() + teleport_target = null + return ..() + +/obj/item/weapon/gun/energy/telegun/attack_self(mob/living/user as mob) + var/list/L = list() + var/list/areaindex = list() + + for(var/obj/item/device/radio/beacon/R in beacons) + var/turf/T = get_turf(R) + if (!T) + continue + if((T.z in config.admin_levels) || T.z > 7) + continue + if(R.syndicate == 1) + continue + var/tmpname = T.loc.name + if(areaindex[tmpname]) + tmpname = "[tmpname] ([++areaindex[tmpname]])" + else + areaindex[tmpname] = 1 + L[tmpname] = R + + var/desc = input("Please select a location to lock in.", "Telegun Target Interface") in L + teleport_target = L[desc] \ No newline at end of file diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 962ed6725a3..b2563d846ea 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -269,15 +269,17 @@ obj/item/projectile/kinetic/New() icon_state = "bluespace" damage = 0 nodamage = 1 + var/obj/item/weapon/gun/energy/telegun/T = null + var/teleport_target = null + + OnFired() + T = shot_from + teleport_target = T.teleport_target /obj/item/projectile/energy/teleport/on_hit(var/atom/target, var/blocked = 0) if(isliving(target)) - var/obj/item/device/radio/beacon/teletarget = null - for(var/obj/machinery/computer/teleporter/com in machines) - if(com.target) - teletarget = com.target - if(teletarget) - do_teleport(target, teletarget, 0)//teleport what's in the tile to the beacon + if(teleport_target) + do_teleport(target, teleport_target, 0)//teleport what's in the tile to the beacon else do_teleport(target, target, 15) //Otherwise it just warps you off somewhere. diff --git a/paradise.dme b/paradise.dme index 81669c187d9..2a2bfc496f9 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1608,6 +1608,7 @@ #include "code\modules\projectiles\guns\energy\pulse.dm" #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" +#include "code\modules\projectiles\guns\energy\telegun.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" #include "code\modules\projectiles\guns\magic\staff.dm" #include "code\modules\projectiles\guns\magic\wand.dm"