Shield with energy added

Only for test.
Now all players has active Shield with energy (99) before game.
This commit is contained in:
Pecusx
2022-06-08 21:52:19 +02:00
parent 4c6b56a1e2
commit eace9eb5cf
8 changed files with 97 additions and 17 deletions
+2 -2
View File
@@ -871,9 +871,9 @@ NamesOfWeapons ;the comment is an index in the tables
dta d"Parachute " ; 53 dta d"Parachute " ; 53
dta d"Battery " ; 54 dta d"Battery " ; 54
dta d"Mag Deflector " ; 55 dta d"Mag Deflector " ; 55
dta d"Shield " ; 56 dta d"Shield " ; 56 - shield for one shot
dta d"Force Shield " ; 57 dta d"Force Shield " ; 57
dta d"Heavy Shield " ; 58 dta d"Heavy Shield " ; 58 - shield with energy
dta d"Super Mag " ; 59 dta d"Super Mag " ; 59
dta d"Auto Defense " ; 60 dta d"Auto Defense " ; 60
dta d"Fuel Tank " ; 61 dta d"Fuel Tank " ; 61
+1 -1
View File
@@ -166,7 +166,7 @@ NamesOfLevels
textbuffer textbuffer
; 0123456789012345678901234567890123456789 ; 0123456789012345678901234567890123456789
dta d"Player: " dta d"Player: "
dta d"Energy: Angle: Force: " dta d"Energy: Angle: Force: "
dta d" Round: Wind: " dta d" Round: Wind: "
textbuffer2 textbuffer2
dta d"Player: Cash: " dta d"Player: Cash: "
+17 -3
View File
@@ -642,6 +642,7 @@ DrawTankNrX
sta xdraw+1 sta xdraw+1
lda ytankstable,x lda ytankstable,x
sta ydraw sta ydraw
mva #0 ydraw+1
jsr TypeChar jsr TypeChar
@@ -694,9 +695,12 @@ NoPlayerMissile
; draw defensive weapons like shield ( tank number in X ) ; draw defensive weapons like shield ( tank number in X )
; in xdraw, ydraw we have coordinates left LOWER corner of Tank char ; in xdraw, ydraw we have coordinates left LOWER corner of Tank char
lda ActiveDefenceWeapon,x lda ActiveDefenceWeapon,x
cmp #56 ; check shield activation cmp #56 ; check one shot shield activation
beq ShieldDraw
cmp #58 ; check shield with energy activation
bne NoShieldDraw bne NoShieldDraw
jsr DrawTankShield ShieldDraw
jsr DrawTankShield.DrawInPosition
NoShieldDraw NoShieldDraw
DoNotDrawTankNr DoNotDrawTankNr
rts rts
@@ -726,11 +730,21 @@ tankflash_loop
;-------------------------------------------------- ;--------------------------------------------------
.proc DrawTankShield .proc DrawTankShield
; X - tank number
; if use DrawInPosition entry point then:
; xdraw, ydraw - coordinates left LOWER corner of Tank char ; xdraw, ydraw - coordinates left LOWER corner of Tank char
; values remain there after a DrawTankNr proc. ; values remain there after a DrawTankNr proc.
;
; this proc change xdraw, ydraw and temp! ; this proc change xdraw, ydraw and temp!
;-------------------------------------------------- ;--------------------------------------------------
lda xtankstableL,x
sta xdraw
lda xtankstableH,x
sta xdraw+1
lda ytankstable,x
sta ydraw
mva #0 ydraw+1
DrawInPosition
mva #1 color mva #1 color
lda erase lda erase
beq ShieldVisible beq ShieldVisible
+31 -4
View File
@@ -129,12 +129,12 @@ START
jsr RandomizeSequence jsr RandomizeSequence
; for the round #1 shooting sequence is random ; for the round #1 shooting sequence is random
; activate shield for all players (test) ; activate shield with energy for all players (test)
lda #56
ldx numberOfPlayers ldx numberOfPlayers
dex dex
@ @
sta ActiveDefenceWeapon,x mva #58 ActiveDefenceWeapon,x
mva #99 ShieldEnergy,x ; set energy of shield
dex dex
bpl @- bpl @-
; shield activated! (test) ; shield activated! (test)
@@ -658,7 +658,7 @@ MetodOfDeath
;-------------------------------------------------- ;--------------------------------------------------
.proc DecreaseEnergyX .proc DecreaseEnergyX
;Decreases energy of player nr X ;Decreases energy of player nr X by the value Y
;increases his financial loss ;increases his financial loss
;increases gain of tank TankNr ;increases gain of tank TankNr
;-------------------------------------------------- ;--------------------------------------------------
@@ -696,6 +696,33 @@ NotNegativeEnergy
rts rts
.endp .endp
;--------------------------------------------------
.proc DecreaseShieldEnergyX
; Decreases energy of shield player nr X by the value Y
; if shield energy is 0 after decrease then in Y we have
; rest of the energy - to decrease tank energy
;--------------------------------------------------
sty EnergyDecrease
ldy #0 ; if Shield survive then no decrease tank anergy
; Energy cannot be less than 0
lda ShieldEnergy,x
cmp EnergyDecrease
bcc ldahashzero
;sec
sbc EnergyDecrease
bpl NotNegativeEnergy
ldahashzero
; now calculate rest of energy for future tank energy decrease
sec
lda EnergyDecrease
sbc ShieldEnergy,x
tay
lda #0
NotNegativeEnergy
sta ShieldEnergy,x
rts
.endp
;--------------------------------- ;---------------------------------
.proc Seppuku .proc Seppuku
lda #0 lda #0
BIN
View File
Binary file not shown.
+28 -6
View File
@@ -1709,6 +1709,28 @@ FinishResultDisplay
mwa #textbuffer+48 displayposition mwa #textbuffer+48 displayposition
jsr displaybyte jsr displaybyte
;---------------------
;displaying the energy of a tank shield (if exist)
;---------------------
; clear (if no shield)
lda #$00 ; space
sta textbuffer+40+10
sta textbuffer+40+11
sta textbuffer+40+12
sta textbuffer+40+13
; check shield energy and display it
ldx TankNr
lda ShieldEnergy,x
beq NoShieldEnergy
sta decimal ; displayed value
lda #$08 ; (
sta textbuffer+40+10
mwa #textbuffer+40+11 displayposition
jsr displaybyte
lda #$09 ; )
sta textbuffer+40+13
NoShieldEnergy
;========================= ;=========================
;display Force ;display Force
;========================= ;=========================
@@ -1717,7 +1739,7 @@ FinishResultDisplay
sta decimal sta decimal
lda ForceTableH,x lda ForceTableH,x
sta decimal+1 sta decimal+1
mwa #textbuffer+40+34 displayposition mwa #textbuffer+40+36 displayposition
jsr displaydec jsr displaydec
;========================= ;=========================
@@ -1729,9 +1751,9 @@ FinishResultDisplay
lda AngleTable,x lda AngleTable,x
bmi AngleToLeft bmi AngleToLeft
lda #$7f ; (tab) character lda #$7f ; (tab) character
sta textbuffer+40+23 sta textbuffer+40+25
lda #0 ;space lda #0 ;space
sta textbuffer+40+20 sta textbuffer+40+22
lda #90 lda #90
sec sec
sbc AngleTable,x sbc AngleTable,x
@@ -1748,12 +1770,12 @@ AngleToLeft
lda BarrelTableL,y lda BarrelTableL,y
sta CharCode sta CharCode
lda #$7e ;(del) char lda #$7e ;(del) char
sta textbuffer+40+20 sta textbuffer+40+22
lda #0 ;space lda #0 ;space
sta textbuffer+40+23 sta textbuffer+40+25
AngleDisplay AngleDisplay
mwa #textbuffer+40+21 displayposition mwa #textbuffer+40+23 displayposition
jsr displaybyte jsr displaybyte
;========================= ;=========================
+2
View File
@@ -66,6 +66,8 @@ looseL
;---------------------------------------------------- ;----------------------------------------------------
Energy Energy
.DS [MaxPlayers] .DS [MaxPlayers]
ShieldEnergy
.DS [MaxPlayers]
EnergyDecrease .DS 1 EnergyDecrease .DS 1
eXistenZ eXistenZ
.DS [MaxPlayers] .DS [MaxPlayers]
+16 -1
View File
@@ -667,11 +667,26 @@ DistanceCheckLoop
tay tay
; check shields ; check shields
lda ActiveDefenceWeapon,x lda ActiveDefenceWeapon,x
cmp #56 ; shield cmp #56 ; one hit shield
beq UseShield beq UseShield
cmp #58 ; shield with energy
beq UseShieldWithEnergy
jsr DecreaseEnergyX jsr DecreaseEnergyX
jmp EndOfDistanceCheckLoop jmp EndOfDistanceCheckLoop
UseShieldWithEnergy
jsr DecreaseShieldEnergyX
cpy #0 ; is necessary to reduce tenk energy ?
beq ShieldCoveredTank
jsr DecreaseEnergyX
ShieldCoveredTank
lda ShieldEnergy,x
jne EndOfDistanceCheckLoop
ShieldEnergy0 ; deactivate if no energy. it's like use one hit shield :)
UseShield UseShield
mva #1 Erase
phx
jsr DrawTankShield
plx
mva #0 ActiveDefenceWeapon,x ; deactivate defense weapons mva #0 ActiveDefenceWeapon,x ; deactivate defense weapons
TankIsNotWithinTheRange TankIsNotWithinTheRange
EndOfDistanceCheckLoop EndOfDistanceCheckLoop