Advertisement
Guest User

Untitled

a guest
May 21st, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var target;
  2. var attack;
  3. var trackcd;
  4. var track;
  5. var timertrack = 1013;
  6. var npc;
  7. var home = 1012
  8. var projectileCache = {}
  9. var world;
  10. /*data structure:
  11. projectileUUID:{createdTimestamp, lastTickedTimestamp, lastActedTimestamp}
  12. */
  13. function interact(event) {
  14.     event.npc.setAttackTarget(null);
  15. }
  16. function tick(event){
  17. var tickc = 1014
  18. world = event.npc.world;
  19. if (event.npc.timers.has(tickc)) {} else {
  20.     event.npc.timers.forceStart(tickc,20,false)
  21.     npc = event.npc
  22.     target = event.npc.getAttackTarget();
  23.     attack = event.npc.isAttacking();
  24.     var cd = 1011
  25.  //   var engage = event.npc.isAttacking(); why does this exist
  26.     var chance = Math.floor(Math.random() *5);
  27.     var tg;
  28.     if (event.npc.timers.has(cd)) {} else {
  29.         if (attack == true){
  30.             /*event.npc.timers.forceStart(1011,10,false);
  31.             event.npc.say(chance);*/
  32.             if (chance <= 5){
  33.                 var shot1 = event.npc.world.createItem("minecraft:stone",0,1)
  34.                 var shot2 = event.npc.world.createItem("minecraft:cobblestone",0,1)
  35.                 var shotc = Math.floor(Math.random() *2);
  36.                 event.npc.say(shotc);
  37.                 if (shotc == 1){
  38.                     event.npc.shootItem(target,shot1,100);
  39.                 } if (shotc == 0){
  40.                     event.npc.shootItem(target,shot2,100);
  41.                     event.npc.timers.start(home,1,false);
  42.                 }
  43.             }
  44.         }
  45.     }
  46. }
  47. }
  48. function timer(event){
  49.     if(event.id == home) {
  50.         var target = event.npc.getAttackTarget();
  51.         var e = event.npc.world.getClosestEntity(event.npc.pos,5,EntityType_PROJECTILE);
  52.         var timestamp = world.getTotalTime();
  53.         projectileCache[e.UUID] = {createdTimestamp:timestamp, lastActedTimestamp:timestamp, lastTickedTimestamp:timestamp}
  54.         e.enableEvents() /*it used to bug out there occasionally in test versions, should be fixed now*/
  55.     }
  56. } /*[i]*/
  57. function projectileTick(event) {
  58. if (attack == true) {
  59.     /*if (npc.timers.has(timertrack)) {} else {
  60.     npc.timers.forceStart(timertrack,10,false)*/
  61.     var cooldown = 10;
  62.     var projectiles = Object.keys(projectileCache)
  63.     var thisProjectile = projectiles.indexOf(event.projectile.UUID);
  64.     var currentTime = world.getTotalTime();
  65.     if(thisProjectile != -1) {
  66.         if(projectileCache[event.projectile.UUID].lastActedTimestamp + cooldown >= currentTime) {
  67.             event.projectile.setHeading(target);
  68.             projectileCache[event.projectile.UUID].lastActedTimestamp = currentTime;
  69.         }
  70.         projectileCache[event.projectile.UUID].lastTickedTimestamp = currentTime;
  71.     }
  72.     }
  73. }
  74. function projectileImpact(event) {
  75.     event.projectile.despawn();
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement