BASICTALE is a project I worked on to help me learn Lowerdash a year ago, and I also did this small thing because of how terrible somebody else did it when it could be easily done better.
Have fun!
Btw, there is an unfinished 0.2.0 version included, but you can't even fight or anything because that just freezes the game lol. It has the convenience of showing all of the included files and being able to select them, but I personally got bored of this project.
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.SB
Making 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%:END
Parameters 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
Notes:
we now have screenshots