From 05409fa30158c1df6e860851062aa12e1b47d06b Mon Sep 17 00:00:00 2001 From: Pecusx Date: Fri, 5 Aug 2022 10:12:44 +0200 Subject: [PATCH] Diferent Cyborg purchase strategy --- ai.asm | 45 +++++++++++++++++++++++++++++++--- constants.asm | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ display.asm | 2 +- scorch.xex | Bin 41911 -> 42051 bytes textproc.asm | 17 +++++++++---- 5 files changed, 121 insertions(+), 9 deletions(-) diff --git a/ai.asm b/ai.asm index 01ee367..cff865a 100644 --- a/ai.asm +++ b/ai.asm @@ -843,8 +843,8 @@ PurchaseAIRoutines .word PoolsharkPurchase-1 ;PoolsharkPurchase .word TosserPurchase-1 ;TosserPurchase .word TosserPurchase-1 ;ChooserPurchase - .word TosserPurchase-1 ;SpoilerPurchase - .word TosserPurchase-1 ;CyborgPurchase + .word CyborgPurchase-1 ;SpoilerPurchase + .word CyborgPurchase-1 ;CyborgPurchase .word TosserPurchase-1 ;UnknownPurchase ;---------------------------------------------- @@ -853,6 +853,16 @@ PurchaseAIRoutines rts .endp ;------- +.proc TryToPurchaseOnePiece2 ; for Cyborg + ; A - weapon number, better it will be in range(1,32) + ; TankNr in X + ; DOES NOT CHANGE X + tay + lda PurchaseMeTable2,y + beq TryToPurchaseOnePiece.SorryNoPurchase + jmp TryToPurchaseOnePiece.PurchaseIt +.endp +;------- .proc TryToPurchaseOnePiece ; A - weapon number, better it will be in range(1,32) ; TankNr in X @@ -860,6 +870,7 @@ PurchaseAIRoutines tay lda PurchaseMeTable,y beq SorryNoPurchase +PurchaseIt lda WeaponPriceL,y sta temp lda WeaponPriceH,y @@ -953,7 +964,7 @@ SorryNoPurchase lda MoneyH,x ; money / 256 sta tempXroller ; perform this many purchase attempts ; first try to buy defensives - mva #3 tempXroller; number of defensive purchases to perform + mva #2 tempXroller; number of defensive purchases to perform @ randomize ind_Battery________ ind_Auto_Defense___ jsr TryToPurchaseOnePiece @@ -972,3 +983,31 @@ SorryNoPurchase rts .endp +;---------------------------------------------- +.proc CyborgPurchase + + ; what is my money level + ldx TankNr + ;lda MoneyH,x ; money / 256 + ;sta tempXroller ; perform this many purchase attempts + ; first try to buy defensives + mva #2 tempXroller; number of defensive purchases to perform +@ + randomize ind_Battery________ ind_Auto_Defense___ + jsr TryToPurchaseOnePiece2 + dec tempXroller + bne @- + + ; and now offensives + lda MoneyH,x ; money / 256 + asl ;*4 + asl + sta tempXroller ; perform this many purchase attempts +@ + randomize ind_Missile________ ind_Plasma_Blast___ + jsr TryToPurchaseOnePiece2 + dec tempXroller + bne @- + + rts +.endp diff --git a/constants.asm b/constants.asm index 6315214..e47adc5 100644 --- a/constants.asm +++ b/constants.asm @@ -568,6 +568,72 @@ PurchaseMeTable ;weapons good to be purchased by the robot dta 0 ;"Fuel Tank " ; 62 dta 0 ;"Nuclear Winter " ; 63 +PurchaseMeTable2 ;weapons good to be purchased by the robot (Cyborg) + ;the comment is an index in the tables + dta 1 ;"Baby Missile " ; 0 + dta 1 ;"Missile " ; 1 + dta 1 ;"Baby Nuke " ; 2 + dta 1 ;"Nuke " ; 3 + dta 0 ;"LeapFrog " ; 4 + dta 0 ;"Funky Bomb " ; 5 + dta 0 ;"MIRV " ; 6 + dta 0 ;"Death's Head " ; 7 + dta 0 ;"Napalm " ; 8 + dta 1 ;"Hot Napalm " ; 9 + dta 0 ;"Tracer " ; 10 + dta 0 ;"Smoke Tracer " ; 11 + dta 0 ;"Baby Roller " ; 12 + dta 0 ;"Roller " ; 13 + dta 0 ;"Heavy Roller " ; 14 + dta 0 ;"Riot Charge " ; 15 + dta 0 ;"Riot Blast " ; 16 + dta 0 ;"Riot Bomb " ; 17 + dta 0 ;"Heavy Riot Bomb " ; 18 + dta 0 ;"Baby Digger " ; 19 + dta 0 ;"Digger " ; 20 + dta 0 ;"Heavy Digger " ; 21 + dta 0 ;"Baby Sandhog " ; 22 + dta 0 ;"Sandhog " ; 23 + dta 0 ;"Heavy Sandhog " ; 24 + dta 0 ;"Dirt Clod " ; 25 + dta 0 ;"Dirt Ball " ; 26 + dta 0 ;"Ton of Dirt " ; 27 + dta 0 ;"Liquid Dirt " ; 28 + dta 0 ;"Dirt Charge " ; 29 + dta 0 ;"Earth Disrupter " ; 30 + dta 1 ;"Plasma Blast " ; 31 + dta 1 ;"Laser " ; 32 + dta 0 ;"----------------" ; 33 + dta 0 ;"----------------" ; 34 + dta 0 ;"----------------" ; 35 + dta 0 ;"----------------" ; 36 + dta 0 ;"----------------" ; 37 + dta 0 ;"----------------" ; 38 + dta 0 ;"----------------" ; 39 + dta 0 ;"----------------" ; 40 + dta 0 ;"----------------" ; 41 + dta 0 ;"----------------" ; 42 + dta 0 ;"----------------" ; 43 + dta 0 ;"----------------" ; 44 + 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 ;"Heavy Shield " ; 58 + dta 1 ;"Force Shield " ; 59 + dta 0 ;"Super Mag " ; 60 + dta 1 ;"Auto Defense " ; 61 + dta 0 ;"Fuel Tank " ; 62 + dta 0 ;"Nuclear Winter " ; 63 ;------------------------------------------------- ; Screen codes of icons (chars) representing a given weapon diff --git a/display.asm b/display.asm index 5deb05c..9264773 100644 --- a/display.asm +++ b/display.asm @@ -210,5 +210,5 @@ purchaseTextEnd GameOverTitle dta d" game over "* GameOverTitle2 - dta d" Player Points Hits Earned Money " + dta d" Player Points Hits Earned Money " .endif \ No newline at end of file diff --git a/scorch.xex b/scorch.xex index 6b80169e168ee754ee8798a04c2c77fb7b8d768d..b1dd3d6f1115b26e2f322d7d6999cf3d4659fcf8 100644 GIT binary patch delta 17369 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 J)UG`r`@g^Usj~n8 delta 17128 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