Knightly Order "Recieve Armor" exploit

Post here if you need help getting started with Daggerfall Unity or just want to clarify a potential bug. Questions about playing or modding classic Daggerfall should be posted to Community.
Post Reply
User avatar
Ralzar
Posts: 1659
Joined: Mon Oct 07, 2019 4:11 pm
Location: Norway

Knightly Order "Recieve Armor" exploit

Post by Ralzar »

Not sure if this is just copied from vanilla behaviour?

Case:

I reach Rep 80 in my Knightly Order and get a new rank.

I use the "Recieve Armor" service to get an Ebony armor piece.

I spend some time doing other stuff. Rep drops to 79.

I talk to Order, get demoted. Take Quest.

I complete quest and rep goes over 80 again. But I do not get ranked up, because a month has not passed.

I use the "Recieve Armor" service and get offered another piece of Ebony armor.


So I can basically just hang around rep 80 and farm armor? The really noticable thing is that that I did not need to actualy rank up. If that had been the case I could only have done it once a month which would have been fine really.
My released mods

"I feel like Ralzar specifically wrote those mods for me and then said "Use them". Just so he could watch me die more."
-FuzzyBeanPlays

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

Re: Knightly Order "Recieve Armor" exploit

Post by Hazelnut »

Ha, that's cos the flag is cleared for demotion as well as promotion. Bet you could get multiple houses that way as well.

But Knights are honest sorts right, so is not an issue? :lol:

Guess I should take a look at fixing this...
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

User avatar
pango
Posts: 2648
Joined: Wed Jul 18, 2018 6:14 pm
Location: France
Contact:

Re: Knightly Order "Recieve Armor" exploit

Post by pango »

By hovering around 89~90 you should be able to get free houses :D
You will have to sell them though, you only get a free house if you don't have some home already.


I'm not sure what's the easiest fix, add some "max armor rank" and only provide armor when it's updated, or have Amor0FlagMask .. Armor9FlagMask values instead of ArmorFlagMask, to remember what armor qualities have already been provided; In the latter case you fix both issues by never clearing flags in UpdateRank()...
When a measure becomes a target, it ceases to be a good measure.
-- Charles Goodhart

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

Re: Knightly Order "Recieve Armor" exploit

Post by Hazelnut »

I was thinking of changing from flags to a max rank once you received armour, but I like the flag per rank idea too so I may do that when I finally sit down to fix this. Thanks.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

User avatar
Ralzar
Posts: 1659
Joined: Mon Oct 07, 2019 4:11 pm
Location: Norway

Re: Knightly Order "Recieve Armor" exploit

Post by Ralzar »

Seeing as knightly orders have litterally no services to gain/lose access to, I feel the best solution would really be for rank up to trigger armor.
But it’s a pretty small thing really. Actually losing high ranks and working to rank back up is pretty rare.
My released mods

"I feel like Ralzar specifically wrote those mods for me and then said "Use them". Just so he could watch me die more."
-FuzzyBeanPlays

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

Re: Knightly Order "Recieve Armor" exploit

Post by Hazelnut »

Thanks for the suggestion, but it already does that. The issue is the same thing happens when you rank down too. :D

Anyway, submitted PR#1967 with a fix using a flag per rank like Pango suggested. Works really nicely, and means if you forget to get armor at a rank before promotion, if you're demoted then you can get your armor - but only if you didn't already get it for that rank of course.

Please feel free to give it some testing before next release. Seemed to work fine to me, but I may have missed something.
See my mod code for examples of how to change various aspects of DFU: https://github.com/ajrb/dfunity-mods

Post Reply