[Since 2.2.0] A_CheckForReload is acting weird for my case

Forum rules
Please construct and post a simple demo whenever possible for all bug reports. Please provide links to everything.

If you can include a wad demonstrating the problem, please do so. Bug reports that include fully-constructed demos have a much better chance of being investigated in a timely manner than those that don't.

Please make a new topic for every bug. Don't combine multiple bugs into a single topic. Thanks!

Post a reply

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :geek: :ugeek: :!: :?: :idea: :arrow: :| :mrgreen: :3: :wub: >:( :blergh:
View more smilies

BBCode is ON
[img] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: [Since 2.2.0] A_CheckForReload is acting weird for my case

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by drfrag » Mon Aug 30, 2021 12:07 pm

I dunno but this commit looks relevant:
https://github.com/coelckers/gzdoom/com ... 93bdef5e9a

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by Graf Zahl » Mon Aug 30, 2021 11:56 am

Setting the last parameter to 1 will not increment the counter. This was definitely never meant to be used like here but it should work anyway.

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by drfrag » Mon Aug 30, 2021 11:50 am

I don't think you can have several calls to A_CheckForReload inside the same loop, after all it's a generalization for A_CheckRailReload. May be before it happened to work "as intended". I know that jumps are handled differently now but the code for that function is pretty much the same as before.

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by drfrag » Mon Aug 30, 2021 5:32 am

Okay true but he's changing the counter in the middle of the loop is that right?

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by Graf Zahl » Mon Aug 30, 2021 5:27 am

This has always been possible in DECORATE. The documentation has it wrong.

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by drfrag » Mon Aug 30, 2021 4:59 am

Are you sure? It's not documented and it is in A_Jump.

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by Dark-Assassin » Mon Aug 30, 2021 4:48 am

Integers are accepted as an offset just like pretty much all other A_Jump functions.

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by drfrag » Mon Aug 30, 2021 3:40 am

Well according to the A_CheckForReload spec i can't make head and tails of your example. The second parameter is a string not an integer and you pass always the same (besides it doesn't exist).
https://zdoom.org/wiki/A_CheckForReload

Re: [Since 2.2.0] A_CheckForReload is acting weird for my ca

by _mental_ » Fri Jun 19, 2020 11:46 pm

Post a runnable sample please.

[Since 2.2.0] A_CheckForReload is acting weird for my case

by Dark-Assassin » Fri Jun 19, 2020 6:55 pm

Seems A_CheckForReload is a little bit broken in GZDoom under certain circumstances.
I have a weapon that has sequential fire frames but may be canceled at any time.
Due to Zandronum compatibility (hurr durr I know...) my choices are limited and if I don't want the weapon animations to be ping delayed I can't use ACS calls.
I choose the next frame by using this:

Code: Select all

ChooseFireFrame:
    QSNG # 0 A_CheckForReload(8,1)
    Goto FireFrame7
    QSNG # 0 A_CheckForReload(7,1,1)
    Goto FireFrame6
    QSNG # 0 A_CheckForReload(6,1,1)
    Goto FireFrame5
    QSNG # 0 A_CheckForReload(5,1,1)
    Goto FireFrame4
    QSNG # 0 A_CheckForReload(4,1,1)
    Goto FireFrame3
    QSNG # 0 A_CheckForReload(3,1,1)
    Goto FireFrame2
    QSNG # 0 A_CheckForReload(2,1,1)
    Goto FireFrame1
    QSNG # 0 A_ResetReloadCounter
    Goto FireFrame0
In Zandronum and GZDoom versions up to 2.1.0, the frames go 0, 1, 2, 3, 4, 5, 6, 7 as they should, but in GZDoom 2.2.0 and later it goes 1, 2, 3, 4, 5, 6, 3, 7 which isn't right. Note it starting at 1 instead of 0 and the 2nd 3 before the 7.

I've spoken to phantombeta on Discord about it and after a bit of back and fourth, they said:
phantombeta wrote: Congrats, either you've found a very old bug that no one else has been affected by, or your code was accidentally relying on undefined behaviour
You should report it on the forums now
Attachments
A_CheckForReload Test.pk3
Test weapon is a pistol in slot 0. Numbers will be printed to the console and message area when firing.
(448 Bytes) Downloaded 59 times

Top