Pixel Movement

by Forum_account
Pixel Movement
A pixel movement library for isometric and top-down maps.
ID:895393
 
First off I'd like to thank you FA for all the work and sweat you put into this lib, It's been a great help, and it will always be for any developer.

But I'm here facing some problems due to my incompetence, first off is the Flag_ground proc.

I realize that if I want to do something like a slippery ice turf, The const var would have to be an even number, that's simple, but the issue that got my head spinning is this


mob
action()
if(on_ground & !Jump & LAVA)
world << "[src] has fallen into the lava!"
src << "You've fallen into the lava!"
src.px=32
src.py=32
src.loc=locate(1,1,2)
..()


Why when I apply an extra condition in that If statement, the whole thing just gets messed up, why, I don't know, logically It should work, since Jump var is always 0 unless the user jumps.

I know it's just wrong to create such a var when there's already one integrated into the library, here comes my second issue, which might just solve the first, which is,

I've been trying to set the on_ground var to zero during Jump verb execution with the usual --, but I don't think it's that simple since there's probably a proc that always keeps on_ground value a 1, I'd appreciate it if you would instruct me on the proper way to do it, thanks.
The & operator performs the binary AND on all bits in the numbers. If you say if(on_ground & LAVA) you're not just checking that both numbers are non-zero (thats what the && operator would do), you're checking that the result of ANDing the bits together is non zero. If you take the !jump out it should work. For them to jump they had to first land on the lava.

The on_ground var is 1 when you're on the ground and 3 when you're on lava (assuimg LAVA =2). When you do 3 & 2 you get 2. The value of !jump is 1, and when you do 1& 2 you get 0.

The library automatically sets the value of the on_ground var. You don't need to ever set it yourself.
In response to Forum_account
The explanation was great, it's pretty clear to me now, but if I can't set the on_ground manually then I'll be a bit in trouble.

since I'm trying to implement jumping in a 2D game, I know that doesn't sound like a good mix but I believe an icon_state and some automatic movement can give the player an illusion of jumping, The jump procs in your library is for isometric games, unless I missed something again, couldn't there be a way to set on_ground value to 0? If that ends up causing more bad then good, then I know an alternative way to implement the jump verb without having it interact with on_ground var, thanks.
3D mode is for side perspectives, including but not limited to the isometric. 3D is pretty much anything with 3 dimensions; x, y, and z.
In response to Kaiochao
when it comes to BYOND, there's only so few modes. If we're talking about BYOND here, X,Y,Z(For different Z map levels) would usually be known as the 2D mode, to be honest, I'd love coding an isometric game, the only problem is the small screen, It always feels like a cutscene, which is just a big turn-off for me (inb4thatswhatshesaid)
In response to SanctusAnguis
We're definitely not talking about BYOND's z-levels here.
You can use the 3D movement mode with any perspective, not just isometric. You can use it with the top-down perspective if you'd like.
In response to Forum_account
Turned on the top-down mode, It worked like a charm, didn't even need my obsolete jump verb, Thanks FA and Kaio.