Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

/tg/ Status effects part 1 - fluid status updates #4828

Merged
merged 65 commits into from
Nov 27, 2023

Conversation

fira
Copy link
Member

@fira fira commented Nov 2, 2023

image
CM Dev figured it out 9 years ago and nobody listened and kept tacking illogical conditions

About the pull request

Builds on previous "prelude" PRs in the following steps:

  • Ports /tg/ body_position and mobility_flags
  • Fixes some interaction requirements to use stun/mobility rather than lying/knocked_down
  • Ports /tg/ granular status updates, ie. status propagating through handlers and signals. This includes changes to resting, buckling, and lying down human transforms.
  • Wires our status effect system to it directly
  • Removes update_canmove from existence completely as not needed anymore

Because step 1 and 2 require updating all the gameplay logic using them, this PR modifies a lot of files.

Part 2 will move the actual status effects to /tg/ status_effects, resolving our timing problems.

Testing Photographs and Procedure

Testing Checklist!
  • Basic Movement
  • Admin Freeze Prevents Movement
  • Resting, Getting Up
  • Xenos change icon when resting
  • Buckling, including bed rotation and propelled chairs
  • Crawling Movement including sprite movement
  • Aggressive, Choke Grabbing, and Fireman carry apply rotation
  • Xeno Pounce and Abduct properly freeze both target and caster
  • Double dropship seats density update
  • Explosive knockout on Humans
  • Xeno burrow density and movement interactions
  • Xeno nest interactions, specifically confirm density changes work
  • Xeno nest bullet hits doublecheck with snowflake trait check
  • Combat Xeno knockouts knockdown and sprite updates
  • Sleeping, Waking up, Usage of items while sleeping - Can't really test this we have almost no sleep code
  • Arbitrary buckling rotations
  • Admin-set transforms work with buckling/lying
  • All the broken objects that will only be found out in Testmerge

Changelog

🆑
code: Ported basic /tg/ Status Backend.
add: Human transform changes such as lying down, knock down, buckling, are now animated.
fix: Some statuses will now take effect immediately instead of waiting for a life tick, notably Resting.
balance: Many interaction requirements were changed to eg. fail upon stuns rather than if lying down.
/:cl:

@github-actions github-actions bot added Code Improvement Make the code longer Fix Fix one bug, make ten more Balance You need to be a professional veteran game maintainer to comprehend what is being done here. labels Nov 2, 2023
@morrowwolf
Copy link
Member

Looks good TM it

✔️

code/_onclick/human.dm Outdated Show resolved Hide resolved
@cm13-github cm13-github added the Merge Conflict PR can't be merged because it touched too much code label Nov 3, 2023
@cm13-github
Copy link
Contributor

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

@cm13-github
Copy link
Contributor

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

@cm13-github cm13-github removed the Merge Conflict PR can't be merged because it touched too much code label Nov 4, 2023
@fira
Copy link
Member Author

fira commented Nov 7, 2023

Will break down what little i can in other PRs first so they can get reviewed

@fira fira marked this pull request as draft November 7, 2023 17:45
@cm13-github cm13-github removed the Merge Conflict PR can't be merged because it touched too much code label Nov 22, 2023
@cm13-github
Copy link
Contributor

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

code/datums/diseases/flu.dm Outdated Show resolved Hide resolved
@cm13-github
Copy link
Contributor

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

@cm13-github cm13-github added the Merge Conflict PR can't be merged because it touched too much code label Nov 25, 2023
@cm13-github
Copy link
Contributor

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

@cm13-github cm13-github removed the Merge Conflict PR can't be merged because it touched too much code label Nov 25, 2023
@restedwaves restedwaves mentioned this pull request Nov 26, 2023
3 tasks
@BadAtThisGame302 BadAtThisGame302 mentioned this pull request Nov 26, 2023
3 tasks
@harryob harryob added this pull request to the merge queue Nov 27, 2023
Merged via the queue into cmss13-devs:master with commit a955791 Nov 27, 2023
26 checks passed
cm13-github added a commit that referenced this pull request Nov 27, 2023
github-merge-queue bot pushed a commit that referenced this pull request Dec 19, 2023
# About the pull request

<!-- Remove this text and explain what the purpose of your PR is.

Mention if you have tested your changes. If you changed a map, make sure
you used the mapmerge tool.
If this is an Issue Correction, you can type "Fixes Issue #169420" to
link the PR to the corresponding Issue number #169420.

Remember: something that is self-evident to you might not be to others.
Explain your rationale fully, even if you feel it goes without saying.
-->

Part 2 - this includes porting the actual status_effect datum, modifying
it to fit our purposes by backing it with timers similarly to old
system, and finally implementing KD, KO and Stun with it.

This contains Part 1 PR (#4828) so if you want to take a look at it I'd
advise checking the last commits or setting up a compare between both
branches.

# Explain why it's good for the game
Predictable status timers. Current ones are bogus in their handling of
"life tick correction" and will "stack" time even when they're not
supposed to.

Also provides a more robust backend for general effects, and integrates
status effects into it.

# Testing Photographs and Procedure

Summary testing of buckling interactions, explosion knock times,
crawling, resting. Will have to be expanded once part 1 is ready


# Changelog
:cl:
add: Added Buckled, Handcuffed and Legcuffed screen alerts
code: Ported /tg/ status effects backend, modified with timers to let
effects end at appropriate time
code: Stun, Knockdown and Knockout now use the new effects backend
balance: Due to backend change, all KO/KD/Stuns may behave differently
timing wise. This is of course subject to adjustments.
balance: Endurance is now set at 8% effect duration reduction per level
above 1. However it now compounds with species bonus. Feel free to
adjust.
balance: Knockdowns are not inherently incapacitating anymore and many
sources of it have been updated to also stun to make up for it.
fix: KO/KD/Stuns do not artificially and randomly ''stack'' due to
incorrect timer offset calculation anymore.
fix: Stuns now correctly apply Stun reduction values instead of
Knockdown reductions.
fix: Crawling can now be interrupted by a normal move, if you are fit
enough to do so.
/:cl:

---------

Co-authored-by: forest2001 <[email protected]>
fira added a commit to fira/cmss13 that referenced this pull request Jan 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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 Testmerge Candidate we'll test this while you're asleep and the server has 10 players
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants