diff --git a/ai.asm b/ai.asm index 74db4ea..d3549c7 100644 --- a/ai.asm +++ b/ai.asm @@ -150,7 +150,47 @@ loop .endp ;---------------------------------------------- Poolshark .proc - + ; defensives + ldx TankNr + ; address of weapons table (for future use) + lda TanksWeaponsTableL,x + sta temp + lda TanksWeaponsTableH,x + sta temp+1 + ; if low energy ten use battery + lda Energy,x + cmp #30 + bcs EnoughEnergy + ; lower than 30 units - check battery + ldy #ind_Battery________ + lda (temp),y + beq NoBatteries + ; we have batteries - use one + clc + sbc #1 + sta (temp),y + lda #99 + sta Energy,x +NoBatteries +EnoughEnergy + ; use best defensive :) + ; first check check if any is in use + lda ActiveDefenceWeapon,x + bne DefensiveInUse + ldy #64 ;the last defensive weapon +@ + dey + cpy #ind_Battery________ ;first defensive weapon (White Flag nad Battery - never use) + beq NoUseDefensive + lda (temp),y + beq @- + tya + ; activate defensive weapon + sta ActiveDefenceWeapon,x + lda DefensiveEnergy,y + sta ShieldEnergy,x +NoUseDefensive +DefensiveInUse firstShoot ;find nearest tank neighbour jsr MakeLowResDistances @@ -321,27 +361,45 @@ SorryNoPurchase ;---------------------------------------------- ShooterPurchase .proc - mva #4 tempXroller; number of purchases to perform - + ; first try to buy defensives + mva #2 tempXroller; number of offensive purchases to perform ldx TankNr -loop +@ + randomize 49 55 + jsr TryToPurchaseOnePiece + dec tempXroller + bne @- + + ; and now offensives + mva #4 tempXroller; number of offensive purchases to perform + ldx TankNr +@ randomize 1 14 jsr TryToPurchaseOnePiece dec tempXroller - bne loop + bne @- rts .endp ;---------------------------------------------- PoolsharkPurchase .proc - mva #8 tempXroller; number of purchases to perform - + ; first try to buy defensives + mva #3 tempXroller; number of offensive purchases to perform ldx TankNr -loop +@ + randomize 49 61 + jsr TryToPurchaseOnePiece + dec tempXroller + bne @- + + ; and now offensives + mva #8 tempXroller; number of purchases to perform + ldx TankNr +@ randomize 1 30 jsr TryToPurchaseOnePiece dec tempXroller - bne loop + bne @- rts .endp diff --git a/constants.asm b/constants.asm index 98d315e..d016510 100644 --- a/constants.asm +++ b/constants.asm @@ -542,6 +542,22 @@ PurchaseMeTable ;weapons good to be purchased by the robot dta 0 ;"----------------" ; 45 dta 0 ;"----------------" ; 46 dta 0 ;"----------------" ; 47 + dta 0 ;"White Flag " ; 48 + dta 1 ;"Battery " ; 49 + dta 0 ;"Bal Guidance " ; 50 + dta 0 ;"Horz Guidance " ; 51 + dta 0 ;"Vert Guidance " ; 52 + dta 0 ;"Lazy Boy " ; 53 + dta 1 ;"Parachute " ; 54 + dta 1 ;"Strong Parachute" ; 55 + dta 1 ;"Mag Deflector " ; 56 + dta 1 ;"Shield " ; 57 + dta 1 ;"Force Shield " ; 58 + dta 1 ;"Heavy Shield " ; 59 + dta 0 ;"Super Mag " ; 60 + dta 1 ;"Auto Defense " ; 61 + dta 0 ;"Fuel Tank " ; 62 + dta 0 ;"Nuclear Winter " ; 63 ;------------------------------------------------- diff --git a/scorch.asm b/scorch.asm index e4c6429..c8cf91b 100644 --- a/scorch.asm +++ b/scorch.asm @@ -311,12 +311,16 @@ SettingEnergies jsr SetMainScreen jsr ColorsOfSprites + lda #0 + sta colpf2s ; status line "off" + sta colpf1s jsr drawmountains ;draw them jsr drawtanks ;finally draw tanks mva #0 TankSequencePointer ;---------round screen is ready--------- + mva #TextForegroundColor colpf1s ; status line "on" rts .endp diff --git a/scorch.xex b/scorch.xex index 8fa205c..e0eca40 100644 Binary files a/scorch.xex and b/scorch.xex differ