Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Ice Storm Projects. are LW_SCRIPT1
- // Ice Bolt Projects. are LW_SCRIPT2
- // Ice Bolt Damage Projects. are LW_SCRIPT1
- const int IceAmuletID = 143;
- const int ICE_WPN_MSC = 88;
- const int ICE_TILE = 6;
- const int IceWandID = 144;
- const int ICE_BOLT_WPN_MSC = 89;
- const int ICE_BOLT_TILE = 11;
- int IceWantCooldown = 0;
- int WandUpTile = 352;
- int WandDownTile = 353;
- int WandLeftTile = 354;
- int WandRightTile = 355;
- int WandTile = 0;
- //int LinkDirUpOffset = Link->Y - 16;
- //int LinkDirDownOffset = Link->Y + 16;
- //int LinkDirLeftOffset = Link->X - 16;
- //int LinkDirRightOffset = Link->X + 16;
- int LinkDirectionXOffset()
- {
- int LinkDirXOffset = 0;
- if(Link->Dir == DIR_LEFT)
- {
- LinkDirXOffset = Link->X - 16;
- }
- if(Link->Dir == DIR_RIGHT)
- {
- LinkDirXOffset = Link->X + 16;
- }
- return LinkDirXOffset;
- }
- int LinkDirectionYOffset()
- {
- int LinkDirYOffset = 0;
- if(Link->Dir == DIR_UP)
- {
- LinkDirYOffset = Link->Y - 16;
- }
- if(Link->Dir == DIR_DOWN)
- {
- LinkDirYOffset = Link->Y + 16;
- }
- return LinkDirYOffset;
- }
- void StartIceScript()
- {
- Link->MP -= 1;
- int Rand_LEFT_RIGHT = Rand(-12,12);
- int Rand_UP_DOWN = Rand(-12, 12);
- int Deg_Rand_UP_ANGLE = Randf(225, 315);
- int Deg_Rand_DOWN_ANGLE = Randf(135, 45);
- int Deg_Rand_LEFT_ANGLE = Randf(135, 225);
- int Deg_Rand_RIGHT_ANGLE = Randf(315, 405);
- int Rand_UP_ANGLE = DegtoRad(Deg_Rand_UP_ANGLE);
- int Rand_DOWN_ANGLE = DegtoRad(Deg_Rand_DOWN_ANGLE);
- int Rand_LEFT_ANGLE = DegtoRad(Deg_Rand_LEFT_ANGLE);
- int Rand_RIGHT_ANGLE = DegtoRad(Deg_Rand_RIGHT_ANGLE);
- lweapon Ice_Storm = Screen->CreateLWeapon(LW_SCRIPT1);
- Ice_Storm->Angular = true;
- Ice_Storm->X = Link->X;
- Ice_Storm->Y = Link->Y;
- Ice_Storm->Dir = Link->Dir;
- if(Ice_Storm->Dir == DIR_UP)
- {Ice_Storm->Angle = Rand_UP_ANGLE;}
- if(Ice_Storm->Dir == DIR_DOWN)
- {Ice_Storm->Angle = Rand_DOWN_ANGLE;}
- if(Ice_Storm->Dir == DIR_LEFT)
- {Ice_Storm->Angle = Rand_LEFT_ANGLE;}
- if(Ice_Storm->Dir == DIR_RIGHT)
- {Ice_Storm->Angle = Rand_RIGHT_ANGLE;}
- Ice_Storm->UseSprite(ICE_WPN_MSC);
- Ice_Storm->Damage = 2;
- Ice_Storm->Step = 400;
- Ice_Storm->HitWidth = 8;
- Ice_Storm->HitHeight = 8;
- if(Ice_Storm->Dir == DIR_UP)
- {Ice_Storm->Tile = ICE_TILE;}
- if(Ice_Storm->Dir == DIR_DOWN)
- {Ice_Storm->Tile = ICE_TILE + 2;}
- if(Ice_Storm->Dir == DIR_LEFT)
- {Ice_Storm->Tile = ICE_TILE + 3;}
- if(Ice_Storm->Dir == DIR_RIGHT)
- {Ice_Storm->Tile = ICE_TILE + 1;}
- }
- void StartIceBolt()
- {
- Link->MP -= 16;
- lweapon Ice_Bolt = Screen->CreateLWeapon(LW_SCRIPT2);
- Ice_Bolt->CollDetection = false;
- Ice_Bolt->Angular = false;
- Ice_Bolt->X = Link->X;
- Ice_Bolt->Y = Link->Y + 10;
- Ice_Bolt->Dir = Link->Dir;
- Ice_Bolt->UseSprite(ICE_BOLT_WPN_MSC);
- if(Ice_Bolt->Dir == DIR_UP)
- {Ice_Bolt->Tile = ICE_BOLT_TILE;}
- if(Ice_Bolt->Dir == DIR_DOWN)
- {Ice_Bolt->Tile = ICE_BOLT_TILE + 2;}
- if(Ice_Bolt->Dir == DIR_LEFT)
- {Ice_Bolt->Tile = ICE_BOLT_TILE + 3;}
- if(Ice_Bolt->Dir == DIR_RIGHT)
- {Ice_Bolt->Tile = ICE_BOLT_TILE + 1;}
- Ice_Bolt->Damage = 12;
- Ice_Bolt->Step = 300;
- Ice_Bolt->HitWidth = 8;
- Ice_Bolt->HitHeight = 8;
- }
- // Detects if the weapon is hitting an enemy
- void DetectIceboltHit()
- {
- npc IW_enemy;
- lweapon IW_item;
- for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1)
- {
- IW_item = Screen->LoadLWeapon(i2);
- if(IW_item->ID == LW_SCRIPT2)
- {
- for (int i = 1; i <= Screen->NumNPCs(); i += 1)
- {
- IW_enemy = Screen->LoadNPC(i);
- if((IW_item->X >= (IW_enemy->X - 15) && IW_item->X <= (IW_enemy->X + 15)) && (IW_item->Y >= (IW_enemy->Y - 15) && IW_item->Y <= (IW_enemy->Y + 15)))
- {
- lweapon Ice_Bolt_Summon = Screen->CreateLWeapon(LW_SCRIPT1);
- Ice_Bolt_Summon->X = IW_item->X;
- Ice_Bolt_Summon->Y = IW_item->Y;
- Ice_Bolt_Summon->Damage = 12;
- Ice_Bolt_Summon->Tile = 2;
- }
- }
- }
- }
- }
- global script TNB_Wand_Global
- {
- void run()
- {
- while(true)
- {
- int UseIceUseMagic = Rand(0,8);
- if(Link->Dir == DIR_UP)
- {
- WandTile = WandUpTile;
- }
- if(Link->Dir == DIR_DOWN)
- {
- WandTile = WandDownTile;
- }
- if(Link->Dir == DIR_LEFT)
- {
- WandTile = WandLeftTile;
- }
- if(Link->Dir == DIR_RIGHT)
- {
- WandTile = WandRightTile;
- }
- LinkDirectionXOffset();
- LinkDirectionYOffset();
- if(UsingItem(IceAmuletID) == true && Link->MP > 0 && UseIceUseMagic == 8)
- {
- StartIceScript();
- }
- if(IceWantCooldown >= 60)
- {
- if(UsingItem(IceWandID) == true && Link->MP > 0)
- {
- StartIceBolt();
- IceWantCooldown = 0;
- Link->Action = LA_ATTACKING;
- Screen->FastTile(2, LinkDirXOffset, LinkDirYOffset, WandTile, 7, OP_OPAQUE);
- }
- }
- for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1) // Detects if the Ice Bolt hits a solid combo
- {
- lweapon IW_item = Screen->LoadLWeapon(i2);
- if(IW_item->ID == LW_SCRIPT2)
- {
- if(Screen->isSolid(IW_item->X + 16, IW_item->Y + 8) == true && IW_item->Dir == DIR_RIGHT ||Screen->isSolid(IW_item->X, IW_item->Y + 8) == true && IW_item->Dir == DIR_LEFT ||
- Screen->isSolid(IW_item->X, IW_item->Y + 16) == true && IW_item->Dir == DIR_UP || Screen->isSolid(IW_item->X - 16, IW_item->Y) == true && IW_item->Dir == DIR_DOWN)
- {
- IW_item->DeadState = WDS_DEAD;
- }
- }
- }
- for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1)
- {
- lweapon Ice_Bolt_Summon = Screen->LoadLWeapon(i2);
- if(Ice_Bolt_Summon->ID == LW_SCRIPT1)
- {
- Ice_Bolt_Summon->DeadState = WDS_DEAD;
- }
- }
- DetectIceboltHit();
- IceWantCooldown += 1;
- Waitframe();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment