snake5 icon

defended: b5-7.sgs

snake5 | PRO | 04/13/16 10:59:10 AM UTC | 0 ⭐ | 796 👁️ | Never ⏰ | []
C++ |

4.1 KB

|

None

|

0 👍

/

0 👎

 
include "b5-common";
 
function LevelEnd()
{
    GotoLevel( 8 );
}
 
global enemy1trigger = event();
 
function p0btn_Activate()
{
    level.FindEntity( "p0l0" ).enabled = false;
    level.FindEntity( "p0l1" ).enabled = false;
    level.FindEntity( "p0light" ).enabled = false;
    this.Stop();
    enemy1trigger.signaled = true;
}
 
function p1btn_Activate()
{
    level.FindEntity( "p1l0" ).enabled = false;
    level.FindEntity( "p1l1" ).enabled = false;
    level.FindEntity( "p1light" ).enabled = false;
    this.Stop();
}
 
function p2enemies()
{
    E1 = level.FindEntity( "enemy2a" ).ctrl;
    E2 = level.FindEntity( "enemy2b" ).ctrl;
    
    if( !( action = ActorAction.start( 1, E1, E2 ) ) )
        return;
    
    E1.set_speaker_info( "p2btn", "A" );
    E2.set_speaker_info( "p2btn", "B" );
    
    subtime = 14;
    
    action.wait( 1 );
    E1.play_anim( "standing_idle", true );
    E1.look_at( E2.entity.position );
    E1.speak( "Hey, what happened with the lasers?", subtime );
    action.wait( 2 );
    E2.play_anim( "standing_idle", true );
    E2.look_at( E1.entity.position );
    action.wait( 3 );
    E2.speak( "I've no idea!", subtime );
    action.wait( 2 );
    E1.speak( "Let's go check!", subtime );
    action.wait( 2 );
    E1.stop_anim();
    E2.stop_anim();
    SPEECHSYS.ClearSpeechFor( E1.entity );
    SPEECHSYS.ClearSpeechFor( E2.entity );
    E1.i_speed = 0.4;
    a = subthread E1.run_to_target( level.positions.e2a_pos2 );
    b = subthread E2.run_to_target( level.positions.e2b_pos2 );
    sync( a, b );
    a = subthread E1.look_at( level.positions.e2_look2 );
    b = subthread E2.look_at( level.positions.e2_look2 );
    sync( a, b );
    action.wait( 9999999999999 );
    
    action.end();
}
 
function p2btn_Activate()
{
    level.FindEntity( "p2l0" ).enabled = false;
    level.FindEntity( "p2l1" ).enabled = false;
    level.FindEntity( "p2light" ).enabled = false;
    this.Stop();
    thread p2enemies();
}
 
function Enemy0_Behavior(E)
{
    for(;;)
    {
        E.i_speed = 0.4;
        E.patrol
        ([
            { action = "moveauto", pos = level.positions.enemy0stand },
            { action = "lookat", pos = level.positions.enemy0look },
            { action = "wait", time = 3 },
        ]);
        E.fighter_behavior_1();
    }
}
 
function Enemy1_Behavior(E)
{
    sync( enemy1trigger );
    for(;;)
    {
        E.i_speed = 0.4;
        E.patrol
        ([
            { action = "moveauto", pos = level.positions.e1pp1 },
            { action = "lookat", pos = level.positions.enemy0stand },
            { action = "wait", time = 3 },
            { action = "moveauto", pos = level.positions.e1pp0 },
            { action = "wait", time = 3 },
        ]);
        E.fighter_behavior_1();
    }
}
 
function Enemy2_Behavior(E)
{
    for(;;)
    {
        E.i_speed = 0.4;
        E.patrol
        ([
            { action = "lookat", pos = level.positions.e2look },
            { action = "wait", time = 3 },
        ]);
        E.fighter_behavior_1();
    }
}
 
function Enemy3_Behavior(E)
{
    for(;;)
    {
        E.i_speed = 0.4;
        E.patrol
        ([
            { action = "moveauto", pos = level.positions.e3pp0 },
            { action = "wait", time = 2 },
            { action = "lookat", pos = level.positions.e3pp0look },
            { action = "wait", time = 3 },
            { action = "moveauto", pos = level.positions.e3pp1 },
            { action = "wait", time = 3 },
        ]);
        E.fighter_behavior_1();
    }
}
 
function Enemy4_Behavior(E)
{
    for(;;)
    {
        E.i_speed = 0.4;
        E.patrol
        ([
            { action = "moveauto", pos = level.positions.e4stand },
            { action = "lookat", pos = level.positions.e4look },
            { action = "wait", time = 3 },
        ]);
        E.fighter_behavior_1();
    }
}
 
function onLevelStart()
{
    SetOverlayMusic( "/music2" );
    level.CreateEntity( "TPSPlayer" ).
    {
        position = level.positions.player_start,
        viewDir = vec3(1,0,0),
    };
    MarkExit( "trig_end", LevelEnd );
    level.FindEntity( "p0btn" ).OnActivate = p0btn_Activate;
    level.FindEntity( "p1btn" ).OnActivate = p1btn_Activate;
    level.FindEntity( "p2btn" ).OnActivate = p2btn_Activate;
    level.FindEntity( "enemy0" ).func = Enemy0_Behavior;
    level.FindEntity( "enemy1" ).func = Enemy1_Behavior;
    level.FindEntity( "enemy2a" ).func = Enemy2_Behavior;
    level.FindEntity( "enemy2b" ).func = Enemy2_Behavior;
    level.FindEntity( "enemy3" ).func = Enemy3_Behavior;
    level.FindEntity( "enemy4" ).func = Enemy4_Behavior;
}

Comments