#ifndef INT_FRAGMENTS
 
#define INT_FRAGMENTS
 
#include "sprite_pool.c"
 
#include "engine.c"
 
#include "interpreter.c"
 
 
 
extern u8 exec_cnt;
 
 
 
i16 yy;
 
i16 xx;
 
 
 
void int_enemies_pair(u8 type, u16 tile, u16 hp)
 
{
 
    switch (exec_cnt)
 
    {
 
        case 0: 
 
            push_npc(32, -32, 0, 2, tile, type, hp, 0); 
 
            push_npc(266, -32, 0, 2, tile, type, hp, 0); 
 
            break; 
 
        case 10: 
 
            npc_by_type_set_speed(type, 0, 0); 
 
            break; 
 
        case  11: 
 
            npc_type_star(type); 
 
            break; 
 
        case 15: 
 
            npc_by_type_set_speed(type, 0, 5); 
 
            break; 
 
    }
 
}
 
 
 
void int_make_left_flyers(u8 type, i16 y, u16 tile, u16 hp, u16 bonus)
 
{
 
    switch (exec_cnt)
 
    {
 
        case 0:                                  
 
        case 3:                              
 
        case 6:                              
 
            push_npc(320, y, -3, 0, tile, 30, hp, bonus); 
 
            break;
 
    }
 
}
 
 
 
void int_make_right_flyers(u8 type, i16 y, u16 tile, u16 hp, u16 bonus)
 
{
 
    switch (exec_cnt)
 
    {
 
        case 0:                                  
 
        case 3:                              
 
        case 6:                              
 
            push_npc(0, y, 3, 0, tile, 30, hp, bonus); 
 
            break;
 
    }
 
}
 
 
 
void int_make_boom_fairy(i16 x, u16 hp, u16 bonus) 
 
{
 
    switch (exec_cnt) {
 
        case 0:                                    
 
            push_npc(x, -32, 0, 5, FIARY3, 100, hp, bonus); 
 
            break;                                          
 
        case 3:                                
 
            npc_by_type_set_speed(100, 0, 0);               
 
            break;                                          
 
        case 5:                                
 
            npc_type_star(100);                             
 
            break;                                          
 
        case 7:                                
 
            npc_type_star(100);                             
 
            break;                                          
 
        case 11:                               
 
            npc_by_type_set_speed(100, 2, 2);               
 
            break;
 
    }
 
}
 
 
 
void int_make_caravan(u8 type, i16 x, i16 tile, i16 hp, i16 bonus) 
 
{
 
    switch (exec_cnt)
 
    {
 
        case 0:                                            
 
            push_npc(x, -32, 0, 2, tile, type, hp, bonus);          
 
            push_npc(x + 32, -32, 0, 2, tile, type, hp, bonus);     
 
            break;                                                  
 
        case 5:                                        
 
            push_npc(x, -32, 0, 2, tile, type + 1, hp, bonus);      
 
            push_npc(x + 32, -32, 0, 2, tile, type + 1, hp, bonus); 
 
            break;                                                  
 
        case 10:                                       
 
            push_npc(x, -32, 0, 2, tile, type + 2, hp, bonus);      
 
            push_npc(x + 32, -32, 0, 2, tile, type + 2, hp, bonus); 
 
            break;                                                  
 
        case 15:                                       
 
            npc_by_type_set_speed(type, (x > 160) ? -4 : 4, 0);     
 
            break;                                                  
 
        case 20:                                       
 
            npc_by_type_set_speed(type + 1, (x > 160) ? -4 : 4, 0); 
 
            break;                                                  
 
        case 25:                                       
 
            npc_type_shoot(type, 3, 3);                             
 
            npc_type_shoot(type + 1, 4, 3);                         
 
            npc_type_shoot(type + 2, 5, 3);                         
 
            npc_by_type_set_speed(type + 2, (x > 160) ? -4 : 4, 0); 
 
            break;                                                  
 
        case 27:                                       
 
            npc_type_shoot(type, 2, 3);                             
 
            npc_type_shoot(type + 1, 1, 3);                         
 
            npc_type_shoot(type + 2, 0, 3);                         
 
            break;                                                  
 
        case  29:                                       
 
            npc_type_shoot(type, 1, 3);                             
 
            npc_type_shoot(type + 1, 0, 3);                         
 
            npc_type_shoot(type + 2, -1, 3);                        
 
            break;                                                  
 
        case 35:                                       
 
            npc_by_type_set_speed(type, 1, 3);                      
 
            npc_by_type_set_speed(type + 1, 0, 3);                  
 
            npc_by_type_set_speed(type + 2, -2, 3);                 
 
            break;
 
    }
 
}
 
 
 
void int_enemy_wave(u16 tile, u8 type, u16 hp) 
 
{
 
    switch (exec_cnt) {
 
        case 0:                                     
 
            push_npc(144, -32, 2, 2, tile, type, hp, 0);     
 
            push_npc(176, -32, 2, 2, tile, type, hp, 0);     
 
            break;                                           
 
        case 0 + 5:                                 
 
            push_npc(144, -32, 2, 2, tile, type + 1, hp, 0); 
 
            push_npc(176, -32, 2, 2, tile, type + 1, hp, 0); 
 
            npc_by_type_set_speed(type, 0, 2);               
 
            break;                                           
 
        case 0 + 10:                                
 
            push_npc(144, -32, 2, 2, tile, type + 2, hp, 0); 
 
            push_npc(176, -32, 2, 2, tile, type + 2, hp, 0); 
 
            npc_by_type_set_speed(type, -2, 2);              
 
            npc_by_type_set_speed(type + 1, 0, 2);           
 
            break;                                           
 
        case 0 + 15:                                
 
            push_npc(144, -32, 2, 2, tile, type, hp, 0);     
 
            push_npc(176, -32, 2, 2, tile, type, hp, 0);     
 
            npc_type_shoot(type, 3, 0);                      
 
            npc_type_shoot(type, -3, 0);                     
 
            npc_type_shoot(type + 1, 3, 0);                  
 
            npc_type_shoot(type + 1, -3, 0);                 
 
            npc_type_shoot(type + 2, 3, 0);                  
 
            npc_type_shoot(type + 2, -3, 0);                 
 
            npc_by_type_set_speed(type, 0, 2);               
 
            npc_by_type_set_speed(type + 1, -2, 2);          
 
            npc_by_type_set_speed(type + 2, 0, 2);           
 
            break;                                           
 
        case 0 + 20:                                
 
            npc_by_type_set_speed(type, 2, 2);               
 
            npc_by_type_set_speed(type + 1, 0, 2);           
 
            npc_by_type_set_speed(type + 2, -2, 2);          
 
            npc_type_shoot(type, 3, 3);                      
 
            npc_type_shoot(type, -3, 3);                     
 
            npc_type_shoot(type + 1, 3, 0);                  
 
            npc_type_shoot(type + 1, -3, 0);                 
 
            npc_type_shoot(type + 2, 3, -3);                 
 
            npc_type_shoot(type + 2, -3, -3);                
 
            break;                                           
 
        case 0 + 25:                                
 
            npc_by_type_set_speed(type, 0, 2);               
 
            npc_by_type_set_speed(type + 1, 2, 2);           
 
            npc_by_type_set_speed(type + 2, 0, 2);           
 
            npc_type_shoot(type, 3, 3);                      
 
            npc_type_shoot(type, -3, 3);                     
 
            npc_type_shoot(type + 1, 3, 0);                  
 
            npc_type_shoot(type + 1, -3, 0);                 
 
            npc_type_shoot(type + 2, 3, -3);                 
 
            npc_type_shoot(type + 2, -3, -3);                
 
            break;                                           
 
        case 0 + 30:                                
 
            npc_by_type_set_speed(type, -2, 2);              
 
            npc_by_type_set_speed(type + 1, 0, 2);           
 
            npc_by_type_set_speed(type + 2, 2, 2);           
 
            npc_type_shoot(type, 3, -3);                     
 
            npc_type_shoot(type, -3, -3);                    
 
            npc_type_shoot(type + 1, 3, -3);                 
 
            npc_type_shoot(type + 1, -3, -3);                
 
            npc_type_shoot(type + 2, 3, -3);                 
 
            npc_type_shoot(type + 2, -3, -3);                
 
            break;                                           
 
        case 0 + 35:                                
 
            npc_by_type_set_speed(type, 0, 2);               
 
            npc_by_type_set_speed(type + 1, 0, 2);           
 
            npc_by_type_set_speed(type + 2, 0, 2);           
 
            break;
 
    }
 
}
 
 
 
void int_mid_boss1(u16 tile, u16 hp) {
 
    switch(exec_cnt) {
 
    case 0: 
 
        scroll_speed = 0;
 
        push_npc(176/*160*/, -32, 0, 5, tile, 200, hp, 0); 
 
        break; 
 
    case 0 + 3: 
 
        npc_by_type_set_speed(200, 2, 0); 
 
        scroll_speed = 0; 
 
        break; 
 
    case 5:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break;
 
    case 0 + 6: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 7:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break;
 
    case 0 + 8: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 9:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break; 
 
    case 0 + 10: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 11:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break;
 
    case 0 + 12: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 0 + 13: 
 
        npc_by_type_set_speed(200, -2, 0); 
 
        break; 
 
    case 15:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break;
 
    case 0 + 16: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 19:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break;
 
    case 0 + 20: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 21:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break; 
 
    case 0 + 22: 
 
        if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
        break; 
 
    case 23:
 
        push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16); 
 
        break;
 
    case 0 + 24: 
 
        if (find_npc_by_type(200)) exec_cnt = 0 + 2; 
 
        break; 
 
    case 0 + 25: 
 
        scroll_speed = 1; 
 
        for (push_counter = 0;push_counter < 5;push_counter ++) 
 
            push_bonus((push_counter % 2) == 1 ? BONUS_CARD : HEALTH_CARD, 160, 70, 3 - (push_counter * 2), 3); 
 
        break;
 
    }
 
}
 
 
 
void int_double_caravan(u16 tile, u16 type, u16 hp, u16 bonus)
 
{
 
    switch(exec_cnt) 
 
    {
 
        case 0:                                           
 
            push_npc(32, -32, 0, 2, tile, type, hp, bonus);        
 
            push_npc(270, -32, 0, 2, tile, type + 10, hp, bonus);  
 
            break;                                                 
 
        case 0 + 4:                                       
 
            push_npc(32, -32, 0, 2, tile, type + 1, hp, bonus);    
 
            push_npc(270, -32, 0, 2, tile, type + 11, hp, bonus);  
 
            break;                                                 
 
        case 0 + 8:                                       
 
            push_npc(32, -32, 0, 2, tile, type + 2, hp, bonus);    
 
            push_npc(270, -32, 0, 2, tile, type + 12, hp, bonus);  
 
            break;                                                 
 
        case 0 + 9:                                       
 
            npc_by_type_set_speed(type, 2, 0);                     
 
            npc_by_type_set_speed(type + 10, -2, 0);               
 
            break;                                                 
 
        case 0 + 14:                                      
 
            npc_by_type_set_speed(type + 1, 2, 0);                 
 
            npc_by_type_set_speed(type + 11, -2, 0);               
 
            break;                                                 
 
        case 0 + 19:                                      
 
            npc_by_type_set_speed(type + 2, 2, 0);                 
 
            npc_by_type_set_speed(type + 12, -2, 0);               
 
            break;                                                 
 
        case 0 + 20:                                      
 
            npc_aimed_shoot(type);                            
 
            npc_aimed_shoot(type + 1);                        
 
            npc_aimed_shoot(type + 2);                        
 
            npc_aimed_shoot(type + 10);                      
 
            npc_aimed_shoot(type + 11);                      
 
            npc_aimed_shoot(type + 12);                      
 
            break;                                                 
 
        case 0 + 21:                                      
 
            npc_by_type_set_speed(type + 10, 0, 2);                
 
            npc_by_type_set_speed(type + 11, 0, 2);                
 
            npc_by_type_set_speed(type + 12, 0, 2);                
 
            npc_by_type_set_speed(type, 0, 2);                     
 
            npc_by_type_set_speed(type + 1, 0, 2);                 
 
            npc_by_type_set_speed(type + 2, 0, 2);                 
 
            break;
 
    }
 
}
 
 
 
