Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var target;
- var attack;
- var trackcd;
- var track;
- var timertrack = 1013;
- var npc;
- var home = 1012
- var projectileCache = {}
- var world;
- /*data structure:
- projectileUUID:{createdTimestamp, lastTickedTimestamp, lastActedTimestamp}
- */
- function interact(event) {
- event.npc.setAttackTarget(null);
- }
- function tick(event){
- var tickc = 1014
- world = event.npc.world;
- if (event.npc.timers.has(tickc)) {} else {
- event.npc.timers.forceStart(tickc,20,false)
- npc = event.npc
- target = event.npc.getAttackTarget();
- attack = event.npc.isAttacking();
- var cd = 1011
- // var engage = event.npc.isAttacking(); why does this exist
- var chance = Math.floor(Math.random() *5);
- var tg;
- if (event.npc.timers.has(cd)) {} else {
- if (attack == true){
- /*event.npc.timers.forceStart(1011,10,false);
- event.npc.say(chance);*/
- if (chance <= 5){
- var shot1 = event.npc.world.createItem("minecraft:stone",0,1)
- var shot2 = event.npc.world.createItem("minecraft:cobblestone",0,1)
- var shotc = Math.floor(Math.random() *2);
- event.npc.say(shotc);
- if (shotc == 1){
- event.npc.shootItem(target,shot1,100);
- } if (shotc == 0){
- event.npc.shootItem(target,shot2,100);
- event.npc.timers.start(home,1,false);
- }
- }
- }
- }
- }
- }
- function timer(event){
- if(event.id == home) {
- var target = event.npc.getAttackTarget();
- var e = event.npc.world.getClosestEntity(event.npc.pos,5,EntityType_PROJECTILE);
- var timestamp = world.getTotalTime();
- projectileCache[e.UUID] = {createdTimestamp:timestamp, lastActedTimestamp:timestamp, lastTickedTimestamp:timestamp}
- e.enableEvents() /*it used to bug out there occasionally in test versions, should be fixed now*/
- }
- } /*[i]*/
- function projectileTick(event) {
- if (attack == true) {
- /*if (npc.timers.has(timertrack)) {} else {
- npc.timers.forceStart(timertrack,10,false)*/
- var cooldown = 10;
- var projectiles = Object.keys(projectileCache)
- var thisProjectile = projectiles.indexOf(event.projectile.UUID);
- var currentTime = world.getTotalTime();
- if(thisProjectile != -1) {
- if(projectileCache[event.projectile.UUID].lastActedTimestamp + cooldown >= currentTime) {
- event.projectile.setHeading(target);
- projectileCache[event.projectile.UUID].lastActedTimestamp = currentTime;
- }
- projectileCache[event.projectile.UUID].lastTickedTimestamp = currentTime;
- }
- }
- }
- function projectileImpact(event) {
- event.projectile.despawn();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement