Skip to content

ports some TG beartrap code over and reworks beartraps + security traps#11670

Open
SirNightKnight wants to merge 13 commits into
Monkestation:masterfrom
SirNightKnight:NK-beartrap
Open

ports some TG beartrap code over and reworks beartraps + security traps#11670
SirNightKnight wants to merge 13 commits into
Monkestation:masterfrom
SirNightKnight:NK-beartrap

Conversation

@SirNightKnight
Copy link
Copy Markdown
Collaborator

@SirNightKnight SirNightKnight commented May 21, 2026

About The Pull Request

ports: tgstation/tgstation#95267

broad bear trap changes

  • more wound damage
  • respects armor
  • takes time to arm/disarm
  • bulky when armed
  • drag slowdown
  • have a chance to be set off by items and projectiles if they are forceful enough
  • must be disarmed before being picked up

barbed bear traps

  • same 30 second breakout time as other traps

security trap

  • works off security records to trigger
  • can be emagged to sabotage it
  • can be emped to snap closed
  • no damage (unless emagged)
  • printable (costs a morderate variety of materials

THOSE WHO HAVE LEARNED THE WAYS OF CLEAN HAVE MASTERED THE ART OF BEAR TRAPS

image

Why It's Good For The Game

makes bear traps a bit more interesting and gives security another non-lethal option to detain criminals.

Changelog

🆑 timothymtorres, SirNightKnight
balance: balance: Beartraps are now much more lethal and can cause wounds. Space OSHA has also issued a warning that any clumsy people should avoid handling them after repeated mishaps.
balance: beartraps have a chance to be set off by items and projectiles if they are forceful enough.
balance: beartraps take time to arm and disarm. beartraps must be disarmed before being picked up.
balance: adds security traps. non-lethal bear traps that work off security records.
balance: barbed bear traps have a 30 second breakout time like other bear traps.
spellcheck: correctly gendered bear traps to be non-plural.
fix: bear traps respect armor.
/:cl:

Pre-Merge Checklist

  • You tested this on a local server.
  • This code did not runtime during testing.
  • You documented all of your changes.

@SirNightKnight SirNightKnight added Balance perfectly balanced as all things should be DEP:security labels May 22, 2026
@SirNightKnight SirNightKnight marked this pull request as ready for review May 22, 2026 01:04
@ChiefMonkengineer
Copy link
Copy Markdown
Contributor

ChiefMonkengineer commented May 22, 2026

Test merge deployment history:

Test Merge Deployed @ 05/22/2026 01:21:24 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: d8e7124
Pull Request: 1867efa
Server: 41d27ca64b3b63658f4e71a0dc577a037c165d28

Test Merge Updated @ 05/22/2026 17:51:24 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 90f4537
Pull Request: 426c660
Server: 1dadcd13162f99c044fab9a9e2d7f76ebed5f785

Test Merge Updated @ 05/22/2026 19:07:11 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 90f4537
Pull Request: 929dab6
Server: 845036007d30d24e847bbf35dbc9163c5190594f

Test Merge Updated @ 05/22/2026 19:31:46 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 8caeb66
Pull Request: 929dab6
Server: 57dc1811251c6cd380a9ded751ed9a5a03356b8e

Test Merge Updated @ 05/23/2026 05:09:35 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 98176e5
Pull Request: c4add55
Server: 224c2208a38614ed125e2a32a774ddf15c6e8854

Test Merge Updated @ 05/23/2026 18:01:47 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 98176e5
Pull Request: c4add55
Server: 1d694e833d77e69310d04ac8636a8a1bc6e4f2d3

Test Merge Updated @ 05/23/2026 18:11:08 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 98176e5
Pull Request: 81670c1
Server: 03c5a0fb9ea31ee15d50510d452bac28b15b53e6

Test Merge Updated @ 05/23/2026 19:41:16 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4531c91
Pull Request: 81670c1
Server: 8c5e5bbf2a20594f9369c5fc695663a97266e87d

Test Merge Updated @ 05/23/2026 22:04:38 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: d7208e8
Pull Request: a9cbf15
Server: 3393141b631a07d6d4f70b3afdab470f896d08de

Test Merge Updated @ 05/24/2026 15:33:05 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 1a98021
Pull Request: a9cbf15
Server: fffbedab58dc2c9572040c1114f897030c592080

Test Merge Updated @ 05/25/2026 15:26:09 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 1fed1f7
Pull Request: 4d350b8
Server: ae4140b311e70afe13af7b51bf72ffae645d25ba

Test Merge Updated @ 05/25/2026 19:41:23 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 1fed1f7
Pull Request: 4d350b8
Server: d31f10a01d14bbc121ddb05f492b05778a84a6a9

Test Merge Updated @ 05/26/2026 02:04:15 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 1fed1f7
Pull Request: 4d350b8
Server: 0ce0b9aae5be97e0c208e1bc19e38d5a86ae07f6

Test Merge Updated @ 05/26/2026 02:20:14 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: c4e1510
Pull Request: 4d350b8
Server: 22ffafab9dd9039613dda71d717aaf8342a9cee1

Test Merge Updated @ 05/26/2026 17:42:59 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4b8bbd7
Pull Request: 4d350b8
Server: 6e4e09efc1c3cae7b5c20686c36abfafaa96b754

Test Merge Updated @ 05/26/2026 23:11:26 +00:00:
Server Instance

Monkestation

Merged By

CheffieGithub

Revision

Origin: 236c8b0
Pull Request: 4d350b8
Server: 0ffb177ca853bb405ae7ae63aa1daea4a2953f66

Test Merge Updated @ 05/27/2026 19:26:24 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: f92a358
Pull Request: 4d350b8
Server: 62b265026bc57029e1b77ff957e7df7bef3e19e0

Test Merge Updated @ 05/28/2026 00:29:30 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4da5bf9
Pull Request: 4d350b8
Server: 1145917b50d03edd5a88fa01c64baf605844eb60

Test Merge Updated @ 05/28/2026 01:00:10 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4da5bf9
Pull Request: 4d350b8
Server: 1755a826e2ab8fda02243accae50c169b62377ae

Test Merge Updated @ 05/28/2026 03:54:58 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 99d8b28
Pull Request: 4d350b8
Server: 3eef63e7c782f880a285fe4a409e36c4bd449a6a

Test Merge Updated @ 05/28/2026 04:16:35 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 57f74a2
Pull Request: 4d350b8
Server: 7941f49208a034c1fd94701ab4606e9503caa1c2

Test Merge Updated @ 05/28/2026 17:04:13 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: b2815de
Pull Request: 4d350b8
Server: 3f27d315a9204cf37b5e02b76d4d568777c227bc

Test Merge Updated @ 05/28/2026 18:04:45 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4f12377
Pull Request: 4d350b8
Server: 7504ded65a9c19db5331868fdaea9ee83dd5ed5f

Test Merge Updated @ 05/28/2026 21:24:03 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4f12377
Pull Request: 4d350b8
Server: 0be53f41a2e2819ab2ac54984ad547330be4fff8

Test Merge Updated @ 05/28/2026 21:54:09 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4f12377
Pull Request: 4d350b8
Server: 0aa994dac54397ebdb3b159fa140d0747e7d6be5

Test Merge Updated @ 05/28/2026 22:12:15 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: d1d7784
Pull Request: 4d350b8
Server: fa2dc9a41e3d0814819f3c020e8d58023b07940e

Test Merge Updated @ 05/28/2026 22:51:50 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 965f539
Pull Request: 4d350b8
Server: 4db71cd50412cecc5ecef02895254572cfd5fd9d

Test Merge Updated @ 05/28/2026 23:33:26 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 965f539
Pull Request: 4d350b8
Server: e296dbf969173454e3aa78ac2344e46d2ec5bff7

Test Merge Updated @ 05/29/2026 01:52:06 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: b10c7a1
Pull Request: 4d350b8
Server: 8013fd1fcd33b97d185e5238a5d2bb9dbf5ab61d

Test Merge Updated @ 05/29/2026 06:22:33 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 0fc48f0
Pull Request: 4d350b8
Server: 8a8a9d9de926ca4ff815de6aad671f54c96af20c

Test Merge Updated @ 05/29/2026 06:33:53 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 0fc48f0
Pull Request: 4d350b8
Server: fbf884d1067b9b1beceacfb066052856371b6368

Test Merge Updated @ 05/30/2026 03:50:03 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4eb74ca
Pull Request: 4d350b8
Server: 4c1ad188a5361b3ae2e975eaf66aa6787a167890

Test Merge Updated @ 05/30/2026 04:18:45 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: a2ed753
Pull Request: 4d350b8
Server: 5cc42171ede8334422a7c674a1e558cbf19a5569

Test Merge Updated @ 05/30/2026 04:26:32 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: a690160
Pull Request: 4d350b8
Server: 45f4e28b3e61f49a4b2946a54fbcecb616144264

Test Merge Updated @ 05/30/2026 15:48:20 +00:00:
Server Instance

Monkestation

Merged By

CheffieGithub

Revision

Origin: e0f23ca
Pull Request: 4d350b8
Server: 6a94cbfe248cb2efd3bdfea2f43653a4e92d8048

Test Merge Updated @ 05/30/2026 18:45:39 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: c38ad3c
Pull Request: 4d350b8
Server: ee878f10c837210138e3dec8d23ebd04a44c6728

Test Merge Updated @ 05/30/2026 18:49:07 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: fa81ea5
Pull Request: 4d350b8
Server: 0c7c23a5651944af63e6095f4e35f5231fda6717

Test Merge Updated @ 05/30/2026 19:55:38 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: fa81ea5
Pull Request: 4d350b8
Server: c5a8e5cfac20f85cb7d84c440881eb18af36c50e

Test Merge Updated @ 05/30/2026 20:28:48 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 94217c0
Pull Request: 4d350b8
Server: 42ba3189cbdc9a0d7519c70681af17fb0a6a128c

Test Merge Updated @ 05/30/2026 21:38:04 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 94217c0
Pull Request: 4d350b8
Server: 70c113e61f045bcd21938ce1893a9ac0638cb70e

Test Merge Updated @ 05/31/2026 03:02:16 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: be3cc20
Pull Request: 4d350b8
Server: 35aa650be7d16f4406e822165b5f8abdda585ed6

Test Merge Updated @ 05/31/2026 06:45:43 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 2bc126c
Pull Request: 4d350b8
Server: 5c93095d2ea0cac0ca1dfb062202091a6d417395

Test Merge Updated @ 05/31/2026 06:57:56 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 5dc4f29
Pull Request: 4d350b8
Server: 8fe7f0f9dd03520ad5c529433edbb23a5f514825

Test Merge Updated @ 05/31/2026 07:28:51 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 50b3915
Pull Request: 4d350b8
Server: 2d2432cbaba0895b5c9f4f4560106ad29803bf83

Test Merge Updated @ 05/31/2026 19:50:59 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 005a558
Pull Request: 4d350b8
Server: 01b8f4d9169ee989992d8e086250c0daed72191e

Test Merge Updated @ 05/31/2026 20:28:03 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 005a558
Pull Request: 4d350b8
Server: 153195d559829c9731070658c5718862babeec1d

Test Merge Updated @ 05/31/2026 22:16:17 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 005a558
Pull Request: 4d350b8
Server: 2713eaba5f8b3de39960c05f2fff88ff6c1ddf4e

Test Merge Updated @ 06/01/2026 05:28:31 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 1f56751
Pull Request: 4d350b8
Server: de6a8e59a580f729548761604951b168ed6b7737

Test Merge Updated @ 06/01/2026 19:57:30 +00:00:
Server Instance

Monkestation

Merged By

sirnightknight

Revision

Origin: 4b1e707
Pull Request: 4d350b8
Server: 0fad7d4c415aedebf36d70ca579cefd7f1c999ef

@SirNightKnight
Copy link
Copy Markdown
Collaborator Author

trying to make the security traps hard to spam out so im open to suggestions on that. could lock it behind cargo

@RG4ORDR
Copy link
Copy Markdown

RG4ORDR commented May 23, 2026

If this makes clumsy make them more dangerous then Slasher is gonna get an indirect nerf because they have clumsy(for some weird reason).

CheffieGithub pushed a commit that referenced this pull request May 30, 2026
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
title
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
in #11670 i made
bear traps have a chance to snap on you if you're clumsy and slashers
uses bear traps sooo....
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

:cl:
balance: slashers are no longer clumsy, instead they can't use guns.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

## Pre-Merge Checklist
<!-- Don't bother filling these in while creating your Pull Request,
just click the checkboxes after the Pull Request is opened and you are
redirected to the page. -->
- [ ] You tested this on a local server.
- [ ] This code did not runtime during testing.
- [ ] You documented all of your changes.
<!-- Neither the compiler nor workflow checks are perfect at detecting
runtimes and errors. It is important to test your code/feature/fix
locally. -->
Comment on lines +507 to +513
var/is_expert = FALSE
if(user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_MASTER)
is_expert = TRUE
if(!is_expert)
if(!do_after(user, 3 SECONDS, src))
user.balloon_alert(user, "interrupted!")
return
Copy link
Copy Markdown
Collaborator

@CheffieGithub CheffieGithub May 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var/is_expert = FALSE
if(user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_MASTER)
is_expert = TRUE
if(!is_expert)
if(!do_after(user, 3 SECONDS, src))
user.balloon_alert(user, "interrupted!")
return
var/is_expert = user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_MASTER
if(!is_expert && !do_after(user, 3 SECONDS, src))
user.balloon_alert(user, "interrupted!")
return

Comment on lines +532 to +538
var/is_expert = FALSE
if(user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_MASTER)
is_expert = TRUE
if(!is_expert)
if(!do_after(user, 5 SECONDS, src))
user.balloon_alert(user, "interrupted!")
return
Copy link
Copy Markdown
Collaborator

@CheffieGithub CheffieGithub May 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var/is_expert = FALSE
if(user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_MASTER)
is_expert = TRUE
if(!is_expert)
if(!do_after(user, 5 SECONDS, src))
user.balloon_alert(user, "interrupted!")
return
var/is_expert = user.mind?.get_skill_level(/datum/skill/cleaning) >= SKILL_LEVEL_MASTER
if(!is_expert && !do_after(user, 3 SECONDS, src))
user.balloon_alert(user, "interrupted!")
return


set_arm(FALSE, user, FALSE)


Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

return ..()

/// Extra checks for if the trap should close on the victim. Used by subtypes mostly.
/obj/item/restraints/legcuffs/beartrap/proc/is_valid_salad(mob/living/carbon/victim)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/obj/item/restraints/legcuffs/beartrap/proc/is_valid_salad(mob/living/carbon/victim)
/obj/item/restraints/legcuffs/beartrap/proc/can_close_on(mob/living/carbon/victim)

desc = "A rubber padded trap used to catch criminals non-lethally. Relies on security record data to function."
id = "security_trap"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma =SMALL_MATERIAL_AMOUNT*5, /datum/material/titanium =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*5)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma =SMALL_MATERIAL_AMOUNT*5, /datum/material/titanium =SMALL_MATERIAL_AMOUNT*5, /datum/material/silver =SMALL_MATERIAL_AMOUNT*5, /datum/material/gold =SMALL_MATERIAL_AMOUNT*5)
materials = list(
/datum/material/plastic = SHEET_MATERIAL_AMOUNT,
/datum/material/iron = SHEET_MATERIAL_AMOUNT,
/datum/material/plasma =SMALL_MATERIAL_AMOUNT*5,
/datum/material/titanium =SMALL_MATERIAL_AMOUNT*5,
/datum/material/silver =SMALL_MATERIAL_AMOUNT*5,
/datum/material/gold =SMALL_MATERIAL_AMOUNT*5,
)

Comment on lines +647 to +653
do_sparks(rand(1,3), FALSE, src)
if(!ismob(loc))
do_sparks(1, TRUE, src)
qdel(src)
if(isturf(loc))
close_trap()
visible_message(span_warning("\The [src] overloads!"))
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
do_sparks(rand(1,3), FALSE, src)
if(!ismob(loc))
do_sparks(1, TRUE, src)
qdel(src)
if(isturf(loc))
close_trap()
visible_message(span_warning("\The [src] overloads!"))
do_sparks(rand(1, 3), FALSE, src)
visible_message(span_warning("\The [src] overloads!"))
if(!isturf(loc))
do_sparks(1, TRUE, src)
qdel(src)
return
close_trap()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Balance perfectly balanced as all things should be DEP:security

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

4 participants