From 4ca18029179dc83082152bf61e0beca362d9e333 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Mon, 8 Feb 2021 20:55:41 +0000 Subject: [PATCH] Change debug output. Display enemy health.. Space to fire. Added distance counter. --- !TheEscape/!RunImage,ffb | Bin 16350 -> 18241 bytes !TheEscape/!RunImage,ffb.bas | 83 ++++++++++++++++++++++++++++++----- 2 files changed, 73 insertions(+), 10 deletions(-) diff --git a/!TheEscape/!RunImage,ffb b/!TheEscape/!RunImage,ffb index 89a1f4c49d77b22f80095e540dc12e13d33cc6cb..ad5c16d8ec1d114d887480d6e689d4f65eabd13c 100644 GIT binary patch literal 18241 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 Tg2iA(e2c!DJGT`m{MUa2A&OUr delta 5676 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 diff --git a/!TheEscape/!RunImage,ffb.bas b/!TheEscape/!RunImage,ffb.bas index 8a3d50f..3530cfe 100644 --- a/!TheEscape/!RunImage,ffb.bas +++ b/!TheEscape/!RunImage,ffb.bas @@ -22,6 +22,7 @@ END DEF PROCtitle CLS + PROCdraw_sprite("intro_25",320,256) KEY$ = GET$ @@ -67,9 +68,11 @@ DEF PROCfinal_gfx_setup ENDPROC DEF PROCaudio_setup - VOICES 2 + SOUND ON + VOICES 4 VOICE 1,"WaveSynth-Beep" VOICE 2,"Percussion-Noise" + VOICE 3,"StringLib-Hard" ENDPROC DEF PROCmain_scene1 @@ -84,6 +87,7 @@ DEF PROCmain_scene1 PlayerStructuralIntegrity%=100 PlayerSprite$ = "player_ship" PlayerExplodeNextFrame% = 0 + PlayerRemainingDistance% = 1500000 DIM PlayerHitbox%(3) PlayerHitbox%() = 0,0,60,81 DieEnd% = 0 @@ -92,9 +96,12 @@ DEF PROCmain_scene1 PlayerPhaserOffset%(0,Y) = 75 PlayerPhaserOffset%(1,X) = 40 PlayerPhaserOffset%(1,Y) = 75 + PlayerPhaserDamagePerSecond% = 2 LeftID% = -1 RightID% = -1 + LeftFiring% = 0 + RightFiring% = 0 DIM EnemyHitbox%(1,3) EnemyHitbox%(0,0) = 0 @@ -137,6 +144,8 @@ DEF PROCmain_scene1 REM Controls + PlayerRemainingDistance% = PlayerRemainingDistance% - (Cents% - LastCents%) * PlayerVelocity% + PROCplayer_ship_handle_damage PROCenemy_ship_handle_damage PROCenemy_ship_move @@ -149,6 +158,7 @@ DEF PROCmain_scene1 PROCenemy_ship_collide_player REM PROCenemy_ship_collide_npc PROCplayer_arc_calculatetarget + PROCplayer_weapons_damage PROCspecks_move ENDIF @@ -169,9 +179,12 @@ DEF PROCmain_scene1 REM Player PROCplayer_ship_draw PROCplayer_target_draw - PROCenemy_ship_draw + IF PlayerStructuralIntegrity% > 0 THEN + PROCplayer_weapons_draw + ENDIF + REM UI PROChud_draw @@ -183,13 +196,48 @@ DEF PROCmain_scene1 ENDPROC +DEF PROCplayer_weapons_damage + IF LeftID% < 0 THEN + LeftFiring% = 0 + ENDIF + IF RightID% < 0 THEN + RightFiring% = 0 + ENDIF + + IF LeftFiring% = 1 THEN + EnemyHealth%(LeftID%) = EnemyHealth%(LeftID%) - ((Cents% - LastCents%) * PlayerPhaserDamagePerSecond%) + ENDIF + + IF RightFiring% = 1 THEN + EnemyHealth%(RightID%) = EnemyHealth%(RightID%) - ((Cents% - LastCents%) * PlayerPhaserDamagePerSecond%) + ENDIF +ENDPROC + + +DEF PROCplayer_weapons_draw +IF LeftID% < 0 THEN +LeftFiring% = 0 +ENDIF +IF RightID% < 0 THEN +RightFiring% = 0 +ENDIF + + IF LeftFiring% = 1 THEN + LINE PlayerLocation%(X) + PlayerPhaserOffset%(0,X), PlayerLocation%(Y) + PlayerPhaserOffset%(0,Y), EnemyLocations%(LeftID%,X) + (EnemyHitbox%(EnemyHitboxID%(LeftID%),2)/2), EnemyLocations%(LeftID%,Y) + ENDIF + + IF RightFiring% = 1 THEN + LINE PlayerLocation%(X) + PlayerPhaserOffset%(1,X), PlayerLocation%(Y) + PlayerPhaserOffset%(1,Y), EnemyLocations%(RightID%,X) + (EnemyHitbox%(EnemyHitboxID%(RightID%),2)/2), EnemyLocations%(RightID%,Y) + ENDIF +ENDPROC + DEF PROCplayer_ship_handle_damage IF PlayerStructuralIntegrity% <= 0 THEN IF TIME > PlayerExplodeNextFrame% THEN PlayerExplodeNextFrame% = TIME + 4 IF PlayerSprite$ = "player_ship" THEN DieEnd% = TIME + 150 - SOUND 2,-5,0,50 + SOUND 2,-5, 20,50 ENDIF CASE PlayerSprite$ OF WHEN "player_ship": PlayerSprite$ = "explode_shp1" @@ -210,7 +258,9 @@ ENDPROC DEF PROCenemy_ship_handle_damage FOR Enemy%=0 TO MaxEnemies% - 1 + REM Destruction IF EnemyHealth%(Enemy%) <= 0 THEN + EnemyCollidable%(Enemy%) = 0 IF EnemySprites$(Enemy%) = "durno_ship2" THEN SOUND 2,-5,0,50 ENDIF @@ -226,6 +276,7 @@ DEF PROCenemy_ship_handle_damage ENDCASE ENDIF ENDIF + NEXT Enemy% ENDPROC @@ -236,14 +287,14 @@ DEF PROCrespawn_enemy(Enemy%) EnemyVelocity%(Enemy%,X) = 0 EnemyVelocity%(Enemy%,Y) = RND(3) + 2 EnemyHitboxID%(Enemy%) = RND(2)-1 - EnemyHealth%(Enemy%) = 100 + EnemyHealth%(Enemy%) = 1000 EnemyCollidable%(Enemy%) = 1 EnemyCollideForce%(Enemy%) = 1000 EnemyExplodeNextFrame% = 0 IF EnemyHitboxID%(Enemy%) = 1 THEN EnemySprites$(Enemy%) = "durno_ship2" EnemyVelocity%(Enemy%,X) = RND(3) - 2 - EnemyVelocity%(Enemy%,Y) = RND(10) + 6 + EnemyVelocity%(Enemy%,Y) = RND(2) + 6 EnemyHealth%(Enemy%) = 30 EnemyCollideForce%(Enemy%) = 30 ENDIF @@ -294,6 +345,8 @@ DEF PROChud_draw PRINT "Integrity" MOVE 75,SCREENGFXHEIGHT%-110 PRINT "Velocity" + MOVE 75,SCREENGFXHEIGHT%-140 + PRINT "Distance" REM Attribute values GCOL 0,7 @@ -303,6 +356,8 @@ DEF PROChud_draw PRINT PlayerStructuralIntegrity% MOVE 130,SCREENGFXHEIGHT%-110 PRINT PlayerVelocity% + MOVE 130,SCREENGFXHEIGHT%-140 + PRINT PlayerRemainingDistance% DIV 1000 ENDPROC DEF PROCenemy_ship_collide_npc @@ -351,7 +406,7 @@ DEF PROCenemy_ship_collide_player MOVE x1+w1,y1+h1 IF EnemyCollidable%(Enemy%) = 1 THEN PlayerVelocity% = PlayerVelocity% / 2 - EnemyHealth%(Enemy%) = EnemyHealth%(Enemy%) - 30 + EnemyHealth%(Enemy%) = EnemyHealth%(Enemy%) - 300 PlayerStructuralIntegrity% = PlayerStructuralIntegrity% - EnemyCollideForce%(Enemy%) EnemyCollidable%(Enemy%) = 0 EnemyVelocity%(Enemy%,Y) = EnemyVelocity%(Enemy%,Y) / 2 @@ -456,6 +511,10 @@ DEF PROCinputs PlayerVelocity% = 0 ENDIF ENDIF + IF INKEY(-99) THEN + LeftFiring% = 1 + RightFiring% = 1 + ENDIF IF INKEY(-17) THEN IF DebugOut% = 0 THEN DebugOut% = 1 ENDIF @@ -468,6 +527,8 @@ DEF PROCplayer_target_draw RECT EnemyLocations%(LeftID%,X) + EnemyHitbox%(EnemyHitboxID%(LeftID%),X) - 10, EnemyLocations%(LeftID%,1) + EnemyHitbox%(EnemyHitboxID%(LeftID%),1) - 10, EnemyHitbox%(EnemyHitboxID%(LeftID%),2) + 20, EnemyHitbox%(EnemyHitboxID%(LeftID%),3) + 20 RECT EnemyLocations%(LeftID%,X) + EnemyHitbox%(EnemyHitboxID%(LeftID%),X) - 8, EnemyLocations%(LeftID%,1) + EnemyHitbox%(EnemyHitboxID%(LeftID%),1) - 8, EnemyHitbox%(EnemyHitboxID%(LeftID%),2) + 16, EnemyHitbox%(EnemyHitboxID%(LeftID%),3) + 16 + MOVE EnemyLocations%(LeftID%,X), EnemyLocations%(LeftID%,Y) - 20 + PRINT STR$(EnemyHealth%(LeftID%)) ENDIF IF RightID% >= 0 THEN @@ -476,6 +537,8 @@ DEF PROCplayer_target_draw RECT EnemyLocations%(RightID%,X) + EnemyHitbox%(EnemyHitboxID%(RightID%),X) -10, EnemyLocations%(RightID%,1) + EnemyHitbox%(EnemyHitboxID%(RightID%),1) -10, EnemyHitbox%(EnemyHitboxID%(RightID%),2) +20, EnemyHitbox%(EnemyHitboxID%(RightID%),3) +20 RECT EnemyLocations%(RightID%,X) + EnemyHitbox%(EnemyHitboxID%(RightID%),X) -8, EnemyLocations%(RightID%,1) + EnemyHitbox%(EnemyHitboxID%(RightID%),1) -8, EnemyHitbox%(EnemyHitboxID%(RightID%),2) +16, EnemyHitbox%(EnemyHitboxID%(RightID%),3) +16 + MOVE EnemyLocations%(RightID%,X), EnemyLocations%(RightID%,Y) - 20 + PRINT STR$(EnemyHealth%(RightID%)) ENDIF ENDPROC @@ -492,12 +555,12 @@ DEF PROCdebugoutput PRINT "X: " + STR$(PlayerLocation%(0)) " Y: " STR$(PlayerLocation%(1)) PRINT "CPF: " + STR$(Cents% - LastCents%) PRINT "Scr: " + STR$(Scr%) - PRINT "Left: " + STR$(LeftID%) - PRINT "Right: " + STR$(RightID%) + PRINT "Left: " + STR$(LeftID%) + " - " + STR$(LeftFiring%) + PRINT "Right: " + STR$(RightID%) + " - " + STR$(RightFiring%) FOR Enemy%=0 TO MaxEnemies% - 1 - PRINT "NPC:" STR$(Enemy%) + " " + FNpad(STR$(EnemyLocations%(Enemy%,X)),4) + " " + FNpad(STR$(EnemyLocations%(Enemy%,Y)),4) + " " + FNpad(STR$(EnemyVelocity%(Enemy%,X)),3) + " " + FNpad(STR$(EnemyVelocity%(Enemy%,Y)),3) - PRINT FNpad(STR$(EnemyHealth%(Enemy%)),3) + " " + EnemySprites$(Enemy%) + " " + STR$(EnemyExplodeNextFrame%) + PRINT "NPC:" STR$(Enemy%) + ": " + FNpad(STR$(EnemyLocations%(Enemy%,X)),4) + "," + FNpad(STR$(EnemyLocations%(Enemy%,Y)),4) + " V: " + FNpad(STR$(EnemyVelocity%(Enemy%,X)),2) + "," + FNpad(STR$(EnemyVelocity%(Enemy%,Y)),2) + PRINT "H: " + FNpad(STR$(EnemyHealth%(Enemy%)),3) NEXT Enemy%