mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +02:00
Shield with energy added
Only for test. Now all players has active Shield with energy (99) before game.
This commit is contained in:
+2
-2
@@ -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
@@ -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
@@ -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
@@ -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
Binary file not shown.
+28
-6
@@ -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
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user