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

Lamia & Segmented Entity System #11

Draft
wants to merge 71 commits into
base: master
Choose a base branch
from
Draft

Lamia & Segmented Entity System #11

wants to merge 71 commits into from

Conversation

VMSolidus
Copy link
Member

@VMSolidus VMSolidus commented Mar 17, 2024

About the PR

This is a draft PR for an upcoming new playable species, the Lamia. Lamia are an older species from the 2022 era of Nyanotrasen, and were previously abandoned code that was dropped from the game on October 13th, 2022. I was able to locate what I believe to be the last remaining branch containing Lamia, from a defunct server repository that ran an October 12th, 2022 build of Nyanotrasen. Thus I began a project to refurbish this code for use on modern SS14.

The Lamia I wish to PR are only recognizable from the original Lamia in that they share the Tail Segment System. That is, they prominently feature a completely unique mechanic whereby their body is composed of multiple entities linked together in a chain. The original version of this code had a great many bugs related to the game's physics system, and it was severely limited by the Robust Toolbox engine at the time. In the year since Lamia's abandonment, Robust Toolbox has gone through many iterations and improvements, and has deprecated large parts of the physics system that old Lamia utilized.

Redesigns from the original 2022 Lamia, AKA Nyanotrasen Lamia. Vs. DeltaV Lamia

The original Nyanotrasen Lamia were made with several limitations in mind. Their size was heavily restricted by the physics engine at the time, we aren't beholden to that same limitation anymore. Thus DeltaV Lamia are vastly larger than the Nyanotrasen Lamia, featuring a tail that is 5 tiles in length, with fully functional physics collisions. They were also not able to wear Hardsuits due to limitations of the SpriteComponent, and thus were instead designed around having a "Barotrauma resistance". On DeltaV code, we can arbitrarily state that species use different optional sprites for items, therefore its possible to have for example a Nukie Hardsuit, with its equipped-outerwear state, equipped-outerwear-lamia, equipped-outerwear-lamiainitialsegment, equipped-outerwear-lamiasegment, and so on. The Lamia Segments can simply state that if they equip a hardsuit, they utilize the -lamiasegment sprite option. Therefore its no longer necessary to create an entire new item solely so that snakes can wear a hardsuit.

Positive Traits

  • Extreme Size. Lamia are 5 tiles long, and weigh as much as a car. They make a mockery of mass contests, and they can push physics objects around simply by slithering into them.
  • Significantly larger health bar. A Lamia is put into critical condition at 200 damage, and dies at 300 damage. This is offset by the Lamia having a certain percentage of damage taken by the tail transferred to the main body.
  • High resistance to forced movement. Space Wind at standard pressure cannot move them.
  • Unusual hybrid damage melee via their Hypo-Fangs. Lamia bite attacks deal 1 point of armor piercing, 2 points of poison, 2 points of asphyxiation, and inject 3u of Space Drugs. Planned traitor items exist that add a fillable chemical reservoir that they can inject into people with their attacks.

Negative Traits

  • Extreme Size. Lamia are literally the size of a, "Broad side of a barn". A blind person could throw a rock, and still hit the Lamia. By extension its essentially impossible for a Lamia to evade attacks. Yea you can take hits, but you're also going to take hits. All of them.
  • Paramedics WORST ENEMY. Since they weigh as much as a car, even Oni struggle to drag them. Even a rollerbed only slightly helps drag a Lamia around.
  • Vulnerability to AOE damage. An explosion that simultaneously strikes a Lamia's entire tail, plus their body, will deal double damage.
  • Cannot wear shoes. Although not being able to wear magboots is also offset to their natural high resistance to space wind.
  • Extreme size also means Lamia are functionally uncloneable. They require 770 units of Biomass, the equivalent of 5.5 Onis, in order to be cloned.

Why / Balance

This PR is part of an ongoing project to add exciting new content to the DeltaV repository, with a focus on keeping the theme of "Monster People" species, per request by admins.

Technical details

The code regarding Tail Segments is actually unfinished, and still needs significant overhauling before this PR can be undrafted. Here's a few concerns:

  • Implement "Marking Parity"
  • Make/Commission/Request new markings for the Lamia and her tail segments
  • Implement "Hardsuit Appearance Parity"
  • ServerLamiaSystem now utilizes new physics engine options.
  • "We need to be able to spawn 80 Lamias without slowing down the server -Debug", this is a hard requirement. Having 32 tail segments is not required. I would prefer that we have 32 tail segments, but if we optimize their code for performance and still find out we aren't meeting the 80 Lamia hard requirement, I am willing to reduce them to as low as 16 to 20 segments.
  • Implement Wizden's upcoming "Shoot Over Corpses unless they're targetted" for Lamia Tails.
  • Reimplement the mechanic for Segments sharing their healthbar with the Lamia.
  • Possibly make it so that Lamia can only wear Jumpskirts? I'd want to outright get rid of the layer mask if possible.

