The FFC script for a one-way block seems really simple, so I gave it a whirl. Problem is, the compiler doesn't like the Link->DownPressed() function, or it's relatives. Tells me there is no such function. According to Jman's ZScript documentation, there is... am I missing something in the syntax?

Code:

// =====================================
// No_South: While on the tile that this
// FFC occupies, Link will not be able to
// move south.
// =====================================


ffc script no_south {

	void run(){

		if ((Link->X >= this->X - 8) && (Link->X <= this->X +8) &&
		(Link->Y >= this->Y - 8) && (Link->Y <= this->Y +8) &&
		(Link->UpPressed() == true) ){

			Link->Y = Link->Y + 4;
		}
	
	} // end of void run
} // end of ffc script



// =====================================
// No_North: While on the tile that this
// FFC occupies, Link will not be able to
// move North.
// =====================================


ffc script no_north {

	void run(){

		if ((Link->X >= this->X - 8) && (Link->X <= this->X +8) &&
		(Link->Y >= this->Y - 8) && (Link->Y <= this->Y +8) &&
		(Link->DownPressed() == true) ){

			Link->Y = Link->Y - 4;
		}
	
	} // end of void run
} // end of ffc script


// =====================================
// No_East: While on the tile that this
// FFC occupies, Link will not be able to
// move East.
// =====================================


ffc script no_east {

	void run(){

		if ((Link->X >= this->X - 8) && (Link->X <= this->X +8) &&
		(Link->Y >= this->Y - 8) && (Link->Y <= this->Y +8) &&
		(Link->RightPressed() == true) ){

			Link->X = Link->X - 4;
		}
	
	} // end of void run
} // end of ffc script


// =====================================
// No_West: While on the tile that this
// FFC occupies, Link will not be able to
// move East.
// =====================================


ffc script no_west {

	void run(){

		if ((Link->X >= this->X - 8) && (Link->X <= this->X +8) &&
		(Link->Y >= this->Y - 8) && (Link->Y <= this->Y +8) &&
		(Link->LeftPressed() == true) ){

			Link->X = Link->X + 4;
		}
	
	} // end of void run
} // end of ffc script
EDIT: I suppose I could just have one function that gets passed an argument from the FFC to tell it which directions are blocked instead. I'd still have the same problem.

NOTE: If people are making 2-D games, some script like this will help you make platforms, as in Mario 2, that you can jump up through but not fall down through.