void target(float Velx, float Velz)
{//Targetting opponent before leaping or dashing (REDUCED TARGET SCRIPT)
//Check subtype and player minZ to avoid targeting decoration enemies, like Shiva/Mr.X waiting to fight in the last stage
void self = getlocalvar("self");
void found = findtarget(self);
void subType = getentityproperty(found, "subtype");
int dir = getentityproperty(self, "direction");
float x = getentityproperty(self, "x");
float z = getentityproperty(self, "z");
float fZ = getentityproperty(found, "z");
float minZ = openborvariant("player_min_z");
if(subType != openborconstant("SUBTYPE_NOTGRAB")){
if(fZ >= minZ){
setlocalvar("target"+self, found); //PUT FOUND TARGET IN LOCAL VARIABLE
}
}
//IS THERE A TARGET?
if(getlocalvar("target"+self) != NULL()){
void target = getlocalvar("target"+self);
float Tx = getentityproperty(target, "x");
float Tz = getentityproperty(target, "z");
float Disx = Tx - x; //GET X DISTANCE
float Disz = Tz - z; //GET Z DISTANCE
if(Disx < 0){ //NEGATIVE DISX?
Disx = -Disx; //TURN IT TO POSITIVE
changeentityproperty(self, "direction", 0); //FACE LEFT
}
else
{
changeentityproperty(self, "direction", 1); //FACE RIGHT
}
if(Disz < 0){ //NEGATIVE DISZ?
Disz = -Disz; //TURN IT TO POSITIVE
}
if(Disz < Disx){ //DISX BIGGER THAN DISZ?
if(Tx < x){ //PLAYER IS BEHIND ENEMY?
setlocalvar("x"+self, -Velx); //TURN VX TO NEGATIVE
}
else
{
setlocalvar("x"+self, Velx); //USE DEFINED VX
}
setlocalvar("z"+self, Velx*(Tz-z)/Disx); //CALCULATE VZ THEN STORE VALUE IN LOCAL VARIABLE
}
else
{ //DISZ BIGGER THAN DISX!
if(Tz < z){ //PLAYER IS BEHIND ENEMY?
setlocalvar("z"+self, -Velz); //TURN VZ TO NEGATIVE
}
else
{
setlocalvar("z"+self, Velz); //USE DEFINED VZ
}
setlocalvar("x"+self, Velz*(Tx-x)/Disz); //CALCULATE VX THEN STORE VALUE IN LOCAL VARIABLE
}
}
else //NO TARGET AT ALL!
{
setlocalvar("z"+self, 0); // ZERO VELOCITY
if(dir == 0){ //FACING LEFT?
setlocalvar("x"+self, -Velx); //NEGATIVE VELOCITY
}
else
{
setlocalvar("x"+self, Velx); //POSITIVE VELOCITY
}
}
}
void dashTarget()
{//Dash with previously attained speed by target script!
void self = getlocalvar("self");
float Vx = getlocalvar("x"+self);
float Vz = getlocalvar("z"+self);
if(Vx != NULL() && Vz != NULL()){changeentityproperty(self, "velocity", Vx, Vz);}
}