Non-Technical TODO list

These are all the TODO's that don't necessarily involve C#, and primarily live in the YAML side of things.

  • Implement marking customization for Lamia. They should have marking variations for More/Less humanlike versions. Such as a Snake Head(We can re-use the Lizard snake head), Medusa Head, changing how far up the scales go, and if the Lamia has human skin or full scales. I'd like to have tail pattern variations that can be set in the character customization, but that is also pending the VisualizerSystem for tail segments.
  • Make their hardsuit variants. Not actually difficult, just takes some time.
  • Finely tune their numerical values. Basically nothing on the YAML side of things is final, and is subject to change pending beta feedback and/or testing.

Media

spacenoodle

One of the downsides of having extreme mass.
image

Working Collision physics:
Noodle movement

Finalized version of the damage system, also featuring significant improvements to the tail systems.
damage system

Changelog

🆑 VMSolidus, @Elijahrane, and @noctyrnal

  • add: Lamia have been added to the game as a new playable species!

Copy link
Contributor

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

@github-actions github-actions bot added the Status: Merge Conflict FIX YOUR PR AAAGH label Jun 30, 2024
@github-actions github-actions bot removed the Status: Merge Conflict FIX YOUR PR AAAGH label Jun 30, 2024
dasprino007 pushed a commit to dasprino007/Einstein-Engines that referenced this pull request Jul 20, 2024
…tation#11)

* Epistemics is apparently hardcoded in the server's database

* yml fixes
Copy link
Contributor

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

@github-actions github-actions bot added the Status: Merge Conflict FIX YOUR PR AAAGH label Jul 20, 2024
@github-actions github-actions bot removed the Status: Merge Conflict FIX YOUR PR AAAGH label Jul 21, 2024
VMSolidus and others added 3 commits July 21, 2024 17:52
<!--
This is a semi-strict format, you can add/remove sections as needed but
the order/format should be kept the same
Remove these comments before submitting
-->

# Description

<!--
Explain this PR in as much detail as applicable

Some example prompts to consider:
How might this affect the game? The codebase?
What might be some alternatives to this?
How/Who does this benefit/hurt [the game/codebase]?
-->

The old sprite-based rendering approach was very limiting, here I've
changed to using an overlay and just constructing the lamia bodies out
of triangles. I'm about happy with it although it's lacking the clothing
feature we added earlier just waiting on art. Networking and perf should
be fine. I don't know how much of the other stuff you want me to clean
up. A lot of unrelated code can probably get just deleted.


# TODO
- [ ] New base + clothes sprites that look good
- [ ] Support for clothes based texture change (should take 5 mins)



https://github.com/user-attachments/assets/c5022e54-cb3d-4f53-b65c-83863b21df29



# Changelog

<!--
You can add an author after the `:cl:` to change the name that appears
in the changelog (ex: `:cl: Death`)
Leaving it blank will default to your GitHub display name
This includes all available types for the changelog
-->

:cl: Rane
- add: Lamiae should now be rendered much better.
Copy link
Contributor

github-actions bot commented Aug 6, 2024

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

@github-actions github-actions bot added the Status: Merge Conflict FIX YOUR PR AAAGH label Aug 6, 2024
Mnemotechnician pushed a commit to Mnemotechnician/Einstein-Engines that referenced this pull request Sep 9, 2024
Mnemotechnician pushed a commit to Mnemotechnician/Einstein-Engines that referenced this pull request Sep 9, 2024
@FoxxoTrystan FoxxoTrystan requested review from FoxxoTrystan, a team, DEATHB4DEFEAT and Pspritechologist and removed request for a team September 17, 2024 19:21
@github-actions github-actions bot added the Status: Needs Review Someone please review this label Sep 17, 2024
@FoxxoTrystan FoxxoTrystan added Holy Shit Priority: 3-Medium Needs to be resolved at some point Size: 1-Very Large For especially large issues/PRs and removed Status: Needs Review Someone please review this labels Sep 17, 2024
VMSolidus pushed a commit to VMSolidus/Einstein-Engines that referenced this pull request Sep 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Changes any cs files Changes: Sprite Changes any png or json in an RSI Changes: YML Changes any yml files Holy Shit Priority: 3-Medium Needs to be resolved at some point Size: 1-Very Large For especially large issues/PRs Status: Merge Conflict FIX YOUR PR AAAGH Type: Port Brings something to here from another codebase
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants