Skip to content

Xeno defensive grab#12542

Open
Drulikar wants to merge 7 commits into
cmss13-devs:masterfrom
Drulikar:xeno_defensive_grab
Open

Xeno defensive grab#12542
Drulikar wants to merge 7 commits into
cmss13-devs:masterfrom
Drulikar:xeno_defensive_grab

Conversation

@Drulikar

@Drulikar Drulikar commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

About the pull request

This PR gives an upgrade stage to xeno grab which is required before restraining (think of it like human chokehold state is now the restrain stage). Just like a normal aggressive grab, this will slow the puller down, but bullets intended for the grabbed target are redirected to the xeno as a defensive grab (there is no forced tackling like human aggressive grab tho). Bullets stop redirecting after the xeno is at 25% health or less but the grab remains in the upgraded state (I could drop/downgrade the grab but I figure it could just make capturing weirdly easy to interrupt just because you're low health). See first video.

In addition to above:

  • I also reduced some excessive isxeno calls in /obj/projectile/proc/handle_mob().
  • Attack logs and visible messages also indicate who the target was intended for in this situation.
  • Grab upgrades actually use their existing icons. (see second video)
  • Warrior no longer fights itself for being the puller
  • Standardized the implementation between xenos clicking self and clicking their dragged target
  • Reduced the grab upgrade delay for xenos to 0.4s

Explain why it's good for the game

Right now the meta is to kill marines who are being captured via friendly fire, but now xenos can optionally upgrade the grab to defend their target at the cost of pulling slower and obviously taking the damage instead. Acid will still splatter on their pulled target. It should just generally give more options for xenos and make it harder for marines to cheese.

Testing Photographs and Procedure

Screenshots & Videos

https://youtu.be/kGNXgyJ5RD0

https://youtu.be/J1G4Q-OX_-Q

Changelog

🆑 Drathek
balance: Xenos now can upgrade their grabs to a defensive grab which slows their speed but protects the target so long as the xeno has atleast 25% health. The upgraded grab is needed to restrain. (0.4s to upgrade instantly, 5s do_after to restrain)
fix: Grab upgrade icons now actually update
fix: Warriors now stop fighting themselves to be the puller of a mob
code: Standardized implementation between xenos clicking self and clicking their dragged target
/:cl:

@Drulikar Drulikar added Balance Approved This PR has had its balance and gameplay-affecting aspects approved. Cry to the Head-maint about it. Needs Testing Need to test it on the guinea pigs (production server) labels Jun 28, 2026
@github-project-automation github-project-automation Bot moved this to Awaiting Review in Review Backlog Jun 28, 2026
@cmss13-ci cmss13-ci Bot added Balance You need to be a professional veteran game maintainer to comprehend what is being done here. size/M Denotes a PR that changes 50-199 lines, ignoring generated files. labels Jun 28, 2026
@cmss13-ci cmss13-ci Bot added the Fix Fix one bug, make ten more label Jun 28, 2026
@Red-byte3D

Copy link
Copy Markdown
Contributor

just a fyi sometimes you double grab people as warrior on lunges, not exactly sure how it happens but might be good looking into

@Drulikar

Copy link
Copy Markdown
Contributor Author

just a fyi sometimes you double grab people as warrior on lunges, not exactly sure how it happens but might be good looking into

As far as I can tell this is just because the behavior when pulling something and you click what you've pulled on (regardless of intent) upgrades the intent (prior to this pr it'd try to restrain them). Does this for both humans and xenos.

BUT there is some jank for warrior and pulling here:

if(!QDELETED(living_mob) && !QDELETED(living_mob.pulledby) && living_mob != src ) //override pull of other mobs

living_mob is the wrong var to check to prevent breaking your own grip.

@private-tristan

Copy link
Copy Markdown
Contributor

I feel like this shouldn't be required to restrain a marine, or at least restraining a marine should automatically upgrade the grab to a defensive one

@Drulikar

Copy link
Copy Markdown
Contributor Author

I feel like this shouldn't be required to restrain a marine, or at least restraining a marine should automatically upgrade the grab to a defensive one

Restraining is already a "grab upgrade" effectively. But with a new grab upgrade stage, that obviously occurs before it. As I told someone else, I would rather see how this plays out instead of making restraining require some new form of interaction (e.g. click drag or something).

@cm13-github cm13-github added the Merge Conflict PR can't be merged because it touched too much code label Jul 2, 2026
@cm13-github

Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

# Conflicts:
#	code/modules/projectiles/projectile.dm
@cm13-github cm13-github removed the Merge Conflict PR can't be merged because it touched too much code label Jul 3, 2026
@cm13-github

Copy link
Copy Markdown
Contributor

Conflicts have been resolved. A maintainer will review the pull request shortly.

@cm13-github

cm13-github commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Test merge deployment history:

