Coolgamer012345

Untitled

May 10th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.85 KB | None | 0 0
  1. // Ice Storm Projects. are LW_SCRIPT1
  2. // Ice Bolt Projects. are LW_SCRIPT2
  3. // Ice Bolt Damage Projects. are LW_SCRIPT1
  4.  
  5.  
  6. const int IceAmuletID = 143;
  7. const int ICE_WPN_MSC = 88;
  8. const int ICE_TILE = 6;
  9.  
  10. const int IceWandID = 144;
  11. const int ICE_BOLT_WPN_MSC = 89;
  12. const int ICE_BOLT_TILE = 11;
  13.  
  14. int IceWantCooldown = 0;
  15.  
  16. int WandUpTile = 352;
  17. int WandDownTile = 353;
  18. int WandLeftTile = 354;
  19. int WandRightTile = 355;
  20. int WandTile = 0;
  21.  
  22. //int LinkDirUpOffset = Link->Y - 16;
  23. //int LinkDirDownOffset = Link->Y + 16;
  24. //int LinkDirLeftOffset = Link->X - 16;
  25. //int LinkDirRightOffset = Link->X + 16;
  26.  
  27. int LinkDirectionXOffset()
  28. {
  29. int LinkDirXOffset = 0;
  30. if(Link->Dir == DIR_LEFT)
  31. {
  32. LinkDirXOffset = Link->X - 16;
  33. }
  34.  
  35. if(Link->Dir == DIR_RIGHT)
  36. {
  37. LinkDirXOffset = Link->X + 16;
  38. }
  39.  
  40. return LinkDirXOffset;
  41. }
  42.  
  43. int LinkDirectionYOffset()
  44. {
  45. int LinkDirYOffset = 0;
  46. if(Link->Dir == DIR_UP)
  47. {
  48. LinkDirYOffset = Link->Y - 16;
  49. }
  50.  
  51. if(Link->Dir == DIR_DOWN)
  52. {
  53. LinkDirYOffset = Link->Y + 16;
  54. }
  55.  
  56. return LinkDirYOffset;
  57. }
  58.  
  59.  
  60.  
  61. void StartIceScript()
  62. {
  63. Link->MP -= 1;
  64.  
  65. int Rand_LEFT_RIGHT = Rand(-12,12);
  66. int Rand_UP_DOWN = Rand(-12, 12);
  67.  
  68. int Deg_Rand_UP_ANGLE = Randf(225, 315);
  69. int Deg_Rand_DOWN_ANGLE = Randf(135, 45);
  70. int Deg_Rand_LEFT_ANGLE = Randf(135, 225);
  71. int Deg_Rand_RIGHT_ANGLE = Randf(315, 405);
  72.  
  73. int Rand_UP_ANGLE = DegtoRad(Deg_Rand_UP_ANGLE);
  74. int Rand_DOWN_ANGLE = DegtoRad(Deg_Rand_DOWN_ANGLE);
  75. int Rand_LEFT_ANGLE = DegtoRad(Deg_Rand_LEFT_ANGLE);
  76. int Rand_RIGHT_ANGLE = DegtoRad(Deg_Rand_RIGHT_ANGLE);
  77.  
  78. lweapon Ice_Storm = Screen->CreateLWeapon(LW_SCRIPT1);
  79.  
  80. Ice_Storm->Angular = true;
  81.  
  82. Ice_Storm->X = Link->X;
  83. Ice_Storm->Y = Link->Y;
  84.  
  85. Ice_Storm->Dir = Link->Dir;
  86.  
  87. if(Ice_Storm->Dir == DIR_UP)
  88. {Ice_Storm->Angle = Rand_UP_ANGLE;}
  89. if(Ice_Storm->Dir == DIR_DOWN)
  90. {Ice_Storm->Angle = Rand_DOWN_ANGLE;}
  91. if(Ice_Storm->Dir == DIR_LEFT)
  92. {Ice_Storm->Angle = Rand_LEFT_ANGLE;}
  93. if(Ice_Storm->Dir == DIR_RIGHT)
  94. {Ice_Storm->Angle = Rand_RIGHT_ANGLE;}
  95.  
  96.  
  97. Ice_Storm->UseSprite(ICE_WPN_MSC);
  98. Ice_Storm->Damage = 2;
  99.  
  100. Ice_Storm->Step = 400;
  101.  
  102. Ice_Storm->HitWidth = 8;
  103. Ice_Storm->HitHeight = 8;
  104.  
  105.  
  106. if(Ice_Storm->Dir == DIR_UP)
  107. {Ice_Storm->Tile = ICE_TILE;}
  108. if(Ice_Storm->Dir == DIR_DOWN)
  109. {Ice_Storm->Tile = ICE_TILE + 2;}
  110. if(Ice_Storm->Dir == DIR_LEFT)
  111. {Ice_Storm->Tile = ICE_TILE + 3;}
  112. if(Ice_Storm->Dir == DIR_RIGHT)
  113. {Ice_Storm->Tile = ICE_TILE + 1;}
  114. }
  115.  
  116. void StartIceBolt()
  117. {
  118. Link->MP -= 16;
  119.  
  120. lweapon Ice_Bolt = Screen->CreateLWeapon(LW_SCRIPT2);
  121.  
  122. Ice_Bolt->CollDetection = false;
  123.  
  124. Ice_Bolt->Angular = false;
  125.  
  126. Ice_Bolt->X = Link->X;
  127. Ice_Bolt->Y = Link->Y + 10;
  128.  
  129. Ice_Bolt->Dir = Link->Dir;
  130.  
  131. Ice_Bolt->UseSprite(ICE_BOLT_WPN_MSC);
  132.  
  133. if(Ice_Bolt->Dir == DIR_UP)
  134. {Ice_Bolt->Tile = ICE_BOLT_TILE;}
  135. if(Ice_Bolt->Dir == DIR_DOWN)
  136. {Ice_Bolt->Tile = ICE_BOLT_TILE + 2;}
  137. if(Ice_Bolt->Dir == DIR_LEFT)
  138. {Ice_Bolt->Tile = ICE_BOLT_TILE + 3;}
  139. if(Ice_Bolt->Dir == DIR_RIGHT)
  140. {Ice_Bolt->Tile = ICE_BOLT_TILE + 1;}
  141.  
  142. Ice_Bolt->Damage = 12;
  143.  
  144. Ice_Bolt->Step = 300;
  145.  
  146. Ice_Bolt->HitWidth = 8;
  147. Ice_Bolt->HitHeight = 8;
  148. }
  149.  
  150. // Detects if the weapon is hitting an enemy
  151. void DetectIceboltHit()
  152. {
  153. npc IW_enemy;
  154. lweapon IW_item;
  155. for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1)
  156. {
  157. IW_item = Screen->LoadLWeapon(i2);
  158. if(IW_item->ID == LW_SCRIPT2)
  159. {
  160. for (int i = 1; i <= Screen->NumNPCs(); i += 1)
  161. {
  162. IW_enemy = Screen->LoadNPC(i);
  163.  
  164. 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)))
  165. {
  166. lweapon Ice_Bolt_Summon = Screen->CreateLWeapon(LW_SCRIPT1);
  167. Ice_Bolt_Summon->X = IW_item->X;
  168. Ice_Bolt_Summon->Y = IW_item->Y;
  169. Ice_Bolt_Summon->Damage = 12;
  170. Ice_Bolt_Summon->Tile = 2;
  171. }
  172. }
  173. }
  174. }
  175. }
  176.  
  177. global script TNB_Wand_Global
  178.  
  179. {
  180. void run()
  181. {
  182. while(true)
  183. {
  184. int UseIceUseMagic = Rand(0,8);
  185.  
  186. if(Link->Dir == DIR_UP)
  187. {
  188. WandTile = WandUpTile;
  189. }
  190.  
  191. if(Link->Dir == DIR_DOWN)
  192. {
  193. WandTile = WandDownTile;
  194. }
  195.  
  196. if(Link->Dir == DIR_LEFT)
  197. {
  198. WandTile = WandLeftTile;
  199. }
  200.  
  201. if(Link->Dir == DIR_RIGHT)
  202. {
  203. WandTile = WandRightTile;
  204. }
  205.  
  206. LinkDirectionXOffset();
  207. LinkDirectionYOffset();
  208.  
  209. if(UsingItem(IceAmuletID) == true && Link->MP > 0 && UseIceUseMagic == 8)
  210. {
  211. StartIceScript();
  212. }
  213.  
  214. if(IceWantCooldown >= 60)
  215. {
  216. if(UsingItem(IceWandID) == true && Link->MP > 0)
  217. {
  218. StartIceBolt();
  219. IceWantCooldown = 0;
  220. Link->Action = LA_ATTACKING;
  221.  
  222. Screen->FastTile(2, LinkDirectionXOffset(), LinkDirectionYOffset(), WandTile, 7, OP_OPAQUE);
  223. }
  224. }
  225.  
  226. for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1) // Detects if the Ice Bolt hits a solid combo
  227. {
  228. lweapon IW_item = Screen->LoadLWeapon(i2);
  229. if(IW_item->ID == LW_SCRIPT2)
  230. {
  231. 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 ||
  232. 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)
  233. {
  234. IW_item->DeadState = WDS_DEAD;
  235. }
  236. }
  237. }
  238.  
  239. for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1)
  240. {
  241. lweapon Ice_Bolt_Summon = Screen->LoadLWeapon(i2);
  242. if(Ice_Bolt_Summon->ID == LW_SCRIPT1)
  243. {
  244. Ice_Bolt_Summon->DeadState = WDS_DEAD;
  245. }
  246. }
  247. DetectIceboltHit();
  248. IceWantCooldown += 1;
  249. Waitframe();
  250. }
  251. }
  252. }
Advertisement
Add Comment
Please, Sign In to add comment