Skip to content

Tank Desant: Hardpoint Rebalances, Additions & Reworks#12586

Draft
SunriseOverYourHead wants to merge 68 commits into
cmss13-devs:masterfrom
SunriseOverYourHead:tankRebalances
Draft

Tank Desant: Hardpoint Rebalances, Additions & Reworks#12586
SunriseOverYourHead wants to merge 68 commits into
cmss13-devs:masterfrom
SunriseOverYourHead:tankRebalances

Conversation

@SunriseOverYourHead

@SunriseOverYourHead SunriseOverYourHead commented Jul 4, 2026

Copy link
Copy Markdown

About the pull request

Depends upon #10580 AND should be PR'd onto it, not onto master, otherwise Desant's commits will show up.
This is a separate, atomized PR to make it easier for maintainers to review it.
Commits are ATOMIZED. Please review the PR through them, starting from c657a89

Extensively tested in a private server. Don't take my word for it. Download the branch and try to find a major bug/glitch.

Full list of changes:

  • Switches the Longstreet Tank's dir-based aiming into a more realistic approach where the turret swivels around the hull in real time, in accordance with the Gunner's mouse position.

  • Inertia-based turning: Longer turns are faster, can overshoot. Etc. Just like a real turret drive

  • Enables secondary-hardpoint slaving to the Driver, who can now fire in a limited (120º) degrees arc based on wherever the Gunner is aiming.

  • LZR-N & DRG-N; AKA, Primary and Secondary flamers: They now both support 'fire mode' switching (GLOB and STREAM) just like a nozzle'd M240 flamer.

  • LZR-N & DRG-N: Now support custom fuel mixtures. CLF3. HCN. Sticky Napalm. Naphta. Research Chems. Welding Fuel. This also comes with a more realistic fuel consumption modelling. The fuel economy for the primary wasn't tweaked: DRG-N can still only take 60 GLOB shots; LZR-N has the exact same fuel economy as the M240.

  • LTB: The dreaded hardpoint that some believe to be 'unbalanceable'. I disagree. Here is a solution that is both balanced and SOVL: Utilizes a sniper-like aiming with a 5 second wind-up. Can not stun queen or King anymore. Can still stun T3s. 300 damage with two separate fall-offs. Slightly more powerful than a SADAR HE ROCKET in practice. If a target runs around it too fast, it can break the lock by out-swiveling the turret. Aiming gets blocked by smoke and walls, just like a normal sniper aimed shot. See the video to understand how it works. Unlike the previous LTB, this is now atrocious at close-range as any xeno can just spin around you to lose the lock. No way to speed up the lock, but you can fire on the move, provided you can continue tracking your target.

  • LTB Single-Shells: Does away with LTB magazines and instead uses single shells for a more cumbersome, yet satisfying reloading. Sprites are a courtesy of holdemann.

  • Lock-On mechanic for LTB and Brute: The turret automatically swivels to track targets whom the gunner is aiming towards. Lock-on is maintained simply by selecting a target and holding LMB. Accidentally locked a marine on? Simply stop holding your mouse.

  • NEW Secondary hardpoint: Mounted UA Flag. Acts like a mixture of a Warbanner & Extended JIMA flag. Marines within a range of 11 get buffed. CAS can run FMs off of it. The trade-off is that it is dead-weight with Driver Slaving.

  • NEW Secondary hardpoint: Mounted BRUTE Launcher: Works exactly like a normal BRUTE. Even takes the same rockets that handheld brutes take, except this one can be fired on the move.

  • M56D: Does away with its snowflake-y, tank-only ammo boxes and now accepts regular M56D drums.

  • Grenade Launcher: No changes aside from adding pivot vars for the sprite rotations

  • Turret Flare Launcher: Replaces the turret smoke launcher; Fires star shells. Can be refilled both with star shell packets or with loose starshell airbursts. Robust error handling to ensure only the necessary amount of grenades is taken from packets.

  • Autocannon Rebalance: Once unfun for marines and annoying for xenos, it is now the de-facto easy-to-use, powerful option for new players. Damage buffed to 140. Fire rate halved. Applies a micro-stun (Like the second shot of an AMR) to non-big xenos. Removes the sniper flak code which allowed it to execute capped marines & kill xenos behind cover; replaces it with actual HEFA-like flak. Reduces the close-range acc penalty to 3 tiles rather than 4.

