- /* 
-  * src/e_bomb.c 
-  * 
-  * Copyright (C) 1998-2002 BigOrno (bigorno@bigorno.net). All rights reserved. 
-  * 
-  * The use and distribution terms for this software are contained in the file 
-  * named README, which can be found in the root of this distribution. By 
-  * using this software in any fashion, you are agreeing to be bound by the 
-  * terms of this license. 
-  * 
-  * You must not remove this notice, or any other, from this software. 
-  */ 
-   
- #include "system.h" 
- #include "game.h" 
- #include "ents.h" 
- #include "e_bomb.h" 
-   
- #include "e_rick.h" 
-   
- /* 
-  * public vars (for performance reasons) 
-  */ 
- U8 e_bomb_lethal; 
- U8 e_bomb_xc; 
- U16 e_bomb_yc; 
-   
- /* 
-  * private vars 
-  */ 
- U8 e_bomb_ticker; 
-   
-   
- /* 
-  * Bomb hit test 
-  * 
-  * ASM 11CD 
-  * returns: TRUE/hit, FALSE/not 
-  */ 
- U8 e_bomb_hit (U8 e) 
- { 
-    if (ent_ents[e].x > (E_BOMB_ENT.x >= 0xE0 ? 0xFF : E_BOMB_ENT.x + 0x20)) 
-       return FALSE; 
-    if (ent_ents[e].x + ent_ents[e].w < (E_BOMB_ENT.x > 0x04 ? E_BOMB_ENT.x - 0x04 : 0)) 
-       return FALSE; 
-    if (ent_ents[e].y > (E_BOMB_ENT.y + 0x1D)) 
-       return FALSE; 
-    if (ent_ents[e].y + ent_ents[e].h < (E_BOMB_ENT.y > 0x0004 ? E_BOMB_ENT.y - 0x0004 : 0)) 
-       return FALSE; 
-   
-    return TRUE; 
- } 
-   
-   
- /* 
-  * Initialize bomb 
-  */ 
- void e_bomb_init (U16 x, U16 y) 
- { 
-       E_BOMB_ENT.n = 0x03; 
-       E_BOMB_ENT.x = x; 
-       E_BOMB_ENT.y = y; 
-       e_bomb_ticker = E_BOMB_TICKER; 
-       e_bomb_lethal = FALSE; 
-   
-       /* 
-        * Atari ST dynamite sprites are not centered the 
-        * way IBM PC sprites were ... need to adjust things a little bit 
-        */ 
-       E_BOMB_ENT.x += 4; 
-       E_BOMB_ENT.y += 5; 
-   
- } 
-   
-   
- /* 
-  * Entity action 
-  * 
-  * ASM 18CA 
-  */ 
- void e_bomb_action (U8 e) 
- { 
-    /* tick */ 
-    e_bomb_ticker--; 
-   
-    if (e_bomb_ticker == 0) 
-    { 
-       /* 
-        * end: deactivate 
-        */ 
-       E_BOMB_ENT.n = 0; 
-       e_bomb_lethal = FALSE; 
-    } 
-    else if (e_bomb_ticker >= 0x0A) 
-    { 
-       /* 
-        * ticking 
-        */ 
-       if ((e_bomb_ticker & 0x03) == 0x02) 
-          syssnd_play (WAV_BOMBSHHT, 1); 
-   
-       /* ST bomb sprites sequence is longer */ 
-       if (e_bomb_ticker < 40) 
-          E_BOMB_ENT.sprite = 0x99 + 19 - (e_bomb_ticker >> 1); 
-       else 
-          E_BOMB_ENT.sprite = (e_bomb_ticker & 0x01) ? 0x23 : 0x22; 
-    } 
-    else if (e_bomb_ticker == 0x09) 
-    { 
-       if (E_RICK_STTST (E_RICK_STZOMBIE)) 
-          return; 
-   
-       /* 
-        * explode 
-        */ 
-       syssnd_play (WAV_EXPLODE, 1); 
-   
-       /* See above: fixing alignment */ 
-       E_BOMB_ENT.x -= 4; 
-       E_BOMB_ENT.y -= 5; 
-       E_BOMB_ENT.sprite = 0xa8 + 4 - (e_bomb_ticker >> 1); 
-       e_bomb_xc = E_BOMB_ENT.x + 0x0C; 
-       e_bomb_yc = E_BOMB_ENT.y + 0x000A; 
-       e_bomb_lethal = TRUE; 
-   
-       if (e_bomb_hit (E_RICK_NO)) 
-          e_rick_gozombie (); 
-    } 
-    else 
-    { 
-       if (E_RICK_STTST (E_RICK_STZOMBIE)) 
-          return; 
-   
-       /* 
-        * exploding 
-        */ 
-       E_BOMB_ENT.sprite = 0xa8 + 4 - (e_bomb_ticker >> 1); 
-   
-       /* exploding, hence lethal */ 
-       if (e_bomb_hit (E_RICK_NO)) 
-          e_rick_gozombie (); 
-    } 
- } 
-