Moved all "script" files to C code.
I'm going to do this for all of the stuff in the "data" directory. It was obviously an attempt to make Starfighter more flexible somehow, but it fails at that entirely. More importantly, these things are both unreadable and easy to make mistakes on. Simple C code is much easier to read. The only disadvantage is that recompiling is now needed to change the "scripts", but considering that they had hidden limits and no one was making custom missions to begin with, I don't consider this to be a real loss.
This commit is contained in:
parent
bdf1b49d44
commit
e258921987
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
CXXFLAGS ?= -O2 -Wall -g
|
CXXFLAGS ?= -O2 -Wall -g
|
||||||
CXXFLAGS += `pkg-config --cflags sdl2 SDL2_image SDL2_mixer`
|
CXXFLAGS += `pkg-config --cflags sdl2 SDL2_image SDL2_mixer`
|
||||||
LIBS = `pkg-config --libs sdl2 SDL2_image SDL2_mixer`
|
LIBS = `pkg-config --libs sdl2 SDL2_image SDL2_mixer`
|
||||||
OBJS = alien.o audio.o bullet.o cargo.o collectable.o colors.o engine.o explosion.o game.o gfx.o intermission.o loadSave.o messages.o misc.o missions.o player.o renderer.o resources.o screen.o script.o ship.o shop.o Starfighter.o title.o weapons.o window.o
|
OBJS = alien.o audio.o bullet.o cargo.o collectable.o colors.o engine.o event.o explosion.o game.o gfx.o intermission.o loadSave.o messages.o misc.o missions.o player.o renderer.o resources.o screen.o script.o ship.o shop.o Starfighter.o title.o weapons.o window.o
|
||||||
|
|
||||||
VERSION = 1.4.1-dev
|
VERSION = 1.4.1-dev
|
||||||
PROG = starfighter
|
PROG = starfighter
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
5
|
|
||||||
FACE_PHOEBE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Ummm... something about this doesn't look right! They should be offering more resistance than this!
|
|
||||||
|
|
||||||
-8
|
|
||||||
FACE_PHOEBE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
DAMMIT! It's a trap! Come on, Chris, we have to leave NOW!!
|
|
||||||
|
|
||||||
-9
|
|
||||||
-1
|
|
||||||
16
|
|
||||||
128
|
|
||||||
@none@
|
|
||||||
|
|
||||||
-13
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Chris, wh...
|
|
||||||
|
|
||||||
-15
|
|
||||||
FACE_KLINE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
So finally I meet the man who has been causing us so much trouble!
|
|
||||||
|
|
||||||
-20
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
I see you've jammed up my warp drive. Who are you?
|
|
||||||
|
|
||||||
-25
|
|
||||||
FACE_KLINE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
I am Kline Kethlan. And I am here to put to a stop to your worthless little crusade!
|
|
||||||
|
|
||||||
-31
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Kline Kethlan, huh? You sure sound confident.
|
|
||||||
|
|
||||||
-36
|
|
||||||
FACE_KLINE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Nowhere to run, nowhere to hide, and no one to help you! This will certainly be interesting...
|
|
||||||
|
|
||||||
-42
|
|
||||||
-1
|
|
||||||
15
|
|
||||||
-20
|
|
||||||
@none@
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,17 +0,0 @@
|
||||||
2
|
|
||||||
FACE_URSULA
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Unidentified craft sighted. Will proceed to destroy all targets.
|
|
||||||
|
|
||||||
8
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Looks like she's got one of those homing missile launchers too! Any advice, Phoebe?
|
|
||||||
|
|
||||||
14
|
|
||||||
FACE_PHOEBE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Just try and dodge them!
|
|
|
@ -1,61 +0,0 @@
|
||||||
1
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Nice ship!
|
|
||||||
|
|
||||||
7
|
|
||||||
FACE_KRASS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Thanks, boy. Made it myself!
|
|
||||||
|
|
||||||
60
|
|
||||||
FACE_KRASS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Hey, boy, we've got company! Looks like your friends didn't do a very good job after all!
|
|
||||||
|
|
||||||
60
|
|
||||||
-1
|
|
||||||
10
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
90
|
|
||||||
-1
|
|
||||||
11
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
93
|
|
||||||
FACE_KRASS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Keep those things off my back or it'll cost you extra!!!
|
|
||||||
|
|
||||||
120
|
|
||||||
-1
|
|
||||||
12
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
140
|
|
||||||
FACE_PHOEBE
|
|
||||||
16
|
|
||||||
-1048576
|
|
||||||
Hey!! Did we miss anything exciting?
|
|
||||||
|
|
||||||
140
|
|
||||||
-1
|
|
||||||
17
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
150
|
|
||||||
FACE_KRASS
|
|
||||||
19
|
|
||||||
128
|
|
||||||
I've earned my fee. I'll see you around, boy!
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,8 +0,0 @@
|
||||||
90
|
|
||||||
FACE_SID
|
|
||||||
14
|
|
||||||
128
|
|
||||||
DAMMIT! It's getting away! We've got to stop it!
|
|
||||||
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,37 +0,0 @@
|
||||||
45
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Chris! Another two of those ray cannons just arrived in your sector!
|
|
||||||
|
|
||||||
45
|
|
||||||
-1
|
|
||||||
11
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
45
|
|
||||||
-1
|
|
||||||
12
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
90
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Two more!
|
|
||||||
|
|
||||||
90
|
|
||||||
-1
|
|
||||||
13
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
90
|
|
||||||
-1
|
|
||||||
14
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,55 +0,0 @@
|
||||||
1
|
|
||||||
-1
|
|
||||||
10
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
2
|
|
||||||
FACE_URSULA
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
It's a trap! My God! It's Tyler!
|
|
||||||
|
|
||||||
8
|
|
||||||
FACE_KRASS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
I'm a mercenary, what do you expect?! WEAPCO hired me to do a job, just like you have been doing.
|
|
||||||
|
|
||||||
14
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Good point. It would be foolish to expect anything else.
|
|
||||||
|
|
||||||
15
|
|
||||||
-1
|
|
||||||
11
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
20
|
|
||||||
FACE_KRASS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Now if you'll assist me in dying quickly, I have a cheque to earn, boy...
|
|
||||||
|
|
||||||
25
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
I have a name, you know. Do you remember it?
|
|
||||||
|
|
||||||
45
|
|
||||||
-1
|
|
||||||
12
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
45
|
|
||||||
-1
|
|
||||||
13
|
|
||||||
-1048576
|
|
||||||
@none@
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,13 +0,0 @@
|
||||||
2
|
|
||||||
FACE_KLINE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
That's far enough, Bainfield. You've been lucky so far, but your luck is about to run out!
|
|
||||||
|
|
||||||
8
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Yeah, right! Like I'd lose to you after coming this far!
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,11 +0,0 @@
|
||||||
2
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
WEAPCO is finished, Kethlan! You have nowhere to run, nowhere to hide, and no one to help you.
|
|
||||||
|
|
||||||
8
|
|
||||||
FACE_KLINE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
You underestimate me, Bainfield.
|
|
|
@ -1,37 +0,0 @@
|
||||||
2
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
You should try and destroy some of the frigate's weaponary, it'll help!
|
|
||||||
|
|
||||||
120
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Chris, get a move on! The frigate is almost in range!
|
|
||||||
|
|
||||||
150
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
The frigate is charging its cannon!
|
|
||||||
|
|
||||||
170
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Chris, HURRY!!!
|
|
||||||
|
|
||||||
180
|
|
||||||
-1
|
|
||||||
14
|
|
||||||
132
|
|
||||||
@none@
|
|
||||||
|
|
||||||
180
|
|
||||||
FACE_SID
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
oh my god...
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,7 +0,0 @@
|
||||||
2
|
|
||||||
FACE_PHOEBE
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Hey, over here! Destroy this tug so I can break free!
|
|
||||||
|
|
||||||
0
|
|
|
@ -1,61 +0,0 @@
|
||||||
2
|
|
||||||
FACE_CREW
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Thank God! Please, help us! If they destroy this ship...
|
|
||||||
|
|
||||||
6
|
|
||||||
FACE_CHRIS
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
How long do you need?
|
|
||||||
|
|
||||||
10
|
|
||||||
FACE_CREW
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Just a few minutes!
|
|
||||||
|
|
||||||
60
|
|
||||||
FACE_CREW
|
|
||||||
19
|
|
||||||
-16
|
|
||||||
Alright! We've got the weapons working again! Now to look at the engines...
|
|
||||||
|
|
||||||
80
|
|
||||||
FACE_CREW
|
|
||||||
19
|
|
||||||
16
|
|
||||||
DAMN! The guns are offline again! What you guys doing back there?!
|
|
||||||
|
|
||||||
100
|
|
||||||
FACE_CREW
|
|
||||||
19
|
|
||||||
2048
|
|
||||||
Chris, HELP!! We've lost all system power! We're a sitting duck out here!
|
|
||||||
|
|
||||||
120
|
|
||||||
FACE_CREW
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Just a little longer...
|
|
||||||
|
|
||||||
140
|
|
||||||
FACE_CREW
|
|
||||||
19
|
|
||||||
-2048
|
|
||||||
Okay! We've fixed that one. We think we've found the problem with the engines too...
|
|
||||||
|
|
||||||
177
|
|
||||||
FACE_CREW
|
|
||||||
-1
|
|
||||||
0
|
|
||||||
Engines fixed! Let's move!
|
|
||||||
|
|
||||||
180
|
|
||||||
-1
|
|
||||||
19
|
|
||||||
132
|
|
||||||
@none@
|
|
||||||
|
|
||||||
0
|
|
|
@ -42,6 +42,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "collectable.h"
|
#include "collectable.h"
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
#include "engine.h"
|
#include "engine.h"
|
||||||
|
#include "event.h"
|
||||||
#include "explosion.h"
|
#include "explosion.h"
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
#include "gfx.h"
|
#include "gfx.h"
|
||||||
|
|
|
@ -0,0 +1,374 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2003 Parallel Realities
|
||||||
|
Copyright (C) 2011, 2012, 2013 Guus Sliepen
|
||||||
|
Copyright (C) 2012, 2015, 2016 onpon4 <onpon4@riseup.net>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 3
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Starfighter.h"
|
||||||
|
|
||||||
|
static Event gameEvent[20];
|
||||||
|
static const char *klineGreeting[] = {
|
||||||
|
"How nice to see you again, Bainfield!",
|
||||||
|
"It all ends here, rebel!",
|
||||||
|
"I hope you won't disappoint me this time...",
|
||||||
|
"Do you really think you can defeat us?!"
|
||||||
|
};
|
||||||
|
|
||||||
|
void event_set()
|
||||||
|
{
|
||||||
|
for (int i = 0 ; i < 20 ; i++)
|
||||||
|
{
|
||||||
|
gameEvent[i].time = 0;
|
||||||
|
gameEvent[i].face = -1;
|
||||||
|
strcpy(gameEvent[i].message, "");
|
||||||
|
gameEvent[i].entity = -1;
|
||||||
|
gameEvent[i].flag = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (game.area)
|
||||||
|
{
|
||||||
|
case MISN_INTERCEPTION:
|
||||||
|
if ((aliens[ALIEN_KLINE].classDef == CD_KLINE) &&
|
||||||
|
(aliens[ALIEN_KLINE].active))
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_KLINE;
|
||||||
|
strcpy(gameEvent[0].message, klineGreeting[rand() % 4]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_MOEBO:
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[0].message, "You should try and destroy some of the frigate's weaponary, it'll help!");
|
||||||
|
|
||||||
|
gameEvent[1].time = 120;
|
||||||
|
gameEvent[1].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[1].message, "Chris, get a move on! The frigate is almost in range!");
|
||||||
|
|
||||||
|
gameEvent[2].time = 150;
|
||||||
|
gameEvent[2].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[2].message, "The frigate is charging its cannon!");
|
||||||
|
|
||||||
|
gameEvent[3].time = 170;
|
||||||
|
gameEvent[3].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[3].message, "Chris, HURRY!!!");
|
||||||
|
|
||||||
|
gameEvent[4].time = 180;
|
||||||
|
gameEvent[4].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[4].message, "Oh my god...");
|
||||||
|
gameEvent[4].entity = ALIEN_BOSS;
|
||||||
|
gameEvent[4].flag = FL_LEAVESECTOR | FL_IMMORTAL;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_NEROD:
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_PHOEBE;
|
||||||
|
strcpy(gameEvent[0].message, "Hey, over here! Destroy this tug so I can break free!");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_ALLEZ:
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[0].message, "Thank God! Please, help us! If they destroy this ship...");
|
||||||
|
|
||||||
|
gameEvent[1].time = 6;
|
||||||
|
gameEvent[1].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[1].message, "How long do you need?");
|
||||||
|
|
||||||
|
gameEvent[2].time = 10;
|
||||||
|
gameEvent[2].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[2].message, "Just a few minutes!");
|
||||||
|
|
||||||
|
gameEvent[3].time = 60;
|
||||||
|
gameEvent[3].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[3].message, "Alright! We've got the weapons working again! Now to look at the engines...");
|
||||||
|
gameEvent[3].entity = ALIEN_GOODTRANSPORT;
|
||||||
|
gameEvent[3].flag = -FL_NOFIRE;
|
||||||
|
|
||||||
|
gameEvent[4].time = 80;
|
||||||
|
gameEvent[4].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[4].message, "DAMN! The guns are offline again! What you guys doing back there?!");
|
||||||
|
gameEvent[4].entity = ALIEN_GOODTRANSPORT;
|
||||||
|
gameEvent[4].flag = FL_NOFIRE;
|
||||||
|
|
||||||
|
gameEvent[5].time = 100;
|
||||||
|
gameEvent[5].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[5].message, "Chris, HELP!! We've lost all system power! We're a sitting duck out here!");
|
||||||
|
gameEvent[5].entity = ALIEN_GOODTRANSPORT;
|
||||||
|
gameEvent[5].flag = FL_DISABLED;
|
||||||
|
|
||||||
|
gameEvent[6].time = 120;
|
||||||
|
gameEvent[6].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[6].message, "Just a little longer...");
|
||||||
|
|
||||||
|
gameEvent[7].time = 140;
|
||||||
|
gameEvent[7].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[7].message, "Okay! We've fixed that one. We think we've found the problem with the engines too...");
|
||||||
|
gameEvent[7].entity = ALIEN_GOODTRANSPORT;
|
||||||
|
gameEvent[7].flag = -FL_DISABLED;
|
||||||
|
|
||||||
|
gameEvent[8].time = 177;
|
||||||
|
gameEvent[8].face = FACE_CREW;
|
||||||
|
strcpy(gameEvent[8].message, "Engines fixed! Let's move!");
|
||||||
|
|
||||||
|
gameEvent[9].time = 180;
|
||||||
|
gameEvent[9].entity = ALIEN_GOODTRANSPORT;
|
||||||
|
gameEvent[9].flag = FL_LEAVESECTOR | FL_IMMORTAL;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_ELAMALE:
|
||||||
|
gameEvent[0].time = 5;
|
||||||
|
gameEvent[0].face = FACE_PHOEBE;
|
||||||
|
strcpy(gameEvent[0].message, "Ummm... something about this doesn't look right! They should be offering more resistance than this!");
|
||||||
|
|
||||||
|
gameEvent[1].time = -8;
|
||||||
|
gameEvent[1].face = FACE_PHOEBE;
|
||||||
|
strcpy(gameEvent[1].message, "DAMMIT! It's a trap! Come on, Chris, we have to leave NOW!!");
|
||||||
|
|
||||||
|
gameEvent[2].time = -9;
|
||||||
|
gameEvent[2].entity = ALIEN_PHOEBE;
|
||||||
|
gameEvent[2].flag = FL_LEAVESECTOR;
|
||||||
|
|
||||||
|
gameEvent[3].time = -13;
|
||||||
|
gameEvent[3].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[3].message, "Chris, wh...");
|
||||||
|
|
||||||
|
gameEvent[4].time = -15;
|
||||||
|
gameEvent[4].face = FACE_KLINE;
|
||||||
|
strcpy(gameEvent[4].message, "So finally I meet the man who has been causing us so much trouble!");
|
||||||
|
|
||||||
|
gameEvent[5].time = -20;
|
||||||
|
gameEvent[5].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[5].message, "I see you've jammed up my warp drive. Who are you?");
|
||||||
|
|
||||||
|
gameEvent[6].time = -25;
|
||||||
|
gameEvent[6].face = FACE_KLINE;
|
||||||
|
strcpy(gameEvent[6].message, "I am Kline Kethlan. And I am here to put to a stop to your worthless little crusade!");
|
||||||
|
|
||||||
|
gameEvent[7].time = -31;
|
||||||
|
gameEvent[7].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[7].message, "Kline Kethlan, huh? You sure sound confident.");
|
||||||
|
|
||||||
|
gameEvent[8].time = -36;
|
||||||
|
gameEvent[8].face = FACE_KLINE;
|
||||||
|
strcpy(gameEvent[8].message, "Nowhere to run, nowhere to hide, and no one to help you! This will certainly be interesting...");
|
||||||
|
|
||||||
|
gameEvent[9].time = -42;
|
||||||
|
gameEvent[9].entity = ALIEN_KLINE;
|
||||||
|
gameEvent[9].flag = -(FL_IMMORTAL | FL_NOFIRE);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_ODEON:
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_URSULA;
|
||||||
|
strcpy(gameEvent[0].message, "Unidentified craft sighted. Will proceed to destroy all targets.");
|
||||||
|
|
||||||
|
gameEvent[1].time = 8;
|
||||||
|
gameEvent[1].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[1].message, "Looks like she's got one of those homing missile launchers too! Any advice, Phoebe?");
|
||||||
|
|
||||||
|
gameEvent[2].time = 14;
|
||||||
|
gameEvent[2].face = FACE_PHOEBE;
|
||||||
|
strcpy(gameEvent[2].message, "Just try and dodge them!");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_ALMARTHA:
|
||||||
|
gameEvent[0].time = 1;
|
||||||
|
gameEvent[0].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[0].message, "Nice ship!");
|
||||||
|
|
||||||
|
gameEvent[1].time = 7;
|
||||||
|
gameEvent[1].face = FACE_KRASS;
|
||||||
|
strcpy(gameEvent[1].message, "Thanks, boy. Made it myself!");
|
||||||
|
|
||||||
|
gameEvent[2].time = 60;
|
||||||
|
gameEvent[2].face = FACE_KRASS;
|
||||||
|
strcpy(gameEvent[2].message, "Hey, boy, we've got company! Looks like your friends didn't do a very good job after all!");
|
||||||
|
gameEvent[2].entity = 10;
|
||||||
|
gameEvent[2].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[3].time = 90;
|
||||||
|
gameEvent[3].entity = 11;
|
||||||
|
gameEvent[3].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[4].time = 93;
|
||||||
|
gameEvent[4].face = FACE_KRASS;
|
||||||
|
strcpy(gameEvent[4].message, "Keep those things off my back or it'll cost you extra!!!");
|
||||||
|
|
||||||
|
gameEvent[5].time = 120;
|
||||||
|
gameEvent[5].entity = 12;
|
||||||
|
gameEvent[5].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[6].time = 140;
|
||||||
|
gameEvent[6].face = FACE_PHOEBE;
|
||||||
|
strcpy(gameEvent[6].message, "Hey! Did we miss anything exciting?");
|
||||||
|
gameEvent[6].entity = ALIEN_PHOEBE;
|
||||||
|
gameEvent[6].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[7].time = 140;
|
||||||
|
gameEvent[7].entity = ALIEN_URSULA;
|
||||||
|
gameEvent[7].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[8].time = 150;
|
||||||
|
gameEvent[8].face = FACE_KRASS;
|
||||||
|
strcpy(gameEvent[8].message, "I've earned my fee. I'll see you around, boy!");
|
||||||
|
gameEvent[8].entity = ALIEN_GOODTRANSPORT;
|
||||||
|
gameEvent[8].flag = FL_LEAVESECTOR;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_POSWIC:
|
||||||
|
gameEvent[0].time = 90;
|
||||||
|
gameEvent[0].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[0].message, "DAMMIT! It's getting away! We've got to stop it!");
|
||||||
|
gameEvent[0].entity = ALIEN_BOSS;
|
||||||
|
gameEvent[0].flag = FL_LEAVESECTOR;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_SATURN:
|
||||||
|
gameEvent[0].time = 45;
|
||||||
|
gameEvent[0].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[0].message, "Chris! Another two of those ray cannons just arrived in your sector!");
|
||||||
|
gameEvent[0].entity = 11;
|
||||||
|
gameEvent[0].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[1].time = 45;
|
||||||
|
gameEvent[1].entity = 12;
|
||||||
|
gameEvent[1].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[2].time = 90;
|
||||||
|
gameEvent[2].face = FACE_SID;
|
||||||
|
strcpy(gameEvent[2].message, "Two more!");
|
||||||
|
gameEvent[2].entity = 13;
|
||||||
|
gameEvent[2].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[3].time = 90;
|
||||||
|
gameEvent[3].entity = 14;
|
||||||
|
gameEvent[3].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_JUPITER:
|
||||||
|
gameEvent[0].time = 1;
|
||||||
|
gameEvent[0].entity = 10;
|
||||||
|
gameEvent[0].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[1].time = 2;
|
||||||
|
gameEvent[1].face = FACE_URSULA;
|
||||||
|
strcpy(gameEvent[1].message, "It's a trap! My God! It's Tyler!");
|
||||||
|
|
||||||
|
gameEvent[2].time = 8;
|
||||||
|
gameEvent[2].face = FACE_KRASS;
|
||||||
|
strcpy(gameEvent[2].message, "I'm a mercenary, what do you expect?! WEAPCO hired me to do a job, just like you have been doing.");
|
||||||
|
|
||||||
|
gameEvent[3].time = 14;
|
||||||
|
gameEvent[3].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[3].message, "Good point. It would be foolish to expect anything else.");
|
||||||
|
|
||||||
|
gameEvent[4].time = 15;
|
||||||
|
gameEvent[4].entity = 11;
|
||||||
|
gameEvent[4].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[5].time = 20;
|
||||||
|
gameEvent[5].face = FACE_KRASS;
|
||||||
|
strcpy(gameEvent[5].message, "Now if you'll assist me in dying quickly, I have a cheque to earn, boy...");
|
||||||
|
|
||||||
|
gameEvent[6].time = 25;
|
||||||
|
gameEvent[6].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[6].message, "I have a name, you know. Do you remember it?");
|
||||||
|
|
||||||
|
gameEvent[4].time = 45;
|
||||||
|
gameEvent[4].entity = 12;
|
||||||
|
gameEvent[4].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
gameEvent[4].time = 45;
|
||||||
|
gameEvent[4].entity = 13;
|
||||||
|
gameEvent[4].flag = -FL_ACTIVATE;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_EARTH:
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_KLINE;
|
||||||
|
strcpy(gameEvent[0].message, "That's far enough, Bainfield. You've been lucky so far, but your luck is about to run out!");
|
||||||
|
|
||||||
|
gameEvent[1].time = 8;
|
||||||
|
gameEvent[1].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[1].message, "Yeah, right! Like I'd lose to you after coming this far!");
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MISN_VENUS:
|
||||||
|
gameEvent[0].time = 2;
|
||||||
|
gameEvent[0].face = FACE_CHRIS;
|
||||||
|
strcpy(gameEvent[0].message, "WEAPCO is finished, Kethlan! You have nowhere to run, nowhere to hide, and no one to help you.");
|
||||||
|
|
||||||
|
gameEvent[1].time = 8;
|
||||||
|
gameEvent[1].face = FACE_KLINE;
|
||||||
|
strcpy(gameEvent[1].message, "You underestimate me, Bainfield.");
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void event_check()
|
||||||
|
{
|
||||||
|
for (int i = 0 ; i < 20 ; i++)
|
||||||
|
{
|
||||||
|
if (engine.timeTaken == gameEvent[i].time)
|
||||||
|
{
|
||||||
|
if (strcmp(gameEvent[i].message, "@none@") != 0)
|
||||||
|
{
|
||||||
|
setRadioMessage(gameEvent[i].face, gameEvent[i].message, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gameEvent[i].entity > -1)
|
||||||
|
{
|
||||||
|
if (gameEvent[i].flag != -FL_ACTIVATE)
|
||||||
|
{
|
||||||
|
aliens[gameEvent[i].entity].flags += gameEvent[i].flag;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aliens[gameEvent[i].entity].active = true;
|
||||||
|
aliens[gameEvent[i].entity].x = ((int)player.x +
|
||||||
|
RANDRANGE(400, 800));
|
||||||
|
aliens[gameEvent[i].entity].y = ((int)player.y +
|
||||||
|
RANDRANGE(-400, 800));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gameEvent[i].time = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void event_sync()
|
||||||
|
{
|
||||||
|
for (int i = 0 ; i < 20 ; i++)
|
||||||
|
{
|
||||||
|
if (gameEvent[i].time < 0)
|
||||||
|
{
|
||||||
|
gameEvent[i].time = engine.timeTaken + abs(gameEvent[i].time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 2003 Parallel Realities
|
||||||
|
Copyright (C) 2011 Guus Sliepen
|
||||||
|
Copyright (C) 2015, 2016 onpon4 <onpon4@riseup.net>
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 3
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef EVENT_H
|
||||||
|
#define EVENT_H
|
||||||
|
|
||||||
|
typedef struct Event_ {
|
||||||
|
|
||||||
|
int time;
|
||||||
|
int face;
|
||||||
|
char message[255];
|
||||||
|
int entity;
|
||||||
|
int flag;
|
||||||
|
|
||||||
|
} Event;
|
||||||
|
|
||||||
|
void event_set();
|
||||||
|
void event_check();
|
||||||
|
void event_sync();
|
||||||
|
|
||||||
|
#endif
|
|
@ -1718,7 +1718,7 @@ static void game_doHud()
|
||||||
engine.timeTaken++;
|
engine.timeTaken++;
|
||||||
engine.counter2 = SDL_GetTicks() + 1000;
|
engine.counter2 = SDL_GetTicks() + 1000;
|
||||||
if (engine.missionCompleteTimer == 0)
|
if (engine.missionCompleteTimer == 0)
|
||||||
checkScriptEvents();
|
event_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((engine.timeMission) && (!engine.cheatTime) && (player.shield > 0))
|
if ((engine.timeMission) && (!engine.cheatTime) && (player.shield > 0))
|
||||||
|
@ -1748,7 +1748,7 @@ static void game_doHud()
|
||||||
currentMission.timeLimit2[i]--;
|
currentMission.timeLimit2[i]--;
|
||||||
}
|
}
|
||||||
checkTimer();
|
checkTimer();
|
||||||
checkScriptEvents();
|
event_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((engine.seconds == 0) && (engine.minutes == 0))
|
if ((engine.seconds == 0) && (engine.minutes == 0))
|
||||||
|
@ -1761,7 +1761,7 @@ static void game_doHud()
|
||||||
currentMission.timeLimit2[i]--;
|
currentMission.timeLimit2[i]--;
|
||||||
}
|
}
|
||||||
checkTimer();
|
checkTimer();
|
||||||
checkScriptEvents();
|
event_check();
|
||||||
engine.counter = (SDL_GetTicks() + 1000);
|
engine.counter = (SDL_GetTicks() + 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2099,7 +2099,7 @@ int game_mainLoop()
|
||||||
|
|
||||||
clearInfoLines();
|
clearInfoLines();
|
||||||
|
|
||||||
loadScriptEvents();
|
event_set();
|
||||||
|
|
||||||
engine.ssx = 0;
|
engine.ssx = 0;
|
||||||
engine.ssy = 0;
|
engine.ssy = 0;
|
||||||
|
|
|
@ -19,8 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "Starfighter.h"
|
#include "Starfighter.h"
|
||||||
|
|
||||||
// God, I hate this file! :((
|
|
||||||
|
|
||||||
Planet systemPlanet[10];
|
Planet systemPlanet[10];
|
||||||
mission currentMission;
|
mission currentMission;
|
||||||
static mission missions[MISN_MAX];
|
static mission missions[MISN_MAX];
|
||||||
|
@ -529,7 +527,7 @@ static char revealHiddenObjectives()
|
||||||
if (game.area == MISN_ELAMALE)
|
if (game.area == MISN_ELAMALE)
|
||||||
{
|
{
|
||||||
mission_killAllEnemies();
|
mission_killAllEnemies();
|
||||||
syncScriptEvents();
|
event_sync();
|
||||||
aliens[ALIEN_KLINE].active = true;
|
aliens[ALIEN_KLINE].active = true;
|
||||||
aliens[ALIEN_KLINE].x = player.x + 1000;
|
aliens[ALIEN_KLINE].x = player.x + 1000;
|
||||||
aliens[ALIEN_KLINE].y = player.y;
|
aliens[ALIEN_KLINE].y = player.y;
|
||||||
|
|
105
src/script.cpp
105
src/script.cpp
|
@ -20,111 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "Starfighter.h"
|
#include "Starfighter.h"
|
||||||
|
|
||||||
static cutMsg cutMessage[10];
|
static cutMsg cutMessage[10];
|
||||||
static event gameEvent[20];
|
|
||||||
|
|
||||||
static void setKlineGreeting()
|
|
||||||
{
|
|
||||||
static const char *greet[] = {
|
|
||||||
"How nice to see you again, Bainfield!",
|
|
||||||
"It all ends here, rebel!",
|
|
||||||
"I hope you won't disappoint me this time...",
|
|
||||||
"Do you really think you can defeat us?!"
|
|
||||||
};
|
|
||||||
|
|
||||||
gameEvent[0].time = 2;
|
|
||||||
gameEvent[0].face = FACE_KLINE;
|
|
||||||
strcpy(gameEvent[0].message, greet[rand() % 4]);
|
|
||||||
gameEvent[0].entity = -1;
|
|
||||||
gameEvent[0].flag = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void loadScriptEvents()
|
|
||||||
{
|
|
||||||
for (int i = 0 ; i < 20 ; i++)
|
|
||||||
{
|
|
||||||
gameEvent[i].time = 0;
|
|
||||||
strcpy(gameEvent[i].message, "");
|
|
||||||
gameEvent[i].entity = -1;
|
|
||||||
gameEvent[i].flag = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((game.area == MISN_INTERCEPTION) &&
|
|
||||||
(aliens[ALIEN_KLINE].classDef == CD_KLINE) &&
|
|
||||||
(aliens[ALIEN_KLINE].active))
|
|
||||||
setKlineGreeting();
|
|
||||||
|
|
||||||
char filename[255];
|
|
||||||
sprintf(filename, "data/script%d.txt", game.area);
|
|
||||||
|
|
||||||
FILE *fp;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
int time, entity, flags;
|
|
||||||
char face[255], message[255];
|
|
||||||
|
|
||||||
fp = fopen(filename, "rb");
|
|
||||||
if (fp == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
while (fscanf(fp, "%d %s %d %d ", &time, face, &entity, &flags) == 4)
|
|
||||||
{
|
|
||||||
if (fscanf(fp, "%[^\n]%*c", message) < 1)
|
|
||||||
strcpy(message, "Error: Text missing");
|
|
||||||
|
|
||||||
gameEvent[i].time = time;
|
|
||||||
gameEvent[i].face = getFace(face);
|
|
||||||
gameEvent[i].entity = entity;
|
|
||||||
gameEvent[i].flag = flags;
|
|
||||||
strcpy(gameEvent[i].message, message);
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void checkScriptEvents()
|
|
||||||
{
|
|
||||||
for (int i = 0 ; i < 20 ; i++)
|
|
||||||
{
|
|
||||||
if (engine.timeTaken == gameEvent[i].time)
|
|
||||||
{
|
|
||||||
if (strcmp(gameEvent[i].message, "@none@") != 0)
|
|
||||||
{
|
|
||||||
setRadioMessage(gameEvent[i].face, gameEvent[i].message, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gameEvent[i].entity > -1)
|
|
||||||
{
|
|
||||||
if (gameEvent[i].flag != -FL_ACTIVATE)
|
|
||||||
{
|
|
||||||
aliens[gameEvent[i].entity].flags += gameEvent[i].flag;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
aliens[gameEvent[i].entity].active = true;
|
|
||||||
aliens[gameEvent[i].entity].x = ((int)player.x +
|
|
||||||
RANDRANGE(400, 800));
|
|
||||||
aliens[gameEvent[i].entity].y = ((int)player.y +
|
|
||||||
RANDRANGE(-400, 800));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gameEvent[i].time = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void syncScriptEvents()
|
|
||||||
{
|
|
||||||
for (int i = 0 ; i < 20 ; i++)
|
|
||||||
{
|
|
||||||
if (gameEvent[i].time < 0)
|
|
||||||
{
|
|
||||||
gameEvent[i].time = engine.timeTaken + abs(gameEvent[i].time);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void setScene(int scene)
|
static void setScene(int scene)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,9 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#ifndef SCRIPT_H
|
#ifndef SCRIPT_H
|
||||||
#define SCRIPT_H
|
#define SCRIPT_H
|
||||||
|
|
||||||
extern void loadScriptEvents();
|
|
||||||
extern void checkScriptEvents();
|
|
||||||
extern void syncScriptEvents();
|
|
||||||
extern void doCutscene(int scene);
|
extern void doCutscene(int scene);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -227,16 +227,6 @@ typedef struct Planet_ {
|
||||||
|
|
||||||
} Planet;
|
} Planet;
|
||||||
|
|
||||||
typedef struct event_ {
|
|
||||||
|
|
||||||
int time;
|
|
||||||
char message[255];
|
|
||||||
int face;
|
|
||||||
int entity;
|
|
||||||
int flag;
|
|
||||||
|
|
||||||
} event;
|
|
||||||
|
|
||||||
typedef struct cutMsg_ {
|
typedef struct cutMsg_ {
|
||||||
|
|
||||||
int face;
|
int face;
|
||||||
|
|
Loading…
Reference in New Issue