From 500a4fac427bbb439055c2e63a70db7a3f3c7fc0 Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 20 Mar 2021 22:33:06 +0000 Subject: [PATCH] Killable player and enemies --- !RunImage,ff8 | Bin 10308 -> 10692 bytes Makefile,fe1 | 5 +++++ c/CTheEscape | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/!RunImage,ff8 b/!RunImage,ff8 index a61a2c1ea3ec34dff6778e257d388dfce97815ff..3ccef587f215802e78b713bd06f3126020ac4d35 100644 GIT binary patch delta 3752 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 LL3N-8P$TGn`VzX4 delta 3282 zcmZ8keNa@_6+iFsc3E&2c4cAtSa%m<5N9;5CMhH$?)ue6(5xb+2ET(g)`(V()l8-f z7GllB2wpHUn)(t`!5XWTXj3%~Mx4^tbhJ&aHkrx3-CPT-CUz!&bYkfCcOMV44Krsr z=XcKe-E%+AdC*(k8!9AHH6d1__*4tU9YkN=DJJ@%MEXy8YvB>5NbaXTw9t79s4<1q z*dNUl|IE8LDnY*v{Zr^N^uIvA1w94&pP}D?F5>&34+=YTZ}cUmNm-^ZU|nOsl?&4P z0^kF_Uf^k;0ly5Zj$M+nY&T)$%~xX=fGpMh*MOXbRipbw9s8eFV<&;k)BTr#9D_AS z_n(6`1^I6SsnGqWfiPI5y8k$=uaVydWRmdPjsU4d#vUN!M2zDgkmZPxDx0FsKs_QZ zybtJRRBotC05~ZJlh;T)bpXDmo*Coi%uQV3U`tErM4=W=(t&@SS17K~8(b9WBucl?elD>Ssg*gu zfJX{7M@>`{yO~IwyLY^Hpyk(Ww52#74@+P82P+TrW@?U5@Rf){ZTyzP7Fvo6t3)O> zM-w56PDb`!WN+%K9hlWc)PR%R&N?jTAIACXB=0vI<~LD&`D#=y$fR8lDtE9QX^+Zx z&FnX6`D1S5EIS}hYK&T_m+P;^u4*Q$8tY^{tyH;ll!&?0OB}BXZrpXr7B9cL%F91w zHR%sc`#q9hctCK4pMg#W!AsC3^bpY%9#m9K!tWD?KhvhhHnTJ7mBHF!UadVT^I0Ra zsjx2M&hm0O*cc&{7tmRHIcm{Y@nop6r&(}R)&kLkM4=caU6g3$X>o@ZYSQn(gFBFL z7yho=JQ)v20lv*(5YtV(P>F(3tFeL&zw6nFQDuHOb7AC#dU+Z2Y@$JINGGrYvq7Fo zB62f_bwW;3(p>2IASej+vS+O0Z9}HvGZd4hgYB`F7Tz(C_cnWZZ=IJrJi9P)Tl*yn zM4B9R5s7i@3TZu?ZF@*s&DPnx(z9&0&Ci}n8)bVJx#~7A_V@;Whh4W7NYAmmHkUMo znKH&n)ofyh%T$y?aSL-~6pWb-jr{xhMzmWg+N}()Mk;8GI)Ph7gjCAjM1~o*UD)~K zjf^G8`0J!^GyWs9FEaAOZo?gd`=caxTm}J3@&^y=$DfJg&!q#LeET`s5AY1+O)z=6 z-O<9G5?aO=#7jpD;RCZA{V#M4e3!jyOceYN@Hy#sI@i5pwP^-dzD{-@PI1>-SdG25 z%ji?~tIX00lTUP{s*MG0IcTld_C!q*dZF<9`f?u6Fnu=|MtU+Tdh%H9z^P7_W1lN8 z>SU|!i^E?k!?$**!^;ot_VNqcy}SoAp-HM6?yQiid`IuSGIx;y^KV=ys94L(G=2K3oDI8|&-P2anGP z2q0-j$;yb_(=kjg$VPNaLu4HO4zOd}Vh|~G0MFN-m5bY0n(yVg)N0&FE8mVIkp1mE zrA*akLM$kP9@x`yjyTJ@1zv8#d0KIvm&Jqwu_84^PKs+P3`T@+g>hw1h%*f|Va_dz zonft`f4(e?Gh9^bN&{Lp`czV8IAVsFZt!!C#<@kSsWj;FX zGD;So&ZQ{#t7TrU*xR{#w%D>LubsED>)EdCmGF|kjR%o&3mKKjsAWUhu4y%fryQO? z8J-X@MO=#D0N+nxzg+L-PIPRjX8774MOA%lL5}P30KDR|bKxBi^dfdFY_ZO5tRvPf zMU2&VgA3e;m^19n9M_nMK)=pZV{ZFden6a)4__KYWFex9UC(hzJ~oh3I~5P&eELu# zUY|(BBi|(A+aT*I>hDRLpx%fhZacF5%mF9wHYo``M3lxgDP z5!t18_!Fq10@4W1zW*lT8rE0>?i%Qi18csYh~I~-1#ZU;>>El9ZdkRhUi<-VAxhYK zR4wJ^!~x}0RWzNJY2{d_9DHuv*vsg*Q8-t8^r!2stYZn0z*A73Z_Fv(jemv?qop!!Ra_5ZK6%uxE93zdH7Giih4JI;7%%4v6>>JfB1Q tA$N|j$>Xcpi4qt4xTMG5dyuFPausq7@-gHl NPCS[i].explodenextframe) + { + if((NPCS[i].sprite >= explode_shp1) && (NPCS[i].sprite <= explode_shp4)) + { + NPCS[i].sprite++; + if(NPCS[i].sprite > explode_shp4) + NPCS[i].sprite = explode_shp1; + } + NPCS[i].explodenextframe = tick + 4; + } + if(debugs[dbhitbox]) { graphics_colour(colours[debugpink]); @@ -303,7 +316,7 @@ void game_respawn_npc(int id) NPCS[id].location.X = rand() % DISPLAY_X; NPCS[id].location.Y = DISPLAY_Y + (rand() % (DISPLAY_Y/2)); NPCS[id].npctype = rand() % (maxnpctype); - + NPCS[id].collidable = 1; switch(NPCS[id].npctype) { case bigdurno: @@ -315,6 +328,7 @@ void game_respawn_npc(int id) NPCS[id].hitbox_bl.Y = 0; NPCS[id].hitbox_tr.X = 48; NPCS[id].hitbox_tr.Y = 74; + NPCS[id].collideforce = 1000; break; case littledurno: NPCS[id].sprite = durno_ship2; @@ -325,6 +339,7 @@ void game_respawn_npc(int id) NPCS[id].hitbox_bl.Y = 0; NPCS[id].hitbox_tr.X = 38; NPCS[id].hitbox_tr.Y = 56; + NPCS[id].collideforce = 30; break; }; } @@ -400,6 +415,8 @@ void game_collider_tick() int i; for(i = 0; i < MAX_NPCS; i++) { + if(!NPCS[i].collidable) + continue; // Excuse this formatting if( game_hitbox_collide( @@ -410,12 +427,31 @@ void game_collider_tick() ) ) { + if(debugs[dbhitbox]) { font_colour(colours[debuggreen],colours[lcars_black],font[sys_12_8]); sprintf(hudbuffer,"NPCS[%i] hits player",i,NPCS[i].location.X,NPCS[i].location.Y); draw_text(hudbuffer,DISPLAY_X-900,DISPLAY_Y-260-(i * 20),font[sys_12_8]); } + + NPCS[i].health -= 300; + NPCS[i].collidable = 0; + NPCS[i].velocity.Y = NPCS[i].velocity.Y / 2; + NPCS[i].velocity.X = NPCS[i].velocity.X * 4; + + Player.shields -= NPCS[i].collideforce; + if(Player.shields < 0) + { + Player.integrity += Player.shields; + Player.shields = 0; + } + + if(NPCS[i].health <= 0) + { + NPCS[i].sprite = explode_shp1; + NPCS[i].explodenextframe = tick + 4; + } } } } @@ -578,8 +614,11 @@ int main(int argc, char *argv[]) game_setup(); - while(1) + while(Player.integrity > 0) game_tick(); + + printf("you ded\n"); + free(buffer); return 0;