-Double post to avoid heavy text-
By testing the system progress I can see there is some problems with PIN SYSTEM.
Normally the move acts this way. (VS/wrestling mode only)
-Hit attack button close to a downed enemy will send player to Pin starter
-Pin is an attack with very long liedowntime for enemy
(I don't tried to code it as a slam, because I want other enemies to be able to cancel it by hittin player - It works well!)
-During the pin, player can cancel at any time (basically an anim with attack box that give enemy a shorter lie down fime)
-Enemy can cancel it too if his life is too high
This feature is simulated. Basically player himself check enemy life and play cancel/escape anim if enemy life is too high. (no problem with that, again)
-If pin is not cancelled the count 1 2 3 will "kill" enemy and display a "3 count" text
(pin is completed)
---Now the problems--- :

1-TELEPORT PIN
I use this edited DC's script to detect closest liedown enemy (with the help of BB)
Code:
{// Checks closest enemy's animation & range
// If it's accepted, perform pin attack (ajout de differents "falls" pour rendre compatible avec tous les liedowns...) - (les ajouter tous!!!)
/*Originally smartbomb by
Damon Vaughn Caskey
07152008*/
void self = getlocalvar("self"); //Caller.
float x = getentityproperty(self, "x");
float z = getentityproperty(self, "z");
float b = getentityproperty(self, "base");
void vEntity; //Target entity placeholder.
int iEntity; //Entity enumeration holder.
int iType; //Entity type.
int iMax = openborvariant("ent_max"); //Entity count.
//Enumerate and loop through entity collection.
for(iEntity=0; iEntity<iMax; iEntity++){
vEntity = getentity(iEntity); //Get target entity from current loop.
iType = getentityproperty(vEntity, "type"); //Get target type.
//Enemy type?
if (iType == openborconstant("TYPE_ENEMY")){
float Tx = getentityproperty(vEntity, "x");
float Ty = getentityproperty(vEntity, "a");
float Tz = getentityproperty(vEntity, "z");
void EAnim = getentityproperty(vEntity, "animationID");
int EHealth = getentityproperty(vEntity, "health");
if( (EAnim == openborconstant("ANI_FALL") || EAnim == openborconstant("ANI_FALL2") || EAnim == openborconstant("ANI_FALL7") || EAnim == openborconstant("ANI_FALL9") || EAnim == openborconstant("ANI_FALL10") || EAnim == openborconstant("ANI_FALL14") || EAnim == openborconstant("ANI_FALL25")) && Ty == b && EHealth > 0){
float Disx = Tx - x;
float Disz = Tz - z;
if(Disz < 0){
Disz = -Disz;
}
if( (Disx >= RxMin && Disx <= RxMax && Disz <= Rz) || (Disx >= -RxMax && Disx <= -RxMin && Disz <= Rz)){
changeentityproperty(self, "position", Tx, Tz);
changeentityproperty(self, "opponent", vEntity);
performattack(self, openborconstant(Ani));
}
}
}
}
}
But if you're close of a standing enemy and try to hit him.
You will be teleported to the closest liedown enemy instead.
Is this something that can be fixed?
2-PIN A RISING ENEMY
This is something that occur with a particular timing (just before an enemy rises)
-Basically player try a pin on a liedown enemy (so player is in a crouch type animation)
-Before pin attack box hits enemy, he start rising
-it results in player pinning nothing and enemy stands
To fix that, I could make an attack box on first frame of pin, but I don't want the hit count to increase.
Is there a way (by scripting?) to force an enemy to be on the ground until the actual hit box can hit him?
EDIT :
OK, I just fixed this one.
I choose the easy way with my basic skills.
By adding an hitbox on fist frame of pin (with empty spark, no sound, no hit pause...)
This is my way to force enemy to stay on ground once I have hit attack button.
Any other idea is still welcome. (but not the priority, now)
Thanks