Coolgamer012345

Untitled

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