void int_make_shooting_star(u8 type,u16 x, u16 y, u16 tile, u16 hp)
 
{
 
    switch(exec_cnt) 
 
    {
 
        case 0:                                          
 
            push_npc(x - 56/*52*/, y, 0, 0, tile, type, hp, BONUS_CARD);  
 
            break;                                                
 
        case 0 + 1:                                      
 
            push_npc(x - 50/*51*/, y - 37, 0, 0, tile, type, hp, BONUS_CARD);  
 
            break;                                                
 
        case 0 + 2:                                      
 
            push_npc(x - 19, (y<76)?16:y-60/*y - 60*/, 0, 0, tile, type, hp, BONUS_CARD);  
 
            break;                                                
 
        case 0 + 3:                                      
 
            push_npc(x + 20, (y<76)?16:y-60/*y - 60*/, 0, 0, tile, type, hp, BONUS_CARD);  
 
            break;                                                
 
        case 0 + 4:                                      
 
            push_npc(x + 50/*52*/, y - 37, 0, 0, tile, type, hp, BONUS_CARD);  
 
            break;                                                
 
        case 0 + 5:                                      
 
            push_npc(/*(x>(304-56))?304:*/x+56/*64*/, y, 0, 0, tile, type, hp, BONUS_CARD); 
 
            break;                                                
 
        case 0 + 7:                                      
 
            push_npc(x + 50/*52*/, y + 38, 0, 0, tile, type, hp, BONUS_CARD); 
 
            break;                                                
 
        case 0 + 8:                                      
 
            push_npc(x + 20, y + 61, 0, 0, tile, type, hp, BONUS_CARD); 
 
            break;                                                
 
        case 0 + 9:                                      
 
            push_npc(x - 19, y + 61, 0, 0, tile, type, hp, BONUS_CARD); 
 
            break;                                                
 
        case 0 + 10:                                     
 
            push_npc(x - 50/*51*/, y + 38/*30*/, 0, 0, tile, type, hp, BONUS_CARD); 
 
            break;                                                
 
        case 0 + 15:                                     
 
        case 0 + 20:                                     
 
        case 0 + 25:                                     
 
            push_star(x + 10, y + 10);                                  
 
            break;                                                
 
        case 0 + 30:                                     
 
            npc_by_type_set_speed(type, 0, 5);                    
 
            break;
 
    }
 
}
 
 
 
void int_push_npc(u8 type, i16 x, i16 y, i16 dx, i16 dy, u16 tile, u16 bonus, u16 hp) 
 
{
 
    push_npc(x, y, dx, dy, tile, type, hp, bonus);
 
}
 
 
 
void int_triangle(u8 hp, u16 tile, u16 bonus) 
 
{
 
    switch (exec_cnt) 
 
    {
 
        case 0: 
 
            push_npc(160, -10, 0, 2, tile, 10, hp, bonus); 
 
            break; 
 
        case 0 + 2: 
 
            push_npc(128, -10, 0, 2, tile, 11, hp, bonus); 
 
            push_npc(192, -10, 0, 2, tile, 11, hp, bonus); 
 
            break; 
 
        case 0 + 4: 
 
            push_npc(96, -10, 0, 2, tile, 12, hp, bonus); 
 
            push_npc(224, -10, 0, 2, tile, 12, hp, bonus); 
 
            break; 
 
        case 0 + 8: 
 
            push_npc(64, -10, 0, 2, tile, 13, hp, bonus); 
 
            push_npc(256, -10, 0, 2, tile, 13, hp, bonus); 
 
            break; 
 
        case 0 + 12: 
 
            push_npc(32, -10, 0, 2, tile, 14, hp, bonus); 
 
            push_npc(288, -10, 0, 2, tile, 14, hp, bonus); 
 
            break; 
 
        case 0 + 14: 
 
            npc_by_type_set_speed(10, 0, 0); 
 
            npc_by_type_set_speed(11, 0, 0); 
 
            npc_by_type_set_speed(12, 0, 0); 
 
            npc_by_type_set_speed(13, 0, 0); 
 
            npc_by_type_set_speed(14, 0, 0); 
 
            npc_type_shoot(12, 0, 4); 
 
            npc_type_shoot(13, 0, 4); 
 
            npc_type_shoot(11, 0, 4); 
 
            npc_type_shoot(10, 0, 4); 
 
            break; 
 
        case 0 + 15: 
 
        case 0 + 16: 
 
        case 0 + 17: 
 
        case 0 + 18: 
 
            npc_type_shoot(12, 0, 4); 
 
            npc_type_shoot(13, 0, 4); 
 
            npc_type_shoot(14, 0, 4); 
 
            npc_type_shoot(11, 0, 4); 
 
            npc_type_shoot(10, 0, 4); 
 
            break; 
 
        case 0 + 25: 
 
            npc_by_type_set_speed(10, 0, 2); 
 
            npc_by_type_set_speed(11, 0, 2); 
 
            npc_by_type_set_speed(12, 0, 2); 
 
            npc_by_type_set_speed(13, 0, 2); 
 
            npc_by_type_set_speed(14, 0, 2); 
 
            break;
 
    }
 
}
 
 
 
void int_make_corridor(u8 type, u16 tile, u16 hp, u16 bonus)
 
{
 
    switch(exec_cnt)
 
    {
 
        case 0:                                         
 
        case 0 + 3:                                     
 
        case 0 + 6:                                     
 
        case 0 + 9:                                     
 
            push_npc(10, -32, 0, 3, tile, type, hp, bonus);      
 
            push_npc(290, -32, 0, 3, tile, type + 1, hp, bonus); 
 
            break;                                               
 
        case 0 + 16:                                    
 
            npc_by_type_set_speed(type, 0, 0);                   
 
            npc_by_type_set_speed(type + 1, 0, 0);               
 
            break;                                               
 
        case 0 + 18:                                    
 
            npc_aimed_shoot(type);                               
 
            npc_aimed_shoot(type + 1);                            
 
            break;                                               
 
        case 0 + 19:                                    
 
            npc_by_type_set_speed(type, 0, 3);                   
 
            npc_by_type_set_speed(type + 1, 0, 3);               
 
            break;
 
    }
 
}
 
 
 
void int_make_triangle_half(u8 isLeft, u16 tile, u8 hp, u16 bonus) 
 
