@random_god Honestly, that's the approach I would go if you wanted to make something like this in your games. This does not service the original battle system completely to be honest and is too self-dependent to work in other programs since it uses Lowerdash, so it's worth more making something that replaces this and can be used as a library.
Instructions:
How to start a fight:
There is a dialog that appears that asks for a *.SB file, just input one of the files without writing the .SB extension. - Samples include: EX.SBMaking a fight:
Add basic player and enemy data
The program uses a DICT program to parse the files inside of the *.SB files, there are two that are defined in the program and each field should be pretty self-explanatory.@HUMAN ' PLAYER DATA DATA "NAME", "FRISK" DATA "HP, "99" DATA "LV", "20" ' LEVEL DATA "" ' ENDS DICT @MONSTER ' ENEMY DATA DATA "NAME", "SKELETON", '// THE NEXT 2 DONT MATTER DATA "ATK", "10" DATA "DEF", "10" '// DATA "HP", "2000" DATA "ACT", "CHECK*TALK" ' ACT OPTIONS SEPARATED BY ASTERISKS DATA "WAVES", "6" ' WAVES, AS IN, ENEMY FIGHT SEQUENCES I GUESS DATA "TEXT", "*IT IS THE END." ' TEXT DISPLAYED IN TEXT BOX, SEPARATED BY ASTERISKS DATA "SPBASE", "1398" ' SPRITE INDEX DATA "SPANIM", "15,1398,15,1399" ' SPRITE INDEX ANIMATION, DATA SEPARATED BY COMMAS DATA "" ' ENDS DICT
Making waves/enemy sequences
You should have a command for every WAVE that you defined in the MONSTER data. Like, if you set WAVES to 2, you'd do the following: DEF MONSTER_WAVE0000 C% OUT L%, T%:END DEF MONSTER_WAVE0001 C% OUT L%, T%:ENDParameters of the command
C%: Internal timer, to help with doing sequences like trigonometric calculations for doing wonderful things. L%: Length of the sequence in frames. T%: How long till the WAVE command should be called again in frames.Here is how to create a bullet in the form of an example:
DEF MONSTER_WAVE0000 C% OUT L%, T% ' SPAWN PLACE OF THE BULLET VAR STARTX% = 0, STARTY% = C% MOD 240 ' END DESTINATION OF THE BULLET VAR ENDX% = 400, ENDY% = STARTY% ' SPEED THAT THE BULLET REACHES THE DESTINATION IN FRAMES VAR SPEED% = ABS(ENDX% - STARTX%) * 2 BATTLE__WAVE_BULLET STARTX%, STARTY%, ENDX%, ENDY%, SPEED% l% = 360 ' LENGTH OF SEQUENCE IN FRAMES T% = 1 ' NUMBER OF FRAMES BEFORE MONSTER_WAVE0000 IS CALLED AGAIN END
Adding BGM
It's simply as easy as adding @BGM somewhere in the file and then the MML in a data string below it, if you are defining it at the beginning of a file, remember that you can stop the MML from parsing by putting a 0 as a data input. Example of BGM in action:@BGM DATA "T500L16:0[CDEFG]:1[GFEDC]" DATA 0