Test Merge Deployed @ 07/03/2026 04:25:24 +00:00:
Server Instance

CM13 Live

Revision

Origin: 6fcc629
Pull Request: c8e8d2c
Server: 5cc5540

Test Merge Updated @ 07/03/2026 05:47:46 +00:00:
Server Instance

CM13 Live

Revision

Origin: c46d658
Pull Request: c8e8d2c
Server: 1314284be0772b3898f23e9a311f9ba2689512bd

Test Merge Updated @ 07/03/2026 06:31:30 +00:00:
Server Instance

CM13 Live

Revision

Origin: c46d658
Pull Request: d5c3635
Server: c5f638b

Test Merge Updated @ 07/03/2026 07:18:14 +00:00:
Server Instance

CM13 Live

Revision

Origin: c46d658
Pull Request: d5c3635
Server: bad4ec5

Test Merge Updated @ 07/04/2026 00:53:24 +00:00:
Server Instance

CM13 Live

Revision

Origin: 37c049f
Pull Request: d5c3635
Server: 8011e8f7a77e656fbd26ed09fc88ab985e75a352

Test Merge Updated @ 07/04/2026 03:13:06 +00:00:
Server Instance

CM13 Live

Revision

Origin: 37c049f
Pull Request: c71e22d
Server: 5ef7c4f

Test Merge Updated @ 07/04/2026 03:24:45 +00:00:
Server Instance

CM13 Live

Revision

Origin: 82f219f
Pull Request: c71e22d
Server: 7331e71b0b432648028b2d8abf7a17bbc2ce499e

Test Merge Updated @ 07/04/2026 03:55:33 +00:00:
Server Instance

CM13 Live

Revision

Origin: bb16ac6
Pull Request: c71e22d
Server: b2128be42e0b24ea824c93f0fa4102b0f61bff91

Test Merge Updated @ 07/04/2026 05:26:35 +00:00:
Server Instance

CM13 Live

Revision

Origin: 6668a9e
Pull Request: c71e22d
Server: 8e82186

Test Merge Updated @ 07/04/2026 05:46:46 +00:00:
Server Instance

CM13 Live

Revision

Origin: 6668a9e
Pull Request: c71e22d
Server: 7bb46f9

Test Merge Updated @ 07/04/2026 06:57:35 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c71e22d
Server: d93cd41

Test Merge Updated @ 07/04/2026 07:14:57 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c71e22d
Server: d19887a

Test Merge Updated @ 07/04/2026 09:15:58 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c23567b
Server: 734871a

Test Merge Updated @ 07/04/2026 09:58:55 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c23567b
Server: 686c169

Test Merge Updated @ 07/04/2026 10:59:50 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c23567b
Server: 73ab40c

Test Merge Updated @ 07/04/2026 11:22:52 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c23567b
Server: 94bfdaf

Test Merge Updated @ 07/04/2026 11:30:54 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c23567b
Server: 312cc77

Test Merge Updated @ 07/04/2026 20:33:37 +00:00:
Server Instance

CM13 Live

Revision

Origin: 30f0449
Pull Request: c23567b
Server: 9b49176

Test Merge Updated @ 07/05/2026 02:05:47 +00:00:
Server Instance

CM13 Live

Revision

Origin: f4cbe98
Pull Request: c23567b
Server: 108b137a251249fb24c121e53f56549a0d1a4d0d

Test Merge Updated @ 07/05/2026 02:36:47 +00:00:
Server Instance

CM13 Live

Revision

Origin: 83b7e7a
Pull Request: c23567b
Server: 2fbfe8d2152d29e88da3f520d4d19f20ae510164

Test Merge Updated @ 07/05/2026 04:07:50 +00:00:
Server Instance

CM13 Live

Revision

Origin: 584ce29
Pull Request: c23567b
Server: 83b86abcc89dffce97601008fb9e6c79f8a04e63

Test Merge Updated @ 07/05/2026 06:16:15 +00:00:
Server Instance

CM13 Live

Revision

Origin: 584ce29
Pull Request: c23567b
Server: 4f94099

…e grab upgrade cooldown for xenos, and cleanup
@cmss13-ci cmss13-ci Bot added the Code Improvement Make the code longer label Jul 4, 2026
@Drulikar

Drulikar commented Jul 4, 2026

Copy link
Copy Markdown
Contributor Author

Corrected xeno projectiles being incorrectly redirected
image

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

Labels

Balance Approved This PR has had its balance and gameplay-affecting aspects approved. Cry to the Head-maint about it. Balance You need to be a professional veteran game maintainer to comprehend what is being done here. Code Improvement Make the code longer Fix Fix one bug, make ten more Needs Testing Need to test it on the guinea pigs (production server) size/M Denotes a PR that changes 50-199 lines, ignoring generated files.

Projects

Status: Awaiting Review

Development

Successfully merging this pull request may close these issues.

4 participants