magic.txt 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. event.load("block_click");
  2. magic_particle = particle.get("ELECTRIC_SPARK");
  3. Reach = 50;
  4. mat1 = material.get("GREEN_WOOL");
  5. mat2 = material.get("RED_WOOL");
  6. mat3 = material.get("ORANGE_WOOL");
  7. @wait
  8. wait();
  9. if(event == "block_click"){
  10. if(player.getName(player) != "SirTerence7"){// && player.getName(player) != "Mareeeen"){
  11. goto("wait");
  12. }
  13. if(action == "PHYSICAL"){
  14. goto("wait");
  15. }
  16. /*player_hand = living.getHand(player);
  17. if(!item.hasName(player_hand)){
  18. goto("wait");
  19. }
  20. item_name = string.text(item.getName(player_hand));
  21. if(item_name != "wand"){
  22. goto("wait");
  23. }*/
  24. magic.shoot(player, entity.getLook(player));
  25. }
  26. goto("wait");
  27. function magic.shoot(player, look){
  28. player_loc = loc.mod(entity.getLocation(player),0,1.25,0);
  29. b = $Reach*3/2;
  30. for(a = 0; a < $Reach * 3; a++){
  31. new_loc = loc.mod(player_loc, a*look[0]/3, a*look[1]/3, a*look[2]/3);
  32. new_block = block.get(new_loc);
  33. new_mat = block.getType(new_block);
  34. if(material.isSolid(new_mat)){
  35. b = a;
  36. break;
  37. }
  38. }
  39. if(b == null){
  40. b = $Reach*3/2;
  41. }
  42. mid_loc = loc.mod(player_loc, (math.random(0,100)/5-10)*b*1/(4*$Reach)+b*look[0]/6, (math.random(0,100)/5-10)*b*1/(4*$Reach)+b*look[1]/6, (math.random(0,100)/5-10)*b*1/(4*$Reach)+b*look[2]/6);
  43. end_loc = new_loc;
  44. block.setMaterial(block.get(mid_loc), $mat1);
  45. block.setMaterial(block.get(end_loc), $mat2);
  46. vector1 = array.new(3);//start to mid
  47. vector2 = array.new(3);//mid to end
  48. vector3 = array.new(3);
  49. detail = 15;
  50. startX = loc.getX(player_loc);
  51. startY = loc.getY(player_loc);
  52. startZ = loc.getZ(player_loc);
  53. midX = loc.getX(mid_loc);
  54. midY = loc.getY(mid_loc);
  55. midZ = loc.getZ(mid_loc);
  56. vector1[0] = (midX-startX);
  57. vector1[1] = (midY-startY);
  58. vector1[2] = (midZ-startZ);
  59. vector2[0] = -(loc.getX(end_loc)-midX);
  60. vector2[1] = -(loc.getY(end_loc)-midY);
  61. vector2[2] = -(loc.getZ(end_loc)-midZ);
  62. for(a = 0; a < detail; a++){
  63. waitfor(2);
  64. perc = a/detail;
  65. vector3[0] = (midX+vector2[0]*perc - startX-vector1[0]*perc)*perc;
  66. vector3[1] = (midY+vector2[1]*perc - startY-vector1[1]*perc)*perc;
  67. vector3[2] = (midZ+vector2[2]*perc - startZ-vector1[2]*perc)*perc;
  68. new_loc = loc.mod(player_loc, vector3[0], vector3[1],vector3[2]);
  69. new_block = block.get(new_loc);
  70. new_mat = block.getType(new_block);
  71. if(material.isSolid(new_mat)){
  72. break;
  73. }
  74. particle.spawn(new_loc, $magic_particle, 1, 0, 0, 0, 0);
  75. }
  76. block.setMaterial(new_block, $mat3);
  77. }