  #include_function ".\playerfunctions.txt"
  #include_function ".\effects.txt"
  #include_function ".\nhimor_functions.txt"

  let playernum=2;

  task run{
    SE("ting2");
    SE("ring");
    SE("bubble");
    SE("nhimorlaser");
    SpellCardEffect;
    PiscletLasers;
    PlayerForbidShotOn;
    SetCommonData("NhimorAlwaysFollow",rand_int(1,360));

    loop(250){yield;}
    StopEffect=1;
    PlayerForbidShotOff;
    DeleteCommonData("NhimorAlwaysFollow");
    loop(75){
      yield;
    }
    End();
  }



  @Initialize{
    SetPlayerInvincibility(340);
    run();
  }
  @MainLoop{
    CollectItems();
    yield;
  }
  @Finalize{

  }

task PiscletLasers{
	yield;
	PiscletLasers2;
	PiscletLasers3;
	let k=0;
	let obj=[];
	loop(4){
		obj = obj~[Obj_Create(OBJ_LASER)];
		Obj_SetAngle	  (obj[k],-90);
		Obj_SetSpeed	(obj[k],0);
		ObjShot_SetGraphic(obj[k],9);
		ObjShot_SetDamage(obj[k],0);
		ObjShot_SetPenetration(obj[k],999);
		ObjLaser_SetLength(obj[k],600);
		ObjLaser_SetWidth(obj[k],4);
		ObjLaser_SetSource(obj[k],false);
		Obj_SetAutoDelete(obj[k],false);
		k++;
	}
	let frame=0;
	loop(240){
		k=0;
		loop(4){
			Obj_SetPosition(obj[k],GetCommonDataDefault("PiscletX",0)[k],GetCommonDataDefault("PiscletY",0)[k]);
//			Goo(GetCommonDataDefault("PiscletX",0)[k],GetCommonDataDefault("PiscletY",0)[k]-prand(0,400),prand(-2,2),0,0.5,200,20);
			k++;
		}
		if(frame%3==0){
			PiscletLaserRotate(trunc(frame/3)%4);
		}
		frame++;
		yield;
	}
	k=0;
	loop(4){ObjShot_FadeDelete(obj[k]);k++;}
}
task PiscletLaserRotate(k){
	let obj=Obj_Create(OBJ_LASER);
	Obj_SetSpeed	(obj,0);
	ObjShot_SetGraphic(obj,9);
	ObjShot_SetDamage(obj,0);
	ObjShot_SetPenetration(obj,999);
	ObjLaser_SetLength(obj,600);
	ObjLaser_SetWidth(obj,4);
	ObjLaser_SetSource(obj,false);
	Obj_SetAutoDelete(obj,false);
	Obj_SetCollisionToPlayer(obj,false);
	
	let alpha=0;
	let rotation=prand(-1,1);
	let angle=prand(0,360);


	loop(25){
		angle+=rotation;
		Obj_SetAngle	  (obj,angle);
		alpha+=5;
		Obj_SetAlpha(obj,alpha);
		Obj_SetPosition(obj,GetCommonDataDefault("PiscletX",0)[k],GetCommonDataDefault("PiscletY",0)[k]);
		yield;
	}
	loop(25){
		angle+=rotation;
		Obj_SetAngle	  (obj,angle);
		alpha-=5;
		Obj_SetAlpha(obj,alpha);
		Obj_SetPosition(obj,GetCommonDataDefault("PiscletX",0)[k],GetCommonDataDefault("PiscletY",0)[k]);
		yield;
	}
	Obj_Delete(obj);

}
task PiscletLasers2{
	let k=0;
	loop(48){
		k=0;
		loop(4){
			CreateObjShot(GetCommonDataDefault("PiscletX",0)[k],GetCommonDataDefault("PiscletY",0)[k],10,-90,100,0,1,k);
			k++;
		}
		loop(5){yield;}
	}
}
task PiscletLasers3{
	//the small X that shows up on the pisclets
	let k=0;
	let obj=[];
	loop(8){
		obj = obj~[Obj_Create(OBJ_LASER)];
		Obj_SetSpeed	(obj[k],0);
		ObjShot_SetGraphic(obj[k],10);
		ObjShot_SetDamage(obj[k],0);
		ObjShot_SetPenetration(obj[k],999);
		ObjLaser_SetLength(obj[k],100);
		ObjLaser_SetWidth(obj[k],5);
		ObjLaser_SetSource(obj[k],false);
		Obj_SetAutoDelete(obj[k],false);
		k++;
	}
	let x;
	let y;
	let angle=0;
	let frame=0;
	loop(260){
		k=0;
		loop(4){
			x=GetCommonDataDefault("PiscletX",0)[k];
			y=GetCommonDataDefault("PiscletY",0)[k];
			Obj_SetPosition(obj[k*2],x-cos(angle)*50,y-sin(angle)*50);
			Obj_SetPosition(obj[k*2+1],x-cos(angle+90)*50,y-sin(angle+90)*50);
			Obj_SetAngle(obj[k*2],angle);
			Obj_SetAngle(obj[k*2+1],angle+90);
			k++;
		}
		angle+=10;
		frame++;
		if(frame==240){
			k=0;
			loop(8){ObjShot_FadeDelete(obj[k]);k++;}
		}
		yield;
	}
}

task CreateObjShot(x,y,v,angle,damage,penetration,graphic,color){
	let obj = Obj_Create(OBJ_LASER);
	Obj_SetAngle	  (obj,-90);
	Obj_SetSpeed	(obj,0);
	Obj_SetPosition(obj,x,y);
	ObjShot_SetGraphic(obj,11);
	ObjShot_SetDamage(obj,8);
	ObjShot_SetPenetration(obj,1);
	ObjLaser_SetLength(obj,60);
	ObjLaser_SetWidth(obj,10);
	ObjLaser_SetSource(obj,false);
	Obj_SetAutoDelete(obj,false);

	let frame=prand_int(0,4);
	let goodir=prand(-2,2);
	while(!Obj_BeDeleted(obj)&&y>-40){
		y-=15;
		Obj_SetY(obj,y);
		goodir=prand(-1,1);
		if(frame%5==0){
			if(ExPlayer){goocolor=color;}
			Goo(x,y,goodir,6,0.5,200,10);
		}
		frame++;
		yield;
	}
	if(ExPlayer){goocolor=color;}
	Goo(x,y,prand(-2,2),-10,2,200,20);
	let angle=prand(0,360);
	if(ExPlayer){goocolor=color;}
	Goo(x,y,cos(angle)*7,sin(angle)*7,1,200,20);
	Obj_Delete(obj);
	loop(20){
		y-=15;
		Obj_SetY(obj,y);
		yield;
	}
}