What do you mean, what am I changing it from?
And yes, I can walk over the stairs and they won't warp me. Cancel Warp was NOT set on the screen's Tile Warps.
Printable View
I mean, what sort of combo is there before you place the stairs?
Is the old combo type still in effect afterward?
And if you change it, does it make any difference?
I'm just trying to think of some reason this might be happening, and I haven't been able to reproduce it myself.
Edit: Wait, now I'm seeing it. Hm, that's definitely not right.
Edit again: Okay, try moving the FFC after you place the stairs. It seems like it might be blocking them somehow.
Yeah, something's definitely not working right here.
Okay, I'll try that. ...Yep, that was the problem. By the way, in the second FFC script I showed, for some reason, the check for the enemies isn't working right. It'll activate whether there are any enemies on the screen or not. =/ And by the way, I took out the ClearSprites() part because it deleted all enemies on-screen... (I forgot that enemies count as NPCs....)
Now that I think about it, it's probably supposed to block the stairs like that. Need it to do that sort of thing for moving platforms and such. Still, it's failing to get the FFC's position properly for some reason...
For the enemies thing, try using Trace() to check the value of Screen->NumNPCs(). Be sure it's what you think it is. Also, make sure it's actually being activated where you think, since it looks like there's more than one way it can happen.
Just give it a number and it'll record it in allegro.log when it executes.
So if you put Trace(5); in your code, it'll put "5.0000" in allegro.log whenever it runs that line.
Since you can only trace numbers, be sure to use distinctive ones to mark what's what.
If you see nothing at all, it'd be a good idea to trace some other things to be sure it's doing what you think it's doing.
If, for example, you have this:
... You might try this instead:Code:if (condition)
{
int ScrnNPCs = Screen->NumNPCs();
Trace(ScrnNPCs);
// ...
}
else
{
// ...
}
Code:if (condition)
{
int ScrnNPCs = Screen->NumNPCs();
Trace(1111);
Trace(ScrnNPCs);
// ...
}
else
{
Trace(2222);
// ...
}
I tried doing another Trace (Using "2101", since I'm REALLY into AYB stuff now. XD), but... It never appeared in Allegro.log. Here's the output:
Please note that for some reason, the NPCCOUNT thing seems to happen AFTER a check for a certain inventory item in Link's inventory.... What's up with that?Code:SETV d2,0
SETR d3,REFFFC
PUSHR d3
PUSHR d2
SETR d4,SP
SETV d2,0
SETV d2,0.0001
COMPAREV d2,0
GOTOTRUE 133
SETR d2,gd2
PUSHR d2
SETV d2,0
POP d3
COMPARER d2,d3
GOTOTRUE 18
SETV d2,0
GOTO 19
SETV d2,0.0001
SETV d3,0
COMPAREV d2,0
GOTOTRUE 30
SETV d2,1
SETR gd1,d2
PUSHR d4
SETV d2,28
PUSHR d2
GOTO 137
POP d4
GOTO 126
SETV d3,0
SETR d2,gd2
PUSHR d2
SETV d2,1
POP d3
COMPARER d2,d3
GOTOTRUE 39
SETV d2,0
GOTO 40
SETV d2,0.0001
SETV d3,0
COMPAREV d2,0
GOTOTRUE 92
PUSHR d4
SETV d2,49
PUSHR d2
SETR d2,gd0
PUSHR d2
GOTO 150
POP d4
SETR d6,d4
ADDV d6,1
STOREI d2,d6
PUSHR d4
SETV d2,59
PUSHR d2
SETV d2,2101
PUSHR d2
GOTO 140
POP d4
PUSHR d4
SETV d2,68
PUSHR d2
SETR d6,d4
ADDV d6,1
LOADI d2,d6
PUSHR d2
GOTO 140
POP d4
SETR d6,d4
ADDV d6,1
LOADI d2,d6
PUSHR d2
SETV d2,0
POP d3
COMPARER d2,d3
GOTOTRUE 79
SETV d2,0
GOTO 80
SETV d2,0.0001
SETV d3,0
COMPAREV d2,0
GOTOTRUE 90
SETV d2,1
SETR gd1,d2
PUSHR d4
SETV d2,89
PUSHR d2
GOTO 137
POP d4
SETV d2,0
GOTO 125
SETV d3,0
SETR d2,gd2
PUSHR d2
SETV d2,3
POP d3
COMPARER d2,d3
GOTOTRUE 101
SETV d2,0
GOTO 102
SETV d2,0.0001
SETV d3,0
COMPAREV d2,0
GOTOTRUE 124
PUSHR d4
SETV d2,113
PUSHR d2
SETR d2,gd0
PUSHR d2
SETR d2,gd4
PUSHR d2
GOTO 144
POP d4
COMPAREV d2,0
GOTOTRUE 123
SETV d2,1
SETR gd1,d2
PUSHR d4
SETV d2,122
PUSHR d2
GOTO 137
POP d4
SETV d2,0
SETV d2,0
SETV d3,0
SETV d3,0
PUSHR d4
SETV d2,131
PUSHR d2
GOTO 137
POP d4
GOTO 6
SETV d2,0
SETV d3,0
POP d3
QUIT
WAITFRAME
POP d3
GOTOR d3
POP d3
TRACER d3
POP d3
GOTOR d3
POP d0
POP d3
SETR d5,d3
SETR d2,LINKITEMD
POP d3
GOTOR d3
POP d3
SETR d5,d3
SETR d2,NPCCOUNT
POP d3
GOTOR d3
Wait... Are you not running the script in the game before looking for the output? 'Cause you have to do that first.