switch(cs_id) {

    case "first_meet":

        switch (cs_step) {

            case 0:

                global.in_cutscene = true;
                camera_set_view_target(view_camera[0], obj_smilie);
                cs_step++;

                break;

            case 1:

                //initialize coords
                move_x = obj_smilie.x;
                move_y = obj_smilie.y;
                cs_step++;

                break;

            case 2:

                //smilie walks a little further than the warp area
                //after moving camera will set noone
                if (scr_obj_move(obj_smilie, move_x, move_y-30, 1, "diag")) {

                    camera_set_view_target(view_camera[0], noone);
                    cs_step++;
                }

                break;

            case 3:

                //instead of camera defaulting it'll slide to wylie
                scr_cs_slide(obj_smilie.x, obj_smilie.y, obj_wylie.x, obj_wylie.y, 2, 1, "diag")
                cs_step++;

                break;

            case 4:

                //wait for camera to finish and set cam follow to wylie
                if (obj_cs_camera.cs_cam_done) {

                    camera_set_view_target(view_camera[0], obj_wylie);
                    cs_step++;
                }

                break;

            case 5:

                //wylie goes near smilie
                if (scr_obj_move(obj_wylie, 253, 300, 1, "diag")) {

                    cs_step++;
                }

                break;

            case 6:

                //slide camera to smilie
                scr_cs_slide(obj_wylie.x, obj_wylie.y, obj_smilie.x, obj_smilie.y, 1, 1, "diag")
                cs_step++;

                break;

            case 7:

                //wait for cam and set cam follow to smilie
                if (obj_cs_camera.cs_cam_done) {

                    camera_set_view_target(view_camera[0], obj_smilie);
                    cs_step++;
                }

                break;

            case 8:

                //smilie backs off cuz shes kinda scared, she doesnt know wylie yet
                if (scr_obj_move(obj_smilie, obj_smilie.x, obj_smilie.y+5, 0.5, "diag")) {

                    cs_step++;
                }

                break;

            case 9:

                //they talked
                if (!textbox_started) {

                    textbox_started = true;

                    var _txt = instance_create_layer(0,0,"Instances",obj_textbox);
                    scr_game_text(_txt, "cs_firstmeet");

                }

                if (!instance_exists(obj_textbox)) {

                    cs_step++;
                }

                break;

            case 10:

                //wait for textbox(this is more like a safety net)
                if (!instance_exists(obj_textbox)) {

                    cs_step++;
                }

                break;

            case 11:

                //end cutscene
                global.in_cutscene = false;
                camera_set_view_target(view_camera[0], obj_smilie);
                instance_destroy();

                break;

        }

        break;

    case 1:

        break;

}
/// scr_obj_move(_obj, _tx, _ty, _speed, _mode)
/// u/param {instance/object} _obj
/// u/param {real} _tx
/// u/param {real} _ty
/// u/param {real} _speed
/// u/param {string} _mode
function scr_obj_move(_obj, _tx, _ty, _speed, _mode) {

    var inst = noone;

    if (is_struct(_obj)) return false;

    if (instance_exists(_obj))
        inst = _obj;
    else
        inst = instance_find(_obj, 0);

    if (inst == noone) return false;

    var reached = false;

    switch (_mode) {

        case "axis":

            {
                if (abs(inst.x - _tx) > _speed)
                    inst.x += sign(_tx - inst.x) * _speed;
                else
                    inst.x = _tx;

                if (abs(inst.y - _ty) > _speed)
                    inst.y += sign(_ty - inst.y) * _speed;
                else
                    inst.y = _ty;

                reached = (inst.x == _tx && inst.y == _ty);
            }

            break;

        case "diag":

            {
                var dx = _tx - inst.x;
                var dy = _ty - inst.y;
                var dist = point_distance(inst.x, inst.y, _tx, _ty);

                if (dist > 2) {

                    inst.x += (dx / dist) * _speed;
                    inst.y += (dy / dist) * _speed;
                    reached = false;

                } else {

                    inst.x = _tx;
                    inst.y = _ty;
                    reached = true;

                }
            }

            break;

    }

    return reached;

}