Edit: Looks like I was able to find a solution after playing with it for a while.
Hey everyone, so it's been a while since I delved into Zelda Classic, and I decided to load one of my old scripts Purplemandown made for me. It's a roll script and it worked REALLY well back when I used it, I did have one issue with it where you can slash in the middle of it. Any ideas how to fix this? Also, I made a new topic because I didn't want to gravedig. Hopefully this is okay.
Original thread:
https://www.purezc.n...=55073&hl= roll
import "std.zh" global script slot_2{ void run(){ lweapon overlay; int rolltimer; int rollwait; int rollSpeed = 300; int rollDur = 25; //in frames int cooldown = 5; int firstSFX = 61; int rollSprite = 88; //The first of the 4 rolling sprites (in weapon/misc.) In order, up, down, left, right. int puffSprite = 92; //The sprite to trail behind link as he rolls while(true){ if((Link->PressR == false) && (rolltimer == 0) && (Falling == false)){ overlay->DeadState = 0; Link->CollDetection = true; Link->Invisible = false; } else if((Falling == true)){ overlay->DeadState = 0; Link->CollDetection = true; Link->Invisible = true; } else if(((Link->PressR == true)&&(rolltimer == 0))&&(rollwait == 0)){ rolltimer = rollDur; rollwait = rollDur + cooldown; overlay = Screen->CreateLWeapon(LW_SCRIPT1); overlay->Dir = Link->Dir; overlay->X = Link->X; overlay->Y = Link->Y; overlay->DrawYOffset = 0; overlay->CollDetection = false; overlay->UseSprite(rollSprite); overlay->OriginalTile += overlay->NumFrames * Link->Dir; overlay->Tile += overlay->NumFrames * Link->Dir; Link->CollDetection = true; Link->Invisible = true; Game->PlaySound(firstSFX + Rand(3)); } else if(rolltimer > 0){ //Check if the roll timer divides evenly by 6 if(rolltimer%6 == 0){ //Spawns the puff of smoke lweapon smokepuff = CreateLWeaponAt(LW_SCRIPT1, Link->X + Rand(-2, 2), Link->Y + Rand(-2, 2)); smokepuff->CollDetection = false; smokepuff->UseSprite(puffSprite); smokepuff->DeadState = smokepuff->NumFrames * smokepuff->ASpeed; } if(overlay->isValid() == true){ if(CanWalk(overlay->X, overlay->Y, overlay->Dir, rollSpeed/100, false) == true){ overlay->Step = rollSpeed; } else{ overlay->Step = 0; } Link->X = overlay->X; Link->Y = overlay->Y; rolltimer--; } else{ rolltimer = 0; overlay->DeadState = 0; Link->CollDetection = false; Link->Invisible = false; } } if(rollwait > 0){ rollwait--; } if((Link->Action > LA_WALKING)){ rolltimer = 0; } Waitframe(); } } }
Thank you!
Edit: Looks like I was able to find a solution after playing with it for a while.
Edited by Xenix, 05 October 2019 - 04:07 PM.