Canceled Saint Seiya Raging Cosmos

Project is halted prior to completion and will not receive further updates.
BIG Seiya update for his gameplay, more fast, better hit frames for combos, better ultra, better super etc. I Based (more or less) the gameplay speed of jumps attacks, super etc by inspiration from @Kratus Street of rageX values (again more or less, the 2 games are totally differents) the gameplay of seiya is more "street of ragesque" to say so
ryuseiken.PNG
 
Thank you @Gilou9999 for always attempting to reach the highest level of quality in one game. I hope that you will be proud of the final result of your first Openbor project 😉
 
Its especially thanks to the openbor communauty and guys like you, kratus, shiva, dc curent etc etc that helps beginners like me, without your help this game would have never existed; maybe 1 or 2 years of development to reach a game as good as we want (and we may release a demo or someting in 2023 i guess)
 
some updates as i work on Shiryu (a fan favourite):
i ve worked on a saint favorite of many fans: Shiryu:


I ve redone his uppercut with a nice "ascending dragon" during it:
shiryu uppercut.PNG
 
Hi guys, @DCurrent @Bloodbane
I ve added the script library in Kiki header and the scripts command, now he drops me bananas when i hit him, but how would you do guys, if i hit him 4 times i would like 4 differents items: bananas (20hp), orange (30hp), cherry (10hp), apple (25hp) for example? How would you code this?

kikki2.PNG
the number of hp i gain is on the fruits header, but that's not the question lol
 
currently i use this cmd to kiki to launch items:
Code:
anim pain
delay    5
offset    54 92
frame    data/chars/KIKI2/04.png
@cmd    spawn01 "bananaff" 0 30 0 0
frame    data/chars/KIKI2/04.png
 
how would you do guys, if i hit him 4 times i would like 4 differents items: bananas (20hp), orange (30hp), cherry (10hp), apple (25hp) for example? How would you code this?

The easiest way is to use simple random script like this:
Code:
anim    pain
@script
  if(frame==1){
    int r = rand()%60;
    char Food;

    if(r > 30){
      Food = "bananaff";
    } else if(r < -30){
      Food = "orangeff";
    } else if(r < 0){
      Food = "cherryff";
    } else {
      Food = "appleff";
    }

    spawn01(Food, 0, 30, 0);
  }
@end_script
    delay    5
    offset    54 92
    frame    data/chars/KIKI2/04.png
    frame    data/chars/KIKI2/04.png

Kiki will randomly drop food between banana, orange, cherry or apple when he is pain.
You can change the food's name to suit your needs. The name must be correct but it's not case sensitive.

BTW that banana sprite looks pale, you will replace it with better sprites later right?
 
The easiest way is to use simple random script like this:
Code:
anim    pain
@script
  if(frame==1){
    int r = rand()%60;
    char Food;

    if(r > 30){
      Food = "bananaff";
    } else if(r < -30){
      Food = "orangeff";
    } else if(r < 0){
      Food = "cherryff";
    } else {
      Food = "appleff";
    }

    spawn01(Food, 0, 30, 0);
  }
@end_script
    delay    5
    offset    54 92
    frame    data/chars/KIKI2/04.png
    frame    data/chars/KIKI2/04.png

Kiki will randomly drop food between banana, orange, cherry or apple when he is pain.
You can change the food's name to suit your needs. The name must be correct but it's not case sensitive.

BTW that banana sprite looks pale, you will replace it with better sprites later right?
Hey, thanks a lot for the answer @Bloodbane, cool to know openbor can manage the random appearance of things like this, may be useful for future ideas I have. About the banana, it’s just a random banana I found in final fight plus gold (I think?) for test. Sure it should be more yellowish lol
 
@maxman: Thanks for your kind words ;)
June caméléon.jpg
June appears to prevent Shun from being harmed by Pisces Aphrodite. But Shun, what are you doing?
At 0:44 of the video, June has a special2 attack that works like this:
Code:
anim special2 # Vine Prison
    delay    15
    offset    96 124
    sound data/chars/june/01-multi2.wav
    followanim 1
    followcond 2
    energycost  10 1 0
    hitflash flashbig
    frame    data/chars/june/special21.png
    frame    data/chars/june/special22.png
    attack5 38 46 250 79 30 0 0 0 5 12
    frame    data/chars/june/special23.png
    frame    data/chars/june/special24.png
    frame    data/chars/june/special25.png
    frame    data/chars/june/special26.png
  
anim follow1 # Vine Prison follow
    delay    15
    offset    96 124
    fastattack 1
    hitflash flashbig
    attack5 109 25 150 100 20 0 0 0 5 12
    frame    data/chars/june/special27.png
    frame    data/chars/june/special28.png
    frame    data/chars/june/special29.png
    attack5 0
    frame    data/chars/june/special28.png
    attack5 109 25 150 100 20 0 0 0 5 12
    frame    data/chars/june/special27.png
    frame    data/chars/june/special28.png
    frame    data/chars/june/special29.png
    attack5 0
    frame    data/chars/june/special28.png
    attack5 109 25 150 100 30 1 0 0 5 12
    frame    data/chars/june/special27.png
    frame    data/chars/june/special28.png
    frame    data/chars/june/special29.png
    attack5 0
    frame    data/chars/june/special28.png
    frame    data/chars/june/special27.png
    frame    data/chars/june/special25.png
    frame    data/chars/june/special26.png

My question is: how can I make the vineprison entity appear exactly on the opponent, knowing that all enemies hit by the anim special2 can be affected by this entity?
vineprison3.png
 
Last edited:
I couldn't resist to make an animated gif:
LVlqPR4.gif

Agora and Shiva will be sent by Shaka to put an end to the threat of Phoenix Ikki :D
 
@Bloodbane @DCurrent @maxman I have a technical question you may enlight me:

I would like the bronze saints to be able to recharge theyr cosmos while keeping the "special button" (a2) pushed
- in that case, the animation loops and seiya gains 5 Mp (cosmos) per second
the animation stops when you release the special button .
Actually the animation is triggered by:
com a2 freespecial3 #Explosion du Cosmos

actually the animation code is the following:

anim freespecial3 # Défense spéciale explosion du cosmos
delay 10
offset 31 119
fastattack 1
cancel 0 8 0 A2 freespecial3
@cmd spawnbind "seiya_aura" "ANI_IDLE" 0 0 0 0 0
hitflash flashbig
sound data/chars/seiya/00-cosmos.wav
bbox 9 0 50 120
frame data/chars/seiya/special1.png
frame data/chars/seiya/special2.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special4.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special4.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special4.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special2.png

How could i write the code for Openbor the easiest possible?

cosmos.PNG
 
  • Like
Reactions: NED
@Bloodbane @DCurrent @maxman I have a technical question you may enlight me:

I would like the bronze saints to be able to recharge theyr cosmos while keeping the "special button" (a2) pushed
- in that case, the animation loops and seiya gains 5 Mp (cosmos) per second
the animation stops when you release the special button .
Actually the animation is triggered by:
com a2 freespecial3 #Explosion du Cosmos

actually the animation code is the following:

anim freespecial3 # Défense spéciale explosion du cosmos
delay 10
offset 31 119
fastattack 1
cancel 0 8 0 A2 freespecial3
@cmd spawnbind "seiya_aura" "ANI_IDLE" 0 0 0 0 0
hitflash flashbig
sound data/chars/seiya/00-cosmos.wav
bbox 9 0 50 120
frame data/chars/seiya/special1.png
frame data/chars/seiya/special2.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special4.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special4.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special4.png
frame data/chars/seiya/special3.png
frame data/chars/seiya/special2.png

How could i write the code for Openbor the easiest possible?

View attachment 2951


Nice !

My question may sound weird, but what is the energy effect sprite used here?
What is the source of this sprite? I'm not sure to recognize.
 
I see you have animationscript and a loaded entity (which is the know from models.txt) in the header, as well as com. Look at custentity and spawnframe. Here is an example with character header and its animations:

Code:
load aura # Use for spawning and it's kind of like knife
com a3 freespecial3 # Used for pressing a3 button
animationscript data/scripts/animscript.c #Particular animation script



anim    freespecial3

    custentity    aura
    spawnframe    4 0 0 0 # spawn this certain entity in a specific position which is summoned by a parent entity or the one who summons it
    loop    0
    delay    10
    offset    58 152
    bbox    67 35 49 98
    frame    data/chars/goku/tame01.gif
    offset    58 152
    frame    data/chars/goku/tame02.gif
    sound    data/sounds/shin.wav
    offset    58 152
    frame    data/chars/goku/tame03.gif
    delay    5
    offset    58 152
    frame    data/chars/goku/tame04.gif
    offset    58 152
    frame    data/chars/goku/tame05.gif
    offset    58 152
    frame    data/chars/goku/tame04.gif
    offset    58 152
    frame    data/chars/goku/tame05.gif
    offset    58 152
    frame    data/chars/goku/tame04.gif
    offset    58 152
    frame    data/chars/goku/tame04.gif
    offset    58 152
    frame    data/chars/goku/tame05.gif
    offset    58 152
    @cmd    keyint "ANI_FOLLOW1" 0 "A3" 0 #Hold key
    frame    data/chars/goku/tame04.gif


anim follow1 #Charging
@script
    void self = getlocalvar("self");
    int mp = getentityproperty(self, "mp");
    if(frame == 0){ //Start increasing MP in the very beginning which is first frame
    changeentityproperty(self, "mp", mp+3); //Increasing MP 3 times
    }
@end_script
    custentity    aura
    spawnframe    0 0 0 0
    delay 5
    loop 1
    offset 58 152
    @cmd    keyint "ANI_FOLLOW2" 0 "A3" 1 #Release a3 key from charging
    frame data/chars/goku/tame04.gif
    @cmd    keyint "ANI_FOLLOW2" 0 "A3" 1
    frame data/chars/goku/tame05.gif
    @cmd    keyint "ANI_FOLLOW2" 0 "A3" 1
    frame data/chars/goku/tame04.gif
    @cmd    keyint "ANI_FOLLOW2" 0 "A3" 1
    frame data/chars/goku/tame05.gif
    @cmd    keyint "ANI_FOLLOW2" 0 "A3" 1
    frame data/chars/goku/tame04.gif
    @cmd    keyint "ANI_FOLLOW2" 0 "A3" 1
    frame data/chars/goku/tame05.gif


anim follow2 #Stop charging
@script
    changeentityproperty(getlocalvar("self"), "mp", NULL());
@end_script
    delay 5
    offset    58 153
    frame    data/chars/goku/idle.gif  
    frame    data/chars/goku/idle.gif  
    frame    data/chars/goku/idle.gif

Animation script:
C:
void keyint(void Ani, int Frame, void Key, int Hflag)
{// Change current animation if proper key is pressed or released
    void self = getlocalvar("self");
    int Dir = getentityproperty(self, "direction");  
    int iPIndex = getentityproperty(self,"playerindex"); //Get player index
    void iRKey;

      if (Key=="U"){ //Up Required?
        iRKey = playerkeys(iPIndex, 0, "moveup"); // "Up"
    } else if (Key=="D"){ //Down Required?
        iRKey = playerkeys(iPIndex, 0, "movedown"); // "Down"
    } else if (Key=="L"){ //Left Required?
        iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
    } else if (Key=="R"){ //Right Required?
        iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
    } else if (Key=="F"){ //Forward Required?
          if (Dir == 0){ // Facing Left?
            iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
          } else { // Facing Right
            iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
          }
        } else if (Key=="B"){ //Back Required?
          if (Dir == 1){ // Facing Right?
            iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
          } else { // Facing Left
            iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
          }
        } else if (Key=="J"){ //Jump Required?
        iRKey = playerkeys(iPIndex, 0, "jump"); // "Jump"
    } else if (Key=="A"){ //Attack Required?
        iRKey = playerkeys(iPIndex, 0, "attack"); // "Attack"
    } else if (Key=="A2"){ //Attack2 Required?
        iRKey = playerkeys(iPIndex, 0, "attack2"); // "Attack2"
    } else if (Key=="S"){ //Special Required?
        iRKey = playerkeys(iPIndex, 0, "special"); // "Special"
    } else if (Key=="A3"){ //Attack4 Required?
        iRKey = playerkeys(iPIndex, 0, "attack3"); // "Attack3"
    } else if (Key=="A4"){
    iRKey = playerkeys(iPIndex, 0, "attack4"); // "Attack4"
    }

      if (Hflag==1){ //Not holding the button case?
        iRKey = !iRKey; //Take the opposite condition
    }

      if (iRKey){
//        performattack(self, openborconstant(Ani));
//        updateframe(self, Frame);
        changeentityproperty(self, "animation", openborconstant(Ani),2);
        changeentityproperty(self, "animpos", Frame);
      }
}

