Files
CHOMPStation2/code/game/objects/items/weapons/weaponry.dm
CHOMPStation2StaffMirrorBot 2d0719a4d4 [MIRROR] some dropped sanity (#9856)
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-01-12 17:34:37 +01:00

138 lines
3.9 KiB
Plaintext

/obj/item/nullrod
name = "null rod"
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae."
icon_state = "nullrod"
item_state = "nullrod"
slot_flags = SLOT_BELT
force = 15
throw_speed = 1
throw_range = 4
throwforce = 10
w_class = ITEMSIZE_SMALL
drop_sound = 'sound/items/drop/sword.ogg'
pickup_sound = 'sound/items/pickup/sword.ogg'
/obj/item/nullrod/attack(mob/M as mob, mob/living/user as mob) //Paste from old-code to decult with a null rod.
add_attack_logs(user,M,"Hit with [src] (nullrod)")
user.setClickCooldown(user.get_attack_speed(src))
user.do_attack_animation(M)
if (!user.IsAdvancedToolUser())
to_chat(user, span_danger("You don't have the dexterity to do this!"))
return
if ((CLUMSY in user.mutations) && prob(50))
to_chat(user, span_danger("The rod slips out of your hand and hits your head."))
user.take_organ_damage(10)
user.Paralyse(20)
return
if (M.stat !=2)
if(cult && (M.mind in cult.current_antagonists) && prob(33))
to_chat(M, span_danger("The power of [src] clears your mind of the cult's influence!"))
to_chat(user, span_danger("You wave [src] over [M]'s head and see their eyes become clear, their mind returning to normal."))
cult.remove_antagonist(M.mind)
M.visible_message(span_danger("\The [user] waves \the [src] over \the [M]'s head."))
else if(prob(10))
to_chat(user, span_danger("The rod slips in your hand."))
..()
else
to_chat(user, span_danger("The rod appears to do nothing."))
M.visible_message(span_danger("\The [user] waves \the [src] over \the [M]'s head."))
return
/obj/item/nullrod/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity)
return
if (istype(A, /turf/simulated/floor))
to_chat(user, span_notice("You hit the floor with the [src]."))
call(/obj/effect/rune/proc/revealrunes)(src)
/obj/item/energy_net
name = "energy net"
desc = "It's a net made of green energy."
icon = 'icons/effects/effects.dmi'
icon_state = "energynet"
throwforce = 0
force = 0
var/net_type = /obj/effect/energy_net
/obj/item/energy_net/dropped(mob/user)
..()
spawn(10)
if(src) qdel(src)
/obj/item/energy_net/throw_impact(atom/hit_atom)
..()
var/mob/living/M = hit_atom
if(!istype(M) || locate(/obj/effect/energy_net) in M.loc)
qdel(src)
return 0
var/turf/T = get_turf(M)
if(T)
var/obj/effect/energy_net/net = new net_type(T)
if(net.buckle_mob(M))
T.visible_message("[M] was caught in an energy net!")
qdel(src)
// If we miss or hit an obstacle, we still want to delete the net.
spawn(10)
if(src) qdel(src)
/obj/effect/energy_net
name = "energy net"
desc = "It's a net made of green energy."
icon = 'icons/effects/effects.dmi'
icon_state = "energynet"
density = TRUE
opacity = 0
mouse_opacity = 1
anchored = FALSE
can_buckle = TRUE
buckle_lying = 0
buckle_dir = SOUTH
var/escape_time = 8 SECONDS
/obj/effect/energy_net/New()
..()
START_PROCESSING(SSobj, src)
/obj/effect/energy_net/Destroy()
if(has_buckled_mobs())
for(var/A in buckled_mobs)
to_chat(A, span_notice("You are free of the net!"))
unbuckle_mob(A)
STOP_PROCESSING(SSobj, src)
return ..()
/obj/effect/energy_net/process()
if(!has_buckled_mobs())
qdel(src)
/obj/effect/energy_net/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
user.setClickCooldown(user.get_attack_speed())
visible_message(span_danger("[user] begins to tear at \the [src]!"))
if(do_after(user, escape_time, src, incapacitation_flags = INCAPACITATION_DEFAULT & ~(INCAPACITATION_RESTRAINED | INCAPACITATION_BUCKLED_FULLY)))
if(!has_buckled_mobs())
return
visible_message(span_danger("[user] manages to tear \the [src] apart!"))
unbuckle_mob(buckled_mob)
/obj/effect/energy_net/post_buckle_mob(mob/living/M)
if(M.buckled == src) //Just buckled someone
..()
layer = M.layer+1
M.can_pull_size = 0
else //Just unbuckled someone
M.can_pull_size = initial(M.can_pull_size)
qdel(src)