Advertisement
emily99

Bomb Arrows

Aug 8th, 2021
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. //start Bomb Arrows
  2. lweapon script BombArrow
  3. {
  4. void run(int bombDamage, bool hurtsLink)
  5. {
  6. //Initialize the arrow
  7. this->X = Hero->X + dirX(Hero->Dir) * 8;
  8. this->Y = Hero->Y + dirY(Hero->Dir) * 8;
  9. this->Dir = Hero->Dir;
  10. //Loop while it lives
  11. while(this->DeadState != WDS_DEAD)
  12. {
  13. int x = this->X + this->HitXOffset + 4, y = this->Y + this->HitYOffset + 4, oy = y;
  14. for(int q = 0; q < 3; ++q)
  15. {
  16. y = oy;
  17. for(int p = 0; p < 3; ++p)
  18. {
  19. if(Screen->isSolid(x,y)
  20. || ComboFI(ComboAt(x,y),CF_BOMB))
  21. {
  22. //Kill the arrow; it collided with something
  23. this->DeadState = WDS_DEAD;
  24. q = 3;
  25. break;
  26. }
  27. y += 4;
  28. }
  29. x += 4;
  30. }
  31. if(this->DeadState == WDS_DEAD) break;
  32. Waitframe();
  33. }
  34. //When the arrow dies, explode!
  35. lweapon bomb = CreateLWeaponAt(LW_BOMBBLAST, this->X, this->Y);
  36. bomb->Damage = bombDamage;
  37. if(hurtsLink)
  38. {
  39. eweapon bomb = CreateEWeaponAt(EW_BOMBBLAST, this->X, this->Y);
  40. bomb->Damage = bombDamage;
  41. }
  42. }
  43.  
  44. //start extra functions
  45. /**
  46. * Returns 1 if the dir is rightward, -1 if leftward, 0 if neither
  47. */
  48. int dirX(int dir) //start
  49. {
  50. switch(dir)
  51. {
  52. case DIR_RIGHT: case DIR_RIGHTUP: case DIR_RIGHTDOWN:
  53. return 1;
  54. case DIR_LEFT: case DIR_LEFTUP: case DIR_LEFTDOWN:
  55. return -1;
  56. default:
  57. return 0;
  58. }
  59. } //end
  60.  
  61. /**
  62. * Returns 1 if the dir is downward, -1 if upward, 0 if neither
  63. */
  64. int dirY(int dir) //start
  65. {
  66. switch(dir)
  67. {
  68. case DIR_DOWN: case DIR_LEFTDOWN: case DIR_RIGHTDOWN:
  69. return 1;
  70. case DIR_UP: case DIR_LEFTUP: case DIR_RIGHTUP:
  71. return -1;
  72. default:
  73. return 0;
  74. }
  75. } //end
  76. //end extra functions
  77. }
  78.  
  79. //end Bomb Arrows
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement