Coolgamer012345

Untitled

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