mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 14:51:40 +00:00
- Fixed: The AmmoPerAttack table was filled with the function pointers before the functions
were created, so they were all NULL, and the Dehacked ammo modification loop failed to find any of them in the weapon. The result being that all standard weapons were left with an AmmoUse1 of 0. SVN r3925 (scripting)
This commit is contained in:
parent
80782d7e5e
commit
d50a16a847
1 changed files with 13 additions and 32 deletions
|
@ -164,7 +164,7 @@ static TArray<CodePointerAlias> MBFCodePointers;
|
|||
|
||||
struct AmmoPerAttack
|
||||
{
|
||||
VMFunction *func;
|
||||
VMNativeFunction **func;
|
||||
int ammocount;
|
||||
};
|
||||
|
||||
|
@ -182,17 +182,17 @@ DECLARE_ACTION(A_FireRailgun)
|
|||
|
||||
// Default ammo use of the various weapon attacks
|
||||
static AmmoPerAttack AmmoPerAttacks[] = {
|
||||
{ A_Punch_VMPtr, 0},
|
||||
{ A_FirePistol_VMPtr, 1},
|
||||
{ A_FireShotgun_VMPtr, 1},
|
||||
{ A_FireShotgun2_VMPtr, 2},
|
||||
{ A_FireCGun_VMPtr, 1},
|
||||
{ A_FireMissile_VMPtr, 1},
|
||||
{ A_Saw_VMPtr, 0},
|
||||
{ A_FirePlasma_VMPtr, 1},
|
||||
{ A_FireBFG_VMPtr, -1}, // uses deh.BFGCells
|
||||
{ A_FireOldBFG_VMPtr, 1},
|
||||
{ A_FireRailgun_VMPtr, 1},
|
||||
{ &A_Punch_VMPtr, 0},
|
||||
{ &A_FirePistol_VMPtr, 1},
|
||||
{ &A_FireShotgun_VMPtr, 1},
|
||||
{ &A_FireShotgun2_VMPtr, 2},
|
||||
{ &A_FireCGun_VMPtr, 1},
|
||||
{ &A_FireMissile_VMPtr, 1},
|
||||
{ &A_Saw_VMPtr, 0},
|
||||
{ &A_FirePlasma_VMPtr, 1},
|
||||
{ &A_FireBFG_VMPtr, -1}, // uses deh.BFGCells
|
||||
{ &A_FireOldBFG_VMPtr, 1},
|
||||
{ &A_FireRailgun_VMPtr, 1},
|
||||
{ NULL, 0}
|
||||
};
|
||||
|
||||
|
@ -2481,25 +2481,6 @@ static inline bool CompareLabel (const char *want, const BYTE *have)
|
|||
return *(DWORD *)want == *(DWORD *)have;
|
||||
}
|
||||
|
||||
static inline short GetWord (const BYTE *in)
|
||||
{
|
||||
return (in[0] << 8) | (in[1]);
|
||||
}
|
||||
|
||||
static short *GetWordSpace (void *in, size_t size)
|
||||
{
|
||||
short *ptr;
|
||||
size_t i;
|
||||
|
||||
ptr = (short *)in;
|
||||
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
ptr[i] = GetWord ((BYTE *)in + i*2);
|
||||
}
|
||||
return ptr;
|
||||
}
|
||||
|
||||
static int DehUseCount;
|
||||
|
||||
static void UnloadDehSupp ()
|
||||
|
@ -2969,7 +2950,7 @@ void FinishDehPatch ()
|
|||
StateVisited[state] = true;
|
||||
for(unsigned j = 0; AmmoPerAttacks[j].func != NULL; j++)
|
||||
{
|
||||
if (state->ActionFunc == AmmoPerAttacks[j].func)
|
||||
if (state->ActionFunc == *AmmoPerAttacks[j].func)
|
||||
{
|
||||
found = true;
|
||||
int use = AmmoPerAttacks[j].ammocount;
|
||||
|
|
Loading…
Reference in a new issue