-
Notifications
You must be signed in to change notification settings - Fork 165
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
base: master
Are you sure you want to change the base?
Conversation
Surgery situation is crazy
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
This reverts commit 933fc2a.
Signed-off-by: VMSolidus <[email protected]>
This reverts commit 98e1304.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did c# review. It's... fine? Can't go through yaml yet.
/* | ||
* This file is licensed under AGPLv3 | ||
* Copyright (c) 2024 Rane | ||
* See AGPLv3.txt for details. | ||
*/ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
eh
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/* | ||
* This file is licensed under AGPLv3 | ||
* Copyright (c) 2024 Rane | ||
* See AGPLv3.txt for details. | ||
*/ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
eh
namespace Content.Shared.SegmentedEntity; | ||
public sealed class SegmentSpawnedEvent : EntityEventArgs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
namespace Content.Shared.SegmentedEntity; | |
public sealed class SegmentSpawnedEvent : EntityEventArgs | |
namespace Content.Shared.SegmentedEntity; | |
public sealed class SegmentSpawnedEvent : EntityEventArgs |
/* | ||
* Delta-V - This file is licensed under AGPLv3 | ||
* Copyright (c) 2024 Delta-V Contributors | ||
* See AGPLv3.txt for details. | ||
*/ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/* | |
* Delta-V - This file is licensed under AGPLv3 | |
* Copyright (c) 2024 Delta-V Contributors | |
* See AGPLv3.txt for details. | |
*/ |
} | ||
private void HandleDamageTransfer(EntityUid uid, SegmentedEntitySegmentComponent component, DamageChangedEvent args) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
} | |
private void HandleDamageTransfer(EntityUid uid, SegmentedEntitySegmentComponent component, DamageChangedEvent args) | |
} | |
private void HandleDamageTransfer(EntityUid uid, SegmentedEntitySegmentComponent component, DamageChangedEvent args) |
} | ||
private void HandleDamageTransfer(EntityUid uid, SegmentedEntitySegmentComponent component, DamageChangedEvent args) | ||
{ | ||
if (args.DamageDelta == null) return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (args.DamageDelta == null) return; | |
if (args.DamageDelta == null) | |
return; |
if (!TryComp<ClothingComponent>(args.Equipment, out var clothing)) return; | ||
if (args.Slot == "outerClothing" && _tagSystem.HasTag(args.Equipment, LamiaHardsuitTag)) | ||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
merge into one return
|
||
private void OnShootHitscan(EntityUid uid, SegmentedEntityComponent component, ref HitScanAfterRayCastEvent args) | ||
{ | ||
if (args.RayCastResults == null) return; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (args.RayCastResults == null) return; | |
if (args.RayCastResults == null) | |
return; |
} | ||
args.RayCastResults = entityList; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
} | |
args.RayCastResults = entityList; | |
} | |
args.RayCastResults = entityList; |
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
Negative Traits
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:
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.
Media
One of the downsides of having extreme mass.
Working Collision physics:
Finalized version of the damage system, also featuring significant improvements to the tail systems.
Changelog
🆑 VMSolidus, @Elijahrane, and @noctyrnal