mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-24 12:36:22 +01:00
@@ -92,3 +92,86 @@
|
||||
flick("harpoon-1-change",src)
|
||||
icon_state = "harpoon-2"
|
||||
transforming = 0
|
||||
|
||||
/obj/item/weapon/teleport_cane
|
||||
name = "Gentleman's Cane of Teleportation"
|
||||
desc = "Stylish, yet very functional"
|
||||
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "cane"
|
||||
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi')
|
||||
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
|
||||
origin_tech = list(TECH_BLUESPACE = 5)
|
||||
|
||||
var/mode = 1 // 1 mode - teleport you to turf 0 mode teleport turf to you
|
||||
var/last_fire = 0
|
||||
var/transforming = 0
|
||||
|
||||
/obj/item/weapon/teleport_cane/afterattack(atom/A, mob/user as mob)
|
||||
var/current_fire = world.time
|
||||
if(!user || !A)
|
||||
return
|
||||
if(transforming)
|
||||
to_chat(user,"<span class = 'warning'>You can't fire while \the [src] transforming!</span>")
|
||||
return
|
||||
if(!(current_fire - last_fire >= 30 SECONDS))
|
||||
to_chat(user,"<span class = 'warning'>\The [src] is recharging...</span>")
|
||||
return
|
||||
if(is_jammed(A) || is_jammed(user))
|
||||
to_chat(user,"<span class = 'warning'>\The [src] shot fizzles due to interference!</span>")
|
||||
last_fire = current_fire
|
||||
playsound(user, 'sound/weapons/wave.ogg', 60, 1)
|
||||
return
|
||||
var/turf/T = get_turf(A)
|
||||
if(!T || T.check_density())
|
||||
to_chat(user,"<span class = 'warning'>That's a little too solid to harpoon into!</span>")
|
||||
return
|
||||
var/turf/ownturf = get_turf(src)
|
||||
if(ownturf.z != T.z || get_dist(T,ownturf) > world.view)
|
||||
to_chat(user, "<span class='warning'>The target is out of range!</span>")
|
||||
return
|
||||
|
||||
last_fire = current_fire
|
||||
playsound(user, 'sound/weapons/wave.ogg', 60, 1)
|
||||
|
||||
user.visible_message("<span class='warning'>[user] fires \the [src]!</span>","<span class='warning'>You fire \the [src]!</span>")
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(4, 1, A)
|
||||
s.start()
|
||||
s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(4, 1, user)
|
||||
s.start()
|
||||
|
||||
var/turf/FromTurf = mode ? get_turf(user) : get_turf(A)
|
||||
var/turf/ToTurf = mode ? get_turf(A) : get_turf(user)
|
||||
|
||||
for(var/obj/O in FromTurf)
|
||||
if(O.anchored) continue
|
||||
if(prob(5))
|
||||
O.forceMove(pick(trange(24,user)))
|
||||
else
|
||||
O.forceMove(ToTurf)
|
||||
|
||||
for(var/mob/living/M in FromTurf)
|
||||
if(prob(5))
|
||||
M.forceMove(pick(trange(24,user)))
|
||||
else
|
||||
M.forceMove(ToTurf)
|
||||
|
||||
/obj/item/weapon/teleport_cane/attack_self(mob/living/user as mob)
|
||||
return chande_fire_mode(user)
|
||||
|
||||
/obj/item/weapon/teleport_cane/verb/chande_fire_mode(mob/user as mob)
|
||||
set name = "Change fire mode"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
if(transforming) return
|
||||
mode = !mode
|
||||
transforming = 1
|
||||
to_chat(user,"<span class = 'info'>You change \the [src]'s mode to [mode ? "transmiting" : "receiving"].</span>")
|
||||
|
||||
Reference in New Issue
Block a user