Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Pushes you around and over gaps.
- void Run_Autumn(){
- lweapon wand;
- int Sprite= SPR_ROD;
- if(Link->Item[I_ROD_2])
- Sprite = SPR_ROD_2;
- wand = FireLWeapon(LW_SCRIPT10,Link->X+InFrontX(Link->Dir,2), Link->Y+InFrontY(Link->Dir,2),
- __DirtoRad(Link->Dir), 0, 7, Sprite, SFX_SWORD, 0);
- SetLWeaponLifespan(wand,LWL_TIMER,10);
- SetLWeaponMovement(wand,LWM_MELEE,0,LWMF_TRACKER);
- SetLWeaponDeathEffect(wand,LWD_VANISH,0);
- SetScriptAction(SA_ATTACKING);
- int Cost;
- if(!Link->Item[TRADE_16])
- Cost = 7;
- else
- Cost = 3;
- int Damage = 7;
- if(Link->Item[I_ROD_2])
- Damage *=2;
- if(DestinyVars[DINS_FIRE_ACTIVE])
- Damage *=2;
- if(NumLWeaponsOf(LW_MAGIC)==0 && Link->MP>=Cost
- && CountFFCsRunning(WIND_SCRIPT)==0){
- Game->PlaySound(SFX_WAND);
- SetScriptAction(SA_ATTACKING);
- Link->MP-=Cost;
- if(!DestinyVars[SIDEVIEW_SWIM]){
- int Args[8] = {Damage,Cost};
- NewFFCScript(WIND_SCRIPT, Args);
- }
- else{
- lweapon wind;
- if(Link->Dir==DIR_UP)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_DOWN), 0, Damage,
- SPR_GUST_DN, SFX_WHIRLWIND, LWF_PIERCES_ENEMIES,2,2);
- else if(Link->Dir==DIR_DOWN)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_UP), 0, Damage,
- SPR_GUST_UP, SFX_WHIRLWIND, LWF_PIERCES_ENEMIES,2,2);
- else if(Link->Dir==DIR_LEFT)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_RIGHT), 0, Damage,
- SPR_GUST_RT, SFX_WHIRLWIND, LWF_PIERCES_ENEMIES,2,2);
- else if(Link->Dir==DIR_RIGHT)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_LEFT), 0, Damage,
- SPR_GUST_LF, SFX_WHIRLWIND, LWF_PIERCES_ENEMIES,2,2);
- SetLWeaponLifespan(wind,LWL_TIMER,10);
- SetLWeaponDeathEffect(wind,LWD_VANISH,0);
- }
- }
- }
- const int SPR_GUST_RT = 96;
- const int SPR_GUST_UP = 98;
- const int SPR_GUST_LF= 108;
- const int SPR_GUST_DN= 107;
- const int WIND_SCRIPT = 40;
- ffc script Wind_Gust{
- void run(int Damage,int Cost){
- lweapon wind;
- int loc;
- int sfx = SFX_WHIRLWIND;
- int itmset;
- int draintime;
- SetScriptAction(SA_JUMPING);
- while(Link->MP>=Cost){
- loc = ComboAt(wind->X+8, wind->Y+8);
- if(DestinyVars[CURRENT_OVERWORLD]==LABRYNNA_OVERWORLD)
- itmset = LABRYNNA_ITEM_SET;
- else if(DestinyVars[CURRENT_OVERWORLD]==MIRROR_OVERWORLD)
- itmset = MIRROR_ITEM_SET;
- DoDashSlash(loc,itmset);
- if(Link->Dir==DIR_UP)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_DOWN), 0, Damage,
- SPR_GUST_DN, sfx, LWF_PIERCES_ENEMIES,2,2);
- else if(Link->Dir==DIR_DOWN)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_UP), 0, Damage,
- SPR_GUST_UP, sfx, LWF_PIERCES_ENEMIES,2,2);
- else if(Link->Dir==DIR_LEFT)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_RIGHT), 0, Damage,
- SPR_GUST_RT, sfx, LWF_PIERCES_ENEMIES,2,2);
- else if(Link->Dir==DIR_RIGHT)
- wind = FireBigLWeapon(LW_SCRIPT1, Link->X-8, Link->Y-8,
- __DirtoRad(DIR_LEFT), 0, Damage,
- SPR_GUST_LF, sfx, LWF_PIERCES_ENEMIES,2,2);
- SetLWeaponLifespan(wind,LWL_TIMER,10);
- SetLWeaponDeathEffect(wind,LWD_VANISH,0);
- if(ScreenFlagTest(SF_MISC,SF_MISC_LADDER)
- && !ScreenFlagTest(SF_MISC,SF_MISC_DIVING)){
- if(Link->Dir==DIR_RIGHT){
- if(Link->PressLeft||
- Link->InputLeft)
- break;
- }
- else if(Link->Dir==DIR_LEFT){
- if(Link->PressRight||
- Link->InputRight)
- break;
- }
- else if(Link->Dir==DIR_UP){
- if(Link->PressDown||
- Link->InputDown)
- break;
- }
- else if(Link->Dir==DIR_DOWN){
- if(Link->PressUp||
- Link->InputUp)
- break;
- }
- Waitframe();
- continue;
- }
- else{
- if(Link->Dir==DIR_LEFT){
- if(!Screen->isSolid(Link->X-1,Link->Y)
- && !Screen->isSolid(Link->X-1,Link->Y+8)
- && !Screen->isSolid(Link->X-1,Link->Y+15))
- Link->X--;
- else
- break;
- }
- else if(Link->Dir==DIR_RIGHT){
- if(!Screen->isSolid(Link->X+17,Link->Y)
- && !Screen->isSolid(Link->X+17,Link->Y+8)
- && !Screen->isSolid(Link->X+17,Link->Y+15))
- Link->X++;
- else
- break;
- }
- else if(Link->Dir==DIR_DOWN){
- if(!Screen->isSolid(Link->X+1,Link->Y+17)
- && !Screen->isSolid(Link->X+8,Link->Y+17)
- && !Screen->isSolid(Link->X+15,Link->Y+17))
- Link->Y++;
- else
- break;
- }
- else if(Link->Dir==DIR_UP){
- if(!Screen->isSolid(Link->X+1,Link->Y-1)
- && !Screen->isSolid(Link->X+8,Link->Y-1)
- && !Screen->isSolid(Link->X+15,Link->Y-1))
- Link->Y--;
- else
- break;
- }
- Link->Jump=0;
- Link->Z=1;
- }
- draintime = (draintime+1)%60;
- if(draintime==0)
- Link->MP-=Cost;
- if(Link->Dir==DIR_RIGHT){
- if(Link->PressLeft||
- Link->InputLeft)
- break;
- }
- else if(Link->Dir==DIR_LEFT){
- if(Link->PressRight||
- Link->InputRight)
- break;
- }
- else if(Link->Dir==DIR_UP){
- if(Link->PressDown||
- Link->InputDown)
- break;
- }
- else if(Link->Dir==DIR_DOWN){
- if(Link->PressUp||
- Link->InputUp)
- break;
- }
- WaitNoAction();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement