Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ffc script Lightning
- {
- void run(int dir, int repeattimes)
- {
- int Lightning1X[25];
- int Lightning1Y[25];
- int Lightning2X[25];
- int Lightning2Y[25];
- int Lightning3X[25];
- int Lightning3Y[25];
- int Lightning4X[25];
- int Lightning4Y[25];
- int HitCounter = 0;
- for (int m = repeattimes; m!= 0;)
- {
- if (m > 0) m--;
- for (int i = 24; i >= 0; i--)
- {
- Lightning1X[i] = this->X;
- Lightning1Y[i] = this->Y;
- Lightning2X[i] = this->X;
- Lightning2Y[i] = this->Y;
- Lightning3X[i] = this->X;
- Lightning3Y[i] = this->Y;
- Lightning4X[i] = this->X;
- Lightning4Y[i] = this->Y;
- }
- Game->PlaySound(74);
- while(((Lightning1X[24] > 0 || Lightning2X[24] > 0 || Lightning3X[24] > 0 || Lightning4X[24] > 0) && dir == DIR_LEFT) ||
- ((Lightning1X[24] < 256 || Lightning2X[24] < 256 || Lightning3X[24] < 256 || Lightning4X[24] < 256) && dir == DIR_RIGHT) ||
- ((Lightning1Y[24] > 0 || Lightning2Y[24] > 0 || Lightning3Y[24] > 0 || Lightning4Y[24] > 0) && dir == DIR_UP) ||
- ((Lightning1Y[24] < 176 || Lightning2Y[24] < 176 || Lightning3Y[24] < 176 || Lightning4Y[24] < 176) && dir == DIR_DOWN))
- {
- for (int l = 0; l <= 2; l++)
- {
- int Angle1 = Choose(210, 150, 225, 135);
- if (dir == DIR_UP) Angle1 += 90;
- else if (dir == DIR_DOWN) Angle1 -= 90;
- else if (dir == DIR_RIGHT) Angle1 += 180;
- ShiftArray(Lightning1X);
- ShiftArray(Lightning1Y);
- Lightning1X[0] += VectorX(10, Angle1);
- Lightning1Y[0] += VectorY(10, Angle1);
- int Angle2 = Choose(210, 150, 225, 135);
- if (dir == DIR_UP) Angle2 += 90;
- else if (dir == DIR_DOWN) Angle2 -= 90;
- else if (dir == DIR_RIGHT) Angle2 += 180;
- ShiftArray(Lightning2X);
- ShiftArray(Lightning2Y);
- Lightning2X[0] += VectorX(10, Angle2);
- Lightning2Y[0] += VectorY(10, Angle2);
- int Angle3 = Choose(210, 150, 225, 135);
- if (dir == DIR_UP) Angle3 += 90;
- else if (dir == DIR_DOWN) Angle3 -= 90;
- else if (dir == DIR_RIGHT) Angle3 += 180;
- ShiftArray(Lightning3X);
- ShiftArray(Lightning3Y);
- Lightning3X[0] += VectorX(10, Angle3);
- Lightning3Y[0] += VectorY(10, Angle3);
- int Angle4 = Choose(210, 150, 225, 135);
- if (dir == DIR_UP) Angle4 += 90;
- else if (dir == DIR_DOWN) Angle4 -= 90;
- else if (dir == DIR_RIGHT) Angle4 += 180;
- ShiftArray(Lightning4X);
- ShiftArray(Lightning4Y);
- Lightning4X[0] += VectorX(10, Angle4);
- Lightning4Y[0] += VectorY(10, Angle4);
- bool hitLink;
- for (int i = 24; i > 0; i--)
- {
- if ( !hitLink ) {
- if (lineBoxCollision(Lightning1X[i], Lightning1Y[i], Lightning1X[i-1], Lightning1Y[i-1], Link->X, Link->Y, Link->X+Link->HitWidth, Link->Y+Link->HitHeight, 0))
- {
- hitLink = true;
- }
- }
- if ( !hitLink ) {
- if (lineBoxCollision(Lightning2X[i], Lightning2Y[i], Lightning2X[i-1], Lightning2Y[i-1], Link->X, Link->Y, Link->X+Link->HitWidth, Link->Y+Link->HitHeight, 0))
- {
- hitLink = true;
- }
- }
- if ( !hitLink ) {
- if (lineBoxCollision(Lightning3X[i], Lightning3Y[i], Lightning3X[i-1], Lightning3Y[i-1], Link->X, Link->Y, Link->X+Link->HitWidth, Link->Y+Link->HitHeight, 0))
- {
- hitLink = true;
- }
- }
- if ( !hitLink ) {
- if (lineBoxCollision(Lightning4X[i], Lightning4Y[i], Lightning4X[i-1], Lightning4Y[i-1], Link->X, Link->Y, Link->X+Link->HitWidth, Link->Y+Link->HitHeight, 0))
- {
- hitLink = true;
- }
- }
- Screen->Line(3, Lightning1X[i], Lightning1Y[i], Lightning1X[i-1], Lightning1Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i], Lightning2X[i-1], Lightning2Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i], Lightning3X[i-1], Lightning3Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i], Lightning4X[i-1], Lightning4Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- if ( hitLink ) {
- eweapon e = FireEWeapon(EW_SCRIPT10, Link->X+InFrontX(Link->Dir, 10), Link->Y+InFrontY(Link->Dir, 10), 0, 0, 2, -1, -1, EWF_UNBLOCKABLE);
- SetEWeaponLifespan(e, EWL_TIMER, 1);
- SetEWeaponDeathEffect(e, EWD_VANISH, 0);
- e->DrawYOffset = -1000;
- if (HitCounter <= 0) HitCounter = 10;
- }
- if (dir == DIR_LEFT || dir == DIR_RIGHT)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i] - 1, Lightning1X[i-1], Lightning1Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i] - 1, Lightning2X[i-1], Lightning2Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i] - 1, Lightning3X[i-1], Lightning3Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i] - 1, Lightning4X[i-1], Lightning4Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- }
- else
- {
- Screen->Line(3, Lightning1X[i] - 1, Lightning1Y[i], Lightning1X[i-1] - 1, Lightning1Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i] - 1, Lightning2Y[i], Lightning2X[i-1] - 1, Lightning2Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i] - 1, Lightning3Y[i], Lightning3X[i-1] - 1, Lightning3Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i] - 1, Lightning4Y[i], Lightning4X[i-1] - 1, Lightning4Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- }
- }
- }
- if (HitCounter > 0)
- {
- if (Link->HP > 0)Screen->Rectangle(6, 0, 0, 256, 176, 1, 1, 0, 0, 0, true, OP_OPAQUE);
- }
- Waitframe();
- for (int i = 24; i > 0; i--)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i], Lightning1X[i-1], Lightning1Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i], Lightning2X[i-1], Lightning2Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i], Lightning3X[i-1], Lightning3Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i], Lightning4X[i-1], Lightning4Y[i-1], 0x0B, 1, 0, 0, 0, 128);
- if (dir == DIR_LEFT || dir == DIR_RIGHT)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i] - 1, Lightning1X[i-1], Lightning1Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i] - 1, Lightning2X[i-1], Lightning2Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i] - 1, Lightning3X[i-1], Lightning3Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i] - 1, Lightning4X[i-1], Lightning4Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- }
- else
- {
- Screen->Line(3, Lightning1X[i] - 1, Lightning1Y[i], Lightning1X[i-1] - 1, Lightning1Y[i-1], 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i] - 1, Lightning2Y[i], Lightning2X[i-1] - 1, Lightning2Y[i-1], 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i] - 1, Lightning3Y[i], Lightning3X[i-1] - 1, Lightning3Y[i-1], 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i] - 1, Lightning4Y[i], Lightning4X[i-1] - 1, Lightning4Y[i-1], 0x01, 2, 0, 0, 0, 64);
- }
- }
- if (HitCounter > 0)
- {
- if (Link->HP > 0)Screen->Rectangle(6, 0, 0, 256, 176, 1, 1, 0, 0, 0, true, OP_OPAQUE);
- HitCounter--;
- }
- Waitframe();
- for (int i = 24; i > 0; i--)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i], Lightning1X[i-1], Lightning1Y[i-1], 0x01, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i], Lightning2X[i-1], Lightning2Y[i-1], 0x01, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i], Lightning3X[i-1], Lightning3Y[i-1], 0x01, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i], Lightning4X[i-1], Lightning4Y[i-1], 0x01, 1, 0, 0, 0, 128);
- if (dir == DIR_LEFT || dir == DIR_RIGHT)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i] - 1, Lightning1X[i-1], Lightning1Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i] - 1, Lightning2X[i-1], Lightning2Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i] - 1, Lightning3X[i-1], Lightning3Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i] - 1, Lightning4X[i-1], Lightning4Y[i-1] - 1, 0x0B, 2, 0, 0, 0, 64);
- }
- else
- {
- Screen->Line(3, Lightning1X[i] - 1, Lightning1Y[i], Lightning1X[i-1] - 1, Lightning1Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i] - 1, Lightning2Y[i], Lightning2X[i-1] - 1, Lightning2Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i] - 1, Lightning3Y[i], Lightning3X[i-1] - 1, Lightning3Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i] - 1, Lightning4Y[i], Lightning4X[i-1] - 1, Lightning4Y[i-1], 0x0B, 2, 0, 0, 0, 64);
- }
- }
- Waitframe();
- for (int i = 24; i > 0; i--)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i], Lightning1X[i-1], Lightning1Y[i-1], 0x01, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i], Lightning2X[i-1], Lightning2Y[i-1], 0x01, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i], Lightning3X[i-1], Lightning3Y[i-1], 0x01, 1, 0, 0, 0, 128);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i], Lightning4X[i-1], Lightning4Y[i-1], 0x01, 1, 0, 0, 0, 128);
- if (dir == DIR_LEFT || dir == DIR_RIGHT)
- {
- Screen->Line(3, Lightning1X[i], Lightning1Y[i] - 1, Lightning1X[i-1], Lightning1Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i], Lightning2Y[i] - 1, Lightning2X[i-1], Lightning2Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i], Lightning3Y[i] - 1, Lightning3X[i-1], Lightning3Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i], Lightning4Y[i] - 1, Lightning4X[i-1], Lightning4Y[i-1] - 1, 0x01, 2, 0, 0, 0, 64);
- }
- else
- {
- Screen->Line(3, Lightning1X[i] - 1, Lightning1Y[i], Lightning1X[i-1] - 1, Lightning1Y[i-1], 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning2X[i] - 1, Lightning2Y[i], Lightning2X[i-1] - 1, Lightning2Y[i-1], 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning3X[i] - 1, Lightning3Y[i], Lightning3X[i-1] - 1, Lightning3Y[i-1], 0x01, 2, 0, 0, 0, 64);
- Screen->Line(3, Lightning4X[i] - 1, Lightning4Y[i], Lightning4X[i-1] - 1, Lightning4Y[i-1], 0x01, 2, 0, 0, 0, 64);
- }
- }
- Waitframe();
- }
- }
- while(HitCounter > 0)
- {
- if (Link->HP > 0) Screen->Rectangle(6, 0, 0, 256, 176, 1, 1, 0, 0, 0, true, OP_OPAQUE);
- Waitframe();
- if (Link->HP > 0) Screen->Rectangle(6, 0, 0, 256, 176, 1, 1, 0, 0, 0, true, OP_OPAQUE);
- HitCounter--;
- Waitframe();
- Waitframe();
- Waitframe();
- }
- }
- void ShiftArray(int Array)
- {
- for (int i = SizeOfArray(Array)-1; i > 0; i--)
- {
- Array[i] = Array[i-1];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement