Script:Files:script/maps/island/console.script

From Mod Wiki
object island_console_trigger {
    void                preinit();
    void                init();
    void                syncFields();
    void                destroy();

    void                OnTouch( entity other, object traceObject );

    boolean                CanUse( entity p );
    void                Activate( entity p );

    entity                keycard;
    float                objectiveIndex;
};

void island_console_trigger::preinit() {
    objectiveIndex    = getFloatKeyWithDefault( "objective_index", -1 );
}

void island_console_trigger::init() {
    keycard            = getEntityKey( "keycard" );

    if ( keycard == $null_entity ) {
        sys.warning( "island_console_trigger::init Failed to Find Keycard\n" );
    }
}

void island_console_trigger::syncFields() {
    syncBroadcast( "keycard" );
}

void island_console_trigger::destroy() {
}

void island_console_trigger::OnTouch( entity other, object traceObject ) {
    if ( CanUse( other ) ) {
        Activate( other );
    }
}

void island_console_trigger::Activate( entity p ) {
    if ( !sys.isClient() ) {
        keycard.remove();
    }

    objManager.CompleteObjective( objectiveIndex, p );
}

boolean island_console_trigger::CanUse( entity p ) {
    if ( keycard == $null_entity ) {
        return false;
    }

    if ( keycard.vGetCarrier() != p ) {
        return false;
    }

    return true;
}