//A small 2.54 script to use custom tiles when link is hurt. //By ZoriaRPG, 9th July, 2018 int __G[256]; const int gLINKTILECACHE = 100; const int lmiscHURTTILE = 17; const int lmiscflagHURTTILE = 1; int frame; //global frame timer. As this will be called often, I'm making it a base int, not an array. //fake class ffc script linktile { void run() { } void clear() { Link->ScriptTile = -1; } void clearcache(int slot) { __G[slot] = -1; } void cache(int slot) { __G[slot] = Link->ScriptTile; } void restore(int cache_slot) { Link->ScriptTile = __G[cache_slot]; } void dohurt() { if ( Link->Action == LA_GOTHURTLAND ) { if ( ! (Link->Misc[lmiscHURTTIMER]&lmiscflagHURTTILE ) ) { Link->Misc[lmiscHURTTILE] |= lmiscflagHURTTILE; cache(gLINKTILECACHE); } Link->ScriptTile = TILE_LINKHURT + ( 1 * getmodifier()) + animate(); } else { if ( Link->Misc[lmiscHURTTIMER]&lmiscflagHURTTILE ) { restore(gLINKTILECACHE); } } } int animate() { if ( frame < 30 ) { if ( frame < 15 ) { return 0; } return 20; } else if ( frame < 45 ) return 0; return 20; } int getmodifier() { itemdata shield = Game->LoadItemData(GetHighestlevelItemOwned(I_SHIELD)); return ( shield->Level -1 ) * 260; } } global script Init { void run() { linktile.clearcache(gLINKTILECACHE); } } global script LinkHurtTiles { void run() { frame = -1; while(1) { if ( ++frame > 60 ) { frame = 0; } linktile.dohurt(); Waitdraw(); Waitframe(); } } } global script onExit { void run() { linktile.restore(gLINKTILECACHE); } }