GML - Not passing through a part of the code

60 views Asked by At

This is a Trigger Warp code:

if (needEnter) {
    if (keyboard_check(vk_enter)) {
        audio_play_sound(door_open,0,0);
        room_goto(targetRoom);
        obj_player.x = targetX;
        obj_player.y = targetY;
        obj_player.image_index = playerSide
    } 
    else { 
        if (!instance_exists(obj_msgballoon)) {
            balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon);
            balloon.balloon_msg = msg_openable_door;
        }
        playerIsIn = true
    }
}
else {
    room_goto(targetRoom);
    obj_player.x = targetX;
    obj_player.y = targetY;
}

The code above triggers the spawn of the obj_msgballoon Instance normally... but something like this doesn't:

if (keyboard_check(vk_enter)) {
    if instance_exists(obj_msgballoon) {
        if (obj_msgballoon.image_yscale > 1) {
            if cooldown < 1 {
                instance_destroy(obj_msgballoon)    
                balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon)
                balloon.isTimed = true;
                balloon.balloon_msg = msg_locked_door;
                cooldown = 15;
            }
        }
        cooldown--;
    } 
    else {
     balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon)  
     balloon.isTimed = true;
     balloon.balloon_msg = msg_locked_door;
    }
    if (!audio_is_playing(locked_door_snd)) {
        audio_play_sound(locked_door_snd,0,0);
    }
} 

Even if I do something like this it does not work:

balloon = instance_create_layer(obj_player.x, obj_player.bbox_top, "hud", obj_msgballoon);
balloon.balloon_msg = msg_openable_door;

I just can't find out the problem... maybe I'm missing something?

Edit: Here it is the code of the obj_msgballoon;

STEP:

if (p) {
    sprite_index = ballon_msg;  
    p = false;
}

if (!isTimed) {
    if image_yscale < 1 {
     image_yscale += 0.3
    }
    x = obj_player.x
    y = obj_player.bbox_top - 15
} else {
    if image_yscale < 1 {
     image_yscale += 0.3
    }
    x = obj_player.x
    y = obj_player.bbox_top - 15
    if cooldown < 1 {
        instance_destroy();
    }
    cooldown--;
}

CREATE:

image_yscale = 0
p = true;
cooldown = 40;
isTimed = false;
balloon_msg = pointer_null;
0

There are 0 answers