Conversation
|
damn changelog broke it seems Edit: Fixed it! :D |
Thesia000
left a comment
There was a problem hiding this comment.
SO if I am reading this code correct you are setting the proficency GLOBALLY I recomend moving the proficency into the Proicency component instead of having it as a prototype that is saved as a variable inside a system
So like just save the variable to the component and just reference the component instead? |
Thesia000
left a comment
There was a problem hiding this comment.
for the changes you need to read and save to the entities component not into a variable in the system itself. it will work for local tests but fails once we hit multiplayer as multiple entities will have this comp and override the variable in Proficency System
OHHHHH shi mb gang |
NotActuallyMarty
left a comment
There was a problem hiding this comment.
ive not looked at the balance i can chud out later at that but you should omumod this instead of putting this in Content.Shared._Omu
|
okay so @NotActuallyMarty it seems it actually HAS to be in the _Omu folder because otherwise the references to it ToolComponent and BallisticAmmoProviderComponent will not be able to access it |
|
Does this mean non-med and non-sec harpies strictly get debuffs for it |
For reloading/surgery? Dont think i actually gave specific debuffs for those outside the fields, probably should have and can easily do at any point |
|
Oh it ONLY affects surgert and reloading? For sll harpies I mean I thought it would affect things ljkr prying, syringes, using tools, etc etc |
So for tools, the way i have it setup: |
|
So what does it affect? |
Yeah thats it for now |
|
So harpies in the specified jobs when non sec reload slower? >.> |
I didnt actually specify debuffs for reload speed because it uses a slightly different system there afaik, basically i had to use a different value for reload speed and just didnt get around to giving literally every non combat role specified a debuff. If there was a job i though specifically shouldnt be able to reload fast id have specified a negative modifier there tho |
|
Eo for example hop is completely unnafected but for another example secharpy reload fast n what use base tools faster but surgery slower? |
Probably shouldve given engi a negative surgery modifier LMAO HoP is completely unaffected though, yes TLDR when i get around to it im giving engi a surgery and reload debuff because their buffs are kinda extremely powerful without |
|
“In today’s unique and cool PR I decided to buff harpies and made up a reason to do so” |
Dude this is a bounty for vivi, i probably shoulve put that in the title but it is |
🥜🥜🥜 |
| ## Highly specialised | ||
|
|
||
| Harpies are extremely good at doing tasks they are familiar with. they can use most tools their job specialises in more efficiently than everyone else. | ||
|
|
There was a problem hiding this comment.
Can you specify here for the players that don't check github which tools they specialise in?
There was a problem hiding this comment.
yeah, can do
little busy till like sunday tho so it'll take a lil bit
NotActuallyMarty
left a comment
There was a problem hiding this comment.
Did some code cleanup, I recommend giving it a once-over and make sure i didn't fuck something up. There were just too many nested statements making code hard to read. Kept functionality the same afaik, so give me a sec to re-review that.
Content.Omu.Shared/Proficiencies/Components/ProficiencyComponent.cs
Outdated
Show resolved
Hide resolved
| - type: Proficiency | ||
| id: BaseTools | ||
| items: | ||
| - Crowbar | ||
| - Wrench | ||
| - Screwdriver | ||
| - Wirecutter | ||
| - Welder | ||
| - Multitool | ||
|
|
||
| - type: Proficiency | ||
| id: advancedTools | ||
| items: | ||
| - WelderExperimental | ||
| - PowerDrill | ||
| - JawsOfLife | ||
|
|
||
| - type: Proficiency | ||
| id: BaseSci | ||
| items: | ||
| - Crowbar | ||
| - Wrench | ||
| - Screwdriver | ||
| - Wirecutter | ||
| - Welder | ||
| - Multitool | ||
| proficiencyMultiplier: 1.2 | ||
| # give sci a minor surgery speed buff, robotics exists and needs surgery to function | ||
| surgeryProficiency: 1.1 | ||
|
|
||
| - type: Proficiency | ||
| id: BaseEngi | ||
| items: | ||
| - Crowbar | ||
| - Wrench | ||
| - Screwdriver | ||
| - Wirecutter | ||
| - Welder | ||
| - WelderIndustrial | ||
| - Multitool | ||
| - WelderExperimental | ||
| - PowerDrill | ||
| - JawsOfLife | ||
| proficiencyMultiplier: 1.2 |
There was a problem hiding this comment.
This is bad. You might want to consider some type of parenting system, or listing proficiencies based on some other factor, i.e. checking for a ToolQualityPrototype of a specific kind or such. That way you plan for future additions and don't have to manually add every tool to a list if somebody adds a new tool.
For example, abductor tools here are not supported.
There was a problem hiding this comment.
i was planning on doing this, i couldn't find a way where i could make it work at that time, but i probably just forgot something; i'll have a look into it later
| - type: Proficiency | ||
| id: CargoTechnician | ||
| items: | ||
| - Crowbar | ||
| - Wrench | ||
| - Screwdriver | ||
| - Wirecutter | ||
| - Welder | ||
| - Multitool | ||
| proficiencyMultiplier: 1.1 | ||
|
|
||
| - type: Proficiency | ||
| id: ShaftMiner | ||
| items: | ||
| - Crowbar |
There was a problem hiding this comment.
See other Comment about changing the base proficiencies, that way you could add a singular thing here (i.e. - BasicTools for example) and wouldn't need to list out every item individually.
Ideally you should make the JobId of the respective job a datafield on the prototype rather than making the prototype name match the JobId.
There was a problem hiding this comment.
Additionally, you could add more jobs to this datafield, that way you don't need multiple prototypes to set the same proficiency to multiple jobs.
Co-authored-by: NotActuallyMarty <27968892+NotActuallyMarty@users.noreply.github.com>
NotActuallyMarty
left a comment
There was a problem hiding this comment.
Math is bad and Prototype refactor.
|
|
||
| if (TryComp<BallisticAmmoProviderComponent>(args.Unequipped, out var ammoComp)) | ||
| ammoComp.FillDelay *= MathF.Pow(entity.Comp.ReloadSpeedProficiency, -1); | ||
|
|
There was a problem hiding this comment.
You should not just assume that setting SpeedModifier of the Item to SpeedModifier^(-1) thus setting it to 1 is the default, as tools can have negative or positive speed modifiers, and this would just set them to 1 permanently.
Check the prototype of the item, get its speedmod, and set it to that on unequip.
| if (args.JobId == null) | ||
| return; | ||
|
|
||
| entity.Comp.ProficiencyID = args.JobId; | ||
|
|
||
| if (!_prototypeManager.TryIndex<ProficiencyPrototype>(entity.Comp.ProficiencyID, out var proficiencyPrototype)) | ||
| return; |
There was a problem hiding this comment.
See other comment, You should support multiple JobIds per prototype so you don't need to make redundant prototypes for duplicate modifiers.
Co-authored-by: NotActuallyMarty <27968892+NotActuallyMarty@users.noreply.github.com>

About the PR
Why / Balance
This PR makes it so that harpies are faster at using tools that their job requires them to use more often.
It lets medical harpies do surgery faster and and security harpies reload mags with bullet faster.
on the flipside it makes tools that they arent proficient in slower to use
the idea is that this isn't a flat out buff to harpies but a rework.
Technical details
Added a new prototype for proficiencies
Provided Access to ToolComponent and BallisticAmmoProviderComponent to the system made for this PR
Media
2026-03-06_08-09-26.mov
Requirements
Breaking changes
None to note
Changelog
🆑