illusivesoulworks / constructsarmory

A Tinkers' Construct add-on for those looking to enter the world of armor
https://www.curseforge.com/minecraft/mc-mods/constructs-armory
Other
55 stars 36 forks source link

[1.12.2] Polishing conflict between Plates & Traits. #232

Open SonicX8000 opened 4 years ago

SonicX8000 commented 4 years ago

Minecraft: 1.12.2 Forge: 14.23.5.2854

Mods: 5 conarm-1.12.2-1.2.5.9 jei_1.12.2-4.15.0.291 Mantle-1.12-1.3.3.55 Metallurgy-4-Reforged-0.3.2 TConstruct-1.12.2-2.13.0.183

=====

Sponge Plates gives 5 Base Toughness, if I throw in Skeletal... that gets boosted to 7.5 which is a 2.5 boost.

I polish with Krik from Metallurgy as that has 9 Toughness by default. Now... with Skeletal that should put my Toughness to 11.5 due to the 2.5 Toughness from the Sponge Plates since it gives 5 Base Toughness however it appears that Polishing your armor will break Skeletal & Indomitable Traits from adding in extra Toughness from the Plates.

This may be due to this change here...

"Changed Polishing modifier back to original behavior that overrides toughness [#223]"

One more thing to note down... if you Polish Armor since it was an upgrade from the Plates with low Toughness but later change the Plates... Polishing will take Priority over the better Plates. For example...

If you had 2 Toughness from Plates, then Polish with Sponge for 5 Toughness, then later add in Krik Plates from Metallurgy for 9 Toughness... you will still have 5 Toughness from the Sponge Polish unless you re-polish your armor with Krik. Skeletal / Indomitable still won't boost your Toughness.

The Diamond Modifier is unaffected as it adds Bonus Toughness which is added onto your Overall Toughness Value.

I did do a breakdown of the Toughness Modifiers & such before the change, which is seen in [#212].

EDIT Giving that change line a read again... it says it overrides Plate's Toughness so... shouldn't that make Skeletal / Indomitable boost the Toughness as if it were the base Toughness? Like a Polished Krik which gives 9 Toughness would now give 4.5 Bonus Toughness via Skeletal?

TheIllusiveC4 commented 4 years ago

This is a valid issue, but unfortunately not one I plan on fixing at this time. This is because I was short-sighted when designing the Polishing modifier this way, not realizing that using a stat like this has some odd interactions with the way Tinkers' items are constructed. The best way to fix this is basically to not use toughness as the polishing stat, but obviously that's a radical change so that's why I won't be fixing this until this gets ported and I get to redesign everything.

SonicX8000 commented 4 years ago

Would reverting the change back be a possible fix? Polishing setting your Toughness as Bonus Toughness & the Traits boosting Toughness based on the Plate's Toughness.

TheIllusiveC4 commented 4 years ago

The issue that was supposed to solve is described in https://github.com/TheIllusiveC4/ConstructsArmory/issues/223. The problem with reverting the change is that it mean polishing your armor can give you infinite amount of toughness (edit: Actually, I don't remember precisely. Not infinite, just more than expected at least). Between these two behaviors, I'd rather stick with the current one where it's a bit broken but not exploitable.

SonicX8000 commented 4 years ago

It's almost-infinite, as long as there is enough different Polishing Kits to keep on adding to the armor for a billion Toughness. Still is quite a problem though.

I wonder if Fortified does the same thing, now thinking about it... but that's mining level so it prob wouldn't stack.

EDIT Yup, Fortified does the same thing but the levels don't stack & it will use the last kit that you applied on it. I sharpen it with Fortified and then Firewood and when I went to re-Fortified it with Flint, it wouldn't let me.

SonicX8000 commented 4 years ago

Alright, so... an update for this.

So those traits do in fact work with polishing however... the polished modifier has to be on top of the other modifiers/traits otherwise they won't work as intended.

Example 1 I have Manyullyn Plates so... that's 3 Toughness. If your trait/modifier list is like this...

Polished(Sponge) Skeletal(Embossment) Diamond

Toughness becomes 5, with a +1.5 Bonus from Skeletal and +2 from Diamond Modifier, totaling to 8.5.


Example 2 If instead it's like this...

Skeletal Trim Polished(Sponge) Diamond

Toughness is 5, with +2 from the Diamond Modifier, totaling to 7. Skeletal was ignored so it doesn't do anything.


Example 3 Now... if you do it like this...

Skeletal Trim Diamond Polished(Sponge)

This will actually LOWER your Toughness, as the Skeletal + Diamond would put Toughness to 6.5 but because of Polishing being at the bottom of those two traits... it puts your Toughness to a total of 5.

=====

I wonder if some kind of priority could work around this? Unless there's one already.

Mattomanx77 commented 4 years ago

Perhaps each trait can be given a 'priority', and a sorting function be run upon modifying. Polishing can be given a higher 'priority' than regular traits, and sorted to the top of the list, thusly preventing it from accidentally "overriding" any toughness granted through traits or modifiers.

Ikxale commented 4 years ago

if not the above suggestion, could we get a config to chose the way we want things to stack? i understand wanting the mod not to be broken for modpacks, but on a private server where people are all friends i'd rather not have some people being unaware they are being gimped by a bug