How to call "isMapPassable"?

Kronicide

Veteran
Veteran
Joined
Jul 7, 2020
Messages
37
Reaction score
18
First Language
Swedish
Primarily Uses
RMMV
There's something basic I don't understand about JavaScript here, I'm sure.

This function in rpg_objects.js seems to do exactly what I need.

Skärmklipp 2020-07-16 14.57.24.png

But I don't understand how to call it. Whether I call it with this. or Game_CharacterBase. I get the error that it's not a function.

Here's the code:
JavaScript:
// caught(EVENT1, EVENT2)
// -----------------------------------
// Checks if EVENT1 has caught EVENT2.
// I.e., whether EVENT1 is right next to EVENT2, facing EVENT2, and the map
// is passable from EVENT1's square to EVENT2's square.
//
Game_Interpreter.prototype.caught = function(event1_id, event2_id){
    
    // Not even close.
    if (!this.eventInRange(event1_id, event2_id, 1)){
        return false;
    }

    // EVENT1 not facing EVENT2.
    var e1_xy = Kron.AI_base.getXY(event1_id, this.eventId());
    var e2_xy = Kron.AI_base.getXY(event2_id, this.eventId());
    var e1_dir = Kron.AI_base.getDirection(event1_id, this.eventId());

    if ((e1_dir === 2 && !(e1_xy.Y < e2_xy.Y))
        ||
        (e1_dir === 4 && !(e1_xy.X > e2_xy.X))
        ||
        (e1_dir === 8 && !(e1_xy.Y > e2_xy.Y))
        ||
        (e1_dir === 6 && !(e1_xy.X < e2_xy.X))){

        return false;
    }
    
    // EVENT1 can't pass to the square of EVENT2.
    if (!this.isMapPassable(e1_xy.X, e1_xy.Y, e1_dir)){
        return false;
    }

    // All checks are a pass.
    return true;
}

And the error message:

Skärmklipp 2020-07-16 15.00.21.png

If I just change the relevant bit above to
JavaScript:
if (!Game_CharacterBase.isMapPassable(e1_xy.X, e1_xy.Y, e1_dir)){
    return false;
}
I get the same error:

Skärmklipp 2020-07-16 15.02.22.png

I guess I simply don't know where this function lives. (I understand the official library docs to also say it's in Game_CharacterBase).
 

Trihan

Speedy Scripter
Veteran
Joined
Apr 12, 2012
Messages
2,380
Reaction score
1,562
First Language
English
Primarily Uses
RMMV
Game_CharacterBase is the class that character types inherit from: the player, followers, events etc. Therefore, you call it from an instance of one of those classes.

You could, for example, do $gamePlayer.isMapPassable to check whether the player can pass through a given tile. Or $gameMap.events[event id].isMapPassable etc.

What you need to remember is that because you're not dealing with a static class, the functions can only be called by an instance of that class.
 

Kronicide

Veteran
Veteran
Joined
Jul 7, 2020
Messages
37
Reaction score
18
First Language
Swedish
Primarily Uses
RMMV
What you need to remember is that because you're not dealing with a static class, the functions can only be called by an instance of that class.
Thanks, I appreciate it. I think what might have confused me here is that the function doesn't actually use any properties of the calling object. It just checks generic map properties. So I'm calling it from $gamePlayer, even though I'm not (necessarily) checking whether it's the player that can pass from the given square in the given direction. It seems to work fine. (But there was another problem with the function I pasted above--just so no one tries to use it.)

Thanks again!
 

Trihan

Speedy Scripter
Veteran
Joined
Apr 12, 2012
Messages
2,380
Reaction score
1,562
First Language
English
Primarily Uses
RMMV
Yeah, it seems like they just implemented that as a shorthand way for an event/character to check map passability by calling the one from Game_Map.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Maker-ing has been being the best thing that happened to me this year so far. it is so good to rescue some old skills fo creativity and the people I have met are really incredible. I love my coffelanders and tocudos buddies. Maybe one day I will reach other countries folks too. S2
Well... My game plays better at 1920x1080, so I guess that's the new resolution. Still runs at 60FPS. :LZSexcite: Also... I really want a boss to be able to build new maps around the player... Mostly because it's visually spectacular! I'm er... not quite sure yet how I can do that without making MV explode.... But I'll find a way, anything in service to the "sparkles"! :kaopride:
How to change your netbooks screen resolution

Forum statistics

Threads
100,790
Messages
979,556
Members
132,432
Latest member
Thoolo
Top