diff --git a/gscats.2mg b/gscats.2mg index 55920f6..7670d8b 100644 Binary files a/gscats.2mg and b/gscats.2mg differ diff --git a/player.s b/player.s index c0350e9..a077fce 100644 --- a/player.s +++ b/player.s @@ -160,9 +160,26 @@ playerDeltaPowerClampHigh: ; Y = Player index ; playerFire: - pha + SAVE_AX PLAYERPTR_Y + ; Check for inventory + lda playerData+PD_CURRWEAPON,y + pha + asl + tax + beq playerFire_infiniteAmmo + lda playerData+PD_INVENTORY,x + beq playerFire_abort + dec ; Consume ammo + sta playerData+PD_INVENTORY,x + dec inventoryDirty + +playerFire_infiniteAmmo: + + ; Prepare projectile parameters + pla + sta projectileParams+8 lda playerData+GO_POSX,y sta projectileParams lda playerData+GO_POSY,y @@ -173,13 +190,16 @@ playerFire: sta projectileParams+4 lda playerData+PD_POWER,y sta projectileParams+6 - lda playerData+PD_CURRWEAPON,y - sta projectileParams+8 jsr fireProjectile - pla +playerFire_done: + RESTORE_AX rts +playerFire_abort: + pla ; Balance stack + bra playerFire_done + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; playerIntersectRect diff --git a/projectile.s b/projectile.s index b030530..72a856f 100644 --- a/projectile.s +++ b/projectile.s @@ -39,7 +39,7 @@ GRAVITY = $ffff ; 8.8 fixed point projectileTypes: ; Spit .word 3 ; Damage - .word 1 ; Crater radius + .word 9 ; Crater radius .word 4 ; Frame 0 .word 5 ; Frame 1 .word 6 ; Frame 2