ffc script ReflectMagic{ void run(){ eweapon e; lweapon l; int q; while(true){ for ( q = 1; q < Screen->NumLWeapons(); q++ ) { l = Screen->LoadLWeapon(q); if ( l->ID == LW_MAGIC ) { if ( Collision(l, this) ) { l->Dir = __DirRev(l->Dir); l->Flip = __FlipRef(l); } } } for ( q = 1; q <= Screen->NumEWeapons(); q++ ) { e = Screen->LoadEWeapon(q); if ( e->ID == EW_MAGIC ) { if ( Collision(e, this) ) { e->Dir = __DirRev(e->Dir); e->Flip = __FlipRef(e); } } } Waitframe(); } } void __FlipRef(lweapon l){ if ( l->Dir == DIR_DOWN || l->Dir == DIR_UP && !l->Flip ) l->Flip = FLIP_VERTICAL; if ( l->Dir == DIR_LEFT || l->DIR == DIR_RIGHT && !l->Flip ) l->Flip == FLIP_HORIZONTAL; } void __FlipRef(eweapon l){ if ( l->Dir == DIR_DOWN || l->Dir == DIR_UP && !l->Flip ) l->Flip = FLIP_VERTICAL; if ( l->Dir == DIR_LEFT || l->DIR == DIR_RIGHT && !l->Flip ) l->Flip == FLIP_HORIZONTAL; } int __DirRev(int dir) { if ( dir == DIR_LEFT) return DIR_RIGHT; if ( dir == DIR_DOWN) return DIR_UP; if ( dir == DIR_UP) return DIR_DOWN; if ( dir == DIR_RIGHT) return DIR_LEFT; if ( dir == DIR_LEFTUP) return DIR_RIGHTDOWN; if ( dir == DIR_RIGHTDOWN) return DIR_LEFTUP; if ( dir == DIR_LEFTDOWN) return DIR_RIGHTUP; if ( dir == DIR_RIGHTUP) return DIR_LEFTDOWN; } }