Coolgamer012345

Untitled

May 10th, 2015
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 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 IW_TileTimer = 1;
  23.  
  24. //int LinkDirUpOffset = Link->Y - 16;
  25. //int LinkDirDownOffset = Link->Y + 16;
  26. //int LinkDirLeftOffset = Link->X - 16;
  27. //int LinkDirRightOffset = Link->X + 16;
  28.  
  29. int LinkDirectionXOffset()
  30. {
  31. int LinkDirXOffset = 0;
  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. if(Link->Dir == DIR_UP)
  43. {
  44. LinkDirXOffset = Link->X;
  45. }
  46.  
  47. if(Link->Dir == DIR_DOWN)
  48. {
  49. LinkDirXOffset = Link->X;
  50. }
  51.  
  52. return LinkDirXOffset;
  53. }
  54.  
  55. int LinkDirectionYOffset()
  56. {
  57. int LinkDirYOffset = 0;
  58. if(Link->Dir == DIR_UP)
  59. {
  60. LinkDirYOffset = Link->Y - 16;
  61. }
  62.  
  63. if(Link->Dir == DIR_DOWN)
  64. {
  65. LinkDirYOffset = Link->Y + 16;
  66. }
  67.  
  68. if(Link->Dir == DIR_LEFT)
  69. {
  70. LinkDirYOffset = Link->Y;
  71. }
  72.  
  73. if(Link->Dir == DIR_RIGHT)
  74. {
  75. LinkDirYOffset = Link->Y;
  76. }
  77.  
  78. return LinkDirYOffset;
  79. }
  80.  
  81.  
  82.  
  83. void StartIceScript()
  84. {
  85. Link->MP -= 1;
  86.  
  87. int Rand_LEFT_RIGHT = Rand(-12,12);
  88. int Rand_UP_DOWN = Rand(-12, 12);
  89.  
  90. int Deg_Rand_UP_ANGLE = Randf(225, 315);
  91. int Deg_Rand_DOWN_ANGLE = Randf(135, 45);
  92. int Deg_Rand_LEFT_ANGLE = Randf(135, 225);
  93. int Deg_Rand_RIGHT_ANGLE = Randf(315, 405);
  94.  
  95. int Rand_UP_ANGLE = DegtoRad(Deg_Rand_UP_ANGLE);
  96. int Rand_DOWN_ANGLE = DegtoRad(Deg_Rand_DOWN_ANGLE);
  97. int Rand_LEFT_ANGLE = DegtoRad(Deg_Rand_LEFT_ANGLE);
  98. int Rand_RIGHT_ANGLE = DegtoRad(Deg_Rand_RIGHT_ANGLE);
  99.  
  100. lweapon Ice_Storm = Screen->CreateLWeapon(LW_SCRIPT1);
  101.  
  102. Ice_Storm->Angular = true;
  103.  
  104. Ice_Storm->X = Link->X;
  105.  
  106. // Spawning the weapon infront of Link
  107. if(Link->Dir == DIR_UP)
  108. {Ice_Storm->Y = Link->Y - 16;}
  109.  
  110. if(Ice_Storm->Dir == DIR_DOWN)
  111. {Ice_Storm->Y = Link->Y + 16;}
  112.  
  113. if(Ice_Storm->Dir == DIR_LEFT)
  114. {Ice_Storm->X = Link->X - 16;}
  115.  
  116. if(Ice_Storm->Dir == DIR_RIGHT)
  117. {Ice_Storm->X = Link->X + 16;}
  118.  
  119.  
  120. Ice_Storm->Dir = Link->Dir;
  121.  
  122.  
  123. if(Ice_Storm->Dir == DIR_UP)
  124. {Ice_Storm->Angle = Rand_UP_ANGLE;}
  125.  
  126. if(Ice_Storm->Dir == DIR_DOWN)
  127. {Ice_Storm->Angle = Rand_DOWN_ANGLE;}
  128.  
  129. if(Ice_Storm->Dir == DIR_LEFT)
  130. {Ice_Storm->Angle = Rand_LEFT_ANGLE;}
  131.  
  132. if(Ice_Storm->Dir == DIR_RIGHT)
  133. {Ice_Storm->Angle = Rand_RIGHT_ANGLE;}
  134.  
  135.  
  136. Ice_Storm->UseSprite(ICE_WPN_MSC);
  137. Ice_Storm->Damage = 2;
  138.  
  139. Ice_Storm->Step = 400;
  140.  
  141. Ice_Storm->HitWidth = 8;
  142. Ice_Storm->HitHeight = 8;
  143.  
  144.  
  145. if(Ice_Storm->Dir == DIR_UP)
  146. {Ice_Storm->Tile = ICE_TILE;}
  147. if(Ice_Storm->Dir == DIR_DOWN)
  148. {Ice_Storm->Tile = ICE_TILE + 2;}
  149. if(Ice_Storm->Dir == DIR_LEFT)
  150. {Ice_Storm->Tile = ICE_TILE + 3;}
  151. if(Ice_Storm->Dir == DIR_RIGHT)
  152. {Ice_Storm->Tile = ICE_TILE + 1;}
  153. }
  154.  
  155. void StartIceBolt()
  156. {
  157. Link->MP -= 16;
  158.  
  159. lweapon Ice_Bolt = Screen->CreateLWeapon(LW_SCRIPT2);
  160.  
  161. Ice_Bolt->CollDetection = false;
  162.  
  163. Ice_Bolt->Angular = false;
  164.  
  165. Ice_Bolt->X = Link->X;
  166. Ice_Bolt->Y = Link->Y;
  167.  
  168. Ice_Bolt->Dir = Link->Dir;
  169.  
  170. Ice_Bolt->UseSprite(ICE_BOLT_WPN_MSC);
  171.  
  172.  
  173. if(Ice_Bolt->Dir == DIR_UP)
  174. {
  175. Ice_Bolt->Tile = ICE_BOLT_TILE;
  176. Ice_Bolt->Y = Link->Y - 16;
  177. }
  178.  
  179. if(Ice_Bolt->Dir == DIR_DOWN)
  180. {
  181. Ice_Bolt->Tile = ICE_BOLT_TILE + 2;
  182. Ice_Bolt->Y = Link->Y + 16;
  183. }
  184.  
  185. if(Ice_Bolt->Dir == DIR_LEFT)
  186. {
  187. Ice_Bolt->Tile = ICE_BOLT_TILE + 3;
  188. Ice_Bolt->X = Link->X - 16;
  189. }
  190.  
  191. if(Ice_Bolt->Dir == DIR_RIGHT)
  192. {
  193. Ice_Bolt->Tile = ICE_BOLT_TILE + 1;
  194. Ice_Bolt->Dir == DIR_RIGHT;
  195. }
  196.  
  197. Ice_Bolt->Damage = 12;
  198.  
  199. Ice_Bolt->Step = 300;
  200.  
  201. Ice_Bolt->HitWidth = 8;
  202. Ice_Bolt->HitHeight = 8;
  203. }
  204.  
  205. // Detects if the weapon is hitting an enemy
  206. void DetectIceboltHit()
  207. {
  208. npc IW_enemy;
  209. lweapon IW_item;
  210. for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1)
  211. {
  212. IW_item = Screen->LoadLWeapon(i2);
  213. if(IW_item->ID == LW_SCRIPT2)
  214. {
  215. for (int i = 1; i <= Screen->NumNPCs(); i += 1)
  216. {
  217. IW_enemy = Screen->LoadNPC(i);
  218.  
  219. 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)))
  220. {
  221. lweapon Ice_Bolt_Summon = Screen->CreateLWeapon(LW_SCRIPT1);
  222. Ice_Bolt_Summon->X = IW_item->X;
  223. Ice_Bolt_Summon->Y = IW_item->Y;
  224. Ice_Bolt_Summon->Damage = 12;
  225. Ice_Bolt_Summon->Tile = 2;
  226. }
  227. }
  228. }
  229. }
  230. }
  231.  
  232. global script TNB_Wand_Global
  233.  
  234. {
  235. void run()
  236. {
  237. while(true)
  238. {
  239. int UseIceUseMagic = Rand(0,8);
  240.  
  241. if(Link->Dir == DIR_UP)
  242. {
  243. WandTile = WandUpTile;
  244. }
  245.  
  246. if(Link->Dir == DIR_DOWN)
  247. {
  248. WandTile = WandDownTile;
  249. }
  250.  
  251. if(Link->Dir == DIR_LEFT)
  252. {
  253. WandTile = WandLeftTile;
  254. }
  255.  
  256. if(Link->Dir == DIR_RIGHT)
  257. {
  258. WandTile = WandRightTile;
  259. }
  260.  
  261. LinkDirectionXOffset();
  262. LinkDirectionYOffset();
  263.  
  264. if(UsingItem(IceAmuletID) == true && Link->MP > 0 && UseIceUseMagic == 8)
  265. {
  266. StartIceScript();
  267. }
  268.  
  269. // The Ice Wand 'cooldown' period checking
  270. if(IceWantCooldown >= 30)
  271. {
  272. if(UsingItem(IceWandID) == true && Link->MP > 0)
  273. {
  274. StartIceBolt();
  275. IceWantCooldown = 0;
  276. Link->Action = LA_ATTACKING;
  277.  
  278. // Draws the Wand itself
  279. if(IW_TileTimer <= 16)
  280. {
  281. Screen->FastTile(2, LinkDirectionXOffset(), LinkDirectionYOffset(), WandTile, 7, OP_OPAQUE);
  282. if(IW_TileTimer >= 16)
  283. {
  284. IW_TileTimer = 0;
  285. }
  286. }
  287. }
  288. }
  289.  
  290. for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1) // Detects if the Ice Bolt hits a solid combo
  291. {
  292. lweapon IW_item = Screen->LoadLWeapon(i2);
  293. if(IW_item->ID == LW_SCRIPT2)
  294. {
  295. 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 ||
  296. 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)
  297. {
  298. IW_item->DeadState = WDS_DEAD;
  299. }
  300. }
  301. }
  302.  
  303. for (int i2 = 1; i2 <= Screen->NumLWeapons(); i2 += 1)
  304. {
  305. lweapon Ice_Bolt_Summon = Screen->LoadLWeapon(i2);
  306. if(Ice_Bolt_Summon->ID == LW_SCRIPT1)
  307. {
  308. Ice_Bolt_Summon->DeadState = WDS_DEAD;
  309. }
  310. }
  311.  
  312. DetectIceboltHit();
  313. IceWantCooldown += 1;
  314. IW_TileTimer += 1;
  315. Waitframe();
  316. }
  317. }
  318. }
Advertisement
Add Comment
Please, Sign In to add comment