import "std.zh" int tileframe; //Base tiles for use in stacking equipment. These will be copied to the drawn tiles, and the equipment overlaid. const int BASE_LINKTILE_WALK_UP const int BASE_LINKTILE_WALK_UP_B const int BASE_LINKTILE_WALK_DOWN const int BASE_LINKTILE_WALK_DOWN_B const int BASE_LINKTILE_WALK_LEFT const int BASE_LINKTILE_WALK_LEFT_B const int BASE_LINKTILE_WALK_RIGHT const int BASE_LINKTILE_WALK_UP_RIGHT const int BASE_LINKTILE_ATTACK_UP const int BASE_LINKTILE_ATTACK_DOWN const int BASE_LINKTILE_ATTACK_LEFT const int BASE_LINKTILE_ATTACK_RIGHT const int BASE_LINKTILE_SWIM_UP const int BASE_LINKTILE_SWIM_UP_B const int BASE_LINKTILE_SWIM_DOWN const int BASE_LINKTILE_SWIM_DOWN_B const int BASE_LINKTILE_SWIM_LEFT const int BASE_LINKTILE_SWIM_LEFT_B const int BASE_LINKTILE_SWIM_RIGHT const int BASE_LINKTILE_SWIM_UP_RIGHT const int BASE_LINKTILE_DIVE_UP const int BASE_LINKTILE_DIVE_UP_B const int BASE_LINKTILE_DIVE_DOWN const int BASE_LINKTILE_DIVE_DOWN_B const int BASE_LINKTILE_DIVE_LEFT const int BASE_LINKTILE_DIVE_LEFT_B const int BASE_LINKTILE_DIVE_RIGHT const int BASE_LINKTILE_DIVE_UP_RIGHT const int BASE_LINKTILE_HOLD1LAND const int BASE_LINKTILE_HOLD2LAND const int BASE_LINKTILE_HOLD1WATER const int BASE_LINKTILE_HOLD2WATER const int BASE_LINKTILE_CASTFRAME_1 const int BASE_LINKTILE_CASTFRAME_2 const int BASE_LINKTILE_CASTFRAME_3 const int BASE_LINKTILE_CASTFRAME_4 void OverlayEquipment() { //Armour and clothing //Capes if facing up //Shield Tiles if not facing up } //These tiles will be drawn const int LINKTILE_WALK_UP const int LINKTILE_WALK_UP_B const int LINKTILE_WALK_DOWN const int LINKTILE_WALK_DOWN_B const int LINKTILE_WALK_LEFT const int LINKTILE_WALK_LEFT_B const int LINKTILE_WALK_RIGHT const int LINKTILE_WALK_UP_RIGHT const int LINKTILE_ATTACK_UP const int LINKTILE_ATTACK_DOWN const int LINKTILE_ATTACK_LEFT const int LINKTILE_ATTACK_RIGHT const int LINKTILE_SWIM_UP const int LINKTILE_SWIM_UP_B const int LINKTILE_SWIM_DOWN const int LINKTILE_SWIM_DOWN_B const int LINKTILE_SWIM_LEFT const int LINKTILE_SWIM_LEFT_B const int LINKTILE_SWIM_RIGHT const int LINKTILE_SWIM_UP_RIGHT const int LINKTILE_DIVE_UP const int LINKTILE_DIVE_UP_B const int LINKTILE_DIVE_DOWN const int LINKTILE_DIVE_DOWN_B const int LINKTILE_DIVE_LEFT const int LINKTILE_DIVE_LEFT_B const int LINKTILE_DIVE_RIGHT const int LINKTILE_DIVE_UP_RIGHT const int LINKTILE_HOLD1LAND const int LINKTILE_HOLD2LAND const int LINKTILE_HOLD1WATER const int LINKTILE_HOLD2WATER const int LINKTILE_CASTFRAME_1 const int LINKTILE_CASTFRAME_2 const int LINKTILE_CASTFRAME_3 const int LINKTILE_CASTFRAME_4 void TileFrame() { if ( ++tileframe >= 12 ) tileframe = 0; } //const int FLIP_LEFT_RIGHT_LINKTILE = 0; void SetLinkSprite() { int walktiles[] = { //dir tile 1, tile 2 LINKTILE_WALK_UP, LINKTILE_WALK_UP_B, //Up LINKTILE_WALK_DOWN, LINKTILE_WALK_DOWN_B, //down LINKTILE_WALK_LEFT, LINKTILE_WALK_LEFT_B, //left LINKTILE_WALK_RIGHT, LINKTILE_WALK_UP_RIGHT //right }; int attacktiles[] = { //dir tile 1, tile 2 LINKTILE_ATTACK_UP, LINKTILE_ATTACK_DOWN, LINKTILE_ATTACK_LEFT, LINKTILE_ATTACK_RIGHT, }; int swimtiles[] = { //dir tile 1, tile 2 LINKTILE_SWIM_UP, LINKTILE_SWIM_UP_B, //Up LINKTILE_SWIM_DOWN, LINKTILE_SWIM_DOWN_B, //down LINKTILE_SWIM_LEFT, LINKTILE_SWIM_LEFT_B, //left LINKTILE_SWIM_RIGHT, LINKTILE_SWIM_UP_RIGHT //right }; int diveiles[] = { //dir tile 1, tile 2 LINKTILE_DIVE_UP, LINKTILE_DIVE_UP_B, //Up LINKTILE_DIVE_DOWN, LINKTILE_DIVE_DOWN_B, //down LINKTILE_DIVE_LEFT, LINKTILE_DIVE_LEFT_B, //left LINKTILE_DIVE_RIGHT, LINKTILE_DIVE_UP_RIGHT //right }; int holdtiles[] = {LINKTILE_HOLD1LAND, LINKTILE_HOLD2LAND, LINKTILE_HOLD1WATER, LINKTILE_HOLD2WATER }; int castingtiles[] = {LINKTILE_CASTFRAME_1, LINKTILE_CASTFRAME_2, LINKTILE_CASTFRAME_3, LINKTILE_CASTFRAME_4 }; //int spr; int tile = 0; int flip = 0; switch(Link->Action) { case LA_NONE: { tile = walktiles[(Link->Dir *2)]; flip = 0; break; } case LA_WALKING: { tile = walktiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0; break; } case LA_ATTACKING: { tile = attacktiles[Link->Dir]; flip = 0; break; } case LA_CHARGING: { //Are ther emultiple frames to this? tile = attacktiles[Link->Dir]; flip = 0; break; } case LA_SPINNING: { tile = attacktiles[Link->Dir]; flip = 0; break; /* switch(Link->Dir) { case DIR_UP: { tile = attacktiles[DIR_UP]; flip = 0; break; } case DIR_DOWN: { tile = attacktiles[DIR_DOWN]; flip = 0; break; } case DIR_LEFT: { tile = attacktiles[DIR_LEFT]; flip = 0; break; } case DIR_RIGHT: { tile = attacktiles[DIR_LEFT]; flip = 1; break; } } break; */ } case LA_SWIMMING: { tile = swimtiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0; break; } case LA_DIVING: { tile = divetiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0; break; } case LA_DROWNING: { tile = divetiles[(Link->Dir *2) + Cond( (tileframe < 6), 0, 1 ) ]; flip = 0; break; } case LA_HOLD1LAND: tile = holdtiles[0]; break; flip = 0; case LA_HOLD2LAND: tile = holdtiles[1]; break; flip = 0; case LA_HOLD1WATER: tile = holdtiles[3]; break; flip = 0; case LA_HOLD2WATER: tile = holdtiles[4]; break; flip = 0; case LA_RAFTING: tile = walktiles[(Link->Dir *2)]; break; flip = 0; case LA_GOTHURTLAND: tile = walktiles[(Link->Dir *2)]; break; flip = 0; case LA_GOTHURTWATER: tile = swimtiles[(Link->Dir *2)]; flip = 0; case LA_INWIND: tile = walktiles[(Link->Dir *2)]; break; flip = 0; case LA_SCROLLING: tile = walktiles[(Link->Dir *2)]; break; flip = 0; case LA_WINNING: tile = holdtiles[1]; break; flip = 0; case LA_HOPPING: case LA_CAVEWALKUP: tile = walktiles[DIR_UP + Cond( (tileframe < 6), 0, 1 ) ]; break; flip = 0; case LA_CAVEWALKDOWN: tile = walktiles[(DIR_DOWN*2) + Cond( (tileframe < 6), 0, 1 ) ]; break; flip = 0; case LA_DYING: { switch(tileframe) { case 0: case 1: case 2: { tile = walktiles[0]; flip = 0; break; } case 3: case 4: case 5: { tile = walktiles[2]; flip = 0; break; } case 6: case 7: case 8: { tile = walktiles[4]; flip = 0; break; } case 9: case 10: case 11: { tile = walktiles[6]; flip = 0; break; } } break; } case LA_CASTING: { switch(tileframe) { case 0: case 1: case 2: { tile = castingtiles[0]; flip = 0; break; } case 3: case 4: case 5: { tile = castingtiles[1]; flip = 0; break; } case 6: case 7: case 8: { tile = castingtiles[2]; flip = 0; break; } case 9: case 10: case 11: { tile = castingtiles[3]; flip = 0; break; } } break; } case LA_FROZEN: { tile = walktiles[(Link->Dir *2)]; flip = 0; } default: tile = walktiles[(Link->Dir *2)]; break; flip = 0; } Link->ScriptTile = tile; Link->ScriptFlip = flip; } global script a{ void run(){ int walkingtile[2] = { 11720, 11721 }; Link->ScriptTile = walkingtile[0]; int frame = -1; TraceS("MIDI Volume: "); Trace(Audio->Volume[VOL_MIDI]); TraceS("DIGI Volume: "); Trace(Audio->Volume[VOL_DIGI]); TraceS("Music Volume: "); Trace(Audio->Volume[VOL_MUSIC]); TraceS("SFX Volume: "); Trace(Audio->Volume[VOL_SFX]); TraceS("PanStyle: "); Trace(Audio->PanStyle); while(true){ if ( ++frame >= 12 ) frame = 0; if ( Link->InputLeft ) { if (frame < 6) Link->ScriptTile = walkingtile[1]; else Link->ScriptTile = walkingtile[0]; } if ( Link->InputRight ) { if (frame < 6) Link->ScriptTile = walkingtile[1]; else Link->ScriptTile = walkingtile[0]; } if ( Link->InputUp ) { if (frame < 6) Link->ScriptTile = walkingtile[1]; else Link->ScriptTile = walkingtile[0]; } if ( Link->InputDown ) { if (frame < 6) Link->ScriptTile = walkingtile[1]; else Link->ScriptTile = walkingtile[0]; } if ( Link->PressEx3 ) { Link->ScriptTile = Clamp((Link->ScriptTile-1), 0, MAX_TILES); TraceS("ScriptTile: "); Trace(Link->ScriptTile); } if ( Link->PressEx4 ) { Link->ScriptTile = Clamp((Link->ScriptTile+1), 0, MAX_TILES); TraceS("ScriptTile: "); Trace(Link->ScriptTile); } if ( Link->PressEx1 ) { Link->ScriptFlip = Clamp((Link->ScriptFlip-1), -1, 7); TraceS("ScriptFlip: "); Trace(Link->ScriptFlip); } if ( Link->PressEx2 ) { Link->ScriptFlip = Clamp((Link->ScriptFlip+1), -1, 7); TraceS("ScriptFlip: "); Trace(Link->ScriptFlip); } switch(Link->Dir) { case DIR_UP: Link->ScriptFlip = FLIP_NONE; break; case DIR_DOWN: Link->ScriptFlip = FLIP_VERTICAL; break; case DIR_LEFT: Link->ScriptFlip = ROT_ACW; break; case DIR_RIGHT: Link->ScriptFlip = ROT_CW; break; default: break; } if ( Input->Key[KEY_F] ){ lweapon l = Screen->CreateLWeapon(LW_BOMBBLAST); l->X = Link->X + 16; l->Y = Link->Y +16; l->Parent = 36; TraceS("l->Parent: "); Trace(l->Parent); l->UseSprite(18); } if ( Input->Key[KEY_G] ) { Audio->Volume[VOL_MIDI] = Clamp((Audio->Volume[VOL_MIDI]-1), 0, 255); TraceS("MIDI Volume: "); Trace(Audio->Volume[VOL_MIDI]); } if ( Input->Key[KEY_H] ) { Audio->Volume[VOL_MIDI] = Clamp((Audio->Volume[VOL_MIDI]+1), 0, 255); TraceS("MIDI Volume: "); Trace(Audio->Volume[VOL_MIDI]); } if ( Input->Key[KEY_J] ) { Audio->Volume[VOL_SFX] = Clamp((Audio->Volume[VOL_SFX]-1), 0, 255); TraceS("SFX Volume: "); Trace(Audio->Volume[VOL_SFX]); } if ( Input->Key[KEY_K] ) { Audio->Volume[VOL_SFX] = Clamp((Audio->Volume[VOL_SFX]+1), 0, 255); TraceS("SFX Volume: "); Trace(Audio->Volume[VOL_SFX]); } if ( Input->Key[KEY_Y] ) { Audio->Volume[VOL_MUSIC] = Clamp((Audio->Volume[VOL_MUSIC]-1), 0, 255); TraceS("Enhanced Music Volume: "); Trace(Audio->Volume[VOL_MUSIC]); } if ( Input->Key[KEY_U] ) { Audio->Volume[VOL_MUSIC] = Clamp((Audio->Volume[VOL_MUSIC]+1), 0, 255); TraceS("Enhanced Music Volume: "); Trace(Audio->Volume[VOL_MUSIC]); } if ( Input->Key[KEY_I] ) { Audio->Volume[VOL_DIGI] = Clamp((Audio->Volume[VOL_DIGI]-1), 0, 255); TraceS("Enhanced DIGI Volume: "); Trace(Audio->Volume[VOL_DIGI]); } if ( Input->Key[KEY_O] ) { Audio->Volume[VOL_DIGI] = Clamp((Audio->Volume[VOL_DIGI]+1), 0, 255); TraceS("Enhanced DIGI Volume: "); Trace(Audio->Volume[VOL_DIGI]); } if ( Input->Key[KEY_N] ) { Audio->PanStyle = Clamp((Audio->PanStyle-1), 0, 3); TraceS("Pan Style: "); Trace(Audio->PanStyle); } if ( Input->Key[KEY_M] ) { Audio->PanStyle = Clamp((Audio->PanStyle+1), 0, 3); TraceS("Pan Style: "); Trace(Audio->PanStyle); } Waitdraw(); Waitframe(); } } }