Obs - !! Generally, same kill time as an AP MK2 if all shots land. !!

  • Minigun Rebalance: Once incredibly frustrating for gunners and unbalanced at max wind-up, it is now a 'close-range', high-risk, high-reward primary option. Scatter was severely reduced. Spinup was shortened to 3 seconds from 10. Starting RoF is higher. However, beyond 4 tiles of range, it suffers from a horrible damage falloff: Halved at 7 tiles; 100% damage loss at 10. This should be much less situational to use but will require for tank crews to get right in the face of action.

Obs - !! Generally, same kill time as an AP MK2 if all shots land, counting the spin-up period !!

  • All tank weapons: Gained IFF. Playing around the Tank should be LESS frustrating for marines, not more.

  • Vehicle Intercom: Long requested feature from the Desant testmerges: Tank Crew and marines outside can now communicate with one another. Tank intercomm is located under the telephone and the speaker and microphone can be muted. Thanks for the suggestion: https://forum.cm-ss13.com/t/give-the-tank-better-communication-options/18621

  • Debug Tools: This one is for maintainers: Two new DEBUG verbs: One cycles through all tank hardpoints, in order. The other allows you to manually set pivot offsets and pixel-shifts, to aid anyone who also wants to develop new hardpoints and make them compatible with the turret rotations.

  • Tyargo Map Change?????? Removes the smoke launcher ammo in Tyargo and replaces it with starshell boxes. That's it.

Explain why it's good for the game

A large portion of the playerbase enjoys combined arms content. However, there are issues that keep it restricted to a 200 pop cap, where it exists as an 'easter egg' rather than core gameplay content.

The problem, as I understand it today, is threefold:

  • Maneuvering around 3x3 mobile walls is a pain. This is addressed by Tank Desant: Rideable Tank And Overhauled Interactions #10580 There is still a real movement burden by having the tank supporting a push, but the issue is much, much better than it was in the past. Don't take my word for it. The three public feedback surveys are available in the Tank Desant contributor thread in Discord.

  • The Longstreet was effectively unmaintained and its offensive hardpoints and weapons feel underwhelming. This is addressed by this PR. This is generally a pretty big buff both in the QoL, effectiveness and time-to-kill department of all offensive hardpoints, while also rebalancing and modernizing the LTB which continued to be overpowered in its previous state.

  • There is a lack of xeno counterplay and feedback for their damage. This will be addressed in my third PR. The goal will be to continue making the tank a 'hard to kill' target, but there will be many opportunities to cause 'wounds' to it which will force it to pull back for extended periods of time. For this reason, I don't recommend for this PR to be test-merged before I get around to the xeno counterpart to it.

Testing Photographs and Procedure

Capture ShellReloading Flamer image image image image image
Screenshots & Videos

If the video doesn't load, it also exists in the Tank Desant contributors thread. Or just ping me for it.

Tank.Desant.-.Hardpoint.Rebalance.Additions.and.Rework.mp4

Special Thanks:

  • holdemann For the beautiful sprites for the LTB HE shells, + one unused AP variant to be added later
  • MrDoritosMan for some invaluable help testing edge-cases with me in a private server
  • Everyone in the contributor-projects thread for expressing their ideas and opinions in a mature, constructive manner.
  • YOU, for taking the time to look at this, and for adding technical comments to this PR, and non-technical comments to the contributor-projects thread.

Changelog

Massive thank-you to Holdemann for the shell sprites for the LTB.

🆑 BugWasabi, Holdemann
add: Vehicle intercomm system to the Tank, allows marines and tankers to communicate more easily.
add: Mounted UA FLAG hardpoint for the Tank
add: Mounted M6H-BRUTE Launcher hardpoint for the Tank
add: Target-tracking system to the LTB and mounted BRUTE. Requires the user to hold down LMB. Lock can be broken by smoke, hard cover, or simply by out-swiveling the turret as it spins to track you. Runners rejoice!
admin: Debug verbs for hardpoint rotational & linear offsets; Debug verb for hardpoint switching
balance: Tank Autocannon: Halved firerate; 2.2x damage; Removed sniper flak effect; Added HEFA flak effect; added mirco-stun on non-big xenos
balance: LTB: Re-added to the vendor; Explosion damage re-adjusted to 0.75; Stuns all xenos except Queen & King; Fire rate changed to 15 from 20 (faster); Now uses loose shells rather than magazines; Now uses a sniper-like aiming with a 5 second wind-up
balance: Minigun: Now a de-facto close range option. Quicker spin-up (3s vs 10s), lower scatter (2 vs 18), higher starting RoF; extreme damage falloff (50% at 7 tiles; 100%~ at 10 tiles)
balance: Tank smoke launcher removed; swapped to a starshell flare launcher. Takes starshell packets & loose starshell grenades.
balance: LZR-N & DRG-N flamers can now switch between STREAM and GLOB modes at will.
balance: LZR-N & DRG-N flamers had their fuel amount adjusted to allow for two fuel modes. Generally, ammo economy is still the same.
balance: LZR-N & DRG-N can now use custom fuel mixtures. DRG-N gives xenos visual feedback by changing the color of the exterior tanks.
balance: Mounted M56D now takes regular M56D drums. Yes. The same you use for the M56D you get from REQ.
code: LZR-N is no longer a 'recommended pick'. UA flag is now a recommended pick. M56D mounted is now a recommended pick. LTB is now a recommended pick.
imageadd: M6H-Brute Hardpoint sprite
imageadd: UA FLAG hardpoint sprite
imageadd: Custom fuel overlays for DRG-N
imageadd: HE Shell for the LTB. Credits to holdemann! Appreciate it!
maptweak: Tyargo Rift - Swaps smoke launcher ammo for starshell packets
maptweak: Tank interior - Adds intercomm
refactor: Fully refactors turret aiming to use a 'pivoting swivel' mechanic, rather than being locked to only 4 dirs and firing arcs with blindspots
ui: TGgui UI for the testing verbs
/:cl:

Let me know if I missed anything. Cheers!

This is an important fix to an edge case where a marine might get stuck in the middle tile of the 3x3 Tank and be unable to get out. Now they can simply crawl away from underneath the Longstreet tank. Tested thoroughly with other grab interactions.
The whole idea of receiving a debuff when you're pulled off of the tank is to penalize drivers who use the tank to spearhead a push and allow xenos to take advantage of poorly positioned marines atop the tank. A 3 second weaken is a bit too punishing and basically guarantees a cap. Now, the marine will get a shorter stun and a hefty slowdown, but they'll be able to fight back and can be saved if other marines pay attention.
Oopsie daisy, almost forgot.
Checks if we have a valid turf to climb down before climbing down, otherwise, we'd 'begin climbing down' even if we tried to disembark onto a wall. (Which would obviously fail, but, why allow it to start in the first place?)
Projectiles now by default go 'over' the tank when crossing tank tiles, automatically hitting mobs on top. Sprite clicking is not necessary anymore. If the projectile does not find a valid target atop the tank, it will automatically hit the tank upon attempting to leave turfs with a tank tile.

You still can not shoot entities opposite from you on the tank.

This will make it easier for xenos to land their ranged abilities, and the hedgehog Rav's shield, bone spurs, and other such abilities have been tested to be working correctly.

As projectiles now try to hit mobs ontop first... Meatshield infantry meta?
If a xenomorph walks atop the tank with a hauled mob, its sprite will now be layered properly atop the tank.

Moreover, releasing a hauled mob atop the tank now correctly marks such a mob as being on top of said tank.
Items can be thrown across the tank, even if you're not atop it. Items can now also move alongside the tank when dropped or thrown atop. Exceptionally, roller beds, cryo bags and bogybags (deployed versions) can also be brought up and down the tank despite being obj/structures. Further refinement of the procs that handle transitioning between the tank top and down with a dragged mob.

