Advertisement
Guest User

Untitled

a guest
Apr 21st, 2015
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. // ==UserScript==
  2. // @name TagPro Beach Balls
  3. // @description Fun at the beach!
  4. // @version 3.1
  5. // @grant none
  6. // @include http://tagpro-*.koalabeast.com:*
  7. // @include http://tangent.jukejuice.com:*
  8. // @include http://*.newcompte.fr:*
  9. // @license 2015
  10. // @author Ly, CFlakes
  11. // ==/UserScript==
  12.  
  13. tagpro.ready(function () {
  14. var texture = PIXI.Texture.fromImage('http://i.imgur.com/91Q6srF.png'),
  15. redBall = new PIXI.Texture(texture, new PIXI.Rectangle(80, 0, 40, 40)),
  16. blueBall = new PIXI.Texture(texture, new PIXI.Rectangle(0, 0, 40, 40)),
  17. whiteBall = new PIXI.Texture(texture, new PIXI.Rectangle(120, 0, 40, 40)),
  18. outline = new PIXI.Texture(texture, new PIXI.Rectangle(160, 0, 40, 40)),
  19. tagproTexture = new PIXI.Texture(texture, new PIXI.Rectangle(200, 0, 40, 40)),
  20. tr = tagpro.renderer;
  21.  
  22. tr.createBallOutline = function (player) {
  23. if (!player.sprites.ballOutline) {
  24. player.sprites.ballOutline = new PIXI.Sprite(outline);
  25. player.sprites.ball.addChild(player.sprites.ballOutline);
  26. }
  27. };
  28.  
  29. tr.createBallSpin = function (player) {
  30. var teamColor = player.team === 1 ? redBall : blueBall;
  31. if (!player.ballColor || !player.ballMask) {
  32. player.ballColor = [];
  33. player.ballMask = [];
  34. for (i = 0; i < 3; i++) {
  35. player.ballColor[i] = new PIXI.Sprite(teamColor);
  36. player.ballMask[i] = new PIXI.Graphics();
  37. player.ballMask[i].x = 20;
  38. player.ballMask[i].y = 20;
  39. player.sprites.ball.addChild(player.ballColor[i]);
  40. player.sprites.ball.addChild(player.ballMask[i]);
  41. player.ballColor[i].mask = player.ballMask[i];
  42. }
  43. } else {
  44. for (i = 0; i < 3; i++) {
  45. player.ballColor[i].setTexture(teamColor);
  46. }
  47. }
  48. };
  49.  
  50. tr.updatePlayerColor = function(player) {
  51. if (!player.ballColor || (!player.sprites.ballOutline && !player.tagpro)) {
  52. tr.createBallSpin(player);
  53. tr.createBallOutline(player);
  54. } else {
  55. var radian = (Math.PI / 180),
  56. points = [],
  57. angle = (player.angle / radian % 360) + 360;
  58.  
  59. for (i = 0; i < 6; i++) {
  60. var iAngle = angle + 360 / 6 * i,
  61. side = ((iAngle + 270) % 360 > 180) ? 1 : -1,
  62. outerAngle = (iAngle + 90) % 180,
  63. outerAngle = (side > 0) ? 180 - outerAngle : outerAngle,
  64. offset = (-8.546e-10 * Math.pow(outerAngle, 5)
  65. + 4.311e-7 * Math.pow(outerAngle, 4)
  66. - 6.669e-5 * Math.pow(outerAngle, 3)
  67. + 0.001099 * Math.pow(outerAngle, 2)
  68. + 0.3462 * outerAngle),
  69. innerX = 18 * Math.cos(iAngle * radian),
  70. innerY = 18 * Math.sin(iAngle * radian) - 10,
  71. outerX = 30 * Math.cos((iAngle + offset * side) * radian),
  72. outerY = 30 * Math.sin((iAngle + offset * side) * radian);
  73.  
  74. points.push({ix: innerX, iy: innerY, ox: outerX, oy: outerY});
  75. }
  76.  
  77. for (i = 0; i < points.length; i += 2) {
  78. var first = points[i],
  79. second = points[(i + 1) % points.length],
  80. context = player.ballMask[i / 2];
  81.  
  82. context.clear();
  83.  
  84. context.beginFill(0x000000);
  85. context.moveTo(0, -10);
  86. context.quadraticCurveTo(first.ix, first.iy, first.ox, first.oy);
  87. context.lineTo(second.ox, second.oy);
  88. context.quadraticCurveTo(second.ix, second.iy, 0, -10);
  89. context.endFill();
  90. }
  91. }
  92. var sprite = player.team === 1 ? "redball" : "blueball";
  93. if (player.sprites.actualBall.tileId !== sprite) {
  94. tr.createBallSpin(player);
  95. player.sprites.actualBall.tileId = sprite;
  96. }
  97. };
  98.  
  99. tr.createBallSprite = function(player) {
  100. var sprite = player.team === 1 ? "redball" : "blueball";
  101. player.sprites.actualBall = new PIXI.Sprite(whiteBall);
  102. player.sprites.ball.addChild(player.sprites.actualBall);
  103. tr.createBallSpin(player);
  104. player.sprites.actualBall.tileId = sprite;
  105. };
  106.  
  107. tr.updateTagpro = function (player) {
  108. if (player.tagpro) {
  109. if (!tr.options.disableParticles && !player.sprites.tagproSparks) {
  110. player.sprites.tagproSparks = new cloudkid.Emitter(
  111. player.sprites.ball, [tr.particleFireTexture],
  112. tagpro.particleDefinitions.tagproSparks);
  113. tr.emitters.push(player.sprites.tagproSparks);
  114. }
  115. if (!player.sprites.tagproTexture) {
  116. player.sprites.ball.removeChild(player.sprites.ballOutline);
  117. player.sprites.ballOutline = null;
  118. player.sprites.tagproTexture = new PIXI.Sprite(tagproTexture);
  119. player.sprites.ball.addChild(player.sprites.tagproTexture);
  120. }
  121. } else {
  122. if (player.sprites.tagproTexture) {
  123. player.sprites.ball.removeChild(player.sprites.tagproTexture);
  124. player.sprites.tagproTexture = null;
  125. }
  126. if (player.sprites.tagproSparks) {
  127. player.sprites.tagproSparks.emit = false;
  128. var sparksIndex = tr.emitters.indexOf(player.sprites.tagproSparks);
  129. tr.emitters.splice(sparksIndex, 1);
  130. player.sprites.tagproSparks.destroy();
  131. player.sprites.tagproSparks = null;
  132. }
  133. }
  134. };
  135. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement