custom fall reactions in OpenBor

NED

Well-known member
Hello,
I have not coded something for several months now due to IRL stuffs.
I think I can possibly go on now. I'm trying to see if this is possible with this engine.
And more importantly, HOW, this can be done.
This is a very very very very very simplified version of what I had initially in my mind. To make it possible to be done without having one more break in my possible future project.

Basically : a fall anim with custom fall reactions based on interactions.
PD73ohB.png


I would really appreciate to have some support and help to code what this mockup shows.

If this is still too ambitious, or if it takes too much of your time, I would understand.
No problem. Thanks for your support.
 
Well, you should alter the function into this:

Code:
void wallhit2(int Dist, void Ani)
{// Checks if there is wall/platform at defined distance change animation
   void self = getlocalvar("self");
   int Direction = getentityproperty(self, "direction");
   int x = getentityproperty(self, "x");
   int z = getentityproperty(self, "z");
   float H; float Hy;

   if(Direction == 0){ //Is entity facing left?                 
      Dist = -Dist; //Reverse Dist to match facing
   }

   H = checkwall(x+Dist,z);
   Hy = checkplatformbelow(x+Dist,z, 5000);

   if(H > 0 || Hy){
     performattack(self, openborconstant(Ani));
   }
}

I've tried this and it works with the build you are using :)
 
Thanks a lot for your time Bloodbane.
It seems to be accepted by this build since the engine don't crashes anymore on startup.

I tested it, but now there is a crash on loading the level (?)
I have a "flood" of error messages about some other scripts in the demo.
(I posted a part of these error messages)
Code:
In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Invalid function call or expression '?' (in production 49)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                     ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error '(' (in production 46)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                       ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error 'checkwall' (in production 43)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                        ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error '(' (in production 40)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                                 ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error 'x' (in production 37)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                                  ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error '+' (in production 34)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                                   ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error 'edge' (in production 32)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                                    ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error ')' (in production 13)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                                           ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 97: Unknown error ':' (in production 11)

	Hf = (facing==1) ? (checkwall(x+edge,z)) : (checkwall(x-edge,z));
                                             ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 100: Invalid function call or expression '?' (in production 49)

	if(Hf <= 0) {Hf = (facing==1) ? (isPlatform(x+edge,z,1001)) : (isPlatform(x-edge,z,1001));}
                                  ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 100: Unknown error '(' (in production 46)

	if(Hf <= 0) {Hf = (facing==1) ? (isPlatform(x+edge,z,1001)) : (isPlatform(x-edge,z,1001));}
                                    ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 100: Unknown error 'isPlatform' (in production 43)

	if(Hf <= 0) {Hf = (facing==1) ? (isPlatform(x+edge,z,1001)) : (isPlatform(x-edge,z,1001));}
                                     ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 100: Unknown error '(' (in production 40)

	if(Hf <= 0) {Hf = (facing==1) ? (isPlatform(x+edge,z,1001)) : (isPlatform(x-edge,z,1001));}
                                               ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 100: Unknown error 'x' (in production 37)

	if(Hf <= 0) {Hf = (facing==1) ? (isPlatform(x+edge,z,1001)) : (isPlatform(x-edge,z,1001));}
                                                ^



In file included from data/scripts/enemy.c, line 4:
Script error: data/scripts/library/drago.h, line 100: Unknown error '+' (in production 34)

	if(Hf <= 0) {Hf = (facing==1) ? (isPlatform(x+edge,z,1001)) : (isPlatform(x-edge,z,1001));}
...
...
...

Since I don't really understand it. I don't know it they are elements needed for this feature or other scripts I can get rid of.

I'll try to ask to Dantedevil as well, since he made this demo.
 
I found the problem my friend!

You dont need the drago.c in the scipt folder.

Just delete the file and delete of your enemy.c  the line:
#include "data/scripts/library/drago.h"

Sorry for that!  :-\
 
After my try, I had this error message
Code:
Script error: data/scripts/enemy.c, line 16: Unknown error 'float' (in production 20)

   float H = checkwall(x+Dist,z);
   ^

I tried to update this wallhit2 code present in enemy.c as well
just like Bloodbane explained it before. Since this is the exact same script.
Code:
void wallhit2(int Dist, void Ani)
{// Checks if there is wall/platform at defined distance change animation
   void self = getlocalvar("self");
   int Direction = getentityproperty(self, "direction");
   int x = getentityproperty(self, "x");
   int z = getentityproperty(self, "z");
   float H; float Hy;

   if(Direction == 0){ //Is entity facing left?                 
      Dist = -Dist; //Reverse Dist to match facing
   }

   H = checkwall(x+Dist,z);
   Hy = checkplatformbelow(x+Dist,z, 5000);

   if(H > 0 || Hy){
     performattack(self, openborconstant(Ani));
   }
}



And now, I have a bigger error message (flood)
Code:
Script error: data/chars/jeger/jegro.txt, line 106: Unknown error 'void' (in production 20)

void self = getlocalvar("self");
^



Script error: data/chars/jeger/jegro.txt, line 162: Unknown error 'void' (in production 20)

void self = getlocalvar("self");
^

Script compile error: can't find function 'shooter2'

Script compile error in '#import': shooter2 line 289, column 3
Script error: unable to import script file '//Library scripts for 3D targetting

#import "data/scripts/library/spawn.h"



void target(float Velx, float Velz, float dx, float dz, int Stop, int Flip)

{// Targetting opponent before leaping or dashing.

// Velx = x Velocity

// Velz = z Velocity

// dx = x added distance

// dz = z added distance

// Stop = flag to stop moving if no target is found



    void self = getlocalvar("self");

    int dir = getentityproperty(self, "direction");

    float x = getentityproperty(self, "x");

    float z = getentityproperty(self, "z");



    if (dir == 0){ //Is entity facing left?                  

      dx = -dx; //Reverse X direction to match facing

    }



    setlocalvar("T"+self, findtarget(self)); //Get nearest player



    if( getlocalvar("T"+self) != NULL()){

      void target = getlocalvar("T"+self);

      float Tx = getentityproperty(target, "x");

      float Tz = getentityproperty(target, "z");



      if(Flip == 1){

        if(Tx < x){

          changeentityproperty(self, "direction", 0);

        } else {

          changeentityproperty(self, "direction", 1);

        }

      }



      x = x+dx;

      z = z+dz;

      float Disx = Tx - x;

      float Disz = Tz - z;



//Set both distance as positive value

      if(Disx < 0){

        Disx = -Disx;

      }



      if(Disz < 0){

        Disz = -Disz;

      }



// Calculate velocity for targetting

      if(Disz < Disx)

      {

        if(Tx < x){

          setlocalvar("x"+self, -Velx);

        } else { setlocalvar("x"+self, Velx); }



        setlocalvar("z"+self, Velx*(Tz-z)/Disx);

      } else {

        if(Tz < z){

          setlocalvar("z"+self, -Velz);

        } else { setlocalvar("z"+self, Velz); }



        setlocalvar("x"+self, Velz*(Tx-x)/Disz);

      }



    } else {

      if(Stop == 1)

      {

        setlocalvar("z"+self, 0);

        setlocalvar("x"+self, 0);

      } else {

        setlocalvar("z"+self, 0);

        if(dir==0){

          setlocalvar("x"+self, -Velx);

        } else { setlocalvar("x"+self, Velx); }

      }

    }



    setlocalvar("T"+self, NULL()); //Clears variable

}



void targetL(float Vy, float dx, float dz, int Flip)

{// Targetting opponent before performing targetted leap attack

// Vy = y Velocity

// dx = x added distance

// dz = z added distance



    void self = getlocalvar("self");

    int dir = getentityproperty(self, "direction");

    float x = getentityproperty(self, "x");

    float z = getentityproperty(self, "z");



    if (dir == 0){ //Is entity facing left? 

      dx = -dx; //Reverse X direction to match facing

    }



    setlocalvar("T"+self, findtarget(self)); //Get nearest player



    if( getlocalvar("T"+self) != NULL()){

      void target = getlocalvar("T"+self);

      float Tx = getentityproperty(target, "x");

      float Tz = getentityproperty(target, "z");



      if(Flip == 1){

        if(Tx < x){

          changeentityproperty(self, "direction", 0);

        } else {

          changeentityproperty(self, "direction", 1);

        }

      }



      x = x+dx;

      z = z+dz;

      setlocalvar("x"+self, (Tx-x)/(22*Vy));

      setlocalvar("z"+self, (Tz-z)/(22*Vy));



    } else {

      setlocalvar("z"+self, 0);

      setlocalvar("x"+self, 0);

    }



    setlocalvar("T"+self, NULL()); //Clears variable

}



void targetB(float Vy, float dx, float dy, float dz, int YFlag, int Flip)

{// Targetting opponent before dropping bomb

// Vy = y Velocity

// dx = x added distance

// dy = y added distance

// dz = z added distance



    void self = getlocalvar("self");

    int dir = getentityproperty(self, "direction");

    float x = getentityproperty(self, "x");

    float y = getentityproperty(self, "a");

    float z = getentityproperty(self, "z");



    setlocalvar("T"+self, findtarget(self)); //Get nearest player



    if( getlocalvar("T"+self) != NULL()){

      void target = getlocalvar("T"+self);

      float Tx = getentityproperty(target, "x");

      float Ty;

      float Tz = getentityproperty(target, "z");

      float C1;

      float C2;

      float Sy = y + dy - Ty;



      if (YFlag == 1){

        Ty = getentityproperty(target, "a");

      } else {

        Ty = 0;

      }



      if (Sy < 0){ //Negative?

        Sy = -Sy; //Invert to positive

      }



      C1 = 0.5*(x-Tx)*(y+dy-Ty)/(22*Vy+Sy);

      C2 = 0.5*(z-Tz)*(y+dy-Ty)/(22*Vy+Sy);



      if(Flip == 1){

        if(Tx < x){

          changeentityproperty(self, "direction", 0);

        } else {

          changeentityproperty(self, "direction", 1);

        }

      }



      if (dir == 0){ //Is entity facing left? 

        dx = -dx; //Reverse X direction to match facing

      }



      x = x+dx-C1;

      z = z+dz-C2;

      setlocalvar("x"+self, (Tx-x)/(21*Vy));

      setlocalvar("z"+self, (Tz-z)/(21*Vy));



    } else {

      setlocalvar("z"+self, 0);

      setlocalvar("x"+self, 0);

    }



    setlocalvar("T"+self, NULL()); //Clears variable

}



void dash(int X, int Z)

{// Dash with previously attained speed!

    void self = getlocalvar("self");

    float Vx = getlocalvar("x"+self);

    float Vz = getlocalvar("z"+self);



    if( X==1 ){

      Vz = 0;

    } else if( Z==1 ){

      Vx = 0;

    }



    changeentityproperty(self, "velocity", Vx, Vz); //Move towards target!

}



void leap(float Vely)

{// Leap with previously attained speed!

    void self = getlocalvar("self");

    float Vx = getlocalvar("x"+self);

    float Vz = getlocalvar("z"+self);

    if( Vx!=NULL() && Vz!=NULL() ){

      tossentity(self, Vely, Vx, Vz); //Leap towards target!

    }

}



void shootT(void Shot, float dx, float dy, float dz)

{ // Shooting targetted projectile

   void self = getlocalvar("self");

   int Direction = getentityproperty(self, "direction");

   int x = getentityproperty(self, "x");

   int y = getentityproperty(self, "a");

   int z = getentityproperty(self, "z");

   float Vx = getlocalvar("x"+self);

   float Vz = getlocalvar("z"+self);

   void vShot;



   if (Direction == 0){ //Is entity facing left?                  

      dx = -dx; //Reverse X direction to match facing

   }



   vShot = projectile(Shot, x+dx, z+dz, y+dy, Direction, 0, 0, 0);



   if( Vx!=NULL() && Vz!=NULL() ){

     changeentityproperty(vShot, "velocity", Vx, Vz);

     if (Vx < 0 && Direction == 1){ //Is projectile moving back?

       changeentityproperty(vShot, "direction", 0);

     } else if(Vx > 0 && Direction == 0){ //Is projectile moving back?

       changeentityproperty(vShot, "direction", 1);

     }

     if ( Vx < 0 ){ //Is Vx negative?

       Vx = -Vx;

     }

     changeentityproperty(vShot, "speed", Vx);

   }

}



void tossT(void Bomb, float dx, float dy, float dz, float Vy)

{ // Tossing targetted bomb

   void self = getlocalvar("self");

   int Direction = getentityproperty(self, "direction");

   int x = getentityproperty(self, "x");

   int y = getentityproperty(self, "a");

   int z = getentityproperty(self, "z");

   float Vx = getlocalvar("x"+self)/2;

   float Vz = getlocalvar("z"+self)/2;

   void vShot;



   if (Direction == 0){ //Is entity facing left?                  

      dx = -dx; //Reverse X direction to match facing

   }



   vShot = projectile(Bomb, x+dx, z+dz, y+dy, Direction, 0, 1, 0);



   if( Vx!=NULL() && Vz!=NULL() ){

     tossentity(vShot, Vy, Vx, Vz); //Toss projectile towards target!

     if (Vx < 0 && Direction == 1){ //Is projectile moving back?

       changeentityproperty(vShot, "direction", 0);

     } else if(Vx > 0 && Direction == 0){ //Is projectile moving back?

       changeentityproperty(vShot, "direction", 1);

     }

     if ( Vx < 0 ){ //Is Vx negative?

       Vx = -Vx;

     }

     changeentityproperty(vShot, "speed", Vx);

   }

}



void shoot2T(void vName, float fX, float fY, float fZ, float Vy)

{//Shoot special targetted projectile

 //vName: Model name of entity to be spawned in

 //fX: X location adjustment

 //fZ: Y location adjustment

 //fY: Z location adjustment



   void self = getlocalvar("self"); //Get calling entity

   int Direction = getentityproperty(self, "direction");

   float Vx = getlocalvar("x"+self);

   float Vz = getlocalvar("z"+self);

   if (Direction == 0){ //Is entity facing left?                  

     Vx = -Vx; //Reverse Vx direction to match facing

   }

	

   shooter2(vName, fX, fY, fZ, Vx*0.5, Vy, Vz); //Shoot

}



void targetTele()

{// Target opponent for teleport action



    void self = getlocalvar("self");

    setlocalvar("T"+self, findtarget(self)); //Get nearest player



    if( getlocalvar("T"+self) != NULL()){

      void target = getlocalvar("T"+self);

      float Tx = getentityproperty(target, "x");

      float Ty = getentityproperty(target, "a");

      float Tz = getentityproperty(target, "z");

      setlocalvar("Tx"+self, Tx);

      setlocalvar("Ty"+self, Ty);

      setlocalvar("Tz"+self, Tz);

    }



    setlocalvar("T"+self, NULL()); //Clears variable

}



void Teletarget(float dx, float dy, float dz, int YFlag)

{// Teleport self right at target's position

// dx = x added distance

// dy = y added distance

// dz = z added distance

// YFlag = Flag to control if altitude is taken or not



    void self = getlocalvar("self");

    int Direction = getentityproperty(self, "direction");

    float Tx = getlocalvar("Tx"+self);

    float Ty;

    float Tz = getlocalvar("Tz"+self);

    void vSpawn;



    if (Direction == 0){ //Is entity facing left?                  

      dx = -dx; //Reverse X direction to match facing

    }

    if (YFlag == 1){ //Altitude is taken?                  

      Ty = getlocalvar("Ty"+self);

    } else { //Altitude is taken?                  

      Ty = 0;

    }



    if(Tx!= NULL() && Ty!= NULL() && Tz!= NULL()){

      changeentityproperty(self, "position", Tx+dx, Tz+dz, Ty+dy);

    }

}



void spawnT(void Name, float dx, float dy, float dz, int YFlag)

{// Spawn entity right at target's position

// Name = Entity to be spawned

// dx = x added distance

// dy = y added distance

// dz = z added distance

// YFlag = Flag to control if altitude is taken or not



    void self = getlocalvar("self");

    int Direction = getentityproperty(self, "direction");

    float Tx = getlocalvar("Tx"+self);

    float Ty;

    float Tz = getlocalvar("Tz"+self);

    void vSpawn;



    if (Direction == 0){ //Is entity facing left?                  

      dx = -dx; //Reverse X direction to match facing

    }

    if (YFlag == 1){ //Altitude is taken?                  

      Ty = getlocalvar("Ty"+self);

    } else { //Altitude is taken?                  

      Ty = 0;

    }



    if(Tx!= NULL() && Ty!= NULL() && Tz!= NULL()){

      vSpawn = spawn01(Name, 0, dy, 0);

      changeentityproperty(vSpawn, "position", Tx+dx, Tz+dz, Ty+dy);

      changeentityproperty(vSpawn, "direction", Direction);

    }

}



void dashX(float X, float Z, float Vy)

{// Dash with previously attained speed + defined speed

    void self = getlocalvar("self");

    int Direction = getentityproperty(self, "direction");

    float Vx;

    float Vz;



    if( X==0 ){

      float Vx = getlocalvar("x"+self);

      Vz = Z;

    } else if( Z==0 ){

      Vx = X;

      float Vz = getlocalvar("z"+self);

    }



    if (Direction == 0){ //Is entity facing left?                  

      Vx = -Vx; //Reverse X direction to match facing

    }



    changeentityproperty(self, "velocity", Vx, Vz, Vy);

}
 
Make this:

Delete all this files of the library folder and this lines of your enemy.c:
#import "data/scripts/library/basic.h"
#import "data/scripts/library/spawn.h"
#import "data/scripts/library/target.h"


Then need add this two scrips in your enemy.c  if you do not have them:

Code:
void clearL()
{// Clears all local variables
     clearlocalvar();
}

void spawn01(void vName, float fX, float fY, float fZ)
{
	//spawn01 (Generic spawner)
	//Damon Vaughn Caskey
	//07/06/2007
	//
	//Spawns entity next to caller.
	//
	//vName: Model name of entity to be spawned in.
	//fX: X location adjustment.
	//fY: Y location adjustment.
      //fZ: Z location adjustment.

	void self = getlocalvar("self"); //Get calling entity.
	void vSpawn; //Spawn object.
	int  iDirection = getentityproperty(self, "direction");

	clearspawnentry(); //Clear current spawn entry.
      setspawnentry("name", vName); //Acquire spawn entity by name.

	if (iDirection == 0){ //Is entity facing left?                  
          fX = -fX; //Reverse X direction to match facing.
	}

      fX = fX + getentityproperty(self, "x"); //Get X location and add adjustment.
      fY = fY + getentityproperty(self, "a"); //Get Y location and add adjustment.
      fZ = fZ + getentityproperty(self, "z"); //Get Z location and add adjustment.
	
	vSpawn = spawn(); //Spawn in entity.

	changeentityproperty(vSpawn, "position", fX, fZ, fY); //Set spawn location.
	changeentityproperty(vSpawn, "direction", iDirection); //Set direction.
    
	return vSpawn; //Return spawn.
}
 
Thanks again.
I tried it and now I have this result.

Logfile:
Code:
Script error: data/chars/jeger/jegro.txt, line 106: Unknown error 'void' (in production 20)

void self = getlocalvar("self");
^



Script error: data/chars/jeger/jegro.txt, line 162: Unknown error 'void' (in production 20)

void self = getlocalvar("self");
^

Script compile error: can't find function 'leaper'

Script compile error in 'animationscript': leaper line 32, column 12

********** An Error Occurred **********
*            Shutting Down            *

Can't compile script!
Total Ram: 4195418112 Bytes
 Free Ram: 452300800 Bytes
 Used Ram: 14876672 Bytes

As an information.
I'm still using your demo at the moment.
I have not yet added any element of this to my project.
Just trying to tweak stuff ingame and making it working with my openbor build.

I think, the easier thing would be to get rid of every unnecessary script and keep only what is needed? To avoid possible uncompatibility crashes?
 
Well my friend,  I use your build in the demo and have good news.
I can solve almost all the problems. The demo works ok.
Only one script not work:
Code:
@cmd damageentity getlocalvar("self") getlocalvar("self ") 0 1 openborconstant("ATK_NORMAL15")
This script need works over the enemy after he crash bouncing against the wall and fall. During the final frames of the fall.
 
Thanks DD!
Hope we can do something about it.
If I'm not wrong, this is the part when opponent falls after hitting a wall, right?

Perhaps Bloodbane have an alternative way to script it as well?
I don't know.
 
I have continued doing tests and detect something very strange with your build.

All the script this type, they give error:
Code:
@script
void self = getlocalvar("self");

if(frame == 11){
    changeentityproperty(self, "velocity", 0, 0, 0);
}

@end_script

In the log the mark as error always, this part of the script:
void self = getlocalvar("self");

So after doing some more tests, I chose to change these scripts, for the online scripts.

Then change this:
Code:
@script
void self = getlocalvar("self");

if(frame == 11){
    changeentityproperty(self, "velocity", 0, 0, 0);
}

@end_script

For this:
Code:
@cmd    stop

And works ok.


But, with these line it is different:
cmd damageentity getlocalvar("self") getlocalvar("self") 0 1 openborconstant("ATK_NORMAL15")

The game does not give an error, but it does not recognize them either.


I have tried to convert this script to use it inline, like the previous one, but I have not succeeded.
Here my try:
Code:
void damageE()
{// Changes antigravity effect
    void self = getlocalvar("self");
     int THealth = getentityproperty(self,"health");
        damageentity(self, self, 0, 1, openborconstant

("ATK_NORMAL15"));
      }
}

I think that if we can convert it to use like the previous one, we will have everything solved.

 
Thanks a lot for your time Dantedevil.
It's really a chance to have skilled guys like you and Bloodbane around.
Do you want me to ask Bloodbane if he can do something? or you think you can handle it.

Anyway, I don't know why there is so much unstable things on this build.
if I was sure of what is this exact build and had access to all the releases, I would make some tests to see what is the more newer build that is not buggy with my game project. :/
 
OK, thanks for it.  :)
Don't hesitate to send him the edited demo with corrected script you did.
I think it could make things easier to him.
 
nedflandeurse said:
OK, thanks for it.  :)
Don't hesitate to send him the edited demo with corrected script you did.
I think it could make things easier to him.

Do not worry my friend, I just sent Bloodbane the demo with your build and all the corrections.
Hopefully he can fixt it.
 
Ned, I've got and tried the demo and seen the compatibility problems

I have two choices here:
1. Degrade the scripts to suit old build
2. Let the scripts be and instead fix the incompatibility of your mod with latest build

I prefer doing the latter for now, so can you list which scripts or features which don't work well in latest build?
 
Oh, OK, thanks.
It can take some time, but I will list the elements not working.

One very simple one is the command back + block button.
I use it for a defensive hopback.
The command itself is immediately detected in old builds.
In any other newer builds the command feels rusty and most of the time, character will only block and turn around.

I'll try to list the other problems now.
 
I tried to list the bugs, but I just cannot.
All the collision of obstacles and walls etc is wrong, my pin system don't works and a lot of stuff.
Basically 70% of the game system and elements is totally unstable with any different build.

@Bloodbane Since I cannot Ask you to degrade the scripts for old build, I have 2 possibilities.

-I restart coding the whole game from scratch. to make it compatible with newer builds.
-Or, I definitly delete the wall bounce feature (one more...) and keep the old stable build.

I'll take some days to think about it, but I'll have to make some sacrifices.
After reflexion, I think if I have to switch to new build, I will go with another different project.
Something more classic, or a platforming action game... not sure yet.
 
Hmmm... okay, let's try degrading script to fit the old build, can you tell what should be fixed in the demo?
I've tried tossing Jegro toward obstacle and he got bounced fine. Going to try against wall later
 
Bloodbane said:
Hmmm... okay, let's try degrading script to fit the old build, can you tell what should be fixed in the demo?
I've tried tossing Jegro toward obstacle and he got bounced fine. Going to try against wall later

In the demo that sends you everything works fine, with the exception of this two lines script:
Code:
       @cmd damageentity getlocalvar("self") getlocalvar("self") 0 1 openborconstant("ATK_NORMAL15")

       @cmd damageentity getlocalvar("self") getlocalvar("self") 10 1 openborconstant("ATK_NORMAL")

They do not produce any error, the system simply does not recognize them.

This line:
Code:
@cmd damageentity getlocalvar("self") getlocalvar("self") 0 1 openborconstant("ATK_NORMAL15")
I use it in the folloanim after the enemy is hit against a wall. When the system ignores this script, I can not grab the enemy, until I bring it down again.

This line:
Code:
@cmd damageentity getlocalvar("self") getlocalvar("self") 10 1 openborconstant("ATK_NORMAL")
I use it in the folloanim after the enemy is hit against another enemy or obstacle. When the system ignores this script, I can not grab the enemy, until I bring it down again
 
Back
Top Bottom