TODO: Handle edge case for roller beds with stasis or bodybags ontop.
Fixes an oversight caused by cf63678
Xenos now climb down faster and take longer to climb up. Marines now climb up faster but still take a while to climb down. The speed of climbing up and down now depends on vehicle momentum.
fixes runners being dismounted improperly (or not at all) from pounces from atop the tank
@github-project-automation github-project-automation Bot moved this to Awaiting Review in Review Backlog Jul 4, 2026
@cmss13-ci cmss13-ci Bot added Sprites Remove the soul from the game. Mapping did you remember to save in tgm format? UI deletes nanoui/html Feature Feature coder badge Admin Make things harder for admins Balance You need to be a professional veteran game maintainer to comprehend what is being done here. Code Improvement Make the code longer Refactor Make the code harder to read size/L Denotes a PR that changes 200-799 lines, ignoring generated files. labels Jul 4, 2026

@SunriseOverYourHead SunriseOverYourHead left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Re-reviewed it myself to try and give whoever reviews it some help.
Hope this shines some light on my thought process:

Comment thread code/__DEFINES/vehicle.dm
#define FLAME_MODE_STREAM "stream"
/// Single traveling projectile that plants one AOE ignition point on impact.
#define FLAME_MODE_GLOB "glob"
/// should these go into a _DEFINES for hardpoints instead???

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Left this comment here for maintainers. At this rate, these defines would probably work better in a separate file, since they're intrinsic to hardpoints / turrets, and not 'vehicles.' Let me know if you agree and I'll change it.

. += world.icon_size * subject.y

if(!include_size_adjustment)
return

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

those early returns just prevent a visual & mechanical bug with the new aim pivoting system, where tall sprites force the gun barrel to aim 'north' of the tile the queen or the king is in. V. annoying.

* is wrong for a mob like the Queen (icon_size 64) whose sprite is anchored at the feet and simply
* extends upward...
*/
/proc/Get_Angle_Grounded(atom/start, atom/end)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

because Get_angle gets called in dozens of unrelated places, its easier to just make a new proc for turrett aiming instead of adjusting 5000 cases across multiple files

LAZYADD(mouse_trace_history, over_obj)

// Fires at near-pixel granularity while the cursor moves over the map, even with no button held.
// if this ever gets used anywhere else, be careful: Listeners are expected to rate-limit themselves - BWSB

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I thought this would be pretty performance-heavy which is why I added that little warning. Still, this proc coudl be used for things like the VTOL, door gunners, APC, etc...

Shouldn't have much issue if it's only used by one gunner, but if you run an event where there are 50 tanks, it'll add up fastt.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

The whole idea here is to make the autocannon something like an 'amr spec lite'. You get a good amount of damage. Good ammo economy. Good performance at medium ranges. However, you'll struggle to hit shoots at long range and you won't have too much agility at close range with how little DPS you have.

Safe pick. Effective. Good for new players. Minimal risk of FF.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This file and multitile_movement are the bane of my existence and I can't wait to fully rework them.

Alas, we have to edit this one again to make it play nice with the intercom system.

rotate_hardpoints(deg)
rotate_entrances(deg)
rotate_bounds(deg)
update_langchat_height()

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

The only line in this file that is related to this PR, and not the previous tank Desant PR.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Adds two shell sprites for the LTB

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Adds custom fuel overlays for the flamers, the M6H mounted brute launcher, and the UA flag.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Adds custom fuel overlays for the flamers, the M6H mounted brute launcher, and the UA flag.

@Drulikar Drulikar marked this pull request as draft July 5, 2026 02:16
@Drulikar

Drulikar commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

No point this PR being reviewed if it depends on another.

@kooarbiter

Copy link
Copy Markdown

this is all so super super cool, please let this get merged I want the tank to be back

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

Labels

Admin Make things harder for admins Balance You need to be a professional veteran game maintainer to comprehend what is being done here. Code Improvement Make the code longer Feature Feature coder badge Mapping did you remember to save in tgm format? Refactor Make the code harder to read size/L Denotes a PR that changes 200-799 lines, ignoring generated files. Sprites Remove the soul from the game. UI deletes nanoui/html

Projects

Status: Awaiting Review

Development

Successfully merging this pull request may close these issues.

3 participants