0.7.2 Player can add both variants of light or darkness powered magery [CLOSED]

User avatar
Interkarma
Posts: 7236
Joined: Sun Mar 22, 2015 1:51 am

0.7.2 Player can add both variants of light or darkness powered magery [CLOSED]

Post by Interkarma »

I discovered this while implementing light and darkness powered magery.

During custom character creation, player can add both versions of a disadvantage such as "ReducedPowerInDarkness" and "UnableToCastInDarkness". Their dagger position lowers difficultly for both during custom character creation, but only the second option becomes live.

This creates an exploit where player can add both options for lower difficulty, but by adding "ReducedPowerInDarkness" variant last, they are still able to get some spell points in darkness while being credited with a multiplier for both. When examining player History, only the second option is visible.

both1.jpg
both1.jpg (255.22 KiB) Viewed 5089 times
both2.jpg
both2.jpg (287.21 KiB) Viewed 5089 times
both3.gif
both3.gif (291.64 KiB) Viewed 5089 times
Note that player still has 46/70 spell points available in darkness despite selecting multiplier for "UnableToCastInDarkness" during character creation. These probably shouldn't be able to be combined in this way. :)

BansheeXYZ
Posts: 555
Joined: Fri Oct 23, 2015 8:19 pm

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by BansheeXYZ »

This is also true of the "Increased Magery" advantage that you've already fixed, although that one wasn't an exploit because it hurts rather than helps you. Still, it's an oversight in classic. Some of the subwindows are designed to be multiple choice, but there's no handling for it.

Classic does handle some conflicts. And when it does, it shows a popup message that says "You have already picked an advantage or disadvantage than conflicts with this one." (Note the typo) You can get this message to appear by selecting low tolerance/immunity/critical weakness to disease.

Classic also doesn't handle conflicts between race and class advantages. If I choose a High Elf, I shouldn't be able to select "Critical weakness to Paralysis" because high elves are naturally immune to paralysis. It's confusing to new players which one wins out (race does) and seasoned players can use it as an exploit to lower leveling requirements for free.

There are also some minor formatting problems that might be worth addressing:

-Hyphens show up as underscores in "Light-Powered", "Darkness-Powered", and "Hand-to-Hand"
-1x INT in spell points shows up as "INT in spell points" at the bottom of the list, which is otherwise enumerated in order. They made the right choice to alphabetize everything (go figure), but it's backfiring here when they didn't use a number for base INT.

User avatar
mikeprichard
Posts: 1037
Joined: Sun Feb 19, 2017 6:49 pm

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by mikeprichard »

I assume the single biggest classic Daggerfall advantage/disadvantage "exploit" of magic immunity overriding critical weaknesses to disease, paralysis, and poison, which we discussed here (https://forums.dfworkshop.net/viewtopic ... mun#p15295), still isn't planned to be altered by DFU, since DFU is generally mirroring classic behavior, correct? This bug report only refers to new exploits introduced by DFU that weren't in classic, as I understand it. Just making sure I can still cheese the same system if I choose when DFU 1.0 hits. :)

User avatar
Hazelnut
Posts: 3015
Joined: Sat Aug 26, 2017 2:46 pm
Contact:

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by Hazelnut »

Yes we're developing to match classic, but we're also fixing obvious bugs, loopholes, oversights etc as we go. This exploit is up to Interkarma really since he's implementing effects stuff, but I wouldn't count on being able to cheese it... :)
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

User avatar
Interkarma
Posts: 7236
Joined: Sun Mar 22, 2015 1:51 am

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by Interkarma »

BansheeXYZ wrote: Wed Jan 09, 2019 7:04 am Classic also doesn't handle conflicts between race and class advantages. If I choose a High Elf, I shouldn't be able to select "Critical weakness to Paralysis" because high elves are naturally immune to paralysis. It's confusing to new players which one wins out (race does) and seasoned players can use it as an exploit to lower leveling requirements for free.
mikeprichard wrote: Sat Jan 19, 2019 7:27 pm I assume the single biggest classic Daggerfall advantage/disadvantage "exploit" of magic immunity overriding critical weaknesses to disease, paralysis, and poison, which we discussed here (https://forums.dfworkshop.net/viewtopic ... mun#p15295), still isn't planned to be altered by DFU, since DFU is generally mirroring classic behavior, correct? This bug report only refers to new exploits introduced by DFU that weren't in classic, as I understand it. Just making sure I can still cheese the same system if I choose when DFU 1.0 hits. :)
Allofich has implemented a rather nice solution for this one. Here's the gist of his refinements to biography tolerance combinations and saving throws.
  • All saving throws start with a 50% chance to save. If effect is Paralysis and character is a High Elf then start with 100% chance to save.
  • Starting save is then modified based on biography flags for incoming element (Immune: +50, Resistant: +25, Low Tolerance: -25, Critical Weakness: -50).
  • Saving throw is rolled 1-100. If roll is <= percent chance to save, player will resist some or all of the incoming damage. A 0% chance will always fail, a 100% chance or greater will always succeed.
So Immunity by itself will grant 100% immunity like classic. But if you start to mix and match different flags (such as mixing Critical Weakness with Immunity) your net result may be no better than if you picked no tolerance flags at all.

The key thing here is the player still has a choice to create unusual combinations like a High Elf with Critical Weakness to Paralysis, and the game will respect that role-playing decision numerically. In this scenario, the elf would have 100% chance to save against Paralysis modified by -50% for Critical Weakness, resulting in a 50% chance to save. This means a High Elf with Critical Weakness to Paralysis is still better off than a Nord with the same Critical Weakness, but is technically weaker to Paralysis than their brethren. And so begins the saga of "Limpy, the Occasionally Frozen High Elf".

This design is very clever because it observes the tolerance flags while removing the exploit and adding role-playing opportunities at the same time. The elegance of the solution made me respect Allofich's genius even more (and it was pretty darn high to start with).

The full source code for SavingThrow() is here. Allofich's comments around change to classic starts from line 1067.

Now just to bring the topic back on subject a little. The light and darkness powered magery combo is currently unhandled. I'm open to either preventing the combination or finding a clever solution as Allofich did above for saving throws. I think this one is a little more binary than just saving throws though, and simply blocking this combination is the correct fix.

User avatar
mikeprichard
Posts: 1037
Joined: Sun Feb 19, 2017 6:49 pm

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by mikeprichard »

So if I'm reading this and Allofich's notes correctly, it seems the classic exploit I mentioned will still be in DFU, as the categories of immunities/weaknesses involved are of different types - i.e. magic immunity overrides disease/paralysis/poison (critical) weakness in classic data. What Allofich has instead cleverly caught are cases where e.g. paralysis immunity would be allowed to completely override paralysis (critical) weakness (same resistance category). Anyway, sorry to derail the topic (I seem to do that a lot), and thanks for the answers!

User avatar
Interkarma
Posts: 7236
Joined: Sun Mar 22, 2015 1:51 am

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by Interkarma »

The biography flags are still combined (flags are awesome like that) to create a net resistance value. If the character has Immunity to Magic element and Critical Weakness to Paralysis, and an enemy casts a standard Paralysis spell on character (which is Magic-based), their resultant saving throw would be 50 (starting value) + 50 (Magic Immunity) - 50 (Critical Weakness to Paralysis). The net result chance would be 50% to save, as the Immunity and Critical Weakness just cancel each other out.

Now one exception is elemental resistance (e.g. an Elemental Resistance to Magic spell or item). These aren't related to natural biography resistances and act as another magical barrier around the player. If the player has an active Elemental Resistance effect running and the incoming effect is of that element type, then the Chance properties of the elemental resistance spell is rolled instead. If the player saves here from magical augmentation, then natural biography resistances don't even need to be tested.

User avatar
mikeprichard
Posts: 1037
Joined: Sun Feb 19, 2017 6:49 pm

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by mikeprichard »

Oh, wow... that changes everything then. Your response just below mine in the September 2018 topic I linked above indicated you were leaning against making that change, but I have to (reluctantly) agree that plugging that classic loophole is probably the sensible thing to do. I and other players who used to exploit the magic vs. disease/paralysis/poison thing back in the classic days will just have to adapt when playing DFU. No more immune-to-everything quick-leveling munchkin characters for me. :lol: I do wonder if it would be appropriate/feasible to somehow include your clear description of the "new" DFU additive/subtractive immunity/weakness system via tooltips in the custom character creation screen, as this collectively is a significant change from the classic system players may be used to.

Thanks again to you, Allofich and all core devs for the attention to detail and continued hard work.

User avatar
Jay_H
Posts: 4062
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by Jay_H »

The munchkinning I will miss, in exchange for a much more robust experience :)

User avatar
Interkarma
Posts: 7236
Joined: Sun Mar 22, 2015 1:51 am

Re: 0.7.2 Player can add both variants of light or darkness powered magery

Post by Interkarma »

I had to check git history to see when that change was made, and it only happened relatively recently on 3 November. It's actually kind of bonkers how quickly all the pieces are falling into place now. :D

Edit: Mike, I agree users should be aware of the change as it is different to classic (even if it is fixing broken behaviour). Interestingly, I think these choices now make sense again. It's perfectly logical for a character to have magical immunity while being weak against paralysis. Magic is an elemental "carrier" while paralysis is just an effect delivered by that carrier. There's no reason a character couldn't be buff against magic in general while still weaker against one expression of it. And a character with both immunity to magic and critical weakness to paralysis is still better off than a character with just a critical weakness to paralysis. This seems to be how they were intended to work together from a design point of view, but it was undone by a sloppier implementation.

Locked