Bluespace wormhole projector
- emits quantum-coupled bluespace beams - high research requirements: combat 6, materials 6, bluespace 4 - sprites by Nienhaus. Big thanks! - electrodes now colored with the color var
@@ -8,13 +8,11 @@
|
||||
var/obj/item/target = null
|
||||
var/creator = null
|
||||
anchored = 1.0
|
||||
var/precision = 1 // how close to the portal you will teleport. 0 = on the portal, 1 = adjacent
|
||||
|
||||
/obj/effect/portal/Bumped(mob/M as mob|obj)
|
||||
src.teleport(M)
|
||||
|
||||
/obj/effect/portal/Crossed(AM as mob|obj)
|
||||
src.teleport(AM)
|
||||
|
||||
/obj/effect/portal/New(loc, turf/target, creator, lifespan=300)
|
||||
portals += src
|
||||
src.loc = loc
|
||||
@@ -32,6 +30,9 @@
|
||||
if(istype(creator, /obj/item/weapon/hand_tele))
|
||||
var/obj/item/weapon/hand_tele/O = creator
|
||||
O.active_portals--
|
||||
else if(istype(creator, /obj/item/weapon/gun/energy/wormhole_projector))
|
||||
var/obj/item/weapon/gun/energy/wormhole_projector/P = creator
|
||||
P.portal_destroyed(src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/portal/proc/teleport(atom/movable/M as mob|obj)
|
||||
@@ -39,11 +40,10 @@
|
||||
return
|
||||
if(M.anchored&&istype(M, /obj/mecha))
|
||||
return
|
||||
if(icon_state == "portal1")
|
||||
return
|
||||
if (!( target ))
|
||||
qdel(src)
|
||||
return
|
||||
if (istype(M, /atom/movable))
|
||||
do_teleport(M, target, 1) ///You will appear adjacent to the beacon
|
||||
do_teleport(M, target, precision) ///You will appear adjacent to the beacon
|
||||
|
||||
|
||||
|
||||
@@ -120,4 +120,16 @@
|
||||
projectile_type = /obj/item/projectile/energy/disabler
|
||||
select_name = "disable"
|
||||
e_cost = 50
|
||||
fire_sound = "sound/weapons/taser.ogg"
|
||||
fire_sound = "sound/weapons/taser.ogg"
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole
|
||||
projectile_type = /obj/item/projectile/beam/wormhole
|
||||
e_cost = 0
|
||||
fire_sound = "sound/weapons/pulse3.ogg"
|
||||
var/obj/item/weapon/gun/energy/wormhole_projector/gun = null
|
||||
select_name = "blue"
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole/orange
|
||||
projectile_type = /obj/item/projectile/beam/wormhole/orange
|
||||
select_name = "orange"
|
||||
|
||||
|
||||
@@ -135,3 +135,48 @@
|
||||
item_state = null
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/disabler)
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell"
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/wormhole_projector
|
||||
name = "bluespace wormhole projector"
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange)
|
||||
item_state = null
|
||||
icon_state = "wormhole_projector"
|
||||
var/obj/effect/portal/blue
|
||||
var/obj/effect/portal/orange
|
||||
|
||||
/obj/item/weapon/gun/energy/wormhole_projector/update_icon()
|
||||
icon_state = "[initial(icon_state)][select]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/energy/wormhole_projector/attack_self(mob/living/user as mob)
|
||||
select_fire(user)
|
||||
|
||||
/obj/item/weapon/gun/energy/wormhole_projector/process_chamber()
|
||||
..()
|
||||
select_fire()
|
||||
|
||||
/obj/item/weapon/gun/energy/wormhole_projector/proc/portal_destroyed(var/obj/effect/portal/P)
|
||||
if(P.icon_state == "portal")
|
||||
blue = null
|
||||
if(orange)
|
||||
orange.target = null
|
||||
else
|
||||
orange = null
|
||||
if(blue)
|
||||
blue.target = null
|
||||
|
||||
/obj/item/weapon/gun/energy/wormhole_projector/proc/create_portal(var/obj/item/projectile/beam/wormhole/W)
|
||||
var/obj/effect/portal/P = new /obj/effect/portal(get_turf(W), null, src)
|
||||
P.precision = 0
|
||||
if(W.name == "bluespace beam")
|
||||
qdel(blue)
|
||||
blue = P
|
||||
else
|
||||
qdel(orange)
|
||||
P.icon_state = "portal1"
|
||||
orange = P
|
||||
if(orange && blue)
|
||||
blue.target = get_turf(orange)
|
||||
orange.target = get_turf(blue)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
flag = "energy"
|
||||
color = "#FFFF00"
|
||||
|
||||
|
||||
/obj/item/projectile/energy/electrode
|
||||
|
||||
@@ -148,4 +148,31 @@ obj/item/projectile/kinetic/New()
|
||||
|
||||
/obj/item/effect/kinetic_blast/New()
|
||||
spawn(4)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/beam/wormhole
|
||||
name = "bluespace beam"
|
||||
icon_state = "spark"
|
||||
hitsound = "sparks"
|
||||
damage = 3
|
||||
var/obj/item/weapon/gun/energy/wormhole_projector/gun
|
||||
color = "#33CCFF"
|
||||
|
||||
/obj/item/projectile/beam/wormhole/orange
|
||||
name = "orange bluespace beam"
|
||||
color = "#FF6600"
|
||||
|
||||
/obj/item/projectile/beam/wormhole/New(var/obj/item/ammo_casing/energy/wormhole/casing)
|
||||
if(casing)
|
||||
gun = casing.gun
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole/New(var/obj/item/weapon/gun/energy/wormhole_projector/wh)
|
||||
gun = wh
|
||||
|
||||
/obj/item/projectile/beam/wormhole/on_hit(var/atom/target)
|
||||
if(ismob(target))
|
||||
..()
|
||||
return
|
||||
if(!gun)
|
||||
qdel(src)
|
||||
gun.create_portal(src)
|
||||
@@ -141,6 +141,16 @@ datum/design/ionrifle
|
||||
build_path = /obj/item/weapon/gun/energy/ionrifle
|
||||
locked = 1
|
||||
|
||||
datum/design/wormhole_projector
|
||||
name = "Bluespace Wormhole Projector"
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
||||
id = "wormholeprojector"
|
||||
req_tech = list("combat" = 6, "materials" = 6, "bluespace" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list("$silver" = 1000, "$metal" = 5000, "$diamond" = 3000)
|
||||
build_path = /obj/item/weapon/gun/energy/wormhole_projector
|
||||
locked = 1
|
||||
|
||||
datum/design/reciever
|
||||
name = "Modular Reciever"
|
||||
desc = "A prototype modular reciever and trigger assembly for a variety of firearms."
|
||||
|
||||
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 87 KiB |