{
 
    switch (exec_cnt) 
 
    {
 
    case 0: 
 
        push_npc(160, -10, 0, 2, tile, 10, hp, bonus); 
 
        break; 
 
    case 0 + 2: 
 
        push_npc(isLeft ? 128 : 188, -10, 0, 2, tile, 11, hp, bonus); 
 
        break; 
 
    case 0 + 4: 
 
        push_npc(isLeft ? 96 : 220, -10, 0, 2, tile, 12, hp, bonus); 
 
        break; 
 
    case 0 + 8: 
 
        push_npc(isLeft ? 64 : 252, -10, 0, 2, tile, 13, hp, bonus); 
 
        break; 
 
    case 0 + 12: 
 
        push_npc(isLeft ? 32 : 284, -10, 0, 2, tile, 14, hp, bonus); 
 
        break; 
 
    case 0 + 14: 
 
        npc_by_type_set_speed(10, 0, 0); 
 
        npc_by_type_set_speed(11, 0, 0); 
 
        npc_by_type_set_speed(12, 0, 0); 
 
        npc_by_type_set_speed(13, 0, 0); 
 
        npc_by_type_set_speed(14, 0, 0); 
 
        npc_aimed_shoot(10); 
 
        npc_aimed_shoot(11); 
 
        npc_aimed_shoot(12); 
 
        npc_aimed_shoot(13); 
 
        npc_aimed_shoot(14); 
 
        break; 
 
    case 0 + 15: 
 
    case 0 + 16: 
 
    case 0 + 17: 
 
    case 0 + 18: 
 
        npc_aimed_shoot(10); 
 
        npc_aimed_shoot(11); 
 
        npc_aimed_shoot(12); 
 
        npc_aimed_shoot(13); 
 
        npc_aimed_shoot(14); 
 
        break; 
 
    case 0 + 25: 
 
        npc_by_type_set_speed(10, isLeft ? 2 : -2, 2); 
 
        npc_by_type_set_speed(11, isLeft ? 2 : -2, 2); 
 
        npc_by_type_set_speed(12, isLeft ? 2 : -2, 2); 
 
        npc_by_type_set_speed(13, isLeft ? 2 : -2, 2); 
 
        npc_by_type_set_speed(14, isLeft ? 2 : -2, 2); 
 
        break;
 
    }
 
}
 
 
 
void int_dropped_enemy(u8 hp, u16 x,u16 tile)
 
{
 
    push_npc(x, -10, 0, 4, tile, 1, hp, 0); 
 
    push_npc(x + 96, -10, 0, 4, tile, 1, hp, 0); 
 
}
 
 
 
void int_firing_trap(u16 tile)
 
{
 
    switch(exec_cnt) {
 
        case 0: 
 
            push_npc(32, 32, 0 ,0, tile, 50, 60, BONUS_CARD); 
 
            push_npc(288, 32, 0 ,0, tile, 50, 60, HEALTH_CARD); 
 
            push_npc(32, 120, 0 ,0, tile, 50, 60, HEALTH_CARD); 
 
            push_npc(288, 120, 0 ,0, tile, 50, 60, BONUS_CARD); 
 
            break; 
 
        case 5: 
 
        case 10:
 
        case 15:
 
        case 20: 
 
        case 25:
 
        case 30: 
 
        case 35:
 
        case 40: 
 
        case 45:
 
        case 50: 
 
        case 55:
 
        case 60: 
 
        case 65:
 
        case 70: 
 
        case 75: 
 
        case 80: 
 
            npc_aimed_shoot(50); 
 
            break; 
 
        case 0 + 85: 
 
            npc_by_type_set_speed(50, 0, 3); 
 
            break;
 
    }
 
}
 
 
 
void int_mid_boss2(u16 tile, u16 hp)
 
{
 
    switch(exec_cnt) {
 
        case 0: 
 
            push_npc(176/*160*/, 32, 2, 0, tile, 200, hp, HEALTH_CARD); 
 
            scroll_speed = 0; 
 
            break; 
 
        case 0 + 2: 
 
        case 0 + 4: 
 
        case 0 + 7: 
 
        case 0 + 9: 
 
            npc_aimed_shoot(200); 
 
            if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
            break; 
 
        case 10:
 
            push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16);
 
            break;
 
        case 0 + 11: 
 
            npc_by_type_set_speed(200, -2, 0); 
 
            if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
            break; 
 
        case 0 + 12: 
 
        case 0 + 14: 
 
        case 0 + 18: 
 
            npc_aimed_shoot(200); 
 
            if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
            break; 
 
        case 22:
 
            push_star(find_npc_by_type(200)->sprite.x + 16, find_npc_by_type(200)->sprite.y + 16);
 
            break; 
 
        case 0 + 23: 
 
            npc_by_type_set_speed(200, 2, 0); 
 
            exec_cnt = 0; 
 
            if (find_npc_by_type(200) == 0) exec_cnt = 0 + 24; 
 
            break; 
 
        case 0 + 25: 
 
            scroll_speed = 1; 
 
            push_bonus(HEALTH_CARD, 160, 120, 0, -5); 
 
            push_bonus(BONUS_CARD, 170, 110, 0, -5); 
 
            push_bonus(HEALTH_CARD, 150, 150, 0, -5); 
 
            push_bonus(BONUS_CARD, 130, 100, 0, -5); 
 
            push_bonus(BONUS_CARD, 140, 110, 0, -5); 
 
            push_bonus(HEALTH_CARD, 150, 140, 0, -5); 
 
            push_bonus(BONUS_CARD, 130, 120, 0, -5); 
 
            break;
 
    }
 
}
 
 
 
void int_aimed_side_enemies(u8 hp, u16 tile) 
 
{
 
   if (exec_cnt % 5 == 0) {
 
            yy = player.y;
 
            push_npc(1, yy, 5, 0, tile, 100, hp, BONUS_CARD);
 
            push_npc(1, yy - 32, 5, 0, tile, 100, hp, BONUS_CARD);
 
            push_npc(300, yy + 16, -5, 0, tile, 100, hp, BONUS_CARD);
 
   }
 
}
 
 
 
void int_aimed_circle(u8 hp, u16 tile) 
 
{
 
    u8 type = 10 + (exec_cnt / 10);
 
    switch (exec_cnt % 10)
 
    {
 
        case 0:   
 
            xx = player.x;
 
            yy = player.y - 16;                                       
 
            push_npc(xx - 56/*52*/, yy, 0, 0, tile, type, hp, BONUS_CARD);                                
 
            push_npc(xx - 50/*51*/, yy - 37, 0, 0, tile, type, hp, BONUS_CARD);                                  
 
            push_npc(xx - 19, yy - 60, 0, 0, tile, type, hp, BONUS_CARD);                                      
 
            push_npc(xx + 20, yy - 60, 0, 0, tile, type, hp, BONUS_CARD);                                      
 
            push_npc(xx + 52, yy - 37, 0, 0, tile, type, hp, BONUS_CARD);                                      
 
            push_npc(xx + 56/*64*/, yy, 0, 0, tile, type, hp, BONUS_CARD);          
 
            break;         
 
        case 9:
 
            npc_by_type_set_speed(type, 0, 5);
 
            break;
 
    }
 
}
 
 
 
void int_marisa_help()
 
{
 
    switch (exec_cnt)
 
    {
 
    case 0:
 
        push_npc(300, 60, -5, 0, MARISA, 200, 1024, HEALTH_CARD);
 
        break;
 
    case 7:
 
        npc_by_type_set_speed(200, 0, 0);
 
        break;
 
    case 8:
 
        xx = find_npc_by_type(200)->sprite.x;
 
        yy = find_npc_by_type(200)->sprite.y;
 
        push_bonus(HEALTH_CARD, xx - 16, yy + 16, 0, 3);
 
        push_bonus(HEALTH_CARD, xx, yy + 16, 0, 3);
 
        push_bonus(HEALTH_CARD, xx + 16, yy + 16, 0, 3);
 
        break;
 
    case 9:
 
        npc_by_type_set_speed(200, 0, -5);
 
        break;
 
    default:
 
        break;
 
    }
 
}
 
 
 
void int_set_speed(u8 type, i16 dx, i16 dy) 
 
{
 
    npc_by_type_set_speed(type, dx, dy);
 
}
 
 
 
void int_aimed_shoot(u8 type) 
 
{
 
    npc_aimed_shoot(type);
 
}
 
#endif