mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Reworks Bear Traps (#21941)
* beartrap trigger on find * fixed an oversight * Update code/game/objects/items/weapons/legcuffs.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * 2 second timer for arming a trap * Update code/game/objects/items/weapons/legcuffs.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * adjust breakout time * apply extra damage if bear * 15% to delimb on opening bag * reverts delimb * first set of review changes * small adjustment * spring_trap proc work * spring_trap first pass * spring_trap take two * code formatting and simple mob damage * Update code/game/objects/items/weapons/legcuffs.dm Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com> * review fixes * Apply suggestions from code review Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * a little code cleaing for review * Update code/game/objects/items/weapons/legcuffs.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> * Update code/game/objects/items/weapons/legcuffs.dm Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com> --------- Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com> Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
co-authored by
DGamerL
Charlie
Henri215
parent
a1c9f95a3f
commit
4150373d43
@@ -10,7 +10,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
origin_tech = "engineering=3;combat=3"
|
||||
slowdown = 7
|
||||
breakouttime = 300 //Deciseconds = 30s = 0.5 minute
|
||||
breakouttime = 30 SECONDS
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap
|
||||
name = "bear trap"
|
||||
@@ -19,6 +19,7 @@
|
||||
icon_state = "beartrap0"
|
||||
desc = "A trap used to catch bears and other legged creatures."
|
||||
origin_tech = "engineering=4"
|
||||
breakouttime = 20 SECONDS
|
||||
var/armed = FALSE
|
||||
var/trap_damage = 20
|
||||
///Do we want the beartrap not to make a visable message on arm? Use when a beartrap is applied by something else.
|
||||
@@ -41,7 +42,11 @@
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/attack_self(mob/user)
|
||||
..()
|
||||
if(ishuman(user) && !user.stat && !user.restrained())
|
||||
|
||||
if(!ishuman(user) || user.restrained())
|
||||
return
|
||||
|
||||
if(do_after(user, 2 SECONDS, target = user))
|
||||
armed = !armed
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
to_chat(user, "<span class='notice'>[src] is now [armed ? "armed" : "disarmed"]</span>")
|
||||
@@ -94,42 +99,58 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/Crossed(AM as mob|obj, oldloc)
|
||||
if(armed && isturf(src.loc))
|
||||
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !isconstruct(AM) && !isshade(AM) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
|
||||
var/mob/living/L = AM
|
||||
armed = FALSE
|
||||
update_icon()
|
||||
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
if(!silent_arming)
|
||||
L.visible_message("<span class='danger'>[L] triggers \the [src].</span>", \
|
||||
"<span class='userdanger'>You trigger \the [src]!</span>")
|
||||
if(!armed || !isturf(loc))
|
||||
return ..()
|
||||
|
||||
if(IED && isturf(src.loc))
|
||||
IED.active = TRUE
|
||||
message_admins("[key_name_admin(usr)] has triggered an IED-rigged [name].")
|
||||
log_game("[key_name(usr)] has triggered an IED-rigged [name].")
|
||||
spawn(IED.det_time)
|
||||
IED.prime()
|
||||
|
||||
if(sig && isturf(src.loc))
|
||||
sig.signal()
|
||||
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(IS_HORIZONTAL(H))
|
||||
H.apply_damage(trap_damage, BRUTE,"chest")
|
||||
else
|
||||
H.apply_damage(trap_damage, BRUTE,(pick("l_leg", "r_leg")))
|
||||
if(!H.legcuffed && H.get_num_legs() >= 2) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
|
||||
H.legcuffed = src
|
||||
forceMove(H)
|
||||
H.update_inv_legcuffed()
|
||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||
var/mob/living/L = AM
|
||||
if((iscarbon(AM) || isanimal(AM)) && !L.flying)
|
||||
spring_trap(AM)
|
||||
|
||||
if(ishuman(AM))
|
||||
var/mob/living/carbon/H = AM
|
||||
if(IS_HORIZONTAL(H))
|
||||
H.apply_damage(trap_damage, BRUTE, "chest")
|
||||
else
|
||||
L.apply_damage(trap_damage, BRUTE)
|
||||
H.apply_damage(trap_damage, BRUTE, pick("l_leg", "r_leg"))
|
||||
if(!H.legcuffed && H.get_num_legs() >= 2) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
|
||||
H.legcuffed = src
|
||||
forceMove(H)
|
||||
H.update_inv_legcuffed()
|
||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||
else
|
||||
if(istype(L, /mob/living/simple_animal/hostile/bear))
|
||||
L.apply_damage(trap_damage * 2.5, BRUTE)
|
||||
else
|
||||
L.apply_damage(trap_damage * 1.75, BRUTE)
|
||||
..()
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/on_found(mob/finder)
|
||||
if(!armed)
|
||||
return FALSE
|
||||
spring_trap(finder)
|
||||
|
||||
if(ishuman(finder))
|
||||
var/mob/living/carbon/H = finder
|
||||
H.apply_damage(trap_damage, BRUTE, pick("l_hand", "r_hand"))
|
||||
return TRUE
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/proc/spring_trap(mob/user)
|
||||
armed = FALSE
|
||||
update_icon()
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, TRUE)
|
||||
if(!silent_arming)
|
||||
user.visible_message("<span class='danger'>[user] triggers [src].</span>", "<span class='userdanger'>You trigger [src].</span>")
|
||||
|
||||
if(sig)
|
||||
sig.signal()
|
||||
|
||||
if(IED)
|
||||
IED.active = TRUE
|
||||
message_admins("[key_name_admin(usr)] has triggered an IED-rigged [name].")
|
||||
log_game("[key_name(usr)] has triggered an IED-rigged [name].")
|
||||
spawn(IED.det_time)
|
||||
IED.prime()
|
||||
|
||||
/obj/item/restraints/legcuffs/beartrap/energy
|
||||
name = "energy snare"
|
||||
armed = TRUE
|
||||
|
||||
Reference in New Issue
Block a user