Sorry. I forgot about these.

Aura:
Code:
name    aura
type     none
shadow    0
lifespan 1
antigravity 100
alpha 4

palette data/chars/goku/au01.gif

load orb

anim    idle
    subentity    orb
    spawnframe    0 1 0 0 0
    loop    0
    delay    5
    offset    91 200
    sound    data/sounds/shui.wav
    frame    data/chars/goku/au01.gif
    frame    data/chars/goku/au02.gif
    frame    data/chars/goku/au03.gif
    frame    data/chars/goku/au01.gif
    frame    data/chars/goku/au02.gif
    frame    data/chars/goku/au03.gif
    frame    data/chars/misc/hit05.gif
        
#|edited by openBor Stats v 0.67

Code:
name    orb
mp    10
type    item
#subtype touch
shadow    0
lifespan 2

#alpha 4

bounce 1

subject_to_wall 1
subject_to_obstacle 1
subject_to_platform 1
subject_to_screen 1

animationscript data/scripts/script.c

didhitscript data/scripts/items.c

anim death
hitfx    data/sounds/gem.wav
loop 0
delay 50
offset    19 38
    frame    data/chars/misc/orb/death.png
delay 150
offset    19 38
    frame    data/chars/misc/orb/death2.png


anim    idle
hitfx    data/sounds/gem.wav
    loop    1
    delay    10
    offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
    offset    19 38
    itembox    3 10 34 34
    frame    data/chars/misc/orb/1.png
    offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
        
anim    spawn
@cmd  spawnbind  "orbg" 0 0 1 0 4
hitfx    data/sounds/gem.wav
    loop    0
    delay    10
    offset    19 38
    itembox    3 10 34 34
    jumpframe    1 5 4 0
    frame    data/chars/misc/orb/1.png
offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
offset    19 38
    itembox    3 10 34 34
    frame    data/chars/misc/orb/1.png
offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
offset    19 38
    itembox    3 10 34 34
    frame    data/chars/misc/orb/1.png
offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
offset    19 38
    itembox    3 10 34 34
    frame    data/chars/misc/orb/1.png
offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
offset    19 38
    itembox    3 10 34 34
    frame    data/chars/misc/orb/1.png
offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
offset    19 38
    itembox    3 10 34 34
    frame    data/chars/misc/orb/1.png
offset    19 37
    itembox    3 9 34 34
    frame    data/chars/misc/orb/2.png
        
#|edited by openBor Stats v 0.67
 
Last edited:
How could i write the code for Openbor the easiest possible?

According to old build I have here, you have proper scripts for this purpose. So here's my proposed code:
Code:
anim    freespecial3 # Défense spéciale explosion du cosmos
    delay    10
    offset    31 119
    @cmd    spawnbind "seiya_aura" "ANI_IDLE" 0 0 0 0 0
    sound    data/chars/seiya/00-cosmos.wav
    bbox    9 0 50 120
    frame    data/chars/seiya/special1.png
    frame    data/chars/seiya/special2.png
    frame    data/chars/seiya/special3.png # <--- loops back here
    frame    data/chars/seiya/special4.png
    frame    data/chars/seiya/special3.png
    frame    data/chars/seiya/special4.png
    @cmd    mpcost -3.5
    frame    data/chars/seiya/special3.png
    frame    data/chars/seiya/special4.png
    frame    data/chars/seiya/special3.png
    @cmd    keyint "ANI_FREESPECIAL3" 2 "S" 0
    frame    data/chars/seiya/special2.png

You'd need to adjust delay, frame count and mpcost value to fit your desire. However, this proposal only sets looping with pressing Special key and MP recovery. It hasn't been fitted for aura FX and SFX yet.
Though I suggest to use attack2 key instead special to make it easier and more intuitive.
 
Back
Top Bottom