├── .clang-format ├── .github └── stale.yml ├── .gitignore ├── CHANGELOG ├── LICENSE ├── README.md ├── README_DEV.md ├── STATS.md ├── common.mk ├── data ├── app │ └── config.json ├── atlas │ └── atlas.json ├── battle │ ├── bullets.json │ └── items.json ├── capitalShips │ ├── csnCorvette01.json │ ├── csnCorvette02.json │ ├── hmsCorvette01.json │ ├── hmsCorvette02.json │ ├── infCorvette01.json │ ├── infCorvette02.json │ ├── unfCorvette01.json │ └── unfCorvette02.json ├── challenges │ ├── 01.json │ ├── 02.json │ ├── 03.json │ ├── 04.json │ ├── 05.json │ ├── 06.json │ ├── 07.json │ ├── 08.json │ ├── 09.json │ ├── 10.json │ ├── 11.json │ ├── 12.json │ ├── 13.json │ ├── 14.json │ ├── 15.json │ ├── 16.json │ ├── 17.json │ ├── 18.json │ ├── 19.json │ ├── 20.json │ ├── 21.json │ ├── 22.json │ ├── 23.json │ ├── 24.json │ ├── 25.json │ ├── 26.json │ ├── 27.json │ ├── 28.json │ ├── 29.json │ ├── 30.json │ └── 31.json ├── craft │ ├── civilian.json │ ├── infTug.json │ ├── munitionsTransport.json │ ├── shuttle.json │ ├── supplyShip.json │ └── tug.json ├── credits │ └── credits.json ├── fighters │ ├── angel.json │ ├── ataf.json │ ├── blizzard.json │ ├── cannonDart.json │ ├── dart.json │ ├── firefly.json │ ├── hammerhead.json │ ├── hyenaA.json │ ├── hyenaB.json │ ├── jackal.json │ ├── khepri.json │ ├── kingfisher.json │ ├── leopard.json │ ├── lynx.json │ ├── mantis.json │ ├── missileDart.json │ ├── nymph.json │ ├── ray.json │ ├── razor.json │ ├── rocketDart.json │ ├── rook.json │ ├── scarab.json │ ├── shale.json │ ├── simpleDart.json │ ├── sk31.json │ ├── sk34.json │ ├── sphinx.json │ ├── staticDart.json │ ├── swarmer.json │ ├── taf.json │ ├── thunderhead.json │ ├── unarmedDart.json │ └── zakSphinx.json ├── fonts │ ├── Khosrau.ttf │ └── Roboto-Medium.ttf ├── galaxy │ └── starSystems.json ├── locale │ └── characters.dat ├── missions │ ├── alba │ │ ├── 01 - patrol #1.json │ │ ├── 02 - patrol #2.json │ │ ├── 03 - patrol #3.json │ │ ├── 04 - alba defence #1.json │ │ ├── 05 - alba defence #2.json │ │ ├── 06 - traitor hunt #2.json │ │ ├── 07 - traitor hunt #4.json │ │ ├── 08 - alba defence #3.json │ │ ├── 09 - alba defence #4.json │ │ └── 10 - alba defence #5.json │ ├── antomis │ │ ├── 01 - antomis defence #1.json │ │ ├── 02 - antomis offence #1.json │ │ └── 03 - antomis defence #2.json │ ├── aster │ │ ├── 01 - return to aster #1.json │ │ ├── 02 - return to aster #2.json │ │ ├── 03 - return to aster #3.json │ │ └── 04 - aster assault.json │ ├── clarke │ │ ├── 01 - clarke defence #1.json │ │ ├── 02 - clarke defence #2.json │ │ ├── 03 - clarke defence #3.json │ │ ├── 04 - clarke defence #4.json │ │ ├── 05 - clarke defence #5.json │ │ └── 06 - clarke defence #6.json │ ├── coyote │ │ ├── 01 - coyote assault #1.json │ │ ├── 02 - coyote assault #2.json │ │ └── 03 - coyote assault #3.json │ ├── donesta │ │ ├── 01 - donesta defence #1.json │ │ ├── 02 - donesta offence #1.json │ │ └── 03 - donesta defence #2.json │ ├── granada │ │ ├── 01 - suspect packages #1.json │ │ ├── 02 - suspect packages #2.json │ │ ├── 03 - suspect packages #3.json │ │ └── 04 - pirate smash.json │ ├── iliad │ │ ├── 01 - iliad defence #1.json │ │ ├── 02 - iliad defence #2.json │ │ ├── 03 - iliad defence #3.json │ │ ├── 04 - iliad defence #4.json │ │ └── 05 - iliad defence #5.json │ ├── india │ │ ├── 01 - india defence #1.json │ │ └── 02 - india defence #2.json │ ├── krasst │ │ └── 01 - infiltration #5.json │ ├── lenon │ │ └── 01 - end.json │ ├── mace │ │ ├── 01 - mace assault #1.json │ │ ├── 02 - mace assault #2.json │ │ ├── 03 - mace assault #3.json │ │ └── 04 - mace assault #4.json │ ├── phylent │ │ └── 01 - infiltration #1.json │ ├── rothan │ │ ├── 01 - rothan defence #1.json │ │ ├── 02 - rothan defence #2.json │ │ ├── 03 - rothan defence #3.json │ │ ├── 04 - rothan offence #1.json │ │ ├── 05 - rothan defence #4.json │ │ └── 06 - rothan defence #5.json │ ├── sampi-persei vii │ │ └── 01 - infiltration #2.json │ ├── sol │ │ ├── 01 - free flight.json │ │ ├── 02 - weapons.json │ │ ├── 03 - moving target.json │ │ ├── 04 - armed target.json │ │ ├── 05 - ecm.json │ │ ├── 06 - mag.json │ │ ├── 07 - wingmates.json │ │ └── 08 - final.json │ ├── temper │ │ ├── 01 - pirate uprising #1.json │ │ ├── 02 - pirate uprising #2.json │ │ ├── 03 - pirate uprising #3.json │ │ ├── 04 - pirate uprising #4.json │ │ └── 05 - pirate uprising #5.json │ ├── tigris │ │ └── 01 - infiltration #3.json │ ├── trilliack │ │ ├── 01 - trilliack defence #1.json │ │ ├── 02 - trilliack defence #2.json │ │ ├── 03 - traitor hunt #1.json │ │ ├── 04 - traitor hunt #3.json │ │ ├── 05 - traitor hunt #5.json │ │ ├── 06 - trilliack defence #3.json │ │ ├── 07 - trilliack defence #4.json │ │ └── 99 - infiltration #4.json │ └── warro │ │ ├── 01 - evacuation #1.json │ │ ├── 02 - evacuation #2.json │ │ ├── 03 - evacuation #3.json │ │ ├── 04 - evacuation #4.json │ │ └── 05 - evacuation #5.json ├── trophies │ └── trophies.json ├── turrets │ ├── plasmaTurret.json │ ├── rapidPlasmaTurret.json │ └── rocketTurret.json └── widgets │ ├── battleLost.json │ ├── battleWon.json │ ├── challenges.json │ ├── controls.json │ ├── fighterDB.json │ ├── galacticMap.json │ ├── inBattle.json │ ├── modal.json │ ├── options.json │ ├── starSystem.json │ ├── startBattle.json │ ├── stats.json │ ├── title.json │ └── trophies.json ├── dev ├── screenshots │ ├── v0.1-01.png │ ├── v0.1-02.png │ ├── v0.2-01.png │ ├── v0.4-01.png │ ├── v0.4-03.png │ ├── v0.5-01.png │ ├── v0.5-02.png │ ├── v0.5-03.png │ ├── v0.5-04.png │ ├── v0.6-01.png │ ├── v0.6-02.png │ ├── v0.6-03.png │ ├── v0.6-04.png │ ├── v0.6-05.png │ ├── v0.6-06.png │ ├── v0.7-01.png │ ├── v0.7-02.png │ ├── v0.7-03.png │ ├── v0.7-04.png │ ├── v0.7-05.png │ ├── v0.7-06.png │ ├── v0.8-01.png │ ├── v0.8-02.png │ ├── v0.8-03.png │ ├── v0.8-04.png │ ├── v1.4.03-01.png │ └── v1.4.03-02.png └── stats.sh ├── gfx ├── atlas │ └── atlas.png ├── backgrounds │ ├── background01.jpg │ ├── background02.jpg │ ├── background03.jpg │ ├── background04.jpg │ ├── background05.jpg │ └── background06.jpg └── by-nc-sa.png ├── icons ├── tbftss-128x128.png ├── tbftss-16x16.png ├── tbftss-256x256.png ├── tbftss-32x32.png ├── tbftss-64x64.png └── tbftss.desktop ├── locale ├── ca.po ├── da.po ├── de.po ├── es.po ├── fr.po ├── it.po ├── nl.po ├── pl.po ├── sv.po └── tbftss.pot ├── makefile ├── makefile.mac ├── makefile.pandora ├── makefile.win32 ├── manual ├── background02.jpg ├── capitalShips.png ├── challenges.png ├── controls.png ├── fighterDB.png ├── galaxy.png ├── index.html ├── jquery-2.1.3.min.js ├── logo.png ├── mission1.png ├── mission2.png ├── pandoran.png ├── starSystem.png ├── title.png └── trophies.png ├── music ├── battle │ ├── Battle in the winter.mp3 │ ├── DST-RailJet-LongSeamlessLoop.ogg │ ├── InnerCore_Low.ogg │ ├── Showdown.mp3 │ ├── Tactical Pursuit.mp3 │ ├── Vehicle - OGA - Col Legno.ogg │ ├── battleThemeA.mp3 │ ├── determination.mp3 │ ├── heroism.ogg │ ├── track-3.mp3 │ └── track-4.mp3 └── main │ ├── Her Violet Eyes.mp3 │ ├── Pressure.ogg │ ├── Rise of spirit.ogg │ └── covert_operations.mp3 ├── sound ├── 000000_large_explosion.ogg ├── 000000_tow-rope-attach.ogg ├── 107786__leviclaassen__beepbeep.ogg ├── 146311__jgeralyn__shortailenliketone2-lower.ogg ├── 146725__fins__laser.ogg ├── 154934__klawykogut__empty-gun-shot.ogg ├── 162265__qubodup__explosive.ogg ├── 172591__timbre__zapitydooda.ogg ├── 172870__escortmarius__carbidexplosion.ogg ├── 178064__jorickhoofd__slam-door-shut.ogg ├── 18380__inferno__hvrl.ogg ├── 18382__inferno__hvylas.ogg ├── 207322__animationisaac__short-explosion.ogg ├── 242856__plasterbrain__nuclear-alarm.ogg ├── 246420__oceanictrancer__game-sound-effect-menu.ogg ├── 249300__suntemple__access-denied.ogg ├── 251431__onlytheghosts__fusion-gun-flash0-by-onlytheghosts.ogg ├── 254071__tb0y298__firework-explosion.ogg ├── 254174__kwahmah-02__s.ogg ├── 255729__manholo__inception-stab-l.ogg ├── 257786__xtrgamr__mouse-click.ogg ├── 268344__julien-matthey__jm-noiz-laser-01.ogg ├── 275151__bird-man__gun-shot.ogg ├── 276912__pauldihor__transform.ogg ├── 278142__ricemaster__effect-notify.ogg ├── 320181__dland__hint.ogg ├── 321104__nsstudios__blip2.ogg ├── 321906__bruce965__walkie-talkie-roger-beep.ogg ├── 322603__clippysounds__glass-break.ogg ├── 329359__bassoonrckr__reed-guillotine.ogg ├── 33785__jobro__4-beep-b.ogg ├── 39030__wildweasel__d1clsstf.ogg ├── 42106__marcuslee__laser-wrath-4.ogg ├── 47252__nthompson__bad-explosion.ogg ├── 49678__ejfortin__energy-short-sword-7.ogg ├── 56246__q-k__latch-04.ogg ├── 62491__benboncan__dslr-click.ogg ├── 65787__iwilldstroyu__laserrocket.ogg ├── 77087__supraliminal__laser-short.ogg └── 88275__s-dij__gbc-reload-06.ogg └── src ├── battle ├── ai.c ├── ai.h ├── battle.c ├── battle.h ├── bullets.c ├── bullets.h ├── capitalShips.c ├── capitalShips.h ├── debris.c ├── debris.h ├── effects.c ├── effects.h ├── entities.c ├── entities.h ├── fighters.c ├── fighters.h ├── hud.c ├── hud.h ├── items.c ├── items.h ├── jumpgate.c ├── jumpgate.h ├── locations.c ├── locations.h ├── messageBox.c ├── messageBox.h ├── mine.c ├── mine.h ├── missionInfo.c ├── missionInfo.h ├── objectives.c ├── objectives.h ├── player.c ├── player.h ├── quadtree.c ├── quadtree.h ├── radar.c ├── radar.h ├── rope.c ├── rope.h ├── script.c ├── script.h ├── spawners.c ├── spawners.h ├── starfield.c ├── starfield.h ├── waypoints.c └── waypoints.h ├── challenges ├── challengeHome.c ├── challengeHome.h ├── challenges.c └── challenges.h ├── common.h ├── defs.h ├── galaxy ├── galacticMap.c ├── galacticMap.h ├── mission.c ├── mission.h ├── starSystems.c └── starSystems.h ├── game ├── credits.c ├── credits.h ├── fighterDatabase.c ├── fighterDatabase.h ├── game.c ├── game.h ├── load.c ├── load.h ├── options.c ├── options.h ├── save.c ├── save.h ├── stats.c ├── stats.h ├── title.c ├── title.h ├── trophies.c └── trophies.h ├── json ├── cJSON.c └── cJSON.h ├── main.c ├── main.h ├── plat ├── unix │ ├── unixInit.c │ └── unixInit.h └── win32 │ ├── win32Init.c │ └── win32Init.h ├── structs.h ├── system ├── atlas.c ├── atlas.h ├── controls.c ├── controls.h ├── dev.c ├── dev.h ├── draw.c ├── draw.h ├── i18n.c ├── i18n.h ├── init.c ├── init.h ├── input.c ├── input.h ├── io.c ├── io.h ├── lookup.c ├── lookup.h ├── modalDialog.c ├── modalDialog.h ├── resources.c ├── resources.h ├── sound.c ├── sound.h ├── text.c ├── text.h ├── textures.c ├── textures.h ├── transition.c ├── transition.h ├── util.c ├── util.h ├── widgets.c └── widgets.h └── test ├── testMission.c └── testMission.h /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 335 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 30 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - help+wanted 8 | # Label to use when marking an issue as stale 9 | staleLabel: invalid 10 | # Comment to post when marking an issue as stale. Set to `false` to disable 11 | markComment: > 12 | This issue has been automatically marked as stale because it has not had 13 | recent activity. It will be closed if no further activity occurs. Thank you 14 | for your contributions. 15 | # Comment to post when closing a stale issue. Set to `false` to disable 16 | closeComment: true 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Object files 2 | *.o 3 | *.ko 4 | *.obj 5 | *.elf 6 | *.mo 7 | 8 | # Precompiled Headers 9 | *.gch 10 | *.pch 11 | 12 | # Libraries 13 | *.lib 14 | *.a 15 | *.la 16 | *.lo 17 | 18 | # Shared objects (inc. Windows DLLs) 19 | *.dll 20 | *.so 21 | *.so.* 22 | *.dylib 23 | 24 | # Executables 25 | *.exe 26 | *.out 27 | *.app 28 | *.i*86 29 | *.x86_64 30 | *.hex 31 | tbftss 32 | 33 | # Debug files 34 | *.dSYM/ 35 | 36 | # folders 37 | bin 38 | dist 39 | dev/* 40 | build/* 41 | !dev/screenshots 42 | !dev/stats.sh 43 | 44 | # Misc 45 | .DS_Store 46 | /.errors 47 | tools 48 | -------------------------------------------------------------------------------- /README_DEV.md: -------------------------------------------------------------------------------- 1 | # DEVELOPMENT / DEBUG Stuff 2 | 3 | You can run the game with: 4 | 5 | `./tbftss -debug` 6 | 7 | to access some (rather crude) debugging and development stuff, activated by pressing certain keys on the keyboard. Press the following keys to toggle the states (see the console for output). Note to packagers - you shouldn't distribute the game in this state (either as a hard compile or run script), as it could result in unexpected behaviour. 8 | 9 | * [1] - Make the player immortal 10 | * [2] - Unlimited missiles 11 | * [3] - Prevent the AI from using weapons 12 | * [4] - Prevent the AI from taking any further actions 13 | * [5] - Make everything immortal 14 | * [6] - Immediately complete the current mission 15 | 16 | * [9] - Show the current frames per second 17 | * [0] - Take a screenshot once per second, saving to /tmp/tbftss on Linux. 18 | 19 | By default, the game will output INFO level messages, or greater. To reduce to WARN level messages, you can use: 20 | 21 | `./tbftss -warn` 22 | 23 | Note that using `-debug` will automatically output DEBUG level messages. 24 | -------------------------------------------------------------------------------- /STATS.md: -------------------------------------------------------------------------------- 1 | # Statistics 2 | 3 | * Lines of code: 19897 4 | * Size of source: 586K 5 | * Size of data: 750K 6 | * Size of graphics: 3.5M 7 | * Size of sound: 805K 8 | * Size of music: 56M 9 | 10 | * Number of missions: 81 (inc. optional) 11 | * Number of challenges: 93 12 | * Number of spacecraft: 50 13 | * Number of trophies: 44 14 | 15 | * Translatable strings: 1029 16 | 17 | * Number of GIT revisions: 1472 18 | -------------------------------------------------------------------------------- /common.mk: -------------------------------------------------------------------------------- 1 | VERSION = 1.5 2 | REVISION = 1 3 | LOCALE_MO = $(patsubst %.po,%.mo,$(wildcard locale/*.po)) 4 | 5 | OUT = bin 6 | 7 | SEARCHPATH += src 8 | SEARCHPATH += src/battle 9 | SEARCHPATH += src/challenges 10 | SEARCHPATH += src/game 11 | SEARCHPATH += src/galaxy 12 | SEARCHPATH += src/json 13 | SEARCHPATH += src/system 14 | SEARCHPATH += src/test 15 | 16 | vpath %.c $(SEARCHPATH) 17 | vpath %.h $(SEARCHPATH) 18 | 19 | DEPS += defs.h structs.h 20 | 21 | _OBJS += ai.o atlas.o 22 | _OBJS += battle.o bullets.o 23 | _OBJS += capitalShips.o challengeHome.o challenges.o cJSON.o controls.o credits.o 24 | _OBJS += debris.o dev.o draw.o 25 | _OBJS += effects.o entities.o 26 | _OBJS += fighters.o fighterDatabase.o 27 | _OBJS += galacticMap.o game.o 28 | _OBJS += hud.o 29 | _OBJS += i18n.o init.o input.o io.o items.o 30 | _OBJS += jumpgate.o 31 | _OBJS += load.o locations.o lookup.o 32 | _OBJS += main.o messageBox.o mine.o mission.o missionInfo.o modalDialog.o 33 | _OBJS += objectives.o options.o 34 | _OBJS += player.o 35 | _OBJS += quadtree.o 36 | _OBJS += radar.o resources.o rope.o 37 | _OBJS += save.o script.o sound.o spawners.o starfield.o starSystems.o stats.o 38 | _OBJS += testMission.o textures.o text.o title.o transition.o trophies.o 39 | _OBJS += util.o 40 | _OBJS += waypoints.o widgets.o 41 | 42 | OBJS = $(patsubst %,$(OUT)/%,$(_OBJS)) 43 | 44 | # top-level rule to create the program. 45 | all: $(PROG) $(LOCALE_MO) 46 | 47 | # compiling other source files. 48 | $(OUT)/%.o: %.c %.h $(DEPS) 49 | @mkdir -p $(OUT) 50 | $(CC) $(CFLAGS) $(CXXFLAGS) -c -o $@ $< 51 | 52 | %.mo: %.po 53 | msgfmt -c -o $@ $< 54 | 55 | # cleaning everything that can be automatically recreated with "make". 56 | clean: 57 | $(RM) $(OBJS) $(PROG) $(LOCALE_MO) 58 | -------------------------------------------------------------------------------- /data/app/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "winWidth" : 1280, 3 | "winHeight" : 720, 4 | "fullscreen" : 0, 5 | "musicVolume" : 8, 6 | "soundVolume" : 10, 7 | "controls" : { 8 | "keys" : { 9 | "CONTROL_FIRE" : 0, 10 | "CONTROL_ACCELERATE" : 0, 11 | "CONTROL_BOOST" : 26, 12 | "CONTROL_ECM" : 7, 13 | "CONTROL_BRAKE" : 22, 14 | "CONTROL_TARGET" : 4, 15 | "CONTROL_MISSILE" : 44, 16 | "CONTROL_GUNS" : 29, 17 | "CONTROL_RADAR" : 27, 18 | "CONTROL_PREV_FIGHTER" : 4, 19 | "CONTROL_NEXT_FIGHTER" : 7, 20 | "CONTROL_SCREENSHOT" : 69 21 | }, 22 | "mouse" : { 23 | "CONTROL_FIRE" : 1, 24 | "CONTROL_ACCELERATE" : 3, 25 | "CONTROL_BOOST" : 0, 26 | "CONTROL_ECM" : 0, 27 | "CONTROL_BRAKE" : 0, 28 | "CONTROL_TARGET" : 0, 29 | "CONTROL_MISSILE" : 2, 30 | "CONTROL_GUNS" : 4, 31 | "CONTROL_RADAR" : 5, 32 | "CONTROL_PREV_FIGHTER" : 4, 33 | "CONTROL_NEXT_FIGHTER" : 5, 34 | "CONTROL_SCREENSHOT" : 0 35 | }, 36 | "controller" : { 37 | "CONTROL_FIRE" : { "axis" : 1, "value" : 5}, 38 | "CONTROL_ACCELERATE" : { "axis" : 0, "value" : 0}, 39 | "CONTROL_BOOST" : { "axis" : 0, "value" : 1}, 40 | "CONTROL_ECM" : { "axis" : 0, "value" : 2}, 41 | "CONTROL_BRAKE" : { "axis" : 0, "value" : 3}, 42 | "CONTROL_TARGET" : { "axis" : 1, "value" : 4}, 43 | "CONTROL_MISSILE" : { "axis" : 0, "value" : 9}, 44 | "CONTROL_GUNS" : { "axis" : 0, "value" : 10}, 45 | "CONTROL_RADAR" : { "axis" : 0, "value" : 11}, 46 | "CONTROL_PREV_FIGHTER" : { "axis" : 0, "value" : 13}, 47 | "CONTROL_NEXT_FIGHTER" : { "axis" : 0, "value" : 14}, 48 | "CONTROL_SCREENSHOT" : { "axis" : 0, "value" : 4} 49 | } 50 | }, 51 | "gameplay" : { 52 | "friendlyFire" : 0, 53 | "autoSwitchPlayerTarget" : 1, 54 | "missileReTarget" : 0, 55 | "healthBars" : 1 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /data/battle/bullets.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type" : "BT_PARTICLE", 4 | "damage" : 1, 5 | "texture" : "gfx/bullets/particleBolt.png", 6 | "sound" : "SND_PARTICLE", 7 | "flags" : "BF_NONE" 8 | }, 9 | 10 | { 11 | "type" : "BT_PLASMA", 12 | "damage" : 3, 13 | "texture" : "gfx/bullets/plasmaBolt.png", 14 | "sound" : "SND_PLASMA", 15 | "flags" : "BF_NONE" 16 | }, 17 | 18 | { 19 | "type" : "BT_MISSILE", 20 | "damage" : 50, 21 | "texture" : "gfx/bullets/missile.png", 22 | "sound" : "SND_MISSILE", 23 | "flags" : "BF_ENGINE+BF_EXPLODES" 24 | }, 25 | 26 | { 27 | "type" : "BT_MAG", 28 | "damage" : 10, 29 | "texture" : "gfx/bullets/magBolt.png", 30 | "sound" : "SND_MAG", 31 | "flags" : "BF_SYSTEM_DAMAGE" 32 | }, 33 | 34 | { 35 | "type" : "BT_LASER", 36 | "damage" : 5, 37 | "texture" : "gfx/bullets/laser.png", 38 | "sound" : "SND_LASER", 39 | "flags" : "BF_SHIELD_DAMAGE" 40 | }, 41 | 42 | { 43 | "type" : "BT_ROCKET", 44 | "damage" : 50, 45 | "texture" : "gfx/bullets/missile.png", 46 | "sound" : "SND_MISSILE", 47 | "flags" : "BF_ENGINE+BF_EXPLODES" 48 | } 49 | ] 50 | -------------------------------------------------------------------------------- /data/battle/items.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "defName" : "crate", 4 | "name" : "a crate", 5 | "texture" : "gfx/items/crate.png" 6 | }, 7 | { 8 | "defName" : "smallCrate", 9 | "name" : "a small crate", 10 | "texture" : "gfx/items/smallCrate.png" 11 | }, 12 | { 13 | "defName" : "powerCore01", 14 | "name" : "a power core", 15 | "texture" : "gfx/items/powerCore01.png" 16 | }, 17 | { 18 | "defName" : "powerCore02", 19 | "name" : "a power core", 20 | "texture" : "gfx/items/powerCore02.png" 21 | }, 22 | { 23 | "defName" : "powerCore03", 24 | "name" : "a power core", 25 | "texture" : "gfx/items/powerCore03.png" 26 | }, 27 | { 28 | "defName" : "coin01", 29 | "name" : "a coin", 30 | "texture" : "gfx/items/coin01.png" 31 | }, 32 | { 33 | "defName" : "coin02", 34 | "name" : "a coin", 35 | "texture" : "gfx/items/coin02.png" 36 | }, 37 | { 38 | "defName" : "diamond01", 39 | "name" : "a diamond", 40 | "texture" : "gfx/items/diamond01.png" 41 | }, 42 | { 43 | "defName" : "diamond02", 44 | "name" : "a diamond", 45 | "texture" : "gfx/items/diamond02.png" 46 | }, 47 | { 48 | "defName" : "diamond03", 49 | "name" : "a diamond", 50 | "texture" : "gfx/items/diamond03.png" 51 | }, 52 | { 53 | "defName" : "gem01", 54 | "name" : "a gem", 55 | "texture" : "gfx/items/gem01.png" 56 | }, 57 | { 58 | "defName" : "gem02", 59 | "name" : "a gem", 60 | "texture" : "gfx/items/gem02.png" 61 | }, 62 | { 63 | "defName" : "gem03", 64 | "name" : "a gem", 65 | "texture" : "gfx/items/gem03.png" 66 | } 67 | ] 68 | -------------------------------------------------------------------------------- /data/challenges/01.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Destroy all Darts #1", 3 | "description" : "Destroy all Darts #1", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Nymph", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 30, 17 | "killLimit" : 5, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_TIME", 21 | "value" : 30 22 | }, 23 | { 24 | "type" : "CHALLENGE_TIME", 25 | "value" : 15 26 | }, 27 | { 28 | "type" : "CHALLENGE_SHOT_ACCURACY", 29 | "value" : 75 30 | } 31 | ] 32 | }, 33 | "fighters" : [ 34 | { 35 | "name" : "Dart", 36 | "types" : "Simple Dart", 37 | "side" : "SIDE_PIRATE", 38 | "x" : 25, 39 | "y" : 22, 40 | "number" : 5, 41 | "scatter" : 1000 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /data/challenges/02.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Destroy all Darts #2", 3 | "description" : "Destroy all Darts #2", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Nymph", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 25, 17 | "killLimit" : 5, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_TIME", 21 | "value" : 25 22 | }, 23 | { 24 | "type" : "CHALLENGE_TIME", 25 | "value" : 12 26 | }, 27 | { 28 | "type" : "CHALLENGE_SHOT_ACCURACY", 29 | "value" : 50 30 | } 31 | ] 32 | }, 33 | "fighters" : [ 34 | { 35 | "name" : "Dart", 36 | "types" : "Dart", 37 | "side" : "SIDE_PIRATE", 38 | "x" : 25, 39 | "y" : 22, 40 | "number" : 5, 41 | "scatter" : 1000 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /data/challenges/03.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Destroy all Darts #3", 3 | "description" : "Destroy all Darts #3", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Nymph", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 45, 17 | "killLimit" : 3, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_TIME", 21 | "value" : 20 22 | }, 23 | { 24 | "type" : "CHALLENGE_ARMOUR", 25 | "value" : 80 26 | }, 27 | { 28 | "type" : "CHALLENGE_SHOT_ACCURACY", 29 | "value" : 50 30 | } 31 | ] 32 | }, 33 | "fighters" : [ 34 | { 35 | "name" : "Nymph", 36 | "types" : "Nymph", 37 | "side" : "SIDE_TZAC", 38 | "x" : 25, 39 | "y" : 22, 40 | "number" : 3, 41 | "scatter" : 1000 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /data/challenges/04.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Destroy all Lynxes", 3 | "description" : "Destroy all Lynxes", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Ray", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 120, 17 | "killLimit" : 5, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_TIME", 21 | "value" : 90 22 | }, 23 | { 24 | "type" : "CHALLENGE_TIME", 25 | "value" : 120 26 | }, 27 | { 28 | "type" : "CHALLENGE_SHOT_ACCURACY", 29 | "value" : 80 30 | } 31 | ] 32 | }, 33 | "fighters" : [ 34 | { 35 | "name" : "Lynx", 36 | "types" : "Lynx", 37 | "side" : "SIDE_TZAC", 38 | "x" : 25, 39 | "y" : 25, 40 | "number" : 5, 41 | "scatter" : 2000, 42 | "aiFlags" : "+AIF_UNLIMITED_RANGE" 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/challenges/05.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Disable all targets", 3 | "description" : "Disable all targets", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Hyena-A", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "objectives" : [ 16 | { 17 | "description" : "Do not destroy targets", 18 | "targetName" : "TAF", 19 | "targetValue" : 1, 20 | "targetType" : "TT_DESTROY", 21 | "isCondition" : 1 22 | } 23 | ], 24 | "challenge" : { 25 | "timeLimit" : 90, 26 | "killLimit" : 6, 27 | "challenges" : [ 28 | { 29 | "type" : "CHALLENGE_TIME", 30 | "value" : 90 31 | }, 32 | { 33 | "type" : "CHALLENGE_TIME", 34 | "value" : 45 35 | }, 36 | { 37 | "type" : "CHALLENGE_DISABLE", 38 | "value" : 6 39 | } 40 | ] 41 | }, 42 | "fighters" : [ 43 | { 44 | "name" : "TAF", 45 | "types" : "TAF", 46 | "side" : "SIDE_TZAC", 47 | "x" : 25, 48 | "y" : 25, 49 | "number" : 2, 50 | "scatter" : 4000, 51 | "flags" : "+EF_NO_KILL+EF_MUST_DISABLE+EF_MISSION_TARGET+EF_AI_LEADER" 52 | }, 53 | { 54 | "name" : "Dart", 55 | "types" : "Dart", 56 | "side" : "SIDE_TZAC", 57 | "x" : 25, 58 | "y" : 25, 59 | "number" : 4, 60 | "scatter" : 4000, 61 | "aiFlags" : "+AIF_MOVES_TO_LEADER" 62 | } 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /data/challenges/06.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "60 second battle", 3 | "description" : "60 second battle", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Hammerhead", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "epic" : { 16 | "fighterLimit" : 5 17 | }, 18 | "challenge" : { 19 | "timeLimit" : 60, 20 | "killLimit" : 20, 21 | "challenges" : [ 22 | { 23 | "type" : "CHALLENGE_PLAYER_KILLS", 24 | "value" : 12 25 | }, 26 | { 27 | "type" : "CHALLENGE_PLAYER_KILLS", 28 | "value" : 15 29 | }, 30 | { 31 | "type" : "CHALLENGE_PLAYER_KILLS", 32 | "value" : 20 33 | } 34 | ] 35 | }, 36 | "fighters" : [ 37 | { 38 | "name" : "Pirate", 39 | "types" : "Dart", 40 | "side" : "SIDE_PIRATE", 41 | "x" : 25, 42 | "y" : 25, 43 | "number" : 20, 44 | "scatter" : 5000 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /data/challenges/08.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Defend Jumpgate", 3 | "description" : "Defend Jumpgate", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Leopard", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 90, 17 | "killLimit" : 12, 18 | "escapeLimit" : 12, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_PLAYER_KILLS", 22 | "value" : 6 23 | }, 24 | { 25 | "type" : "CHALLENGE_PLAYER_KILLS", 26 | "value" : 9 27 | }, 28 | { 29 | "type" : "CHALLENGE_PLAYER_KILLS", 30 | "value" : 12 31 | } 32 | ] 33 | }, 34 | "fighters" : [ 35 | { 36 | "groupName" : "Dart", 37 | "types" : "Dart", 38 | "x" : 25, 39 | "y" : 28, 40 | "side" : "SIDE_TZAC", 41 | "scatter" : 5000, 42 | "number" : 12, 43 | "flags" : "+EF_RETREATING", 44 | "aiFlags" : "+AIF_GOAL_JUMPGATE+AIF_UNLIMITED_RANGE+AIF_DEFENSIVE+AIF_COVERS_RETREAT" 45 | } 46 | ], 47 | "entities" : [ 48 | { 49 | "type" : "ET_JUMPGATE", 50 | "x" : 25.1, 51 | "y" : 25.1 52 | } 53 | ] 54 | } 55 | -------------------------------------------------------------------------------- /data/challenges/09.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Collect Packages", 3 | "description" : "Collect Packages", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Firefly", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "epic" : { 16 | "fighterLimit" : 3 17 | }, 18 | "challenge" : { 19 | "timeLimit" : 900, 20 | "itemLimit" : 50, 21 | "challenges" : [ 22 | { 23 | "type" : "CHALLENGE_ITEMS", 24 | "value" : 25 25 | }, 26 | { 27 | "type" : "CHALLENGE_ITEMS", 28 | "value" : 40 29 | }, 30 | { 31 | "type" : "CHALLENGE_ITEMS", 32 | "value" : 50 33 | } 34 | ] 35 | }, 36 | "fighters" : [ 37 | { 38 | "groupName" : "Shuttle", 39 | "types" : "Shuttle", 40 | "x" : 25, 41 | "y" : 25, 42 | "side" : "SIDE_ALLIES", 43 | "flags" : "+EF_AI_TARGET", 44 | "scatter" : 500 45 | }, 46 | { 47 | "groupName" : "Dart", 48 | "types" : "Dart", 49 | "x" : 25, 50 | "y" : 25, 51 | "side" : "SIDE_TZAC", 52 | "scatter" : 10000, 53 | "number" : 9999, 54 | "aiFlags" : "+AIF_UNLIMITED_RANGE" 55 | } 56 | ], 57 | "items" : [ 58 | { 59 | "number" : 50, 60 | "type" : "RANDOM", 61 | "x" : 25, 62 | "y" : 25, 63 | "scatter" : 5000, 64 | "flags" : "+EF_MISSION_TARGET" 65 | } 66 | ], 67 | "script" : [ 68 | { 69 | "function" : "ALLIES_KILLED 1", 70 | "lines" : [ 71 | "END_CHALLENGE" 72 | ] 73 | } 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /data/challenges/10.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Rescue Civilians", 3 | "description" : "Rescue Civilians", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Tug", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "rescueLimit" : 8, 17 | "timeLimit" : 300, 18 | "allowPlayerDeath" : 1, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_RESCUE", 22 | "value" : 4 23 | }, 24 | { 25 | "type" : "CHALLENGE_RESCUE", 26 | "value" : 5 27 | }, 28 | { 29 | "type" : "CHALLENGE_RESCUE", 30 | "value" : 8 31 | } 32 | ] 33 | }, 34 | "fighters" : [ 35 | { 36 | "types" : "Civilian", 37 | "x" : 25, 38 | "y" : 25, 39 | "side" : "SIDE_ALLIES", 40 | "flags" : "+EF_DISABLED+EF_NO_KILL", 41 | "number" : 8, 42 | "scatter" : 5000 43 | } 44 | ], 45 | "entities" : [ 46 | { 47 | "name" : "Jumpgate", 48 | "type" : "ET_JUMPGATE", 49 | "x" : 25, 50 | "y" : 25 51 | } 52 | ], 53 | "spawners" : [ 54 | { 55 | "name" : "spawner", 56 | "types" : "Dart", 57 | "side" : "SIDE_PIRATE", 58 | "interval" : 30, 59 | "total" : -1, 60 | "step" : 1, 61 | "offscreen" : 1, 62 | "aiFlags" : "+AIF_UNLIMITED_RANGE" 63 | } 64 | ] 65 | } 66 | -------------------------------------------------------------------------------- /data/challenges/11.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Destroy INF Klondike and INF Canfield", 3 | "description" : "Destroy INF Klondike and INF Canfield", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "ATAF", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "killLimit" : 2, 17 | "timeLimit" : 90, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_TIME", 21 | "value" : 50 22 | }, 23 | { 24 | "type" : "CHALLENGE_TIME", 25 | "value" : 90 26 | }, 27 | { 28 | "type" : "CHALLENGE_SHOT_ACCURACY", 29 | "value" : 90 30 | } 31 | ] 32 | }, 33 | "capitalShips" : [ 34 | { 35 | "name" : "INF Klondike", 36 | "types" : "INF Corvette 01", 37 | "side" : "SIDE_PANDORAN", 38 | "x" : 23, 39 | "y" : 23 40 | }, 41 | { 42 | "name" : "INF Canfield", 43 | "types" : "INF Corvette 01", 44 | "side" : "SIDE_PANDORAN", 45 | "x" : 27, 46 | "y" : 27 47 | } 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /data/challenges/12.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Collect packages", 3 | "description" : "Collect packages", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Shuttle", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "itemLimit" : 8, 17 | "timeLimit" : 105, 18 | "allowPlayerDeath" : 1, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_ITEMS", 22 | "value" : 3 23 | }, 24 | { 25 | "type" : "CHALLENGE_ITEMS", 26 | "value" : 5 27 | }, 28 | { 29 | "type" : "CHALLENGE_ITEMS", 30 | "value" : 8 31 | } 32 | ] 33 | }, 34 | "items" : [ 35 | { 36 | "number" : 8, 37 | "type" : "RANDOM", 38 | "x" : 25, 39 | "y" : 25, 40 | "scatter" : 5000, 41 | "flags" : "+EF_MISSION_TARGET" 42 | } 43 | ], 44 | "entities" : [ 45 | { 46 | "type" : "ET_MINE", 47 | "number" : 750, 48 | "x" : 25, 49 | "y" : 25, 50 | "scatter" : 10000 51 | } 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /data/challenges/13.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Turret Takedown", 3 | "description" : "Turret Takedown", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Lynx", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "killLimit" : 12, 17 | "timeLimit" : 135, 18 | "allowPlayerDeath" : 1, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_PLAYER_KILLS", 22 | "value" : 5 23 | }, 24 | { 25 | "type" : "CHALLENGE_PLAYER_KILLS", 26 | "value" : 10 27 | }, 28 | { 29 | "type" : "CHALLENGE_PLAYER_KILLS", 30 | "value" : 12 31 | } 32 | ] 33 | }, 34 | "fighters" : [ 35 | { 36 | "types" : "Rocket Turret", 37 | "side" : "SIDE_TZAC", 38 | "x" : 25, 39 | "y" : 25, 40 | "number" : 12, 41 | "scatter" : 5000 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /data/challenges/14.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Swarms of Swarmers", 3 | "description" : "Swarms of Swarmers", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Rapid Plasma Turret", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 0, 17 | "allowPlayerDeath" : 1, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_SURVIVE", 21 | "value" : 30 22 | }, 23 | { 24 | "type" : "CHALLENGE_SURVIVE", 25 | "value" : 60 26 | }, 27 | { 28 | "type" : "CHALLENGE_SURVIVE", 29 | "value" : 70 30 | } 31 | ] 32 | }, 33 | "spawners" : [ 34 | { 35 | "name" : "spawner", 36 | "types" : "Swarmer", 37 | "side" : "SIDE_PANDORAN", 38 | "interval" : 1, 39 | "total" : -1, 40 | "step" : 1, 41 | "offscreen" : 1, 42 | "aiFlags" : "+AIF_UNLIMITED_RANGE" 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/challenges/16.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Swelling the Ranks", 3 | "description" : "Swelling the Ranks", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Scarab", 9 | "side" : "SIDE_PANDORAN", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 240, 17 | "challenges" : [ 18 | { 19 | "type" : "CHALLENGE_TIME", 20 | "value" : 120 21 | }, 22 | { 23 | "type" : "CHALLENGE_ROCKET_ACCURACY", 24 | "value" : 75 25 | }, 26 | { 27 | "type" : "CHALLENGE_ARMOUR", 28 | "value" : 80 29 | } 30 | ] 31 | }, 32 | "capitalShips" : [ 33 | { 34 | "name" : "CSN Denier", 35 | "types" : "CSN Corvette 01", 36 | "side" : "SIDE_ALLIES", 37 | "x" : 20, 38 | "y" : 25 39 | } 40 | ], 41 | "script" : [ 42 | { 43 | "function" : "CAP_DISABLED CSN Denier", 44 | "lines" : [ 45 | "END_CHALLENGE" 46 | ] 47 | }, 48 | { 49 | "function" : "CAPITAL_SHIPS_DESTROYED 1", 50 | "lines" : [ 51 | "FAIL_CHALLENGE" 52 | ] 53 | } 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /data/challenges/17.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Most Wanted", 3 | "description" : "Most Wanted", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Shale", 9 | "side" : "SIDE_TZAC", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25, 14 | "flags" : "+EF_MUST_DISABLE+EF_RETREATING" 15 | }, 16 | "challenge" : { 17 | "timeLimit" : 120, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_TIME", 21 | "value" : 120 22 | }, 23 | { 24 | "type" : "CHALLENGE_PLAYER_KILLS", 25 | "value" : 2 26 | }, 27 | { 28 | "type" : "CHALLENGE_PLAYER_KILLS", 29 | "value" : 3 30 | } 31 | ] 32 | }, 33 | "entities" : [ 34 | { 35 | "type" : "ET_JUMPGATE", 36 | "side" : "SIDE_NONE", 37 | "x" : 25, 38 | "y" : 25, 39 | "flags" : "EF_DISABLED+EF_NO_HEALTH_BAR" 40 | } 41 | ], 42 | "spawners" : [ 43 | { 44 | "name" : "spawner", 45 | "types" : "Ray", 46 | "side" : "SIDE_ALLIES", 47 | "interval" : 15, 48 | "total" : 8, 49 | "step" : 1, 50 | "offscreen" : 1 51 | } 52 | ], 53 | "script" : [ 54 | { 55 | "function" : "TIME 1", 56 | "lines" : [ 57 | "MSG_BOX Help;The jumpgate will come online in just under 2 minutes, for 5 SECONDS ONLY! Evade the CSN until then." 58 | ] 59 | }, 60 | { 61 | "function" : "TIME 114", 62 | "lines" : [ 63 | "ACTIVATE_JUMPGATE 1" 64 | ] 65 | }, 66 | { 67 | "function" : "TIME 119", 68 | "lines" : [ 69 | "ACTIVATE_JUMPGATE 0" 70 | ] 71 | } 72 | ] 73 | } 74 | -------------------------------------------------------------------------------- /data/challenges/18.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Solo Patrol", 3 | "description" : "Solo Patrol", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "waypointAutoAdvance" : 1, 8 | "player" : { 9 | "type" : "TAF", 10 | "side" : "SIDE_ALLIES", 11 | "pilot" : "-", 12 | "squadron" : "-", 13 | "x" : 25, 14 | "y" : 25 15 | }, 16 | "challenge" : { 17 | "timeLimit" : 300, 18 | "waypointLimit" : 5, 19 | "clearWaypointEnemies" : 1, 20 | "challenges" : [ 21 | { 22 | "type" : "CHALLENGE_TIME", 23 | "value" : 300 24 | }, 25 | { 26 | "type" : "CHALLENGE_TIME", 27 | "value" : 240 28 | }, 29 | { 30 | "type" : "CHALLENGE_PLAYER_KILLS", 31 | "value" : 19 32 | } 33 | ] 34 | }, 35 | "spawners" : [ 36 | { 37 | "name" : "spawner", 38 | "types" : "Dart", 39 | "side" : "SIDE_PIRATE", 40 | "interval" : 12, 41 | "total" : -1, 42 | "step" : 1, 43 | "offscreen" : 1, 44 | "aiFlags" : "AIF_UNLIMITED_RANGE", 45 | "active" : 0 46 | } 47 | ], 48 | "entities" : [ 49 | { 50 | "type" : "ET_WAYPOINT", 51 | "x" : 25, 52 | "y" : 25, 53 | "scatter" : 10000, 54 | "number" : 5, 55 | "active" : 0 56 | } 57 | ], 58 | "script" : [ 59 | { 60 | "function" : "Waypoint #1", 61 | "lines" : [ 62 | "ACTIVATE_SPAWNER 1 spawner" 63 | ] 64 | }, 65 | { 66 | "function" : "Waypoint #5", 67 | "lines" : [ 68 | "ACTIVATE_SPAWNER 0 spawner" 69 | ] 70 | } 71 | ] 72 | } 73 | -------------------------------------------------------------------------------- /data/challenges/19.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Set Phasers to Stun", 3 | "description" : "Set Phasers to Stun", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Angel", 9 | "side" : "SIDE_PANDORAN", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "allowPlayerDeath" : 1, 17 | "disableLimit" : 5, 18 | "timeLimit" : 180, 19 | "eliminateThreats" : 1, 20 | "challenges" : [ 21 | { 22 | "type" : "CHALLENGE_DISABLE", 23 | "value" : 2 24 | }, 25 | { 26 | "type" : "CHALLENGE_DISABLE", 27 | "value" : 4 28 | }, 29 | { 30 | "type" : "CHALLENGE_DISABLE", 31 | "value" : 5 32 | } 33 | ] 34 | }, 35 | "fighters" : [ 36 | { 37 | "types" : "Khepri", 38 | "side" : "SIDE_ALLIES", 39 | "x" : 25, 40 | "y" : 25, 41 | "scatter" : 12000, 42 | "number" : 5, 43 | "aiFlags" : "+AIF_UNLIMITED_RANGE+AIF_DROPS_MINES" 44 | } 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /data/challenges/20.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "No survivors", 3 | "description" : "No survivors", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Scarab", 9 | "side" : "SIDE_PANDORAN", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "killLimit" : 25, 17 | "timeLimit" : 210, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_PLAYER_KILLS", 21 | "value" : 20 22 | }, 23 | { 24 | "type" : "CHALLENGE_PLAYER_KILLS", 25 | "value" : 25 26 | }, 27 | { 28 | "type" : "CHALLENGE_ROCKET_ACCURACY", 29 | "value" : 80 30 | } 31 | ] 32 | }, 33 | "fighters" : [ 34 | { 35 | "types" : "Civilian", 36 | "side" : "SIDE_ALLIES", 37 | "x" : 25, 38 | "y" : 25, 39 | "scatter" : 5000, 40 | "number" : 25 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /data/challenges/21.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Initiation", 3 | "description" : "Initiation", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Dart", 9 | "side" : "SIDE_PIRATE", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25, 14 | "flags" : "+EF_COLLECTS_ITEMS" 15 | }, 16 | "challenge" : { 17 | "timeLimit" : 120, 18 | "playerItemLimit" : 8, 19 | "allowPlayerDeath" : 1, 20 | "isDeathMatch" : 1, 21 | "challenges" : [ 22 | { 23 | "type" : "CHALLENGE_PLAYER_ITEMS", 24 | "value" : 3 25 | }, 26 | { 27 | "type" : "CHALLENGE_PLAYER_ITEMS", 28 | "value" : 6 29 | }, 30 | { 31 | "type" : "CHALLENGE_PLAYER_ITEMS", 32 | "value" : 8 33 | } 34 | ] 35 | }, 36 | "spawners" : [ 37 | { 38 | "name" : "spawner", 39 | "types" : "Dart", 40 | "side" : "SIDE_PIRATE", 41 | "interval" : 5, 42 | "total" : -1, 43 | "step" : 1, 44 | "offscreen" : 1, 45 | "flags" : "+EF_COLLECTS_ITEMS+EF_DROPS_ITEMS", 46 | "aiFlags" : "+AIF_UNLIMITED_RANGE+AIF_COLLECTS_ITEMS" 47 | } 48 | ], 49 | "script" : [ 50 | { 51 | "function" : "TIME 1", 52 | "lines" : [ 53 | "MSG_BOX Boss;Three kills to join the team, dogs! Don't forget to collect the kill!" 54 | ] 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /data/challenges/22.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Destroy all Darts #4", 3 | "description" : "Destroy all Darts #4", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Shale", 9 | "side" : "SIDE_TZAC", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 30, 17 | "killLimit" : 5, 18 | "noMissiles" : 1, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_TIME", 22 | "value" : 30 23 | }, 24 | { 25 | "type" : "CHALLENGE_TIME", 26 | "value" : 27 27 | }, 28 | { 29 | "type" : "CHALLENGE_SHOT_ACCURACY", 30 | "value" : 55 31 | } 32 | ] 33 | }, 34 | "fighters" : [ 35 | { 36 | "name" : "Dart", 37 | "types" : "Dart", 38 | "side" : "SIDE_PIRATE", 39 | "x" : 25, 40 | "y" : 22, 41 | "number" : 5, 42 | "scatter" : 1000 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/challenges/23.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Surrender!", 3 | "description" : "Surrender!", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Ray", 9 | "side" : "SIDE_TZAC", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "allowPlayerDeath" : 1, 17 | "timeLimit" : 120, 18 | "surrenderLimit" : 5, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_SURRENDER", 22 | "value" : 2 23 | }, 24 | { 25 | "type" : "CHALLENGE_SURRENDER", 26 | "value" : 4 27 | }, 28 | { 29 | "type" : "CHALLENGE_SURRENDER", 30 | "value" : 5 31 | } 32 | ] 33 | }, 34 | "fighters" : [ 35 | { 36 | "types" : "Nymph", 37 | "side" : "SIDE_MERC", 38 | "x" : 25, 39 | "y" : 20, 40 | "scatter" : 2000, 41 | "aiFlags" : "+AIF_SURRENDERS" 42 | }, 43 | { 44 | "types" : "Firefly", 45 | "side" : "SIDE_MERC", 46 | "x" : 25, 47 | "y" : 20, 48 | "scatter" : 2000, 49 | "aiFlags" : "+AIF_SURRENDERS" 50 | }, 51 | { 52 | "types" : "Lynx", 53 | "side" : "SIDE_MERC", 54 | "x" : 25, 55 | "y" : 20, 56 | "scatter" : 2000, 57 | "aiFlags" : "+AIF_SURRENDERS" 58 | }, 59 | { 60 | "types" : "Hyena-A", 61 | "side" : "SIDE_MERC", 62 | "x" : 25, 63 | "y" : 20, 64 | "scatter" : 2000, 65 | "aiFlags" : "+AIF_SURRENDERS" 66 | }, 67 | { 68 | "types" : "Leopard", 69 | "side" : "SIDE_MERC", 70 | "x" : 25, 71 | "y" : 20, 72 | "scatter" : 2000, 73 | "aiFlags" : "+AIF_SURRENDERS" 74 | } 75 | ] 76 | } 77 | -------------------------------------------------------------------------------- /data/challenges/24.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Gate Smasher", 3 | "description" : "Gate Smasher", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Scarab", 9 | "side" : "SIDE_PANDORAN", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 35 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 60, 17 | "challenges" : [ 18 | { 19 | "type" : "CHALLENGE_TIME", 20 | "value" : 60 21 | }, 22 | { 23 | "type" : "CHALLENGE_PLAYER_KILLS", 24 | "value" : 5 25 | }, 26 | { 27 | "type" : "CHALLENGE_ARMOUR", 28 | "value" : 100 29 | } 30 | ] 31 | }, 32 | "fighters" : [ 33 | { 34 | "types" : "Rapid Plasma Turret", 35 | "side" : "SIDE_ALLIES", 36 | "x" : 25, 37 | "y" : 30, 38 | "scatter" : 1000, 39 | "number" : 5 40 | } 41 | ], 42 | "entities" : [ 43 | { 44 | "type" : "ET_JUMPGATE", 45 | "side" : "SIDE_ALLIES", 46 | "x" : 25, 47 | "y" : 30 48 | } 49 | ], 50 | "script" : [ 51 | { 52 | "function" : "JUMPGATE_HEALTH 1", 53 | "lines" : [ 54 | "END_CHALLENGE" 55 | ] 56 | } 57 | ] 58 | } 59 | -------------------------------------------------------------------------------- /data/challenges/25.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Minefield Race", 3 | "description" : "Minefield Race", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "waypointAutoAdvance" : 1, 8 | "player" : { 9 | "type" : "Shuttle", 10 | "side" : "SIDE_ALLIES", 11 | "pilot" : "-", 12 | "squadron" : "-", 13 | "x" : 25, 14 | "y" : 25 15 | }, 16 | "challenge" : { 17 | "timeLimit" : 120, 18 | "waypointLimit" : 12, 19 | "allowPlayerDeath" : 1, 20 | "noBoost" : 1, 21 | "challenges" : [ 22 | { 23 | "type" : "CHALLENGE_WAYPOINTS", 24 | "value" : 5 25 | }, 26 | { 27 | "type" : "CHALLENGE_WAYPOINTS", 28 | "value" : 10 29 | }, 30 | { 31 | "type" : "CHALLENGE_WAYPOINTS", 32 | "value" : 12 33 | } 34 | ] 35 | }, 36 | "entities" : [ 37 | { 38 | "type" : "ET_WAYPOINT", 39 | "x" : 25, 40 | "y" : 25, 41 | "number" : 12, 42 | "scatter" : 2000 43 | }, 44 | { 45 | "type" : "ET_MINE", 46 | "x" : 25, 47 | "y" : 25, 48 | "number" : 100, 49 | "scatter" : 4000 50 | } 51 | ] 52 | } 53 | -------------------------------------------------------------------------------- /data/challenges/26.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Surrender! #2", 3 | "description" : "Surrender! #2", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "SK-34", 9 | "side" : "SIDE_TZAC", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "allowPlayerDeath" : 1, 17 | "timeLimit" : 90, 18 | "disableLimit" : 4, 19 | "eliminateThreats" : 1, 20 | "challenges" : [ 21 | { 22 | "type" : "CHALLENGE_SURRENDER", 23 | "value" : 3 24 | }, 25 | { 26 | "type" : "CHALLENGE_SURRENDER", 27 | "value" : 4 28 | }, 29 | { 30 | "type" : "CHALLENGE_DISABLE", 31 | "value" : 4 32 | } 33 | ] 34 | }, 35 | "fighters" : [ 36 | { 37 | "types" : "Rook", 38 | "side" : "SIDE_ALLIES", 39 | "x" : 25, 40 | "y" : 20, 41 | "scatter" : 3000, 42 | "number" : 4, 43 | "aiFlags" : "+AIF_SURRENDERS" 44 | } 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /data/challenges/27.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Piracy #2", 3 | "description" : "Piracy #2", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Dart", 9 | "side" : "SIDE_PIRATE", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25, 14 | "flags" : "+EF_COLLECTS_ITEMS" 15 | }, 16 | "challenge" : { 17 | "timeLimit" : 180, 18 | "playerItemLimit" : 10, 19 | "allowPlayerDeath" : 1, 20 | "challenges" : [ 21 | { 22 | "type" : "CHALLENGE_PLAYER_ITEMS", 23 | "value" : 5 24 | }, 25 | { 26 | "type" : "CHALLENGE_PLAYER_ITEMS", 27 | "value" : 8 28 | }, 29 | { 30 | "type" : "CHALLENGE_PLAYER_ITEMS", 31 | "value" : 10 32 | } 33 | ] 34 | }, 35 | "spawners" : [ 36 | { 37 | "name" : "spawner", 38 | "types" : "Shuttle", 39 | "side" : "SIDE_ALLIES", 40 | "interval" : 10, 41 | "total" : -1, 42 | "step" : 2, 43 | "offscreen" : 1, 44 | "flags" : "+EF_DROPS_ITEMS+EF_MISSION_TARGET", 45 | "aiFlags" : "AIF_DEFENSIVE" 46 | }, 47 | { 48 | "name" : "spawner", 49 | "types" : "Dart", 50 | "side" : "SIDE_PIRATE", 51 | "interval" : 10, 52 | "total" : -1, 53 | "step" : 1, 54 | "offscreen" : 1, 55 | "flags" : "+EF_COLLECTS_ITEMS", 56 | "aiFlags" : "+AIF_UNLIMITED_RANGE+AIF_COLLECTS_ITEMS" 57 | }, 58 | { 59 | "name" : "csnSpawner", 60 | "types" : "TAF;Kingfisher;Ray;Rook", 61 | "side" : "SIDE_ALLIES", 62 | "interval" : 12, 63 | "total" : -1, 64 | "step" : 1, 65 | "offscreen" : 1, 66 | "aiFlags" : "+AIF_UNLIMITED_RANGE", 67 | "active" : 0 68 | } 69 | ], 70 | "script" : [ 71 | { 72 | "function" : "TIME 1", 73 | "lines" : [ 74 | "MSG_BOX Boss;Get those packages from those shuttles. Every man for himself!" 75 | ] 76 | }, 77 | { 78 | "function" : "TIME 10", 79 | "lines" : [ 80 | "ACTIVATE_SPAWNER 1 csnSpawner" 81 | ] 82 | } 83 | ] 84 | } 85 | -------------------------------------------------------------------------------- /data/challenges/28.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Shoot 'Em Up", 3 | "description" : "Shoot 'Em Up", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "ATAF", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 240, 17 | "killLimit" : 120, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_PLAYER_KILLS", 21 | "value" : 100 22 | }, 23 | { 24 | "type" : "CHALLENGE_PLAYER_KILLS", 25 | "value" : 115 26 | }, 27 | { 28 | "type" : "CHALLENGE_PLAYER_KILLS", 29 | "value" : 120 30 | } 31 | ] 32 | }, 33 | "spawners" : [ 34 | { 35 | "name" : "spawner", 36 | "types" : "Dart", 37 | "side" : "SIDE_PIRATE", 38 | "interval" : 10, 39 | "total" : 120, 40 | "step" : 10, 41 | "offscreen" : 1 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /data/challenges/29.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Initiation #2", 3 | "description" : "Initiation #2", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Unarmed Dart", 9 | "side" : "SIDE_PIRATE", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25, 14 | "flags" : "+EF_COLLECTS_ITEMS" 15 | }, 16 | "challenge" : { 17 | "timeLimit" : 240, 18 | "playerItemLimit" : 4, 19 | "allowPlayerDeath" : 1, 20 | "isDeathMatch" : 1, 21 | "challenges" : [ 22 | { 23 | "type" : "CHALLENGE_PLAYER_ITEMS", 24 | "value" : 1 25 | }, 26 | { 27 | "type" : "CHALLENGE_PLAYER_ITEMS", 28 | "value" : 2 29 | }, 30 | { 31 | "type" : "CHALLENGE_PLAYER_ITEMS", 32 | "value" : 4 33 | } 34 | ] 35 | }, 36 | "spawners" : [ 37 | { 38 | "name" : "spawner", 39 | "types" : "Dart", 40 | "side" : "SIDE_PIRATE", 41 | "interval" : 5, 42 | "total" : -1, 43 | "step" : 1, 44 | "offscreen" : 1, 45 | "flags" : "+EF_COLLECTS_ITEMS+EF_DROPS_ITEMS", 46 | "aiFlags" : "+AIF_UNLIMITED_RANGE+AIF_COLLECTS_ITEMS" 47 | } 48 | ], 49 | "script" : [ 50 | { 51 | "function" : "TIME 1", 52 | "lines" : [ 53 | "MSG_BOX Boss;Sorry we couldn't get you a working ship, but do your best, eh? Ha ha!" 54 | ] 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /data/challenges/30.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Feast", 3 | "description" : "Feast", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Shuttle", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "timeLimit" : 240, 17 | "playerItemLimit" : 100, 18 | "challenges" : [ 19 | { 20 | "type" : "CHALLENGE_PLAYER_ITEMS", 21 | "value" : 70 22 | }, 23 | { 24 | "type" : "CHALLENGE_PLAYER_ITEMS", 25 | "value" : 95 26 | }, 27 | { 28 | "type" : "CHALLENGE_PLAYER_ITEMS", 29 | "value" : 100 30 | } 31 | ] 32 | }, 33 | "items" : [ 34 | { 35 | "number" : 100, 36 | "type" : "RANDOM", 37 | "x" : 25, 38 | "y" : 25, 39 | "scatter" : 3000, 40 | "flags" : "+EF_MISSION_TARGET" 41 | } 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /data/challenges/31.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Bomber vs Bomber", 3 | "description" : "Bomber vs Bomber", 4 | "background" : "AUTO", 5 | "planet" : "AUTO", 6 | "music" : "AUTO", 7 | "player" : { 8 | "type" : "Khepri", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "-", 11 | "squadron" : "-", 12 | "x" : 25, 13 | "y" : 25 14 | }, 15 | "challenge" : { 16 | "noMissiles" : 1, 17 | "timeLimit" : 90, 18 | "killLimit" : 4, 19 | "challenges" : [ 20 | { 21 | "type" : "CHALLENGE_TIME", 22 | "value" : 60 23 | }, 24 | { 25 | "type" : "CHALLENGE_ARMOUR", 26 | "value" : 100 27 | }, 28 | { 29 | "type" : "CHALLENGE_ROCKET_ACCURACY", 30 | "value" : 100 31 | } 32 | ] 33 | }, 34 | "fighters" : [ 35 | { 36 | "types" : "Scarab;Hammerhead;Lynx", 37 | "side" : "SIDE_TZAC", 38 | "number" : 4, 39 | "x" : 25, 40 | "y" : 25, 41 | "scatter" : 3000 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /data/craft/civilian.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Civilian", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 1.85, 7 | "texture" : "gfx/craft/civilian01.png", 8 | "flags" : "EF_MISSION_TARGET+EF_RETREATING+EF_TAKES_DAMAGE", 9 | "aiFlags" : "AIF_GOAL_JUMPGATE+AIF_AVOIDS_COMBAT+AIF_FOLLOWS_PLAYER" 10 | } 11 | -------------------------------------------------------------------------------- /data/craft/infTug.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "INF Tug", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 50, 6 | "speed" : 1.85, 7 | "reloadTime" : 10, 8 | "texture" : "gfx/craft/infTug.png", 9 | "flags" : "EF_HAS_ROPE+EF_TAKES_DAMAGE", 10 | "aiFlags" : "AIF_AVOIDS_COMBAT+AIF_TOWS" 11 | } 12 | -------------------------------------------------------------------------------- /data/craft/munitionsTransport.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Munitions Transport", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 150, 6 | "shield" : 50, 7 | "speed" : 1.5, 8 | "reloadTime" : 10, 9 | "texture" : "gfx/craft/munitionsTransport.png", 10 | "flags" : "EF_TAKES_DAMAGE", 11 | "aiFlags" : "AIF_AVOIDS_COMBAT" 12 | } 13 | -------------------------------------------------------------------------------- /data/craft/shuttle.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Shuttle", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "shield" : 15, 7 | "speed" : 2, 8 | "shieldRechargeRate" : 60, 9 | "texture" : "gfx/craft/shuttle.png", 10 | "flags" : "EF_COLLECTS_ITEMS+EF_TAKES_DAMAGE+EF_NO_EPIC", 11 | "aiFlags" : "AIF_AVOIDS_COMBAT+AIF_COLLECTS_ITEMS" 12 | } 13 | -------------------------------------------------------------------------------- /data/craft/supplyShip.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Supply Ship", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 150, 6 | "shield" : 50, 7 | "speed" : 1.5, 8 | "reloadTime" : 10, 9 | "shieldRechargeRate" : 0, 10 | "texture" : "gfx/craft/supplyShip.png", 11 | "deathType" : "DT_NO_SPIN", 12 | "flags" : "EF_TAKES_DAMAGE", 13 | "aiFlags" : "AIF_AVOIDS_COMBAT" 14 | } 15 | -------------------------------------------------------------------------------- /data/craft/tug.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Tug", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 50, 6 | "speed" : 1.85, 7 | "reloadTime" : 10, 8 | "texture" : "gfx/craft/tug.png", 9 | "guns" : [ 10 | { 11 | "type" : "BT_PARTICLE", 12 | "x" : 0, 13 | "y" : 0 14 | } 15 | ], 16 | "flags" : "EF_HAS_ROPE+EF_TAKES_DAMAGE", 17 | "aiFlags" : "AIF_AVOIDS_COMBAT+AIF_TOWS" 18 | } 19 | -------------------------------------------------------------------------------- /data/fighters/angel.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Angel", 3 | "description" : "One of the oldest starfighters created by the Mitikas Empire, the Angel is rarely seen, due to it being retired in 2599. A handful of Independent Worlds continue to operate the fighter, having purchased them from the empire prior to Mitikas pulling them from service. Even so, they are quite often held back from deployment, acting as reserves to bulk up numbers. Angels are notable for being the first INF fighter to be equipped with mag cannons, and for being somewhat smaller than most of the nation's other fighters. Also of note is the appearance, the fighter sporting a purple colour scheme, as opposed to the reds of more recent INF craft.", 4 | "affiliation" : "INF", 5 | "health" : 40, 6 | "shield" : 40, 7 | "speed" : 1.8, 8 | "reloadTime" : 15, 9 | "shieldRechargeRate" : 55, 10 | "texture" : "gfx/fighters/angel.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -10, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 10, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_MAG", 24 | "x" : -4, 25 | "y" : -6 26 | }, 27 | { 28 | "type" : "BT_MAG", 29 | "x" : 4, 30 | "y" : -6 31 | } 32 | ], 33 | "missiles" : 3, 34 | "flags" : "EF_TAKES_DAMAGE" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/ataf.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "ATAF", 3 | "description" : "The Advanced Tactical Assault Fighter (ATAF) is the single most powerful single-seat starfighter in existence. Only five have so far been manufactured owing to their tremendous development costs (each one said to be on par with a carrier). Their existence and even those selected to participate in the training program have been a closely guarded secret within the CSN. It is the spiritual successor to the TAF upon which a great deal of its design was based.", 4 | "affiliation" : "CSN", 5 | "health" : 150, 6 | "shield" : 2500, 7 | "speed" : 2.25, 8 | "reloadTime" : 8, 9 | "shieldRechargeRate" : 5, 10 | "texture" : "gfx/fighters/ataf.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -5, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 5, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : 9, 25 | "y" : -4 26 | }, 27 | { 28 | "type" : "BT_PLASMA", 29 | "x" : -9, 30 | "y" : -4 31 | }, 32 | { 33 | "type" : "BT_PLASMA", 34 | "x" : 13, 35 | "y" : -8 36 | }, 37 | { 38 | "type" : "BT_PLASMA", 39 | "x" : -13, 40 | "y" : -8 41 | }, 42 | { 43 | "type" : "BT_LASER", 44 | "x" : -5, 45 | "y" : 0 46 | }, 47 | { 48 | "type" : "BT_LASER", 49 | "x" : 5, 50 | "y" : 0 51 | }, 52 | { 53 | "type" : "BT_MAG", 54 | "x" : -5, 55 | "y" : 0 56 | }, 57 | { 58 | "type" : "BT_MAG", 59 | "x" : 5, 60 | "y" : 0 61 | } 62 | ], 63 | "missiles" : 4, 64 | "flags" : "EF_NO_EPIC+EF_TAKES_DAMAGE+EF_IMMORTAL", 65 | "aiFlags" : "AIF_UNLIMITED_RANGE" 66 | } 67 | -------------------------------------------------------------------------------- /data/fighters/blizzard.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Blizzard", 3 | "description" : "Like many other heavy-class starfighters, the Blizzard relies on firepower to make up for its somewhat sluggish performance in battle. In this respect, it is equipped with five cannons and five missiles, making it a formidable opponent in battle. The fighter is rarely seen outside of Mace, however, its primary function being the protection of Tzac's home system.", 4 | "affiliation" : "Tzac", 5 | "health" : 120, 6 | "shield" : 70, 7 | "speed" : 1.85, 8 | "reloadTime" : 14, 9 | "shieldRechargeRate" : 45, 10 | "texture" : "gfx/fighters/blizzard.png", 11 | "combinedGuns" : 1, 12 | "guns" : [ 13 | { 14 | "type" : "BT_PLASMA", 15 | "x" : -14, 16 | "y" : 0 17 | }, 18 | { 19 | "type" : "BT_PLASMA", 20 | "x" : 14, 21 | "y" : 0 22 | }, 23 | { 24 | "type" : "BT_PARTICLE", 25 | "x" : -8, 26 | "y" : 0 27 | }, 28 | { 29 | "type" : "BT_PARTICLE", 30 | "x" : 8, 31 | "y" : 0 32 | }, 33 | { 34 | "type" : "BT_PARTICLE", 35 | "x" : 0, 36 | "y" : 0 37 | } 38 | ], 39 | "missiles" : 5, 40 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 41 | } 42 | -------------------------------------------------------------------------------- /data/fighters/cannonDart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Cannon Dart", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 2.1, 7 | "reloadTime" : 24, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "guns" : [ 10 | { 11 | "type" : "BT_PARTICLE", 12 | "x" : -8, 13 | "y" : 0 14 | }, 15 | { 16 | "type" : "BT_PARTICLE", 17 | "x" : 8, 18 | "y" : 0 19 | } 20 | ], 21 | "flags" : "EF_TAKES_DAMAGE" 22 | } 23 | -------------------------------------------------------------------------------- /data/fighters/dart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Dart", 3 | "description" : "The Dart is a very common, general purpose vessel that is used commonly by both the public and by the underworld. Because of its relatively low costs and ease of maintenance, it is highly favoured by criminal organisations. It is usually sold as a single-seat, unarmed vessel, but can be purchased in a great variety of modified states, including that with an extra seat and with a number of armaments; missiles usually being attached to the tips of each of the four fins.", 4 | "affiliation" : "N/A", 5 | "health" : 15, 6 | "speed" : 2.1, 7 | "reloadTime" : 24, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "guns" : [ 10 | { 11 | "type" : "BT_PARTICLE", 12 | "x" : -8, 13 | "y" : 0 14 | }, 15 | { 16 | "type" : "BT_PARTICLE", 17 | "x" : 8, 18 | "y" : 0 19 | } 20 | ], 21 | "missiles" : 2, 22 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 23 | } 24 | -------------------------------------------------------------------------------- /data/fighters/firefly.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Firefly", 3 | "description" : "A relatively new starfighter, only introduced in the last seventeen years or so, the Firefly benefits from an overall reduction in manufacturing costs, while still maintaining the same defensive capabilities as other light-class fighters. It also benefits from slightly increased offensive measures, featuring two plasma cannons and one additional particle cannon. The fighter was greeted very positively when it was introduced and many hundreds were constructed exclusively for use by the UNF.", 4 | "affiliation" : "UNF", 5 | "health" : 50, 6 | "shield" : 50, 7 | "speed" : 1.85, 8 | "reloadTime" : 25, 9 | "shieldRechargeRate" : 30, 10 | "texture" : "gfx/fighters/firefly.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PARTICLE", 14 | "x" : 0, 15 | "y" : -4 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : -12, 20 | "y" : -2 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : 12, 25 | "y" : -2 26 | } 27 | ], 28 | "combinedGuns" : 1, 29 | "missiles" : 3, 30 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 31 | } 32 | -------------------------------------------------------------------------------- /data/fighters/hammerhead.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Hammerhead", 3 | "description" : "Of all the bombers that the CSN can offer, the Hammerhead is one of the most well known. Slow, but sure, the Hammerhead is packed to the gills with rockets, missiles and torpedoes, making it a formidable and dangerous opponent within a conflict zone. Escorted by a wing of TAFs or Rays, a Hammerhead need only get in to range of a target to unleash a volley of rockets that would prove truly devastating. Hammerheads feature two seats, one for the pilot and one to aid with targeting and handling armaments. It also has room for an optional rear gunner.", 4 | "affiliation" : "CSN", 5 | "health" : 60, 6 | "shield" : 50, 7 | "speed" : 1.7, 8 | "reloadTime" : 35, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/hammerhead.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_ROCKET", 24 | "x" : 0, 25 | "y" : 0 26 | } 27 | ], 28 | "missiles" : 6, 29 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER", 30 | "aiFlags" : "AIF_MISSILE_BOAT+AIF_DEFENSIVE" 31 | } 32 | -------------------------------------------------------------------------------- /data/fighters/hyenaA.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Hyena-A", 3 | "description" : "The Hyena is a new starfighter, introduced in the last 15 years and was constructed specifically for use by the United Naval Forces. Like most other medium-class starfighters, it treads the line between light and heavy-classes, offering high speeds and manoeuvrability, dense armour and shielding, and presenting high offensive capabilities. The Hyena is typically identified as Hyena-A or Hyena-B, depending on whether it is equipped with mag cannons or laser cannons.", 4 | "affiliation" : "UNF", 5 | "health" : 90, 6 | "shield" : 45, 7 | "speed" : 1.85, 8 | "reloadTime" : 15, 9 | "shieldRechargeRate" : 40, 10 | "texture" : "gfx/fighters/hyena.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | }, 22 | { 23 | "type" : "BT_MAG", 24 | "x" : -8, 25 | "y" : -12 26 | }, 27 | { 28 | "type" : "BT_MAG", 29 | "x" : 8, 30 | "y" : -12 31 | } 32 | ], 33 | "missiles" : 4, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/hyenaB.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Hyena-B", 3 | "description" : "The Hyena is a new starfighter, introduced in the last 15 years and was constructed specifically for use by the United Naval Forces. Like most other medium-class starfighters, it treads the line between light and heavy-classes, offering high speeds and manoeuvrability, dense armour and shielding, and presenting high offensive capabilities. The Hyena is typically identified as Hyena-A or Hyena-B, depending on whether it is equipped with mag cannons or laser cannons.", 4 | "affiliation" : "UNF", 5 | "health" : 90, 6 | "shield" : 45, 7 | "speed" : 1.85, 8 | "reloadTime" : 15, 9 | "shieldRechargeRate" : 40, 10 | "texture" : "gfx/fighters/hyena.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | }, 22 | { 23 | "type" : "BT_LASER", 24 | "x" : -8, 25 | "y" : -12 26 | }, 27 | { 28 | "type" : "BT_LASER", 29 | "x" : 8, 30 | "y" : -12 31 | } 32 | ], 33 | "missiles" : 4, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/jackal.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Jackal", 3 | "description" : "The greatest mass produced starfighter in the Imperial Naval Forces, the Jackal, like the TAF, is lightly armoured and shielded, but fast. Like other INF starfighters it has been through a rapid variation process in the last few years, as a result of the Imperial Civil War.", 4 | "affiliation" : "INF", 5 | "health" : 75, 6 | "shield" : 75, 7 | "speed" : 2, 8 | "reloadTime" : 14, 9 | "shieldRechargeRate" : 45, 10 | "texture" : "gfx/fighters/jackal.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -7, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 7, 20 | "y" : 0 21 | } 22 | ], 23 | "missiles" : 3, 24 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 25 | } 26 | -------------------------------------------------------------------------------- /data/fighters/khepri.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Khepri", 3 | "description" : "The Khepri is a bomber, designed and built by the Kingdom of Tzac. It is an enchanced derivative of the Imperial Scarab.", 4 | "affiliation" : "Tzac", 5 | "health" : 60, 6 | "shield" : 50, 7 | "speed" : 1.7, 8 | "reloadTime" : 35, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/khepri.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : 0, 25 | "y" : 0 26 | }, 27 | { 28 | "type" : "BT_ROCKET", 29 | "x" : 0, 30 | "y" : 0 31 | } 32 | ], 33 | "missiles" : 8, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER", 35 | "aiFlags" : "AIF_MISSILE_BOAT+AIF_DEFENSIVE" 36 | } 37 | -------------------------------------------------------------------------------- /data/fighters/kingfisher.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Kingfisher", 3 | "description" : "The Kingfisher is a medium-class, CSN starfighter, built to complement the Ray (although it arrived two years later than scheduled). Whereas the Ray features two mag cannons in addition to its plasma cannons, the Kingfisher is equipped with laser cannons. Also, unlike the Ray, the Kingfisher is a single seat fighter.", 4 | "affiliation" : "CSN", 5 | "health" : 65, 6 | "shield" : 65, 7 | "speed" : 1.85, 8 | "reloadTime" : 16, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/kingfisher.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | }, 22 | { 23 | "type" : "BT_LASER", 24 | "x" : -8, 25 | "y" : -12 26 | }, 27 | { 28 | "type" : "BT_LASER", 29 | "x" : 8, 30 | "y" : -12 31 | } 32 | ], 33 | "missiles" : 4, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/leopard.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Leopard", 3 | "description" : "Originally developed in 2580, the Leopard was redesigned from the ground up, to act as the United Naval Forces primary heavy starfighter. It is more powerful than the Sphinx and Rook, but shares their inherent weaknesses, such as poor handling and sluggish engines. Aside from bombers, it is the only UNF fighter craft to feature two pilot seats. It is also the only fighter in existence to feature plasma cannons on the port and starboard sides, operated by the second pilot. Budget restrictions meant that a third frontal plasma cannon was replaced by a particle cannon.", 4 | "affiliation" : "UNF", 5 | "health" : 125, 6 | "shield" : 75, 7 | "speed" : 1.7, 8 | "reloadTime" : 16, 9 | "shieldRechargeRate" : 70, 10 | "texture" : "gfx/fighters/leopard.png", 11 | "combinedGuns" : 1, 12 | "guns" : [ 13 | { 14 | "type" : "BT_PARTICLE", 15 | "x" : 0, 16 | "y" : -16 17 | }, 18 | { 19 | "type" : "BT_PLASMA", 20 | "x" : -12, 21 | "y" : -12 22 | }, 23 | { 24 | "type" : "BT_PLASMA", 25 | "x" : 12, 26 | "y" : -12 27 | } 28 | ], 29 | "missiles" : 3, 30 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 31 | } 32 | -------------------------------------------------------------------------------- /data/fighters/lynx.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Lynx", 3 | "description" : "The Lynx was a latecomer to the UNF's spacecraft compliment, the organisation purchasing Hammerheads from the CSN and, on occasion, Khepris from the Kingdom of Tzac. Neither were desirable longterm solutions, and so the Lynx was developed to fill the gap in the navy's offerings. The bomber was heavily inspired by the Hammerhead, with the UNF having found success in the use of the CSN craft in the past, and wished to continue that way.", 4 | "affiliation" : "UNF", 5 | "health" : 75, 6 | "shield" : 50, 7 | "speed" : 1.7, 8 | "reloadTime" : 35, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/lynx.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_ROCKET", 24 | "x" : 0, 25 | "y" : 0 26 | } 27 | ], 28 | "missiles" : 6, 29 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER", 30 | "aiFlags" : "AIF_MISSILE_BOAT+AIF_DEFENSIVE" 31 | } 32 | -------------------------------------------------------------------------------- /data/fighters/mantis.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Mantis", 3 | "description" : "So called because of the likeness of its two upper struts to that of a praying mantis, this is one of the most well recognised starfighters in the INF. A medium starfighter, like the Confederation's own Ray, the Mantis is not only better armed, featuring an extra set of offensive weaponry, but is also faster. Like other Imperial starfighters, it has seen a great number of stable variants emerge in the past few years.", 4 | "affiliation" : "INF", 5 | "health" : 50, 6 | "shield" : 75, 7 | "speed" : 1.85, 8 | "reloadTime" : 25, 9 | "shieldRechargeRate" : 35, 10 | "texture" : "gfx/fighters/mantis.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -2 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -2 21 | }, 22 | { 23 | "type" : "BT_PARTICLE", 24 | "x" : -2, 25 | "y" : -4 26 | }, 27 | { 28 | "type" : "BT_PARTICLE", 29 | "x" : 2, 30 | "y" : -4 31 | } 32 | ], 33 | "combinedGuns" : 1, 34 | "missiles" : 6, 35 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 36 | } 37 | -------------------------------------------------------------------------------- /data/fighters/missileDart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Missile Dart", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 2.1, 7 | "reloadTime" : 24, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "missiles" : 999, 10 | "flags" : "EF_TAKES_DAMAGE" 11 | } 12 | -------------------------------------------------------------------------------- /data/fighters/nymph.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Nymph", 3 | "description" : "A light class starfighter, constructed for use by the United Naval Forces. With the exception of the ATAFs, one of the latest designed and constructed starfighters in recent years.", 4 | "affiliation" : "UNF", 5 | "health" : 45, 6 | "shield" : 40, 7 | "speed" : 2, 8 | "reloadTime" : 14, 9 | "shieldRechargeRate" : 30, 10 | "texture" : "gfx/fighters/nymph.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -2 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -2 21 | } 22 | ], 23 | "missiles" : 3, 24 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 25 | } 26 | -------------------------------------------------------------------------------- /data/fighters/ray.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Ray", 3 | "description" : "A well armed, armoured and shielded fighter, the Ray compliments a squadron of TAFs well, although it is not as fast nor as manoeuvrable. The Ray is so called due to its outward appearance being quite similar to that of Manta Ray. It also features two seats, though it is possible to fly with one crew members.", 4 | "affiliation" : "CSN", 5 | "health" : 70, 6 | "shield" : 70, 7 | "speed" : 1.85, 8 | "reloadTime" : 16, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/ray.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | }, 22 | { 23 | "type" : "BT_MAG", 24 | "x" : -8, 25 | "y" : -12 26 | }, 27 | { 28 | "type" : "BT_MAG", 29 | "x" : 8, 30 | "y" : -12 31 | } 32 | ], 33 | "missiles" : 4, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/razor.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Razor", 3 | "description" : "The Razor is a medium-class starfighter, built and deployed by the Kingdom of Tzac. The fighter has a long service history, though it has likely undergone a number of updates and modifications to the base specification since its first appearance in 2571. Like most other Tzac starfighters, the current variation id of the fighter is not known, thought it could lie around F or G.", 4 | "affiliation" : "Tzac", 5 | "health" : 45, 6 | "shield" : 55, 7 | "speed" : 1.75, 8 | "reloadTime" : 22, 9 | "shieldRechargeRate" : 35, 10 | "texture" : "gfx/fighters/razor.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PARTICLE", 14 | "x" : 0, 15 | "y" : -4 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : -12, 20 | "y" : -2 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : 12, 25 | "y" : -2 26 | } 27 | ], 28 | "combinedGuns" : 1, 29 | "missiles" : 4, 30 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 31 | } 32 | -------------------------------------------------------------------------------- /data/fighters/rocketDart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Rocket Dart", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 2.1, 7 | "reloadTime" : 35, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "guns" : [ 10 | { 11 | "type" : "BT_ROCKET", 12 | "x" : 0, 13 | "y" : 0 14 | } 15 | ], 16 | "missiles" : 6, 17 | "flags" : "EF_TAKES_DAMAGE", 18 | "aiFlags" : "AIF_MISSILE_BOAT" 19 | } 20 | -------------------------------------------------------------------------------- /data/fighters/rook.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Rook", 3 | "description" : "The most heavily armed and boosting the greatest defences of all the starfighters in the CSN, the Rook generally only sees action during significant missions and operations, where its increased power can bring many benefits. It is, however, the slowest of all the CSN's starfighters and some pilots have complained that it feels very sluggish in combat.", 4 | "affiliation" : "CSN", 5 | "health" : 110, 6 | "shield" : 80, 7 | "speed" : 1.7, 8 | "reloadTime" : 12, 9 | "shieldRechargeRate" : 45, 10 | "texture" : "gfx/fighters/rook.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : 0, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : -9, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : 9, 25 | "y" : 0 26 | }, 27 | { 28 | "type" : "BT_LASER", 29 | "x" : -5, 30 | "y" : 0 31 | }, 32 | { 33 | "type" : "BT_LASER", 34 | "x" : 5, 35 | "y" : 0 36 | } 37 | ], 38 | "missiles" : 4, 39 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 40 | } 41 | -------------------------------------------------------------------------------- /data/fighters/scarab.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Scarab", 3 | "description" : "A scarab beetle-shaped bomber, generally used to launch a hail of rockets and missiles at targets. Slow, but quite well armoured and shielded. As with the Hammerhead, it relies on starfighter support to protect it during operations.", 4 | "affiliation" : "INF", 5 | "health" : 80, 6 | "shield" : 65, 7 | "speed" : 1.7, 8 | "reloadTime" : 35, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/scarab.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_ROCKET", 24 | "x" : 0, 25 | "y" : 0 26 | } 27 | ], 28 | "missiles" : 8, 29 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER", 30 | "aiFlags" : "AIF_MISSILE_BOAT+AIF_AGGRESSIVE+AIF_LONG_RANGE_FIRE" 31 | } 32 | -------------------------------------------------------------------------------- /data/fighters/shale.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Shale", 3 | "description" : "The Shale is a light-class starfighter, based on the Nymph. It is believed to have been constructed by Tzac based on leaked information about the initial design elements of the Nymph. As such, it follows a similar form factor, but differs in both its colour scheme (green, instead of white and blue) and armaments, being equipped with three rapid-fire particle cannons, instead of the Nymph's two plasma cannons. Tzac denied any involvement in the theft of the Nymph's construction details, attesting that it believed the design documents were for a new type of Dart, and as such were not governed by any sort of intergalactic trade secrets.", 4 | "affiliation" : "Tzac", 5 | "health" : 50, 6 | "shield" : 50, 7 | "speed" : 2, 8 | "reloadTime" : 18, 9 | "shieldRechargeRate" : 20, 10 | "texture" : "gfx/fighters/shale.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PARTICLE", 14 | "x" : -12, 15 | "y" : -2 16 | }, 17 | { 18 | "type" : "BT_PARTICLE", 19 | "x" : 0, 20 | "y" : -2 21 | }, 22 | { 23 | "type" : "BT_PARTICLE", 24 | "x" : 12, 25 | "y" : -2 26 | } 27 | ], 28 | "missiles" : 3, 29 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 30 | } 31 | -------------------------------------------------------------------------------- /data/fighters/simpleDart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Simple Dart", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 2.1, 7 | "reloadTime" : 24, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "guns" : [ 10 | { 11 | "type" : "BT_PARTICLE", 12 | "x" : -8, 13 | "y" : 0 14 | }, 15 | { 16 | "type" : "BT_PARTICLE", 17 | "x" : 8, 18 | "y" : 0 19 | } 20 | ], 21 | "missiles" : 2, 22 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 23 | } 24 | -------------------------------------------------------------------------------- /data/fighters/sk31.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "SK-31", 3 | "description" : "The SK-31 is a medium-class starfighter, built and deployed by the Kingdom of Tzac. Unlike the Razor and SK-34, the SK-31 is equipped with two laser cannons, to enable it to disrupt the shields of its target and make it easier to either destroy or disable. It is unknown what the SK in the fighter's name stands for, and whether or not the 31 refers to an iteration or other internal identifier.", 4 | "affiliation" : "Tzac", 5 | "health" : 85, 6 | "shield" : 50, 7 | "speed" : 1.8, 8 | "reloadTime" : 15, 9 | "shieldRechargeRate" : 45, 10 | "texture" : "gfx/fighters/sk31.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | }, 22 | { 23 | "type" : "BT_LASER", 24 | "x" : -4, 25 | "y" : -12 26 | }, 27 | { 28 | "type" : "BT_LASER", 29 | "x" : 6, 30 | "y" : -12 31 | } 32 | ], 33 | "missiles" : 5, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/sk34.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "SK-34", 3 | "description" : "The SK-34 is a medium-class starfighter, built and deployed by the Kingdom of Tzac. Though its exterior appearance is very different to the SK-31, it features similar internal specifications. Unlike the SK-31, however, it is equipped with Mag cannons, instead of lasers. As with the SK-34, it is unknown what the SK in the fighter's name stands for, and whether or not the 34 refers to an iteration or other internal identifier.", 4 | "affiliation" : "Tzac", 5 | "health" : 100, 6 | "shield" : 45, 7 | "speed" : 1.7, 8 | "reloadTime" : 17, 9 | "shieldRechargeRate" : 45, 10 | "texture" : "gfx/fighters/sk34.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | }, 22 | { 23 | "type" : "BT_MAG", 24 | "x" : -4, 25 | "y" : -12 26 | }, 27 | { 28 | "type" : "BT_MAG", 29 | "x" : 6, 30 | "y" : -12 31 | } 32 | ], 33 | "missiles" : 6, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/sphinx.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Sphinx", 3 | "description" : "The Imperial Naval Forces answer to the Rook, the Sphinx is more heavily armed, but equally as fast and protected. Generally a single seated craft, the Sphinx can also accept a rear gunner, making it more difficult for opponents to tail it.", 4 | "affiliation" : "INF", 5 | "health" : 110, 6 | "shield" : 75, 7 | "speed" : 1.85, 8 | "reloadTime" : 14, 9 | "shieldRechargeRate" : 60, 10 | "texture" : "gfx/fighters/sphinx.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : 0, 15 | "y" : -4 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 9, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : -9, 25 | "y" : 0 26 | }, 27 | { 28 | "type" : "BT_LASER", 29 | "x" : 0, 30 | "y" : 0 31 | } 32 | ], 33 | "missiles" : 2, 34 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 35 | } 36 | -------------------------------------------------------------------------------- /data/fighters/staticDart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Static Dart", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 0, 7 | "reloadTime" : 24, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "flags" : "EF_TAKES_DAMAGE" 10 | } 11 | -------------------------------------------------------------------------------- /data/fighters/swarmer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Swarmer", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 5, 6 | "speed" : 2, 7 | "reloadTime" : 8, 8 | "texture" : "gfx/fighters/swarmer.png", 9 | "guns" : [ 10 | { 11 | "type" : "BT_PARTICLE", 12 | "x" : 0, 13 | "y" : 0 14 | } 15 | ], 16 | "deathType" : "DT_SIMPLE", 17 | "flags" : "EF_TAKES_DAMAGE", 18 | "aiFlags" : "AIF_UNLIMITED_RANGE" 19 | } 20 | -------------------------------------------------------------------------------- /data/fighters/taf.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "TAF", 3 | "description" : "An all round, multi purpose, single-seat starfighter, the TAF is the most well known and highest produced starfighter within the CSN. Both lightly armoured and shielded, the TAF is easy to handle in the hands of a rookie and praised even by the most experienced of pilots. It makes up for its lack of armour, shielding and armaments by benefiting from good speeds and ease of manoeuvrability.", 4 | "affiliation" : "CSN", 5 | "health" : 35, 6 | "shield" : 35, 7 | "speed" : 2, 8 | "reloadTime" : 16, 9 | "shieldRechargeRate" : 50, 10 | "texture" : "gfx/fighters/taf.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : -12 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : -12 21 | } 22 | ], 23 | "missiles" : 4, 24 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 25 | } 26 | -------------------------------------------------------------------------------- /data/fighters/thunderhead.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Thunderhead", 3 | "description" : "The Thunderhead evolved from an original concept design for a new bomber, of which it still shares some features (such as a generous supply of missiles and torpedo hardpoints). It is faster than the Scarab bombers, but a lot slower than the Sphinx. It is, however, better armoured and shielded than both. It is rarely seen on the field, as it is now considered old, costly to maintain and has in recent years been superseded by the Sphinx. Despite this, it remains a formidable opponent and its offensive measures means that it is able to take down light-class vessels with ease.", 4 | "affiliation" : "INF", 5 | "health" : 90, 6 | "shield" : 65, 7 | "speed" : 1.7, 8 | "reloadTime" : 12, 9 | "shieldRechargeRate" : 65, 10 | "texture" : "gfx/fighters/thunderhead.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : -12, 15 | "y" : 0 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 12, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : 0, 25 | "y" : 0 26 | }, 27 | { 28 | "type" : "BT_PARTICLE", 29 | "x" : -5, 30 | "y" : 0 31 | }, 32 | { 33 | "type" : "BT_PARTICLE", 34 | "x" : 5, 35 | "y" : 0 36 | } 37 | ], 38 | "combinedGuns" : 1, 39 | "missiles" : 4, 40 | "flags" : "EF_TAKES_DAMAGE+EF_COMMON_FIGHTER" 41 | } 42 | -------------------------------------------------------------------------------- /data/fighters/unarmedDart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Unarmed Dart", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 15, 6 | "speed" : 2.1, 7 | "reloadTime" : 24, 8 | "texture" : "gfx/fighters/dart01.png", 9 | "flags" : "EF_TAKES_DAMAGE" 10 | } 11 | -------------------------------------------------------------------------------- /data/fighters/zakSphinx.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Unique Sphinx", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 999, 6 | "shield" : 999, 7 | "speed" : 1.6, 8 | "reloadTime" : 14, 9 | "shieldRechargeRate" : 0, 10 | "texture" : "gfx/fighters/zakSphinx.png", 11 | "guns" : [ 12 | { 13 | "type" : "BT_PLASMA", 14 | "x" : 0, 15 | "y" : -4 16 | }, 17 | { 18 | "type" : "BT_PLASMA", 19 | "x" : 9, 20 | "y" : 0 21 | }, 22 | { 23 | "type" : "BT_PLASMA", 24 | "x" : -9, 25 | "y" : 0 26 | }, 27 | { 28 | "type" : "BT_LASER", 29 | "x" : 0, 30 | "y" : 0 31 | } 32 | ], 33 | "missiles" : 2, 34 | "flags" : "EF_TAKES_DAMAGE+EF_IMMORTAL+EF_MISSION_TARGET+EF_AI_LEADER", 35 | "aiFlags" : "+AIF_WANDERS+AIF_UNLIMITED_RANGE+AIF_ZAK_SUSPICIOUS" 36 | } 37 | -------------------------------------------------------------------------------- /data/fonts/Khosrau.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/data/fonts/Khosrau.ttf -------------------------------------------------------------------------------- /data/fonts/Roboto-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/data/fonts/Roboto-Medium.ttf -------------------------------------------------------------------------------- /data/locale/characters.dat: -------------------------------------------------------------------------------- 1 | Ö&|_# POfileorTBFS:handWCpygt2015-6,JwsbuGNUL3.Emj@c/"IV\RMD8+v?x;=%!AYq()'kH[]KzQX4Z79*àéí¡Çóè·úïçüºòÉÒÍÀ°æåøÆÅØ<>öÄäßÜá¿ñÁÊûâîôÈêùœÙìëęąłćżńśźŻŚŁĆÖ 2 | -------------------------------------------------------------------------------- /data/missions/clarke/01 - clarke defence #1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Clarke Defence #1", 3 | "description" : "The day that we have feared and the events that we attempted to avert are now upon us - the Pandoran army has commenced its push beyond Mitikas space, and is beginning to assault neighbouring Independent star systems. We need to fight back, in order to protect Clarke from becoming underrun by this menace. Take heed: this will not be an easy battle, but we have little choice and must secure victory here today.", 4 | "requires" : 4, 5 | "background" : "gfx/backgrounds/background06.jpg", 6 | "planet" : "gfx/planets/lewis.png", 7 | "music" : "music/battle/Tactical Pursuit.mp3", 8 | "epic" : { 9 | "fighterLimit" : 12, 10 | "lives" : 12 11 | }, 12 | "objectives" : [ 13 | { 14 | "description" : "Destroy all enemy targets", 15 | "targetName" : "ENEMY", 16 | "targetValue" : 1, 17 | "targetType" : "TT_DESTROY", 18 | "isEliminateAll" : 1 19 | } 20 | ], 21 | "player" : { 22 | "type" : "Firefly", 23 | "side" : "SIDE_ALLIES", 24 | "pilot" : "(Multiple)", 25 | "squadron" : "(Multiple)" 26 | }, 27 | "fighters" : [ 28 | { 29 | "types" : "Firefly;Nymph;Leopard;Hyena-A;Hyena-B", 30 | "side" : "SIDE_ALLIES", 31 | "x" : 25, 32 | "y" : 24, 33 | "number" : 100, 34 | "scatter" : 5000 35 | }, 36 | { 37 | "types" : "Jackal;Sphinx", 38 | "side" : "SIDE_PANDORAN", 39 | "x" : 35, 40 | "y" : 24, 41 | "number" : 80, 42 | "scatter" : 5000 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/missions/coyote/02 - coyote assault #2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Coyote Assault #2", 3 | "description" : "The initial fight back against the Pandorans has gone well, but the system is still choked with their forces. We need to continue to engage them and force them to abandon the system.", 4 | "requires" : 4, 5 | "background" : "gfx/backgrounds/background03.jpg", 6 | "planet" : "gfx/planets/mythos.png", 7 | "music" : "music/battle/Tactical Pursuit.mp3", 8 | "epic" : { 9 | "fighterLimit" : 12, 10 | "lives" : 12 11 | }, 12 | "objectives" : [ 13 | { 14 | "description" : "Destroy all enemy targets", 15 | "targetName" : "ENEMY", 16 | "targetValue" : 1, 17 | "targetType" : "TT_DESTROY", 18 | "isEliminateAll" : 1 19 | } 20 | ], 21 | "player" : { 22 | "type" : "TAF", 23 | "side" : "SIDE_ALLIES", 24 | "pilot" : "(Multiple)", 25 | "squadron" : "(Multiple)" 26 | }, 27 | "fighters" : [ 28 | { 29 | "types" : "Firefly;Nymph;TAF;Ray;Leopard;Hyena-A;Hyena-B;Kingfisher", 30 | "side" : "SIDE_ALLIES", 31 | "x" : 25, 32 | "y" : 25, 33 | "number" : 95, 34 | "scatter" : 5000 35 | }, 36 | { 37 | "types" : "Jackal;Mantis;Sphinx", 38 | "side" : "SIDE_PANDORAN", 39 | "x" : 35, 40 | "y" : 25, 41 | "number" : 75, 42 | "scatter" : 5000 43 | } 44 | ] 45 | } 46 | 47 | -------------------------------------------------------------------------------- /data/missions/granada/01 - suspect packages #1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Suspect Packages #1", 3 | "description" : "A patrol group has sighted a number of crates drifting near to Alexandria. The contents of the crates is currently unknown, but they have been confirmed to be belong to the CSN. A shuttle has been dispatched to retrieve them, in case they should wander in to any shipping lanes. Once we have them in our possession, we will work to determine how they came to be here.", 4 | "requires" : 3, 5 | "background" : "gfx/backgrounds/background03.jpg", 6 | "planet" : "gfx/planets/alexandria.png", 7 | "music" : "music/battle/determination.mp3", 8 | "objectives" : [ 9 | { 10 | "description" : "Retrieve all packages", 11 | "targetName" : "package", 12 | "targetValue" : 6, 13 | "targetType" : "TT_ITEM" 14 | } 15 | ], 16 | "player" : { 17 | "pilot" : "Lt. Cdr. Daniel Carr", 18 | "squadron" : "Iron Patriots", 19 | "type" : "TAF", 20 | "side" : "SIDE_ALLIES" 21 | }, 22 | "fighters" : [ 23 | { 24 | "types" : "TAF", 25 | "side" : "SIDE_ALLIES", 26 | "x" : 25.1, 27 | "y" : 25 28 | }, 29 | { 30 | "types" : "Shuttle", 31 | "side" : "SIDE_ALLIES", 32 | "x" : 24.9, 33 | "y" : 25 34 | } 35 | ], 36 | "items" : [ 37 | { 38 | "name" : "package", 39 | "number" : 6, 40 | "type" : "smallCrate", 41 | "x" : 25, 42 | "y" : 25, 43 | "scatter" : 5000, 44 | "flags" : "+EF_MISSION_TARGET" 45 | } 46 | ], 47 | "script" : [ 48 | { 49 | "function" : "TIME 1", 50 | "lines" : [ 51 | "MSG_BOX Wingmate;Not expecting any company, Carr, so this should just be a routine pickup. We'll keep an eye out, though." 52 | ] 53 | } 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /data/missions/iliad/02 - iliad defence #2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Iliad Defence #2", 3 | "description" : "The Pandoran war machine has commenced its advancement beyond Mitikas space. We must prepare to defend Iliad from this powerful foe. Exercise caution: despite outnumbering the enemy units that have entered our space, the Pandorans are said to be relentless in battle, and this small number could well still test us.", 4 | "requires" : 18, 5 | "background" : "gfx/backgrounds/background01.jpg", 6 | "planet" : "gfx/planets/diso.png", 7 | "music" : "music/battle/Tactical Pursuit.mp3", 8 | "epic" : { 9 | "fighterLimit" : 12, 10 | "lives" : 12 11 | }, 12 | "objectives" : [ 13 | { 14 | "description" : "Destroy all enemy targets", 15 | "targetName" : "ENEMY", 16 | "targetValue" : 1, 17 | "targetType" : "TT_DESTROY", 18 | "isEliminateAll" : 1 19 | } 20 | ], 21 | "player" : { 22 | "type" : "Firefly", 23 | "side" : "SIDE_ALLIES", 24 | "pilot" : "(Multiple)", 25 | "squadron" : "(Multiple)" 26 | }, 27 | "fighters" : [ 28 | { 29 | "types" : "Firefly;Nymph;Hyena-B", 30 | "side" : "SIDE_ALLIES", 31 | "x" : 25, 32 | "y" : 24, 33 | "number" : 75, 34 | "scatter" : 5000 35 | }, 36 | { 37 | "types" : "Jackal", 38 | "side" : "SIDE_PANDORAN", 39 | "x" : 35, 40 | "y" : 30, 41 | "number" : 50, 42 | "scatter" : 5000 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/missions/sol/01 - free flight.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Free Flight", 3 | "description" : "A simple test flight. Get used to piloting your fighter, without threat of attack or any other dangers to face. There are no objectives to complete in this mission, so you may quit it at any time and move on to the next one.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "player" : { 8 | "type" : "TAF", 9 | "side" : "SIDE_ALLIES", 10 | "pilot" : "2nd Lt. Jim Goddard", 11 | "squadron" : "Midnight Runners" 12 | }, 13 | "script" : [ 14 | { 15 | "function" : "TIME 1", 16 | "lines" : [ 17 | "MSG_BOX Earth Orbital #1;Welcome to free flight.", 18 | "MSG_BOX Earth Orbital #1;Practice turning, accelerating, and braking.", 19 | "MSG_BOX Earth Orbital #1;Don't forget about your Boost, either. That can be a life saver in certain situations." 20 | ] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /data/missions/sol/02 - weapons.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Weapons Training", 3 | "description" : "Practice using your fighter's weapons against a stationary target.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Destroy Dart", 10 | "targetName" : "Dart", 11 | "targetValue" : 1, 12 | "targetType" : "TT_DESTROY" 13 | } 14 | ], 15 | "player" : { 16 | "type" : "TAF", 17 | "side" : "SIDE_ALLIES", 18 | "pilot" : "2nd Lt. Jim Goddard", 19 | "squadron" : "Midnight Runners" 20 | }, 21 | "fighters" : [ 22 | { 23 | "name" : "Dart", 24 | "types" : "Static Dart", 25 | "side" : "SIDE_PIRATE", 26 | "x" : 25.5, 27 | "y" : 24.5 28 | } 29 | ], 30 | "script" : [ 31 | { 32 | "function" : "TIME 1", 33 | "lines" : [ 34 | "MSG_BOX Earth Orbital #1;The Dart won't attack you, so when you're ready, you can blow the thing to pieces." 35 | ] 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /data/missions/sol/03 - moving target.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Moving Target", 3 | "description" : "Most targets you face in the field will be moving. This course gives you the chance to practice taking down an enemy that moves around.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Eliminate Dart", 10 | "targetName" : "Dart", 11 | "targetValue" : 1, 12 | "targetType" : "TT_DESTROY" 13 | } 14 | ], 15 | "player" : { 16 | "type" : "TAF", 17 | "side" : "SIDE_ALLIES", 18 | "pilot" : "2nd Lt. Jim Goddard", 19 | "squadron" : "Midnight Runners" 20 | }, 21 | "fighters" : [ 22 | { 23 | "name" : "Dart", 24 | "types" : "Unarmed Dart", 25 | "side" : "SIDE_PIRATE", 26 | "x" : 25, 27 | "y" : 24, 28 | "aiFlags" : "+AIF_DEFENSIVE" 29 | } 30 | ], 31 | "script" : [ 32 | { 33 | "function" : "TIME 1", 34 | "lines" : [ 35 | "MSG_BOX Earth Orbital #1;This Dart has control over its engines, but not its weapons. Practice chasing it down and destroying it." 36 | ] 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /data/missions/sol/04 - armed target.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Active Target", 3 | "description" : "Face off against an opponent that is armed. The enemy in this course is a Dart, kitted out with twin particle cannons. It shouldn't prove too difficult a challenge.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Eliminate Dart", 10 | "targetName" : "Dart", 11 | "targetValue" : 1, 12 | "targetType" : "TT_DESTROY" 13 | } 14 | ], 15 | "player" : { 16 | "type" : "TAF", 17 | "side" : "SIDE_ALLIES", 18 | "pilot" : "2nd Lt. Jim Goddard", 19 | "squadron" : "Midnight Runners" 20 | }, 21 | "fighters" : [ 22 | { 23 | "name" : "Dart", 24 | "types" : "Cannon Dart", 25 | "side" : "SIDE_PIRATE", 26 | "x" : 25, 27 | "y" : 24 28 | } 29 | ], 30 | "script" : [ 31 | { 32 | "function" : "TIME 1", 33 | "lines" : [ 34 | "MSG_BOX Earth Orbital #1;This Dart is armed! Watch yourself." 35 | ] 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /data/missions/sol/05 - ecm.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "ECM Training", 3 | "description" : "Practice using your ECM in the next encounter. The Dart here is equipped with missiles, which will home in on you. You can thwart these attacks by careful use of your ECM. Once you are done practicing, you can destroy the Dart and move on.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Eliminate Dart", 10 | "targetName" : "Dart", 11 | "targetValue" : 1, 12 | "targetType" : "TT_DESTROY" 13 | } 14 | ], 15 | "player" : { 16 | "type" : "TAF", 17 | "side" : "SIDE_ALLIES", 18 | "pilot" : "2nd Lt. Jim Goddard", 19 | "squadron" : "Midnight Runners" 20 | }, 21 | "fighters" : [ 22 | { 23 | "name" : "Dart", 24 | "types" : "Missile Dart", 25 | "side" : "SIDE_PIRATE", 26 | "x" : 25, 27 | "y" : 24 28 | } 29 | ], 30 | "script" : [ 31 | { 32 | "function" : "TIME 1", 33 | "lines" : [ 34 | "MSG_BOX Earth Orbital #1;Use your ECM to destroy the missiles fired at you. Remember, the ECM needs several seconds to recharge between uses." 35 | ] 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /data/missions/sol/06 - mag.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Mag Cannon Training", 3 | "description" : "Use your mag cannons to disable the enemy Dart. Disabling enemy craft and bringing the target in alive is sometimes an important step in securing lasting victory.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Disable Dart", 10 | "targetName" : "Dart", 11 | "targetValue" : 1, 12 | "targetType" : "TT_DISABLE" 13 | }, 14 | { 15 | "description" : "Do not destroy Dart", 16 | "targetName" : "Dart", 17 | "targetValue" : 1, 18 | "targetType" : "TT_DESTROY", 19 | "isCondition" : 1 20 | } 21 | ], 22 | "player" : { 23 | "type" : "Ray", 24 | "side" : "SIDE_ALLIES", 25 | "pilot" : "2nd Lt. Jim Goddard", 26 | "squadron" : "Midnight Runners" 27 | }, 28 | "fighters" : [ 29 | { 30 | "name" : "Dart", 31 | "types" : "Cannon Dart", 32 | "side" : "SIDE_PIRATE", 33 | "x" : 25, 34 | "y" : 24 35 | } 36 | ], 37 | "script" : [ 38 | { 39 | "function" : "TIME 1", 40 | "lines" : [ 41 | "MSG_BOX Earth Orbital #1;Switch to your Mag cannons and fire them at the Dart to disable it. Do not fire your plasma cannons or launch any missiles, as these could destroy the target." 42 | ] 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/missions/sol/07 - wingmates.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Wingmates", 3 | "description" : "Battle along side two team mates to take on 3 enemy fighters.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Eliminate Darts", 10 | "targetName" : "Dart", 11 | "targetValue" : 3, 12 | "targetType" : "TT_DESTROY" 13 | } 14 | ], 15 | "player" : { 16 | "type" : "TAF", 17 | "side" : "SIDE_ALLIES", 18 | "pilot" : "2nd Lt. Jim Goddard", 19 | "squadron" : "Midnight Runners" 20 | }, 21 | "fighters" : [ 22 | { 23 | "name" : "TAF", 24 | "types" : "TAF", 25 | "side" : "SIDE_ALLIES", 26 | "x" : 24.9, 27 | "y" : 25.5 28 | }, 29 | { 30 | "name" : "TAF", 31 | "types" : "TAF", 32 | "side" : "SIDE_ALLIES", 33 | "x" : 25.1, 34 | "y" : 25.5 35 | }, 36 | { 37 | "name" : "Dart", 38 | "types" : "Simple Dart", 39 | "side" : "SIDE_PIRATE", 40 | "number" : 3, 41 | "x" : 26, 42 | "y" : 20 43 | } 44 | ], 45 | "script" : [ 46 | { 47 | "function" : "TIME 1", 48 | "lines" : [ 49 | "MSG_BOX Earth Orbital #1;Wingmate will often assist you in battle. When you're ready, approach the Darts and engage." 50 | ] 51 | } 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /data/missions/sol/08 - final.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "3 Against 1", 3 | "description" : "Take on three enemy targets single handedly. Once again, these are Darts equipped with simple particle cannons. A single TAF should not find itself outclassed here, so long as the enemy are not allowed to gain the upper hand.", 4 | "background" : "gfx/backgrounds/background03.jpg", 5 | "planet" : "gfx/planets/earth.png", 6 | "music" : "music/battle/Battle in the winter.mp3", 7 | "objectives" : [ 8 | { 9 | "description" : "Eliminate Darts", 10 | "targetName" : "Dart", 11 | "targetValue" : 3, 12 | "targetType" : "TT_DESTROY" 13 | } 14 | ], 15 | "player" : { 16 | "type" : "TAF", 17 | "side" : "SIDE_ALLIES", 18 | "pilot" : "2nd Lt. Jim Goddard", 19 | "squadron" : "Midnight Runners" 20 | }, 21 | "fighters" : [ 22 | { 23 | "name" : "Dart", 24 | "types" : "Simple Dart", 25 | "side" : "SIDE_PIRATE", 26 | "number" : 3, 27 | "x" : 26, 28 | "y" : 20 29 | } 30 | ], 31 | "script" : [ 32 | { 33 | "function" : "TIME 1", 34 | "lines" : [ 35 | "MSG_BOX Earth Orbital #1;Final course. Use all your training to defeat the three opponents." 36 | ] 37 | } 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /data/turrets/plasmaTurret.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Plasma Turret", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 150, 6 | "shield" : 25, 7 | "speed" : 0, 8 | "reloadTime" : 16, 9 | "shieldRechargeRate" : 10, 10 | "texture" : "gfx/cannons/plasmaTurret.png", 11 | "deathType" : "DT_NO_SPIN", 12 | "guns" : [ 13 | { 14 | "type" : "BT_PLASMA", 15 | "x" : 0, 16 | "y" : 0 17 | }, 18 | { 19 | "type" : "BT_PLASMA", 20 | "x" : -8, 21 | "y" : -4 22 | }, 23 | { 24 | "type" : "BT_PLASMA", 25 | "x" : 8, 26 | "y" : -4 27 | } 28 | ], 29 | "flags" : "EF_TAKES_DAMAGE", 30 | "aiFlags" : "AIF_AGGRESSIVE+AIF_LONG_RANGE_FIRE" 31 | } 32 | -------------------------------------------------------------------------------- /data/turrets/rapidPlasmaTurret.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Rapid Plasma Turret", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 150, 6 | "shield" : 25, 7 | "speed" : 0, 8 | "reloadTime" : 8, 9 | "shieldRechargeRate" : 10, 10 | "texture" : "gfx/cannons/singlePlasmaTurret.png", 11 | "deathType" : "DT_NO_SPIN", 12 | "guns" : [ 13 | { 14 | "type" : "BT_PLASMA", 15 | "x" : 0, 16 | "y" : 0 17 | } 18 | ], 19 | "flags" : "EF_TAKES_DAMAGE", 20 | "aiFlags" : "AIF_AGGRESSIVE+AIF_LONG_RANGE_FIRE" 21 | } 22 | -------------------------------------------------------------------------------- /data/turrets/rocketTurret.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "Rocket Turret", 3 | "description" : "", 4 | "affiliation" : "", 5 | "health" : 125, 6 | "shield" : 25, 7 | "speed" : 0, 8 | "reloadTime" : 8, 9 | "shieldRechargeRate" : 30, 10 | "texture" : "gfx/cannons/rocketTurret.png", 11 | "deathType" : "DT_NO_SPIN", 12 | "guns" : [ 13 | { 14 | "type" : "BT_ROCKET", 15 | "x" : 0, 16 | "y" : 0 17 | } 18 | ], 19 | "flags" : "EF_TAKES_DAMAGE", 20 | "aiFlags" : "AIF_MISSILE_BOAT+AIF_AGGRESSIVE+AIF_LONG_RANGE_FIRE" 21 | } 22 | -------------------------------------------------------------------------------- /data/widgets/battleLost.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "retry", 4 | "group" : "battleLost", 5 | "type" : "WT_BUTTON", 6 | "text" : "Retry", 7 | "x" : 490, 8 | "y" : 680, 9 | "w" : 150, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "quit", 14 | "group" : "battleLost", 15 | "type" : "WT_BUTTON", 16 | "text" : "Quit", 17 | "x" : 790, 18 | "y" : 680, 19 | "w" : 150, 20 | "h": 34 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /data/widgets/battleWon.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "continue", 4 | "group" : "battleWon", 5 | "type" : "WT_BUTTON", 6 | "text" : "Continue", 7 | "x" : 490, 8 | "y" : 680, 9 | "w" : 150, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "retry", 14 | "group" : "battleWon", 15 | "type" : "WT_BUTTON", 16 | "text" : "Retry", 17 | "x" : 790, 18 | "y" : 680, 19 | "w" : 150, 20 | "h": 34 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /data/widgets/challenges.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "resume", 4 | "group" : "challengesMenu", 5 | "type" : "WT_BUTTON", 6 | "text" : "Resume", 7 | "x" : -1, 8 | "y" : 170, 9 | "w" : 200, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "stats", 14 | "group" : "challengesMenu", 15 | "type" : "WT_BUTTON", 16 | "text" : "Stats", 17 | "x" : -1, 18 | "y" : 250, 19 | "w" : 200, 20 | "h": 34 21 | }, 22 | { 23 | "name" : "fighterDB", 24 | "group" : "challengesMenu", 25 | "type" : "WT_BUTTON", 26 | "text" : "Fighter Database", 27 | "x" : -1, 28 | "y" : 330, 29 | "w" : 200, 30 | "h": 34 31 | }, 32 | { 33 | "name" : "trophies", 34 | "group" : "challengesMenu", 35 | "type" : "WT_BUTTON", 36 | "text" : "Trophies", 37 | "x" : -1, 38 | "y" : 410, 39 | "w" : 200, 40 | "h": 34 41 | }, 42 | { 43 | "name" : "options", 44 | "group" : "challengesMenu", 45 | "type" : "WT_BUTTON", 46 | "text" : "Options", 47 | "x" : -1, 48 | "y" : 490, 49 | "w" : 200, 50 | "h": 34 51 | }, 52 | { 53 | "name" : "quit", 54 | "group" : "challengesMenu", 55 | "type" : "WT_BUTTON", 56 | "text" : "Return to Title", 57 | "x" : -1, 58 | "y" : 570, 59 | "w" : 200, 60 | "h": 34 61 | }, 62 | { 63 | "name" : "start", 64 | "group" : "challenges", 65 | "type" : "WT_BUTTON", 66 | "text" : "Start Challenge Mission", 67 | "x" : -1, 68 | "y" : 680, 69 | "w" : 250, 70 | "h": 34 71 | }, 72 | { 73 | "name" : "prev", 74 | "group" : "challenges", 75 | "type" : "WT_IMG_BUTTON", 76 | "x" : 540, 77 | "y" : 110, 78 | "w" : 150, 79 | "h": 34, 80 | "texture" : "gfx/widgets/optionsLeft.png" 81 | }, 82 | { 83 | "name" : "next", 84 | "group" : "challenges", 85 | "type" : "WT_IMG_BUTTON", 86 | "x" : 720, 87 | "y" : 110, 88 | "w" : 150, 89 | "h": 34, 90 | "texture" : "gfx/widgets/optionsRight.png" 91 | } 92 | ] 93 | -------------------------------------------------------------------------------- /data/widgets/fighterDB.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "prev", 4 | "group" : "fighterDB", 5 | "type" : "WT_IMG_BUTTON", 6 | "x" : 500, 7 | "y" : 138, 8 | "w" : 150, 9 | "h": 34, 10 | "texture" : "gfx/widgets/optionsLeft.png" 11 | }, 12 | { 13 | "name" : "next", 14 | "group" : "fighterDB", 15 | "type" : "WT_IMG_BUTTON", 16 | "x" : 760, 17 | "y" : 138, 18 | "w" : 150, 19 | "h": 34, 20 | "texture" : "gfx/widgets/optionsRight.png" 21 | }, 22 | { 23 | "name" : "ok", 24 | "group" : "fighterDB", 25 | "type" : "WT_BUTTON", 26 | "text" : "OK", 27 | "x" : 640, 28 | "y" : 660, 29 | "w" : 150, 30 | "h": 34 31 | } 32 | ] 33 | -------------------------------------------------------------------------------- /data/widgets/galacticMap.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "resume", 4 | "group" : "galacticMap", 5 | "type" : "WT_BUTTON", 6 | "text" : "Resume", 7 | "x" : -1, 8 | "y" : 170, 9 | "w" : 200, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "stats", 14 | "group" : "galacticMap", 15 | "type" : "WT_BUTTON", 16 | "text" : "Stats", 17 | "x" : -1, 18 | "y" : 250, 19 | "w" : 200, 20 | "h": 34 21 | }, 22 | { 23 | "name" : "fighterDB", 24 | "group" : "galacticMap", 25 | "type" : "WT_BUTTON", 26 | "text" : "Fighter Database", 27 | "x" : -1, 28 | "y" : 330, 29 | "w" : 200, 30 | "h": 34 31 | }, 32 | { 33 | "name" : "trophies", 34 | "group" : "galacticMap", 35 | "type" : "WT_BUTTON", 36 | "text" : "Trophies", 37 | "x" : -1, 38 | "y" : 410, 39 | "w" : 200, 40 | "h": 34 41 | }, 42 | { 43 | "name" : "options", 44 | "group" : "galacticMap", 45 | "type" : "WT_BUTTON", 46 | "text" : "Options", 47 | "x" : -1, 48 | "y" : 490, 49 | "w" : 200, 50 | "h": 34 51 | }, 52 | { 53 | "name" : "quit", 54 | "group" : "galacticMap", 55 | "type" : "WT_BUTTON", 56 | "text" : "Return to Title", 57 | "x" : -1, 58 | "y" : 570, 59 | "w" : 200, 60 | "h": 34 61 | }, 62 | { 63 | "name" : "ok", 64 | "group" : "fallen", 65 | "type" : "WT_BUTTON", 66 | "text" : "OK", 67 | "x" : -1, 68 | "y" : 400, 69 | "w" : 200, 70 | "h": 34 71 | } 72 | ] 73 | -------------------------------------------------------------------------------- /data/widgets/inBattle.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "resume", 4 | "group" : "inBattle", 5 | "type" : "WT_BUTTON", 6 | "text" : "Resume", 7 | "x" : -1, 8 | "y" : 215, 9 | "w" : 200, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "options", 14 | "group" : "inBattle", 15 | "type" : "WT_BUTTON", 16 | "text" : "Options", 17 | "x" : -1, 18 | "y" : 315, 19 | "w" : 200, 20 | "h": 34 21 | }, 22 | { 23 | "name" : "restart", 24 | "group" : "inBattle", 25 | "type" : "WT_BUTTON", 26 | "text" : "Restart", 27 | "x" : -1, 28 | "y" : 415, 29 | "w" : 200, 30 | "h": 34 31 | }, 32 | { 33 | "name" : "quit", 34 | "group" : "inBattle", 35 | "type" : "WT_BUTTON", 36 | "text" : "Quit", 37 | "x" : -1, 38 | "y" : 515, 39 | "w" : 200, 40 | "h": 34 41 | } 42 | 43 | ] 44 | -------------------------------------------------------------------------------- /data/widgets/modal.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "ok", 4 | "group" : "ok", 5 | "type" : "WT_BUTTON", 6 | "text" : "OK", 7 | "x" : -1, 8 | "y" : 680, 9 | "w" : 150, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "ok", 14 | "group" : "okCancel", 15 | "type" : "WT_BUTTON", 16 | "text" : "OK", 17 | "x" : 530, 18 | "y" : 680, 19 | "w" : 150, 20 | "h": 34 21 | }, 22 | { 23 | "name" : "cancel", 24 | "group" : "okCancel", 25 | "type" : "WT_BUTTON", 26 | "text" : "Cancel", 27 | "x" : 730, 28 | "y" : 680, 29 | "w" : 150, 30 | "h": 34 31 | } 32 | ] 33 | -------------------------------------------------------------------------------- /data/widgets/options.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "windowSize", 4 | "group" : "options", 5 | "type" : "WT_SELECT", 6 | "text" : "Window Size", 7 | "options" : "1280 x 720;1600 x 900;1920 x 1080;2560 x 1440;3840 x 2160;", 8 | "x" : -1, 9 | "y" : 175, 10 | "w" : 400, 11 | "h": 34 12 | }, 13 | { 14 | "name" : "soundVolume", 15 | "group" : "options", 16 | "type" : "WT_SELECT", 17 | "text" : "Sound Volume", 18 | "options" : "0;1;2;3;4;5;6;7;8;9;10", 19 | "x" : -1, 20 | "y" : 250, 21 | "w" : 400, 22 | "h": 34 23 | }, 24 | { 25 | "name" : "musicVolume", 26 | "group" : "options", 27 | "type" : "WT_SELECT", 28 | "text" : "Music Volume", 29 | "options" : "0;1;2;3;4;5;6;7;8;9;10", 30 | "x" : -1, 31 | "y" : 325, 32 | "w" : 400, 33 | "h": 34 34 | }, 35 | { 36 | "name" : "fullscreen", 37 | "group" : "options", 38 | "type" : "WT_SELECT", 39 | "text" : "Fullscreen", 40 | "options" : "Off;On", 41 | "x" : -1, 42 | "y" : 400, 43 | "w" : 400, 44 | "h": 34 45 | }, 46 | { 47 | "name" : "controls", 48 | "group" : "options", 49 | "type" : "WT_BUTTON", 50 | "text" : "Controls ...", 51 | "x" : -1, 52 | "y" : 475, 53 | "w" : 400, 54 | "h": 34 55 | }, 56 | { 57 | "name" : "ok", 58 | "group" : "options", 59 | "type" : "WT_BUTTON", 60 | "text" : "OK", 61 | "x" : -1, 62 | "y" : 625, 63 | "w" : 100, 64 | "h": 34 65 | } 66 | ] 67 | -------------------------------------------------------------------------------- /data/widgets/starSystem.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "startMission", 4 | "group" : "starSystem", 5 | "type" : "WT_BUTTON", 6 | "text" : "Start Mission", 7 | "x" : 350, 8 | "y" : 635, 9 | "w" : 280, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "close", 14 | "group" : "starSystem", 15 | "type" : "WT_IMG_BUTTON", 16 | "text" : "X", 17 | "x" : 1040, 18 | "y" : 75, 19 | "w" : 32, 20 | "h": 32, 21 | "texture" : "gfx/widgets/close.png" 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /data/widgets/startBattle.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "ok", 4 | "group" : "startBattle", 5 | "type" : "WT_BUTTON", 6 | "text" : "OK", 7 | "x" : 640, 8 | "y" : 680, 9 | "w" : 150, 10 | "h": 34 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /data/widgets/stats.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "prev", 4 | "group" : "stats", 5 | "type" : "WT_IMG_BUTTON", 6 | "x" : 540, 7 | "y" : 110, 8 | "w" : 150, 9 | "h": 34, 10 | "texture" : "gfx/widgets/optionsLeft.png" 11 | }, 12 | { 13 | "name" : "next", 14 | "group" : "stats", 15 | "type" : "WT_IMG_BUTTON", 16 | "x" : 720, 17 | "y" : 110, 18 | "w" : 150, 19 | "h": 34, 20 | "texture" : "gfx/widgets/optionsRight.png" 21 | }, 22 | { 23 | "name" : "ok", 24 | "group" : "stats", 25 | "type" : "WT_BUTTON", 26 | "text" : "OK", 27 | "x" : 640, 28 | "y" : 635, 29 | "w" : 150, 30 | "h": 34 31 | } 32 | ] 33 | -------------------------------------------------------------------------------- /data/widgets/title.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "campaign", 4 | "group" : "title", 5 | "type" : "WT_BUTTON", 6 | "text" : "Campaign", 7 | "x" : -1, 8 | "y" : 200, 9 | "w" : 200, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "challenges", 14 | "group" : "title", 15 | "type" : "WT_BUTTON", 16 | "text" : "Challenges", 17 | "x" : -1, 18 | "y" : 265, 19 | "w" : 200, 20 | "h": 34 21 | }, 22 | { 23 | "name" : "trophies", 24 | "group" : "title", 25 | "type" : "WT_BUTTON", 26 | "text" : "Trophies", 27 | "x" : -1, 28 | "y" : 330, 29 | "w" : 200, 30 | "h": 34 31 | }, 32 | { 33 | "name" : "stats", 34 | "group" : "title", 35 | "type" : "WT_BUTTON", 36 | "text" : "Stats", 37 | "x" : -1, 38 | "y" : 395, 39 | "w" : 200, 40 | "h": 34 41 | }, 42 | { 43 | "name" : "fighterDB", 44 | "group" : "title", 45 | "type" : "WT_BUTTON", 46 | "text" : "Fighter Database", 47 | "x" : -1, 48 | "y" : 460, 49 | "w" : 200, 50 | "h": 34 51 | }, 52 | { 53 | "name" : "options", 54 | "group" : "title", 55 | "type" : "WT_BUTTON", 56 | "text" : "Options", 57 | "x" : -1, 58 | "y" : 525, 59 | "w" : 200, 60 | "h": 34 61 | }, 62 | { 63 | "name" : "credits", 64 | "group" : "title", 65 | "type" : "WT_BUTTON", 66 | "text" : "Credits", 67 | "x" : -1, 68 | "y" : 590, 69 | "w" : 200, 70 | "h": 34 71 | }, 72 | { 73 | "name" : "quit", 74 | "group" : "title", 75 | "type" : "WT_BUTTON", 76 | "text" : "Quit", 77 | "x" : -1, 78 | "y" : 655, 79 | "w" : 200, 80 | "h": 34 81 | } 82 | ] 83 | -------------------------------------------------------------------------------- /data/widgets/trophies.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name" : "ok", 4 | "group" : "trophies", 5 | "type" : "WT_BUTTON", 6 | "text" : "OK", 7 | "x" : -1, 8 | "y" : 665, 9 | "w" : 150, 10 | "h": 34 11 | }, 12 | { 13 | "name" : "prev", 14 | "group" : "trophies", 15 | "type" : "WT_IMG_BUTTON", 16 | "x" : 540, 17 | "y" : 110, 18 | "w" : 150, 19 | "h": 34, 20 | "texture" : "gfx/widgets/optionsLeft.png" 21 | }, 22 | { 23 | "name" : "next", 24 | "group" : "trophies", 25 | "type" : "WT_IMG_BUTTON", 26 | "x" : 720, 27 | "y" : 110, 28 | "w" : 150, 29 | "h": 34, 30 | "texture" : "gfx/widgets/optionsRight.png" 31 | } 32 | ] 33 | -------------------------------------------------------------------------------- /dev/screenshots/v0.1-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.1-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.1-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.1-02.png -------------------------------------------------------------------------------- /dev/screenshots/v0.2-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.2-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.4-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.4-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.4-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.4-03.png -------------------------------------------------------------------------------- /dev/screenshots/v0.5-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.5-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.5-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.5-02.png -------------------------------------------------------------------------------- /dev/screenshots/v0.5-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.5-03.png -------------------------------------------------------------------------------- /dev/screenshots/v0.5-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.5-04.png -------------------------------------------------------------------------------- /dev/screenshots/v0.6-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.6-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.6-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.6-02.png -------------------------------------------------------------------------------- /dev/screenshots/v0.6-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.6-03.png -------------------------------------------------------------------------------- /dev/screenshots/v0.6-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.6-04.png -------------------------------------------------------------------------------- /dev/screenshots/v0.6-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.6-05.png -------------------------------------------------------------------------------- /dev/screenshots/v0.6-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.6-06.png -------------------------------------------------------------------------------- /dev/screenshots/v0.7-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.7-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.7-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.7-02.png -------------------------------------------------------------------------------- /dev/screenshots/v0.7-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.7-03.png -------------------------------------------------------------------------------- /dev/screenshots/v0.7-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.7-04.png -------------------------------------------------------------------------------- /dev/screenshots/v0.7-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.7-05.png -------------------------------------------------------------------------------- /dev/screenshots/v0.7-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.7-06.png -------------------------------------------------------------------------------- /dev/screenshots/v0.8-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.8-01.png -------------------------------------------------------------------------------- /dev/screenshots/v0.8-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.8-02.png -------------------------------------------------------------------------------- /dev/screenshots/v0.8-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.8-03.png -------------------------------------------------------------------------------- /dev/screenshots/v0.8-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v0.8-04.png -------------------------------------------------------------------------------- /dev/screenshots/v1.4.03-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v1.4.03-01.png -------------------------------------------------------------------------------- /dev/screenshots/v1.4.03-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/dev/screenshots/v1.4.03-02.png -------------------------------------------------------------------------------- /dev/stats.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | STATS_FILE="STATS.md" 4 | 5 | cd .. 6 | 7 | SRC_SIZE=`du -bsh src | awk '{print $1}'` 8 | DATA_SIZE=`du -bsh data | awk '{print $1}'` 9 | GFX_SIZE=`du -bsh gfx | awk '{print $1}'` 10 | SND_SIZE=`du -bsh sound | awk '{print $1}'` 11 | MUSIC_SIZE=`du -bsh music | awk '{print $1}'` 12 | 13 | SRC_LINES=`find src -name *.c | xargs wc -l | grep total | awk '{print $1}'` 14 | 15 | NUM_MISSIONS=`find data/missions -iname *.json | wc -l` 16 | NUM_CHALLENGES=`find data -name '*.json' -print0 | xargs -0 cat | grep "\"type\" : \"CHALLENGE_" | wc -l` 17 | NUM_TROPHIES=`cat data/trophies/trophies.json | grep \"description\" | wc -l` 18 | 19 | NUM_CRAFT=`find data/craft/* | wc -l` 20 | NUM_FIGHTERS=`find data/fighters/* | wc -l` 21 | NUM_GUNS=`find data/turrets/* | wc -l` 22 | NUM_CAPS=`find data/capitalShips/* | wc -l` 23 | TOTAL_CRAFT=$(($NUM_CRAFT + $NUM_FIGHTERS + $NUM_GUNS + $NUM_CAPS)) 24 | 25 | REVISIONS=`git rev-list --all --count` 26 | 27 | LOCALE=`cat locale/tbftss.pot | grep msgid | wc -l` 28 | 29 | echo "# Statistics" > $STATS_FILE 30 | echo "" >> $STATS_FILE 31 | 32 | echo "* Lines of code: $SRC_LINES" >> $STATS_FILE 33 | echo "* Size of source: $SRC_SIZE" >> $STATS_FILE 34 | echo "* Size of data: $DATA_SIZE" >> $STATS_FILE 35 | echo "* Size of graphics: $GFX_SIZE" >> $STATS_FILE 36 | echo "* Size of sound: $SND_SIZE" >> $STATS_FILE 37 | echo "* Size of music: $MUSIC_SIZE" >> $STATS_FILE 38 | echo "" >> $STATS_FILE 39 | 40 | echo "* Number of missions: $NUM_MISSIONS (inc. optional)" >> $STATS_FILE 41 | echo "* Number of challenges: $NUM_CHALLENGES" >> $STATS_FILE 42 | echo "* Number of spacecraft: $TOTAL_CRAFT" >> $STATS_FILE 43 | echo "* Number of trophies: $NUM_TROPHIES" >> $STATS_FILE 44 | echo "" >> $STATS_FILE 45 | 46 | echo "* Translatable strings: $LOCALE" >> $STATS_FILE 47 | echo "" >> $STATS_FILE 48 | 49 | echo "* Number of GIT revisions: $REVISIONS" >> $STATS_FILE 50 | -------------------------------------------------------------------------------- /gfx/atlas/atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/atlas/atlas.png -------------------------------------------------------------------------------- /gfx/backgrounds/background01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/backgrounds/background01.jpg -------------------------------------------------------------------------------- /gfx/backgrounds/background02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/backgrounds/background02.jpg -------------------------------------------------------------------------------- /gfx/backgrounds/background03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/backgrounds/background03.jpg -------------------------------------------------------------------------------- /gfx/backgrounds/background04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/backgrounds/background04.jpg -------------------------------------------------------------------------------- /gfx/backgrounds/background05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/backgrounds/background05.jpg -------------------------------------------------------------------------------- /gfx/backgrounds/background06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/backgrounds/background06.jpg -------------------------------------------------------------------------------- /gfx/by-nc-sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/gfx/by-nc-sa.png -------------------------------------------------------------------------------- /icons/tbftss-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/icons/tbftss-128x128.png -------------------------------------------------------------------------------- /icons/tbftss-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/icons/tbftss-16x16.png -------------------------------------------------------------------------------- /icons/tbftss-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/icons/tbftss-256x256.png -------------------------------------------------------------------------------- /icons/tbftss-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/icons/tbftss-32x32.png -------------------------------------------------------------------------------- /icons/tbftss-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/icons/tbftss-64x64.png -------------------------------------------------------------------------------- /icons/tbftss.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Encoding=UTF-8 3 | Categories=Game;ActionGame; 4 | Name=TBFTSS : The Pandoran War 5 | Comment=Mission and Objective based 2D Space Shooter 6 | Icon=tbftss 7 | Exec=tbftss 8 | Terminal=false 9 | Type=Application 10 | -------------------------------------------------------------------------------- /makefile.mac: -------------------------------------------------------------------------------- 1 | PROG = tbftss 2 | CC = gcc 3 | PREFIX ?= /usr 4 | BIN_DIR ?= $(PREFIX)/bin 5 | DATA_DIR ?= /opt/$(PROG) 6 | LOCALE_DIR = $(PREFIX)/share/locale 7 | 8 | SEARCHPATH += src/plat/unix 9 | _OBJS += unixInit.o 10 | 11 | include common.mk 12 | 13 | CXXFLAGS += `sdl2-config --cflags` -DVERSION=$(VERSION) -DREVISION=$(REVISION) -DDATA_DIR=\"$(DATA_DIR)\" -DLOCALE_DIR=\"$(LOCALE_DIR)\" 14 | CXXFLAGS += -ansi -pedantic 15 | CXXFLAGS += -g 16 | 17 | LDFLAGS += `sdl2-config --libs` -lSDL2_mixer -lSDL2_image -lSDL2_ttf -lm 18 | 19 | # linking the program. 20 | $(PROG): $(OBJS) 21 | $(CC) -o $@ $(OBJS) $(LDFLAGS) 22 | -------------------------------------------------------------------------------- /makefile.pandora: -------------------------------------------------------------------------------- 1 | PROG = tbftss 2 | CC = gcc 3 | BIN_DIR = /mnt/utmp/tbftss/bin 4 | DATA_DIR = /mnt/utmp/tbftss/data 5 | LOCALE_DIR = /usr/share/locale 6 | 7 | SEARCHPATH += src/plat/unix 8 | _OBJS += unixInit.o 9 | 10 | include common.mk 11 | 12 | CXXFLAGS += `sdl2-config --cflags` -DVERSION=$(VERSION) -DREVISION=$(REVISION) -DDATA_DIR=\"$(DATA_DIR)\" -DLOCALE_DIR=\"$(LOCALE_DIR)\" -DFIXED_RESOLUTION=1 13 | CXXFLAGS += -ansi 14 | CXXFLAGS += -g -lefence -flto -flto-odr-type-merging 15 | 16 | LDFLAGS += `sdl2-config --libs` -lSDL2_mixer -lSDL2_image -lSDL2_ttf -lm 17 | 18 | DIST_FILES = data gfx manual music sound src LICENSE makefile* common.mk README.md CHANGELOG 19 | 20 | # linking the program. 21 | $(PROG): $(OBJS) 22 | $(CC) -o $@ $(OBJS) $(LDFLAGS) 23 | 24 | install: 25 | cp $(PROG) $(BIN_DIR) 26 | mkdir -p $(DATA_DIR) 27 | cp -r data $(DATA_DIR) 28 | cp -r gfx $(DATA_DIR) 29 | cp -r manual $(DATA_DIR) 30 | cp -r music $(DATA_DIR) 31 | cp -r sound $(DATA_DIR) 32 | 33 | @for f in $(LOCALE_MO); do \ 34 | lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \ 35 | mkdir -p $(LOCALE_DIR)/$$lang/LC_MESSAGES; \ 36 | cp -v $$f $(LOCALE_DIR)/$$lang/LC_MESSAGES/$(PROG).mo; \ 37 | done 38 | 39 | uninstall: 40 | $(RM) $(BIN_DIR)/$(PROG) 41 | $(RM) -rf $(DATA_DIR) 42 | 43 | @for f in $(LOCALE_MO); do \ 44 | lang=`echo $$f | sed -e 's/^locale\///;s/\.mo$$//'`; \ 45 | $(RM) -v $(LOCALE_DIR)/$$lang/LC_MESSAGES/$(PROG).mo; \ 46 | done 47 | 48 | .PHONY: dist 49 | -------------------------------------------------------------------------------- /makefile.win32: -------------------------------------------------------------------------------- 1 | PROG = tbftss.exe 2 | CC = x86_64-w64-mingw32-gcc 3 | SDLC = /usr/x86_64-w64-mingw32/bin/sdl2-config 4 | LIBPATH = /usr/x86_64-w64-mingw32/lib 5 | LOCALE_DIR = locale 6 | 7 | SEARCHPATH += src/plat/win32 8 | _OBJS += win32Init.o 9 | 10 | NPROCS = $(shell grep -c 'processor' /proc/cpuinfo) 11 | MAKEFLAGS += -j$(NPROCS) 12 | 13 | CXXFLAGS += `$(SDLC) --cflags` -DVERSION=$(VERSION) -DREVISION=$(REVISION) -DDATA_DIR=\"$(DATA_DIR)\" -DLOCALE_DIR=\"$(LOCALE_DIR)\" 14 | CXXFLAGS += -Wall -Wempty-body -ansi -pedantic -Werror -Wstrict-prototypes -Werror=maybe-uninitialized -Warray-bounds 15 | 16 | LDFLAGS += `$(SDLC) --libs` -lm -lSDL2_mixer -lSDL2_image -lSDL2_ttf -lSDL2main 17 | 18 | include common.mk 19 | 20 | # linking the program. 21 | $(PROG): $(OBJS) 22 | $(CC) -o $@ $(OBJS) $(LDFLAGS) -L$(LIBPATH) 23 | -------------------------------------------------------------------------------- /manual/background02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/background02.jpg -------------------------------------------------------------------------------- /manual/capitalShips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/capitalShips.png -------------------------------------------------------------------------------- /manual/challenges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/challenges.png -------------------------------------------------------------------------------- /manual/controls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/controls.png -------------------------------------------------------------------------------- /manual/fighterDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/fighterDB.png -------------------------------------------------------------------------------- /manual/galaxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/galaxy.png -------------------------------------------------------------------------------- /manual/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/logo.png -------------------------------------------------------------------------------- /manual/mission1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/mission1.png -------------------------------------------------------------------------------- /manual/mission2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/mission2.png -------------------------------------------------------------------------------- /manual/pandoran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/pandoran.png -------------------------------------------------------------------------------- /manual/starSystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/starSystem.png -------------------------------------------------------------------------------- /manual/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/title.png -------------------------------------------------------------------------------- /manual/trophies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/manual/trophies.png -------------------------------------------------------------------------------- /music/battle/Battle in the winter.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/Battle in the winter.mp3 -------------------------------------------------------------------------------- /music/battle/DST-RailJet-LongSeamlessLoop.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/DST-RailJet-LongSeamlessLoop.ogg -------------------------------------------------------------------------------- /music/battle/InnerCore_Low.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/InnerCore_Low.ogg -------------------------------------------------------------------------------- /music/battle/Showdown.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/Showdown.mp3 -------------------------------------------------------------------------------- /music/battle/Tactical Pursuit.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/Tactical Pursuit.mp3 -------------------------------------------------------------------------------- /music/battle/Vehicle - OGA - Col Legno.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/Vehicle - OGA - Col Legno.ogg -------------------------------------------------------------------------------- /music/battle/battleThemeA.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/battleThemeA.mp3 -------------------------------------------------------------------------------- /music/battle/determination.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/determination.mp3 -------------------------------------------------------------------------------- /music/battle/heroism.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/heroism.ogg -------------------------------------------------------------------------------- /music/battle/track-3.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/track-3.mp3 -------------------------------------------------------------------------------- /music/battle/track-4.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/battle/track-4.mp3 -------------------------------------------------------------------------------- /music/main/Her Violet Eyes.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/main/Her Violet Eyes.mp3 -------------------------------------------------------------------------------- /music/main/Pressure.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/main/Pressure.ogg -------------------------------------------------------------------------------- /music/main/Rise of spirit.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/main/Rise of spirit.ogg -------------------------------------------------------------------------------- /music/main/covert_operations.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/music/main/covert_operations.mp3 -------------------------------------------------------------------------------- /sound/000000_large_explosion.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/000000_large_explosion.ogg -------------------------------------------------------------------------------- /sound/000000_tow-rope-attach.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/000000_tow-rope-attach.ogg -------------------------------------------------------------------------------- /sound/107786__leviclaassen__beepbeep.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/107786__leviclaassen__beepbeep.ogg -------------------------------------------------------------------------------- /sound/146311__jgeralyn__shortailenliketone2-lower.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/146311__jgeralyn__shortailenliketone2-lower.ogg -------------------------------------------------------------------------------- /sound/146725__fins__laser.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/146725__fins__laser.ogg -------------------------------------------------------------------------------- /sound/154934__klawykogut__empty-gun-shot.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/154934__klawykogut__empty-gun-shot.ogg -------------------------------------------------------------------------------- /sound/162265__qubodup__explosive.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/162265__qubodup__explosive.ogg -------------------------------------------------------------------------------- /sound/172591__timbre__zapitydooda.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/172591__timbre__zapitydooda.ogg -------------------------------------------------------------------------------- /sound/172870__escortmarius__carbidexplosion.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/172870__escortmarius__carbidexplosion.ogg -------------------------------------------------------------------------------- /sound/178064__jorickhoofd__slam-door-shut.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/178064__jorickhoofd__slam-door-shut.ogg -------------------------------------------------------------------------------- /sound/18380__inferno__hvrl.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/18380__inferno__hvrl.ogg -------------------------------------------------------------------------------- /sound/18382__inferno__hvylas.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/18382__inferno__hvylas.ogg -------------------------------------------------------------------------------- /sound/207322__animationisaac__short-explosion.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/207322__animationisaac__short-explosion.ogg -------------------------------------------------------------------------------- /sound/242856__plasterbrain__nuclear-alarm.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/242856__plasterbrain__nuclear-alarm.ogg -------------------------------------------------------------------------------- /sound/246420__oceanictrancer__game-sound-effect-menu.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/246420__oceanictrancer__game-sound-effect-menu.ogg -------------------------------------------------------------------------------- /sound/249300__suntemple__access-denied.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/249300__suntemple__access-denied.ogg -------------------------------------------------------------------------------- /sound/251431__onlytheghosts__fusion-gun-flash0-by-onlytheghosts.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/251431__onlytheghosts__fusion-gun-flash0-by-onlytheghosts.ogg -------------------------------------------------------------------------------- /sound/254071__tb0y298__firework-explosion.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/254071__tb0y298__firework-explosion.ogg -------------------------------------------------------------------------------- /sound/254174__kwahmah-02__s.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/254174__kwahmah-02__s.ogg -------------------------------------------------------------------------------- /sound/255729__manholo__inception-stab-l.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/255729__manholo__inception-stab-l.ogg -------------------------------------------------------------------------------- /sound/257786__xtrgamr__mouse-click.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/257786__xtrgamr__mouse-click.ogg -------------------------------------------------------------------------------- /sound/268344__julien-matthey__jm-noiz-laser-01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/268344__julien-matthey__jm-noiz-laser-01.ogg -------------------------------------------------------------------------------- /sound/275151__bird-man__gun-shot.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/275151__bird-man__gun-shot.ogg -------------------------------------------------------------------------------- /sound/276912__pauldihor__transform.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/276912__pauldihor__transform.ogg -------------------------------------------------------------------------------- /sound/278142__ricemaster__effect-notify.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/278142__ricemaster__effect-notify.ogg -------------------------------------------------------------------------------- /sound/320181__dland__hint.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/320181__dland__hint.ogg -------------------------------------------------------------------------------- /sound/321104__nsstudios__blip2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/321104__nsstudios__blip2.ogg -------------------------------------------------------------------------------- /sound/321906__bruce965__walkie-talkie-roger-beep.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/321906__bruce965__walkie-talkie-roger-beep.ogg -------------------------------------------------------------------------------- /sound/322603__clippysounds__glass-break.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/322603__clippysounds__glass-break.ogg -------------------------------------------------------------------------------- /sound/329359__bassoonrckr__reed-guillotine.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/329359__bassoonrckr__reed-guillotine.ogg -------------------------------------------------------------------------------- /sound/33785__jobro__4-beep-b.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/33785__jobro__4-beep-b.ogg -------------------------------------------------------------------------------- /sound/39030__wildweasel__d1clsstf.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/39030__wildweasel__d1clsstf.ogg -------------------------------------------------------------------------------- /sound/42106__marcuslee__laser-wrath-4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/42106__marcuslee__laser-wrath-4.ogg -------------------------------------------------------------------------------- /sound/47252__nthompson__bad-explosion.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/47252__nthompson__bad-explosion.ogg -------------------------------------------------------------------------------- /sound/49678__ejfortin__energy-short-sword-7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/49678__ejfortin__energy-short-sword-7.ogg -------------------------------------------------------------------------------- /sound/56246__q-k__latch-04.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/56246__q-k__latch-04.ogg -------------------------------------------------------------------------------- /sound/62491__benboncan__dslr-click.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/62491__benboncan__dslr-click.ogg -------------------------------------------------------------------------------- /sound/65787__iwilldstroyu__laserrocket.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/65787__iwilldstroyu__laserrocket.ogg -------------------------------------------------------------------------------- /sound/77087__supraliminal__laser-short.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/77087__supraliminal__laser-short.ogg -------------------------------------------------------------------------------- /sound/88275__s-dij__gbc-reload-06.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stephenjsweeney/tbftss/79d1a78fe1f954a3534c013c237c9d5ccf4c44c7/sound/88275__s-dij__gbc-reload-06.ogg -------------------------------------------------------------------------------- /src/battle/ai.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void checkZackariaSuspicionLevel(void); 22 | void checkSuspicionLevel(void); 23 | void doAI(void); 24 | -------------------------------------------------------------------------------- /src/battle/battle.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyBattle(void); 22 | void initBattle(void); 23 | -------------------------------------------------------------------------------- /src/battle/bullets.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyBullets(void); 22 | void destroyBulletDefs(void); 23 | void fireMissile(Entity *owner); 24 | void fireRocket(Entity *owner); 25 | void fireGuns(Entity *owner); 26 | void drawBullets(void); 27 | void doBullets(void); 28 | void initBulletDefs(void); 29 | void initBullets(void); 30 | -------------------------------------------------------------------------------- /src/battle/capitalShips.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyCapitalShipDefs(void); 22 | void loadCapitalShips(struct cJSON *node); 23 | void updateCapitalShipComponentProperties(Entity *parent, long flags); 24 | void loadCapitalShipDefs(void); 25 | void doCapitalShip(void); 26 | Entity *spawnCapitalShip(char *name, int x, int y, int side); 27 | -------------------------------------------------------------------------------- /src/battle/debris.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyDebris(void); 22 | void drawDebris(void); 23 | void doDebris(void); 24 | void addDebris(int x, int y, int amount); 25 | void initDebris(void); 26 | -------------------------------------------------------------------------------- /src/battle/effects.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyEffects(void); 22 | void addECMEffect(Entity *ent); 23 | void addShieldSplinterEffect(Entity *ent); 24 | void addMissileEngineEffect(Bullet *b); 25 | void addLargeEngineEffect(void); 26 | void addEngineEffect(void); 27 | void addMissileExplosion(Bullet *b); 28 | void addLargeExplosion(void); 29 | void addMineExplosion(void); 30 | void addSmallExplosion(void); 31 | void addDebrisFire(int x, int y); 32 | void addSmallFighterExplosion(void); 33 | void addBulletHitEffect(int x, int y, int r, int g, int b); 34 | void drawShieldHitEffect(Entity *e); 35 | void drawEffects(void); 36 | void doEffects(void); 37 | void initEffects(void); 38 | -------------------------------------------------------------------------------- /src/battle/entities.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyEntities(void); 22 | void awardPandoranCraftTrophy(void); 23 | void updateEntitySide(char *sideStr, char *name); 24 | void killEntity(char *name); 25 | void addAllToQuadtree(void); 26 | void countNumEnemies(void); 27 | void activateEntityGroups(char *groupNames); 28 | void activateEntities(char *names); 29 | void drawEntities(void); 30 | void doEntities(void); 31 | Entity *spawnEntity(void); 32 | void initEntities(void); 33 | -------------------------------------------------------------------------------- /src/battle/fighters.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyFighterStats(void); 22 | void destroyFighterDefs(void); 23 | void loadFighters(struct cJSON *node); 24 | void loadFighterDefs(void); 25 | Entity **getDBFighters(int *num); 26 | void retreatAllies(void); 27 | void retreatEnemies(void); 28 | void damageFighter(Entity *e, int amount, long flags); 29 | void applyFighterBrakes(void); 30 | void applyFighterThrust(void); 31 | void doFighter(void); 32 | void resetFighter(Entity *fighter); 33 | Entity *spawnFighter(char *name, int x, int y, int side); 34 | -------------------------------------------------------------------------------- /src/battle/hud.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void resetHud(void); 22 | void drawHud(void); 23 | void addHudMessage(SDL_Color c, char *format, ...); 24 | void doHud(void); 25 | void initHud(void); 26 | -------------------------------------------------------------------------------- /src/battle/items.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyItemDefs(void); 22 | void loadItems(struct cJSON *node); 23 | void addRandomItem(int x, int y); 24 | Entity *spawnItem(char *name); 25 | void loadItemDefs(void); 26 | -------------------------------------------------------------------------------- /src/battle/jumpgate.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void activateJumpgate(int activate); 22 | int jumpgateEnabled(void); 23 | Entity *spawnJumpgate(int side, long flags); 24 | -------------------------------------------------------------------------------- /src/battle/locations.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void loadLocations(struct cJSON *node); 22 | void createChristabelLocation(void); 23 | void activateLocations(char *locations); 24 | void drawLocations(void); 25 | void doLocations(void); 26 | -------------------------------------------------------------------------------- /src/battle/messageBox.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void resetMessageBox(void); 22 | void drawMessageBox(void); 23 | int showingMessageBoxes(void); 24 | void doMessageBox(void); 25 | void addMessageBox(char *title, char *body, int type); 26 | void initMessageBox(void); 27 | -------------------------------------------------------------------------------- /src/battle/mine.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | Entity *spawnMine(int type); 22 | -------------------------------------------------------------------------------- /src/battle/missionInfo.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void drawMissionInfo(void); 22 | void initMissionInfo(void); 23 | -------------------------------------------------------------------------------- /src/battle/objectives.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void addEpicKillsObjective(void); 22 | void addEpicLivesObjective(void); 23 | void loadObjectives(struct cJSON *node); 24 | void activateObjectives(char *objectives); 25 | void failIncompleteObjectives(void); 26 | void completeConditions(void); 27 | void completeAllObjectives(void); 28 | void updateCondition(char *name, int type); 29 | void adjustObjectiveTargetValue(char *name, int type, int amount); 30 | void updateObjective(char *name, int type); 31 | void doObjectives(void); 32 | -------------------------------------------------------------------------------- /src/battle/player.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void loadPlayer(struct cJSON *node); 22 | int playerHasGun(int type); 23 | void setInitialPlayerAngle(void); 24 | void doPlayerSelect(void); 25 | void doPlayer(void); 26 | void initPlayer(void); 27 | -------------------------------------------------------------------------------- /src/battle/quadtree.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyQuadtree(void); 22 | Entity **getAllEntsInRadius(int x, int y, int radius, Entity *ignore); 23 | Entity **getAllEntsWithin(int x, int y, int w, int h, Entity *ignore); 24 | void removeFromQuadtree(Entity *e, Quadtree *root); 25 | void addToQuadtree(Entity *e, Quadtree *root); 26 | void initQuadtree(Quadtree *root); 27 | -------------------------------------------------------------------------------- /src/battle/radar.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void drawRadarRangeWarning(void); 22 | void drawRadar(void); 23 | void initRadar(void); 24 | -------------------------------------------------------------------------------- /src/battle/rope.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void cutRope(Entity *e); 22 | void drawRope(Entity *e); 23 | void doRope(Entity *owner); 24 | void attachRope(void); 25 | -------------------------------------------------------------------------------- /src/battle/script.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyScript(void); 22 | void cancelScript(void); 23 | void runScriptFunction(const char *format, ...); 24 | void doScript(void); 25 | void initScript(struct cJSON *root); 26 | -------------------------------------------------------------------------------- /src/battle/spawners.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void loadSpawners(struct cJSON *node); 22 | void activateTrespasserSpawner(void); 23 | void activateSpawner(char *name, int active); 24 | void doSpawners(void); 25 | -------------------------------------------------------------------------------- /src/battle/starfield.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void drawStars(void); 22 | void doStars(float dx, float dy); 23 | void initStars(void); 24 | -------------------------------------------------------------------------------- /src/battle/waypoints.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void activateNextWaypoint(void); 22 | Entity *spawnWaypoint(void); 23 | void resetWaypoints(void); 24 | -------------------------------------------------------------------------------- /src/challenges/challengeHome.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void initChallengeHome(void); 22 | -------------------------------------------------------------------------------- /src/challenges/challenges.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void updateChallengeMissions(void); 22 | Challenge *getChallenge(Mission *mission, int type, int value); 23 | char *getChallengeDescription(Challenge *c); 24 | void doChallenges(void); 25 | void loadChallenge(Mission *mission, struct cJSON *node); 26 | void initChallenges(void); 27 | -------------------------------------------------------------------------------- /src/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | #include "ctype.h" 22 | #include "defs.h" 23 | #include "math.h" 24 | #include "SDL2/SDL.h" 25 | #include "stdio.h" 26 | #include "stdlib.h" 27 | #include "string.h" 28 | #include "structs.h" 29 | 30 | extern char *getTranslatedString(char *string); 31 | -------------------------------------------------------------------------------- /src/galaxy/galacticMap.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyGalacticMap(void); 22 | void initGalacticMap(void); 23 | -------------------------------------------------------------------------------- /src/galaxy/mission.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | int isMissionAvailable(Mission *mission, Mission *prev); 22 | void updateAllMissions(void); 23 | Mission *getMission(char *filename); 24 | void failMission(void); 25 | void completeMission(void); 26 | void loadMission(char *filename); 27 | Mission *loadMissionMeta(char *filename); 28 | -------------------------------------------------------------------------------- /src/galaxy/starSystems.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyStarSystems(void); 22 | void updateStarSystemMissions(void); 23 | StarSystem *getStarSystem(char *name); 24 | void initStarSystems(void); 25 | -------------------------------------------------------------------------------- /src/game/credits.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyCredits(void); 22 | void initCredits(void); 23 | -------------------------------------------------------------------------------- /src/game/fighterDatabase.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void drawFighterDatabase(void); 22 | void doFighterDatabase(void); 23 | void initFighterDatabaseDisplay(void); 24 | void destroyFighterDatabase(void); 25 | void initFighterDatabase(void); 26 | -------------------------------------------------------------------------------- /src/game/game.c: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | #include "../common.h" 22 | 23 | #include "game.h" 24 | 25 | extern Game game; 26 | 27 | void initGame(void) 28 | { 29 | memset(&game, 0, sizeof(Game)); 30 | 31 | STRNCPY(game.selectedStarSystem, "Sol", MAX_NAME_LENGTH); 32 | } 33 | 34 | void destroyGame(void) 35 | { 36 | } 37 | -------------------------------------------------------------------------------- /src/game/game.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyGame(void); 22 | void initGame(void); 23 | -------------------------------------------------------------------------------- /src/game/load.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void loadGame(void); 22 | -------------------------------------------------------------------------------- /src/game/options.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void updateCustomResolutionOption(void); 22 | void drawOptions(void); 23 | void initOptions(void (*rtn)(void)); 24 | -------------------------------------------------------------------------------- /src/game/save.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void saveGame(void); 22 | -------------------------------------------------------------------------------- /src/game/stats.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void updateAccuracyStats(unsigned int *stats); 22 | void drawStats(void); 23 | void initStatsDisplay(void); 24 | void initStats(void); 25 | -------------------------------------------------------------------------------- /src/game/title.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void initTitle(void); 22 | -------------------------------------------------------------------------------- /src/game/trophies.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void awardCraftTrophy(void); 22 | void awardPostMissionTrophies(void); 23 | void awardChallengeTrophies(void); 24 | void awardCampaignTrophies(void); 25 | void awardStatsTrophies(void); 26 | Trophy *getTrophy(char *id); 27 | void drawTrophyAlert(void); 28 | void doTrophyAlerts(void); 29 | void awardTrophy(char *id); 30 | void drawTrophies(void); 31 | void initTrophiesDisplay(void); 32 | void initTrophies(void); 33 | -------------------------------------------------------------------------------- /src/main.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | int main(int argc, char *argv[]); 22 | -------------------------------------------------------------------------------- /src/plat/unix/unixInit.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void createScreenshotFolder(void); 22 | void createSaveFolder(void); 23 | -------------------------------------------------------------------------------- /src/plat/win32/win32Init.c: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | #include "../../common.h" 26 | 27 | #include "win32Init.h" 28 | 29 | extern App app; 30 | extern Dev dev; 31 | 32 | void createSaveFolder(void) 33 | { 34 | char *userHome; 35 | char dir[MAX_FILENAME_LENGTH]; 36 | 37 | userHome = getenv("USERPROFILE"); 38 | 39 | if (!userHome) 40 | { 41 | SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "Unable to determine user save folder. Will save to current dir."); 42 | return; 43 | } 44 | 45 | SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "User home = %s", userHome); 46 | 47 | sprintf(dir, "%s\\tbftss", userHome); 48 | if (mkdir(dir) != 0 && errno != EEXIST) 49 | { 50 | SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "Failed to create save dir '%s'. Will save to current dir.", dir); 51 | return; 52 | } 53 | 54 | STRNCPY(app.saveDir, dir, MAX_FILENAME_LENGTH); 55 | } 56 | 57 | void createScreenshotFolder(void) 58 | { 59 | dev.screenshotFolder = "./"; 60 | } 61 | -------------------------------------------------------------------------------- /src/plat/win32/win32Init.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void createScreenshotFolder(void); 22 | void createSaveFolder(void); 23 | -------------------------------------------------------------------------------- /src/system/atlas.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2018-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | char **getAtlasFileList(char *dir, int *count); 22 | AtlasImage *getAtlasImage(const char *filename); 23 | void setAtlasColor(int r, int g, int b, int a); 24 | void initAtlas(void); 25 | -------------------------------------------------------------------------------- /src/system/controls.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void drawControls(void); 22 | void clearControlConfig(char *name); 23 | void updateControlButton(char *name); 24 | void updateControlKey(char *name); 25 | void resetAcceptControls(void); 26 | void clearControl(int type); 27 | int isAcceptControl(void); 28 | int isControl(int type); 29 | void initControlsDisplay(void); 30 | void initControls(void); 31 | -------------------------------------------------------------------------------- /src/system/dev.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void doDevKeys(void); 22 | -------------------------------------------------------------------------------- /src/system/draw.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void saveScreenshot(void); 22 | int isOnBattleScreen(int x, int y, int w, int h); 23 | void drawBackground(SDL_Texture *texture); 24 | void scrollBackground(float x, float y); 25 | void drawCircle(int cx, int cy, int radius, int r, int g, int b, int a); 26 | void blitRotated(AtlasImage *atlasImage, int x, int y, float angle); 27 | void blitScaled(AtlasImage *atlasImage, int x, int y, int w, int h, int center); 28 | void blit(AtlasImage *atlasImage, int x, int y, int center); 29 | void presentScene(void); 30 | void prepareScene(void); 31 | void initGraphics(void); 32 | -------------------------------------------------------------------------------- /src/system/i18n.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2009-2016,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. 18 | */ 19 | 20 | void cleanupLanguage(void); 21 | char *getTranslatedString(char *key); 22 | void setLanguage(char *applicationName, char *languageCode); 23 | -------------------------------------------------------------------------------- /src/system/init.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void cleanup(void); 22 | void saveConfig(void); 23 | void initGameSystem(void); 24 | void initSDL(int argc, char *argv[]); 25 | void init18N(int argc, char *argv[]); 26 | -------------------------------------------------------------------------------- /src/system/input.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void clearInput(void); 22 | void doInput(void); 23 | void drawMouse(void); 24 | void setMouseCursor(int isDrag); 25 | void doMouseMotion(SDL_MouseMotionEvent *event); 26 | void doMouseWheel(SDL_MouseWheelEvent *event); 27 | void doMouseUp(SDL_MouseButtonEvent *event); 28 | void doMouseDown(SDL_MouseButtonEvent *event); 29 | void doKeyUp(SDL_KeyboardEvent *event); 30 | void doKeyDown(SDL_KeyboardEvent *event); 31 | void doControllerAxis(SDL_ControllerAxisEvent *event); 32 | void doControllerButtonUp(SDL_ControllerButtonEvent *event); 33 | void doControllerButtonDown(SDL_ControllerButtonEvent *event); 34 | void initInput(void); 35 | -------------------------------------------------------------------------------- /src/system/io.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | char **getFileList(char *dir, int *count); 22 | char *getSaveFilePath(char *filename); 23 | int writeFile(char *filename, char *data); 24 | char *readFile(char *filename); 25 | char *getFileLocation(char *filename); 26 | int fileExists(char *filename); 27 | -------------------------------------------------------------------------------- /src/system/lookup.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyLookups(void); 22 | long flagsToLong(char *in, int *add); 23 | char *getLookupName(char *prefix, long num); 24 | long lookup(char *name); 25 | void initLookups(void); 26 | -------------------------------------------------------------------------------- /src/system/modalDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void drawModalDialog(void); 22 | void doModalDialog(void); 23 | void showOKCancelDialog(void (*okCallback)(void), void (*cancelCallback)(void), const char *format, ...); 24 | void showOKDialog(void (*callback)(void), const char *format, ...); 25 | void initModalDialog(void); 26 | -------------------------------------------------------------------------------- /src/system/resources.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyResources(void); 22 | char *getMusicFilename(unsigned long i); 23 | char *getPlanetTextureName(unsigned long i); 24 | char *getBackgroundTextureName(unsigned long i); 25 | void initResources(void); 26 | -------------------------------------------------------------------------------- /src/system/sound.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroySounds(void); 22 | void playBattleSound(int id, int x, int y); 23 | void playSound(int id); 24 | void musicSetPlaying(int playing); 25 | void stopMusic(void); 26 | void playMusic(char *filename, int loop); 27 | void initSounds(void); 28 | -------------------------------------------------------------------------------- /src/system/text.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2018-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | int getWrappedTextHeight(char *text, int size); 22 | void calcTextDimensions(const char *text, int size, int *w, int *h); 23 | void useFont(char *name); 24 | void drawText(int x, int y, int size, int align, SDL_Color color, const char *format, ...); 25 | void initFonts(void); 26 | -------------------------------------------------------------------------------- /src/system/textures.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyTextures(void); 22 | SDL_Texture *toTexture(SDL_Surface *surface, int destroySurface); 23 | SDL_Texture *getTexture(char *filename); 24 | -------------------------------------------------------------------------------- /src/system/transition.c: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | #include "../common.h" 22 | 23 | #include "../system/draw.h" 24 | #include "../system/input.h" 25 | #include "transition.h" 26 | 27 | static long transitionStartTime; 28 | 29 | void startSectionTransition(void) 30 | { 31 | transitionStartTime = SDL_GetTicks(); 32 | 33 | prepareScene(); 34 | 35 | clearInput(); 36 | 37 | presentScene(); 38 | } 39 | 40 | void endSectionTransition(void) 41 | { 42 | long elapsed = 250 - (SDL_GetTicks() - transitionStartTime); 43 | 44 | if (elapsed > 0) 45 | { 46 | SDL_Delay(elapsed); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/system/transition.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void endSectionTransition(void); 22 | void startSectionTransition(void); 23 | -------------------------------------------------------------------------------- /src/system/util.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | int stringComparator(const void *a, const void *b); 22 | unsigned long hashcode(const char *str); 23 | void *resize(void *array, int oldSize, int newSize); 24 | int getJSONValue(struct cJSON *node, char *name, int defValue); 25 | char *getJSONValueStr(struct cJSON *node, char *name, char *defValue); 26 | char *timeToDate(long millis); 27 | char *timeToString(long millis, int showHours); 28 | char **toTypeArray(char *types, int *numTypes); 29 | int getDistance(int x1, int y1, int x2, int y2); 30 | float getAngle(int x1, int y1, int x2, int y2); 31 | int collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2); 32 | int getPercent(float current, float total); 33 | float mod(float n, float x); 34 | -------------------------------------------------------------------------------- /src/system/widgets.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void destroyWidgets(void); 22 | void autoSizeWidgetButtons(char *group, int recenter); 23 | void setWidgetOption(const char *name, const char *group, const char *value); 24 | void drawWidgets(const char *group); 25 | void selectWidget(const char *name, const char *group); 26 | Widget *getWidget(const char *name, const char *group); 27 | void doWidgets(void); 28 | void initWidgets(void); 29 | -------------------------------------------------------------------------------- /src/test/testMission.c: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | #include "../common.h" 22 | 23 | #include "../battle/battle.h" 24 | #include "../galaxy/mission.h" 25 | #include "../json/cJSON.h" 26 | #include "testMission.h" 27 | 28 | extern Game game; 29 | 30 | void loadTestMission(char *filename) 31 | { 32 | game.currentMission = loadMissionMeta(filename); 33 | 34 | initBattle(); 35 | 36 | loadMission(filename); 37 | } 38 | -------------------------------------------------------------------------------- /src/test/testMission.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2015-2019,2022 Parallel Realities 3 | 4 | This program is free software; you can redistribute it and/or 5 | modify it under the terms of the GNU General Public License 6 | as published by the Free Software Foundation; either version 2 7 | of the License, or (at your option) any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 | 13 | See the GNU General Public License for more details. 14 | 15 | You should have received a copy of the GNU General Public License 16 | along with this program; if not, write to the Free Software 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 | 19 | */ 20 | 21 | void loadTestMission(char *filename); 22 | --------------------------------------------------------------------------------