2020-01-01 21:29:24 +01:00
|
|
|
|
package {
|
|
|
|
|
import bigroom.input.KeyPoll;
|
|
|
|
|
import flash.display.*;
|
|
|
|
|
import flash.geom.*;
|
|
|
|
|
import flash.events.*;
|
|
|
|
|
import flash.net.*;
|
|
|
|
|
import flash.desktop.NativeApplication;
|
|
|
|
|
|
|
|
|
|
public class gameclass extends Sprite {
|
|
|
|
|
public var GAMEMODE:int = 0;
|
|
|
|
|
public var TITLEMODE:int = 1;
|
|
|
|
|
public var CLICKTOSTART:int = 2;
|
|
|
|
|
public var FOCUSMODE:int = 3;
|
|
|
|
|
public var MAPMODE:int = 4;
|
|
|
|
|
public var TELEPORTERMODE:int = 5;
|
|
|
|
|
public var GAMECOMPLETE:int = 6;
|
|
|
|
|
public var GAMECOMPLETE2:int = 7;
|
|
|
|
|
public var EDITORMODE:int = 8;
|
|
|
|
|
public var CONTROLTUTORIALMODE:int = 9;
|
|
|
|
|
|
|
|
|
|
public function gameclass(dwgfx:dwgraphicsclass, map:mapclass, obj:entityclass, help:helpclass, music:musicclass):void {
|
|
|
|
|
platform.init(); //Cross platform specific init
|
|
|
|
|
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, onActivate);
|
|
|
|
|
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, onDeactivate);
|
|
|
|
|
|
|
|
|
|
infocus = true; paused = false; muted = false; globalsound = 1;
|
|
|
|
|
/*
|
|
|
|
|
if(device.devicetype != device.MOBILE){
|
|
|
|
|
addEventListener(Event.DEACTIVATE, windowNotActive);
|
|
|
|
|
addEventListener(Event.ACTIVATE, windowActive);
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//iOS only, turn off for android
|
|
|
|
|
scores.init(stage);
|
|
|
|
|
|
|
|
|
|
//gamestate = GAMEMODE;
|
|
|
|
|
hascontrol = true; jumpheld = false; advancetext = false; jumppressed = 0;
|
|
|
|
|
gravitycontrol = 0; teleport = false; companion = 0; roomchange = false;
|
|
|
|
|
|
|
|
|
|
edteleportent = 0; //Added in the port!
|
|
|
|
|
teleport_to_new_area = false; mapheld = false; teleport_to_x = 0; teleport_to_y = 0;
|
|
|
|
|
teleportscript = "";
|
|
|
|
|
savemystats = false;
|
|
|
|
|
menukludge = false;
|
|
|
|
|
quickrestartkludge = false;
|
|
|
|
|
|
|
|
|
|
tapleft = 0; tapright = 0;
|
|
|
|
|
|
|
|
|
|
recording = 0; recordinit = false; playbackfinished = false;
|
|
|
|
|
recordstring = "";
|
|
|
|
|
|
|
|
|
|
advancetext = false; pausescript = false; completestop = false;
|
|
|
|
|
activeactivity = -1; act_fade = 0;
|
|
|
|
|
backgroundtext = false;
|
|
|
|
|
startscript = false; newscript = "";
|
|
|
|
|
inintermission = false;
|
|
|
|
|
|
|
|
|
|
alarmon = false; alarmdelay = 0; blackout = false;
|
|
|
|
|
creditposx = 0; creditposy = 0; creditposdelay = 0;
|
|
|
|
|
|
|
|
|
|
useteleporter = false; teleport_to_teleporter = 0;
|
|
|
|
|
|
|
|
|
|
teleblock = new Rectangle();
|
|
|
|
|
activetele = false; readytotele = 0;
|
|
|
|
|
activity_lastprompt = ""; activity_r = 0; activity_g = 0; activity_b = 0;
|
|
|
|
|
creditposition = 0;
|
|
|
|
|
bestgamedeaths = -1;
|
|
|
|
|
|
|
|
|
|
//Accessibility Options
|
|
|
|
|
colourblindmode = false;
|
|
|
|
|
noflashingmode = false;
|
|
|
|
|
slowdown = 30;
|
|
|
|
|
|
|
|
|
|
fullscreen = false;// true; //Assumed true at first unless overwritten at some point!
|
|
|
|
|
advanced_mode = false;
|
|
|
|
|
advanced_smoothing = true;
|
|
|
|
|
advanced_scaling = 0;
|
|
|
|
|
|
|
|
|
|
nodeathmode = false;
|
|
|
|
|
nocutscenes = false;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 50; i++){
|
|
|
|
|
customscript.push("");
|
|
|
|
|
}
|
|
|
|
|
customcol = 0;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 6; i++) {
|
|
|
|
|
var cstats:Boolean;
|
|
|
|
|
cstats = false;
|
|
|
|
|
crewstats.push(cstats);
|
|
|
|
|
tele_crewstats.push(false);
|
|
|
|
|
quick_crewstats.push(false);
|
|
|
|
|
besttimes.push( -1);
|
|
|
|
|
besttrinkets.push( -1);
|
|
|
|
|
bestlives.push( -1);
|
|
|
|
|
bestrank.push( -1);
|
|
|
|
|
}
|
|
|
|
|
crewstats[0] = true;
|
|
|
|
|
lastsaved = 0;
|
|
|
|
|
|
|
|
|
|
tele_gametime = "00:00";
|
|
|
|
|
tele_trinkets = 0;
|
|
|
|
|
tele_currentarea = "Error! Error!";
|
|
|
|
|
quick_gametime = "00:00";
|
|
|
|
|
quick_trinkets = 0;
|
|
|
|
|
quick_currentarea = "Error! Error!";
|
|
|
|
|
|
|
|
|
|
//Menu stuff initiliased here:
|
|
|
|
|
for (i = 0; i < 25; i++) {
|
|
|
|
|
menuoptions.push(new String);
|
|
|
|
|
menuoptions_alt.push(new String);
|
|
|
|
|
menuoptionsactive.push(new Boolean);
|
|
|
|
|
menuoptionslayout.push(new int(0));
|
|
|
|
|
|
|
|
|
|
var nb1:Boolean, nb2:Boolean;
|
|
|
|
|
nb1 = false; nb2 = false;
|
|
|
|
|
unlock.push(nb1);
|
|
|
|
|
unlocknotify.push(nb2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 25; i++) { unlock[i] = false; unlocknotify[i] = false; }
|
|
|
|
|
|
|
|
|
|
nummenuoptions = 0; currentmenuoption = 0;
|
|
|
|
|
menuselection = "null"; currentmenuname = "null";
|
|
|
|
|
menuxoff = 0; menuyoff = 0;
|
|
|
|
|
menucountdown = 0; menudest="null";
|
|
|
|
|
createmenu("mainmenu");
|
|
|
|
|
|
|
|
|
|
deathcounts = 0; gameoverdelay = 0;
|
|
|
|
|
frames = 0; seconds = 0; minutes = 0; hours = 0;
|
|
|
|
|
gamesaved = false;
|
|
|
|
|
savetime = "00:00"; savearea = "nowhere"; savetrinkets = 0;
|
|
|
|
|
|
|
|
|
|
intimetrial = false;
|
|
|
|
|
timetrialcountdown = 0; timetrialshinytarget = 0;
|
|
|
|
|
timetrialparlost = false; timetrialpar = 0; timetrialresulttime = 0;
|
|
|
|
|
|
|
|
|
|
totalflips = 0;
|
|
|
|
|
hardestroom = "Welcome Aboard"; hardestroomdeaths = 0; currentroomdeaths=0;
|
|
|
|
|
|
|
|
|
|
sfpsmode = false; //by default, play at 30 fps
|
|
|
|
|
inertia = 1.1;
|
|
|
|
|
swnmode = false; swntimer = 0; swngame = 0;//Not playing sine wave ninja!
|
|
|
|
|
swnstate = 0; swnstate2 = 0; swnstate3 = 0; swnstate4 = 0; swndelay = 0; swndeaths = 0;
|
|
|
|
|
supercrewmate = false; scmhurt = false; scmprogress = 0; scmmoveme = false;
|
|
|
|
|
swncolstate = 0; swncoldelay = 0;
|
|
|
|
|
swnrecord = 0; swnbestrank = 0; swnrank = 0; swnmessage = 0;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 200; i++) {
|
|
|
|
|
customlevelstats.push("");
|
|
|
|
|
customlevelscore.push(int(0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clearcustomlevelstats();
|
|
|
|
|
|
|
|
|
|
//Save stuff
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
|
|
|
|
var supersave:saveclass = new saveclass();
|
|
|
|
|
savestate.push(supersave);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
telecookie = SharedObject.getLocal("vvvvvv_telesave");
|
|
|
|
|
quickcookie = SharedObject.getLocal("vvvvvv_quicksave");
|
|
|
|
|
levelstatscookie = SharedObject.getLocal("vvvvvv_levelstats");
|
|
|
|
|
for (var i:int = 0; i < editor.playerlevel.length; i++) {
|
|
|
|
|
customcookie.push(SharedObject.getLocal("vvvvvv_custom_" + String(i)));
|
|
|
|
|
customcookieexists.push(false);
|
|
|
|
|
customcookiesummary.push(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
levelstatscookieloaded = true;
|
|
|
|
|
if (levelstatscookie.data.num == undefined) {
|
|
|
|
|
levelstatscookie.data.num = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (telecookie.data.savex == undefined) {
|
|
|
|
|
telecookieexists = false; telesummary = "";
|
|
|
|
|
} else {
|
|
|
|
|
telecookieexists = true; telesummary = telecookie.data.summary;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (quickcookie.data.savex == undefined) {
|
|
|
|
|
quickcookieexists = false; quicksummary = "";
|
|
|
|
|
} else {
|
|
|
|
|
quickcookieexists = true; quicksummary = quickcookie.data.summary;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < editor.playerlevel.length; i++) {
|
|
|
|
|
if(customcookie[i].data.savex == undefined) {
|
|
|
|
|
customcookieexists[i] = false; customcookiesummary[i] = "";
|
|
|
|
|
} else {
|
|
|
|
|
customcookieexists[i] = true; customcookiesummary[i] = customcookie[i].data.summary;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
screenshake = flashlight = 0;
|
|
|
|
|
|
|
|
|
|
stat_trinkets = 0;
|
|
|
|
|
|
|
|
|
|
test = false; teststring = "TEST = True";
|
|
|
|
|
state = 1; statedelay = 0;
|
|
|
|
|
updatestate(dwgfx, map, obj, help, music);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function onActivate(e:Event):void {
|
|
|
|
|
platform.callonwake();
|
|
|
|
|
infocus = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function onDeactivate(e:Event):void {
|
|
|
|
|
infocus = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function clearcustomlevelstats():void{
|
|
|
|
|
//just clearing the arrays
|
|
|
|
|
for (var i:int = 0; i < 200; i++) {
|
|
|
|
|
customlevelstats[i] = "";
|
|
|
|
|
customlevelscore[i] = 0;
|
|
|
|
|
}
|
|
|
|
|
numcustomlevelstats = 0;
|
|
|
|
|
|
|
|
|
|
customlevelstatsloaded=false; //To ensure we don't load it where it isn't needed
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updatecustomlevelstats(clevel:String, cscore:int):void{
|
|
|
|
|
var tvar:int = -1;
|
|
|
|
|
for (var j:int = 0; j < numcustomlevelstats; j++) {
|
|
|
|
|
if (clevel == customlevelstats[j]) {
|
|
|
|
|
tvar=j;
|
|
|
|
|
j=numcustomlevelstats+1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (tvar >= 0) {
|
|
|
|
|
//update existing entry
|
|
|
|
|
customlevelscore[tvar]=cscore;
|
|
|
|
|
}else{
|
|
|
|
|
//add a new entry
|
|
|
|
|
if (numcustomlevelstats < 200) {
|
|
|
|
|
customlevelstats[numcustomlevelstats]=clevel;
|
|
|
|
|
customlevelscore[numcustomlevelstats]=cscore;
|
|
|
|
|
numcustomlevelstats++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
savecustomlevelstats();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function loadcustomlevelstats():void{
|
|
|
|
|
//Totally rewriten for mobile version, probably broken
|
|
|
|
|
if (!customlevelstatsloaded) {
|
|
|
|
|
numcustomlevelstats = levelstatscookie.data.num;
|
|
|
|
|
if (numcustomlevelstats > 0) {
|
|
|
|
|
if (numcustomlevelstats >= 200) numcustomlevelstats = 199;
|
|
|
|
|
|
|
|
|
|
var lvlstring:String = levelstatscookie.data.customlevelscore;
|
|
|
|
|
var values:Array;
|
|
|
|
|
values = new Array;
|
|
|
|
|
values = lvlstring.split(",");
|
|
|
|
|
for (var i:int = 0; i < values.length; i++) {
|
|
|
|
|
if (i < 200) customlevelscore[i] = int(values[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
lvlstring = levelstatscookie.data.customlevelstats;
|
|
|
|
|
values = new Array;
|
|
|
|
|
values = lvlstring.split("|");
|
|
|
|
|
for(i = 0; i < values.length; i++){
|
|
|
|
|
if (i < 200) customlevelstats[i] = values[i];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function savecustomlevelstats():void {
|
|
|
|
|
//Rewritten for mobile
|
|
|
|
|
levelstatscookie = SharedObject.getLocal("vvvvvv_levelstats");
|
|
|
|
|
|
|
|
|
|
if (numcustomlevelstats >= 200) numcustomlevelstats = 199;
|
|
|
|
|
levelstatscookie.data.num = numcustomlevelstats;
|
|
|
|
|
|
|
|
|
|
var lvlstring:String = "";
|
|
|
|
|
for (var i:int = 0; i < numcustomlevelstats; i++) {
|
|
|
|
|
lvlstring = lvlstring + customlevelscore[i] + ",";
|
|
|
|
|
}
|
|
|
|
|
levelstatscookie.data.customlevelscore = lvlstring;
|
|
|
|
|
|
|
|
|
|
lvlstring = ""
|
|
|
|
|
for (i = 0; i < numcustomlevelstats; i++) {
|
|
|
|
|
lvlstring = lvlstring + customlevelstats[i] + "|";
|
|
|
|
|
}
|
|
|
|
|
levelstatscookie.data.customlevelstats = lvlstring;
|
|
|
|
|
|
|
|
|
|
levelstatscookie.flush();
|
|
|
|
|
levelstatscookie.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function inittouchpoints(key:KeyPoll):void {
|
|
|
|
|
if (key.touchPoints > 0) {
|
|
|
|
|
my = key.touchy[key.touchPoints - 1];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function inbox(x:int, y:int, x1:int, y1:int, w:int, h:int):Boolean {
|
|
|
|
|
if (x >= x1 && x <= x1 + w) {
|
|
|
|
|
if (y >= y1 && y <= y1 + h) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public var m_touchx:int, m_touchy:int;
|
|
|
|
|
public var m_pressed:Boolean = false;
|
|
|
|
|
public var b_gap:int = 40, b_size:int = 26;
|
|
|
|
|
|
|
|
|
|
public function gettouchpoints_mainmenu(key:KeyPoll, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
//Checks for last touchpress. For main menu, check to see that you've lifted
|
|
|
|
|
//your finger before continuing.
|
|
|
|
|
if (!m_pressed) {
|
|
|
|
|
if (key.touchPoints > 0) {
|
|
|
|
|
m_pressed = true;
|
|
|
|
|
m_touchx = key.touchx[key.touchPoints - 1];
|
|
|
|
|
m_touchy = key.touchy[key.touchPoints - 1];
|
|
|
|
|
if (dwgfx.flipmode) m_touchy = dwgfx.devicey - m_touchy;
|
|
|
|
|
//These coordinates now need to be translated to actual screen coordinates
|
|
|
|
|
//Gamecenter
|
|
|
|
|
if(menustart && !showloadingnotice) {
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(m_touchx, m_touchy, 0, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing * 2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing * 2))) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
//Bring up game center achievements
|
|
|
|
|
scores.showAchievements();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_touchx -= dwgfx.screen.x;
|
|
|
|
|
m_touchx = m_touchx / dwgfx.screensizemultiplier;
|
|
|
|
|
m_touchy = m_touchy / dwgfx.screensizemultiplier;
|
|
|
|
|
|
|
|
|
|
//Ok! Now we see if we've pressed any buttons!
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < nummenuoptions; i++) {
|
|
|
|
|
switch(menuoptionslayout[i]) {
|
|
|
|
|
case 0:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 70, 140 + (i * b_gap) + menuyoff - 6, 140, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 70, 140 + (i * b_gap) - 10 + menuyoff - 6, 140, b_size * 2)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 70, 140 + (i * b_gap)+20 + menuyoff - 6, 140, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, -8, 230 - 6, 70, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 90, 140 + (i * b_gap) + menuyoff - 6, 180, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 10, 140 + (i * 68)-10 + menuyoff - 6, 140, 40)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 170, 140 + ((i-3) * 68)-10 + menuyoff - 6, 140, 40)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, -8, 230 - 6-10, 70, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 320 - 70, 230 - 6-10, 70, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 90, 140 + (i * b_gap) + menuyoff - 6, 180, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 10:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 70, 240 - b_gap, 140, b_size)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 11:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - 140, 140 + (i * 65)-10 + menuyoff - 6, 280, (b_size*2)+5)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 12:
|
|
|
|
|
if (menuoptionsactive[i]) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 320 - 70, 0, 70, b_size+10)) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
currentmenuoption = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!menustart) press_action = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
if (key.touchPoints == 0) {
|
|
|
|
|
m_pressed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function gettouchpoints_gamemenu(key:KeyPoll, obj:entityclass, music:musicclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
//Buttons for in game menu!
|
|
|
|
|
if (!m_pressed) {
|
|
|
|
|
if (key.touchPoints > 0) {
|
|
|
|
|
m_pressed = true;
|
|
|
|
|
m_touchx = key.touchx[key.touchPoints - 1];
|
|
|
|
|
m_touchy = key.touchy[key.touchPoints - 1];
|
|
|
|
|
if (dwgfx.flipmode) m_touchy = dwgfx.devicey - m_touchy;
|
|
|
|
|
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(m_touchx, m_touchy, dwgfx.devicex - dwgfx.button_image_width[0] - dwgfx.buttonxspacing, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing*2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing*2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
press_map = true;
|
|
|
|
|
}
|
|
|
|
|
if(menupage == 0){
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(m_touchx, m_touchy, 0, 0, dwgfx.button_image_width[1] + (dwgfx.buttonxspacing*2), dwgfx.button_image_height[1] + (dwgfx.buttonyspacing*2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
menupage = 30;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//These coordinates now need to be translated to actual screen coordinates
|
|
|
|
|
m_touchx -= dwgfx.screen.x;
|
|
|
|
|
m_touchx = m_touchx / dwgfx.screensizemultiplier;
|
|
|
|
|
m_touchy = m_touchy / dwgfx.screensizemultiplier;
|
|
|
|
|
|
|
|
|
|
//Ok! Now we see if we've pressed any buttons!
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 30 - 8-10, 220-20, 56+20, b_size+40)) {
|
|
|
|
|
//Press map button
|
|
|
|
|
//disablekludge_1 = !disablekludge_1;
|
|
|
|
|
menupage = 0;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}else if (inbox(m_touchx, m_touchy, 103-10, 220-20, 56+20, b_size+40)) {
|
|
|
|
|
//Press crew button
|
|
|
|
|
//disablekludge_2 = !disablekludge_2;
|
|
|
|
|
menupage = 1;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}else if (inbox(m_touchx, m_touchy, 185-4-10, 220-20, 56+20, b_size+40)) {
|
|
|
|
|
//Press stats button
|
|
|
|
|
//disablekludge_3 = !disablekludge_3;
|
|
|
|
|
menupage = 2;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}else if (inbox(m_touchx, m_touchy, 258-10, 220-20, 56+20, b_size+40)) {
|
|
|
|
|
//Press quit button
|
|
|
|
|
//disablekludge_4 = !disablekludge_4;
|
|
|
|
|
menupage = 3;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (menupage == 1 && !insecretlab && obj.flags[67] == 1) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 + 4 - 24-20, 110-20, (8 * 6)+40, b_size+40)) {
|
|
|
|
|
//Warp to ship!
|
|
|
|
|
press_action = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (menupage == 3 || menupage == 10 || menupage == 20) {
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 + 4 - 24-20, 110-20, (8 * 6)+40, b_size+40)) {
|
|
|
|
|
//Press quit button
|
|
|
|
|
press_action = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (menupage == 30) {
|
|
|
|
|
//Change controls
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - (12 * 8) - 20-10, 156-20, (8 * 8)+20, b_size+40)) {
|
|
|
|
|
if(controlstyle!=0){
|
|
|
|
|
controlstyle = 0;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 - (4 * 8)-20, 156-10, (8 * 8)+20, b_size+40)) {
|
|
|
|
|
if(controlstyle!=1){
|
|
|
|
|
controlstyle = 1;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 + (4 * 8)+20-10, 156-20, (8 * 8)+20, b_size+40)) {
|
|
|
|
|
if(controlstyle!=2){
|
|
|
|
|
controlstyle = 2;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
if (key.touchPoints == 0) {
|
|
|
|
|
m_pressed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function gettouchpoints_teleportmenu(key:KeyPoll, music:musicclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
//Buttons for in game menu!
|
|
|
|
|
if (!m_pressed) {
|
|
|
|
|
if (key.touchPoints > 0) {
|
|
|
|
|
m_pressed = true;
|
|
|
|
|
m_touchx = key.touchx[key.touchPoints - 1];
|
|
|
|
|
m_touchy = key.touchy[key.touchPoints - 1];
|
|
|
|
|
if (dwgfx.flipmode) m_touchy = dwgfx.devicey - m_touchy;
|
|
|
|
|
//These coordinates now need to be translated to actual screen coordinates
|
|
|
|
|
m_touchx -= dwgfx.screen.x;
|
|
|
|
|
m_touchx = m_touchx / dwgfx.screensizemultiplier;
|
|
|
|
|
m_touchy = m_touchy / dwgfx.screensizemultiplier;
|
|
|
|
|
|
|
|
|
|
//Ok! Now we see if we've pressed any buttons!
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 5+10-20, 220-10-20, 64+40, b_size+40)) {
|
|
|
|
|
//Press left
|
|
|
|
|
press_left = true;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}else if (inbox(m_touchx, m_touchy,320 - 5 - 64-20, 220-10-20, 64+40, b_size+40)) {
|
|
|
|
|
//Press right
|
|
|
|
|
press_right = true;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}else if (inbox(m_touchx, m_touchy, 160 - 40+4-20, 220-20, 64+16+40, b_size+40)) {
|
|
|
|
|
//Press teleport
|
|
|
|
|
press_map = true;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
if (key.touchPoints == 0) {
|
|
|
|
|
m_pressed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function gettouchpoints_gamecomplete(key:KeyPoll, music:musicclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
//Buttons for in game menu!
|
|
|
|
|
if (!m_pressed) {
|
|
|
|
|
if (key.touchPoints > 0) {
|
|
|
|
|
/*
|
|
|
|
|
m_touchx = key.touchx[key.touchPoints - 1];
|
|
|
|
|
m_touchy = key.touchy[key.touchPoints - 1];
|
|
|
|
|
if (dwgfx.flipmode) m_touchy = dwgfx.devicey - m_touchy;
|
|
|
|
|
//These coordinates now need to be translated to actual screen coordinates
|
|
|
|
|
m_touchx -= dwgfx.screen.x;
|
|
|
|
|
m_touchx = m_touchx / dwgfx.screensizemultiplier;
|
|
|
|
|
m_touchy = m_touchy / dwgfx.screensizemultiplier;
|
|
|
|
|
*/
|
|
|
|
|
press_action = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
if (key.touchPoints == 0) {
|
|
|
|
|
m_pressed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function gettouchpoints_controltutorial(key:KeyPoll, music:musicclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
//Buttons for in game menu!
|
|
|
|
|
if (!m_pressed) {
|
|
|
|
|
if (key.touchPoints > 0) {
|
|
|
|
|
m_pressed = true;
|
|
|
|
|
m_touchx = key.touchx[key.touchPoints - 1];
|
|
|
|
|
m_touchy = key.touchy[key.touchPoints - 1];
|
|
|
|
|
if (dwgfx.flipmode) m_touchy = dwgfx.devicey - m_touchy;
|
|
|
|
|
//These coordinates now need to be translated to actual screen coordinates
|
|
|
|
|
m_touchx -= dwgfx.screen.x;
|
|
|
|
|
m_touchx = m_touchx / dwgfx.screensizemultiplier;
|
|
|
|
|
m_touchy = m_touchy / dwgfx.screensizemultiplier;
|
|
|
|
|
|
|
|
|
|
//Ok! Now we see if we've pressed any buttons!
|
|
|
|
|
if (inbox(m_touchx, m_touchy, 160 + 4 - 24-20, 200-20, (8 * 7)+40, b_size+40)) {
|
|
|
|
|
//Press continue
|
|
|
|
|
press_action = true;
|
|
|
|
|
music.playef(11, 10);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
if (key.touchPoints == 0) {
|
|
|
|
|
m_pressed = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function gettouchpoints(key:KeyPoll, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
//Iterate through touch points, find buttons that are being pressed
|
|
|
|
|
switch(controlstyle) {
|
|
|
|
|
case 0:
|
|
|
|
|
//Swipe controls
|
|
|
|
|
for (i = 0; i < key.touchPoints; i++) {
|
|
|
|
|
/*if (inbox(key.touchx[i], key.touchy[i], 0, dwgfx.buttonpos[0].y - 100, dwgfx.buttonsize + dwgfx.buttonxspacing+ (dwgfx.buttonxspacing/2), dwgfx.buttonsize + 200)) {
|
|
|
|
|
press_left = true;
|
|
|
|
|
}else if (inbox(key.touchx[i], key.touchy[i], dwgfx.buttonpos[1].x - (dwgfx.buttonxspacing/2), dwgfx.buttonpos[1].y - 100, dwgfx.buttonsize + (dwgfx.buttonxspacing*3), dwgfx.buttonsize + 200)) {
|
|
|
|
|
press_right = true;
|
|
|
|
|
}else
|
|
|
|
|
*/
|
|
|
|
|
if (insecretlab) {
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], 0, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing * 2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing * 2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
scores.opengamecenter();
|
|
|
|
|
press_map = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], dwgfx.devicex - dwgfx.button_image_width[0] - dwgfx.buttonxspacing, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing*2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing*2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
press_map = true;
|
|
|
|
|
}else {
|
|
|
|
|
if (key.touchid[i] != key.controlstick) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (key.pushleft) press_left = true;
|
|
|
|
|
if (key.pushright) press_right = true;
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
//both sides
|
|
|
|
|
for (i = 0; i < key.touchPoints; i++) {
|
|
|
|
|
//if (inbox(key.touchx[i], key.touchy[i], 0, 0, dwgfx.devicex, dwgfx.devicey / 4)) {
|
|
|
|
|
// press_action = true;
|
|
|
|
|
//}else
|
|
|
|
|
if (insecretlab) {
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], 0, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing * 2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing * 2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
scores.opengamecenter();
|
|
|
|
|
press_map = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], dwgfx.devicex - dwgfx.button_image_width[0] - dwgfx.buttonxspacing, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing*2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing*2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
press_map = true;
|
|
|
|
|
}else{
|
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], 0, 0, dwgfx.devicex / 2, dwgfx.devicey)) {
|
|
|
|
|
press_left = true;
|
|
|
|
|
}else if (inbox(key.touchx[i], key.touchy[i], dwgfx.devicex / 2, 0, dwgfx.devicex / 2, dwgfx.devicey)) {
|
|
|
|
|
press_right = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if (last_action > 0) {
|
|
|
|
|
if (!press_left || !press_right) {
|
|
|
|
|
last_action = 0;
|
|
|
|
|
}else {
|
|
|
|
|
press_left = false;
|
|
|
|
|
press_right = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//if (last_action > 0) {
|
|
|
|
|
if (press_left && press_right) {
|
|
|
|
|
if (last_left > 0 && last_right > 0) {
|
|
|
|
|
press_left = false;
|
|
|
|
|
press_right = false;
|
|
|
|
|
press_action = true;
|
|
|
|
|
last_action = 1;
|
|
|
|
|
}else if (last_left > 0 && last_right == 0) {
|
|
|
|
|
press_right = false;
|
|
|
|
|
press_action = true;
|
|
|
|
|
}else if (last_left == 0 && last_right > 0) {
|
|
|
|
|
press_left = false;
|
|
|
|
|
press_action = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
if (press_left) {
|
|
|
|
|
last_left = 2;
|
|
|
|
|
}else {
|
|
|
|
|
if (last_left > 0) last_left--;
|
|
|
|
|
}
|
|
|
|
|
if (press_right) {
|
|
|
|
|
last_right = 2;
|
|
|
|
|
}else {
|
|
|
|
|
if (last_right > 0) last_right--;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
//D-Pad controls
|
|
|
|
|
for (i = 0; i < key.touchPoints; i++) {
|
|
|
|
|
if (insecretlab) {
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], 0, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing * 2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing * 2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
scores.opengamecenter();
|
|
|
|
|
press_map = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-12-02 18:19:58 +01:00
|
|
|
|
if (inbox(key.touchx[i], key.touchy[i], dwgfx.devicex - dwgfx.button_image_width[0] - dwgfx.buttonxspacing, 0, dwgfx.button_image_width[0] + (dwgfx.buttonxspacing*2), dwgfx.button_image_height[0] + (dwgfx.buttonyspacing*2) )) {
|
2020-01-01 21:29:24 +01:00
|
|
|
|
press_map = true;
|
|
|
|
|
}else if (inbox(key.touchx[i], key.touchy[i], 0, dwgfx.buttonpos[2].y - (dwgfx.devicey*2/3), dwgfx.buttonsize + dwgfx.buttonxspacing+ (dwgfx.buttonxspacing/2), dwgfx.devicey)) {
|
|
|
|
|
press_left = true;
|
|
|
|
|
}else if (inbox(key.touchx[i], key.touchy[i], dwgfx.buttonpos[3].x - (dwgfx.buttonxspacing / 2), dwgfx.buttonpos[3].y -(dwgfx.devicey*2 / 3), dwgfx.buttonsize + (dwgfx.buttonxspacing * 5), dwgfx.devicey)) {
|
|
|
|
|
press_right = true;
|
|
|
|
|
}else if (key.touchx[i] > dwgfx.devicex / 2) {
|
|
|
|
|
press_action = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function windowNotActive(e:Event):void{ infocus = false; }
|
|
|
|
|
public function windowActive(e:Event):void{ infocus = true; }
|
|
|
|
|
|
|
|
|
|
public function customstart(obj:entityclass, music:musicclass):void{
|
|
|
|
|
jumpheld = true;
|
|
|
|
|
|
|
|
|
|
savex = edsavex;
|
|
|
|
|
savey = edsavey;
|
|
|
|
|
saverx = edsaverx;
|
|
|
|
|
savery = edsavery;
|
|
|
|
|
|
|
|
|
|
savegc = edsavegc;
|
|
|
|
|
savedir = edsavedir; //Worldmap Start
|
|
|
|
|
//savex = 6 * 8; savey = 15 * 8; saverx = 46; savery = 54; savegc = 0; savedir = 1; //Final Level Current
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
gravitycontrol = savegc;
|
|
|
|
|
|
|
|
|
|
coins = 0;
|
|
|
|
|
trinkets = 0;
|
|
|
|
|
crewmates = 0;
|
|
|
|
|
|
|
|
|
|
//state = 2; deathseq = -1; lifeseq = 10; //Not dead, in game initilisation state
|
|
|
|
|
state = 0;
|
|
|
|
|
deathseq = -1;
|
|
|
|
|
lifeseq = 0;
|
|
|
|
|
|
|
|
|
|
//let's teleport in!
|
|
|
|
|
//state = 2500;
|
|
|
|
|
//if (!nocutscenes) music.play(5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function start(obj:entityclass, music:musicclass):void {
|
|
|
|
|
jumpheld = true;
|
|
|
|
|
|
|
|
|
|
savex = 232; savey = 113; saverx = 104; savery = 110; savegc = 0; savedir = 1; //Worldmap Start
|
|
|
|
|
//savex = 6 * 8; savey = 15 * 8; saverx = 46; savery = 54; savegc = 0; savedir = 1; //Final Level Current
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
gravitycontrol = savegc;
|
|
|
|
|
|
|
|
|
|
coins = 0; trinkets = 0;
|
|
|
|
|
|
|
|
|
|
//state = 2; deathseq = -1; lifeseq = 10; //Not dead, in game initilisation state
|
|
|
|
|
state = 0; deathseq = -1; lifeseq = 0;
|
|
|
|
|
|
|
|
|
|
//let's teleport in!
|
|
|
|
|
//state = 2500;
|
|
|
|
|
if (!nocutscenes) music.play(5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function startspecial(t:int, obj:entityclass, music:musicclass):void {
|
|
|
|
|
jumpheld = true;
|
|
|
|
|
|
|
|
|
|
switch(t) {
|
|
|
|
|
case 0: //Secret Lab
|
|
|
|
|
savex = 104; savey = 169; saverx = 118; savery = 106; savegc = 0; savedir = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 1: //Intermission 1 (any)
|
|
|
|
|
savex = 80; savey = 57; saverx = 41; savery = 56; savegc = 0; savedir = 0;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
savex = 232; savey = 113; saverx = 104; savery = 110; savegc = 0; savedir = 1; //Worldmap Start
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
gravitycontrol = savegc;
|
|
|
|
|
coins = 0; trinkets = 0;
|
|
|
|
|
state = 0; deathseq = -1; lifeseq = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function starttrial(t:int, obj:entityclass, music:musicclass):void {
|
|
|
|
|
jumpheld = true;
|
|
|
|
|
|
|
|
|
|
switch(t) {
|
|
|
|
|
case 0: //Space Station 1
|
|
|
|
|
savex = 200; savey = 161; saverx = 113; savery = 105; savegc = 0; savedir = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 1: //Lab
|
|
|
|
|
savex = 191; savey = 33; saverx = 102; savery = 116; savegc = 0; savedir = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 2: //Tower
|
|
|
|
|
savex = 84; savey = 193, saverx = 108; savery = 109; savegc = 0; savedir = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 3: //Space Station 2
|
|
|
|
|
savex = 148; savey = 38; saverx = 112; savery = 114; savegc = 1; savedir = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 4: //Warp
|
|
|
|
|
savex = 52; savey = 73; saverx = 114; savery = 101; savegc = 0; savedir = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 5: //Final
|
|
|
|
|
savex = 101; savey = 113; saverx = 46; savery = 54; savegc = 0; savedir = 1;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
savex = 232; savey = 113; saverx = 104; savery = 110; savegc = 0; savedir = 1; //Worldmap Start
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
gravitycontrol = savegc;
|
|
|
|
|
|
|
|
|
|
coins = 0; trinkets = 0;
|
|
|
|
|
|
|
|
|
|
//state = 2; deathseq = -1; lifeseq = 10; //Not dead, in game initilisation state
|
|
|
|
|
state = 0; deathseq = -1; lifeseq = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function starttest(obj:entityclass, music:musicclass):void {
|
|
|
|
|
jumpheld = true;
|
|
|
|
|
|
|
|
|
|
//savex = 19*8; savey = 17*8; saverx = 50; savery = 50; savegc = 0; savedir = 1; //Generic Start
|
|
|
|
|
|
|
|
|
|
//savex = 19*8; savey = 18*8; saverx = 114; savery = 101; savegc = 0; savedir = 1; //Warp Zone Start
|
|
|
|
|
//savex = 20*8; savey = 18*8; saverx = 113; savery = 100; savegc = 0; savedir = 1; //Warp Zone current
|
|
|
|
|
|
|
|
|
|
//savex = 6 * 8; savey = 6 * 8; saverx = 113; savery = 105; savegc = 0; savedir = 1; //Space Station Start
|
|
|
|
|
//savex = 6 * 8; savey = 6 * 8; saverx = 50; savery = 42; savegc = 0; savedir = 1; //Space Station Reversal
|
|
|
|
|
//savex = 16 * 8; savey = 10 * 8; saverx = 116; savery = 107; savegc = 0; savedir = 1; //Space Station Tele
|
|
|
|
|
|
|
|
|
|
//savex = 5 * 8; savey = 5 * 8; saverx = 112; savery = 114; savegc = 1; savedir = 1; //Space Station 2 Start
|
|
|
|
|
//savex = 22*8; savey = 10*8; saverx = 113; savery = 108; savegc = 0; savedir = 1; //Space Station 2 Tele1
|
|
|
|
|
//savex = 9*8; savey = 13*8; saverx = 118; savery = 108; savegc = 0; savedir = 1; //Space Station 2 s.driller
|
|
|
|
|
//savex = 10*8; savey = 22*8; saverx = 111; savery = 107; savegc = 0; savedir = 1; //Space Station 2 ending
|
|
|
|
|
//savex = 24*8; savey = 26*8; saverx = 53; savery = 52; savegc = 0; savedir = 1; //Actual start
|
|
|
|
|
//savex = 5 * 8; savey = 5 * 8; saverx = 117; savery = 108; savegc = 0; savedir = 1; //Space Station 2 wip
|
|
|
|
|
|
|
|
|
|
//savex = 18 * 8; savey = 24 * 8; saverx = 100; savery = 116; savegc = 0; savedir = 1; //Lab outside, start
|
|
|
|
|
//savex = 17 * 8; savey = 24 * 8; saverx = 107; savery = 115; savegc = 1; savedir = 1; //Lab tele
|
|
|
|
|
//savex = 31 * 8; savey = 12 * 8; saverx = 49; savery = 54; savegc = 1; savedir = 1; //Lab, final bit
|
|
|
|
|
//savex = 19 * 8; savey = 14 * 8; saverx = 104; savery = 102; savegc = 0; savedir = 1; //Lab, ending
|
|
|
|
|
|
|
|
|
|
//savex = 20; savey = 680*8; saverx = 109; savery = 101; savegc = 0; savedir = 1; //The tower
|
|
|
|
|
//savex = 6 * 8; savey = 6 * 8; saverx = 108; savery = 109; savegc = 0; savedir = 1; //Area just before tower
|
|
|
|
|
//savex = 6 * 8; savey = 6 * 8; saverx = 110; savery = 104; savegc = 0; savedir = 1; //Area after tower
|
|
|
|
|
//savex = 70; savey = 129; saverx = 1; savery = 1; savegc = 0; savedir = 1; //The testbed
|
|
|
|
|
|
|
|
|
|
//savex = 14 * 8; savey = 15 * 8; saverx = 102; savery = 111; savegc = 0; savedir = 1; //Worldmap Start
|
|
|
|
|
//savex = 19 * 8; savey = 13 * 8; saverx = 114; savery = 117; savegc = 0; savedir = 1; //Warp zone entrance
|
|
|
|
|
//savex = 19 * 8; savey = 13 * 8; saverx = 110; savery = 109; savegc = 0; savedir = 1; //The Elephant
|
|
|
|
|
|
|
|
|
|
//savex = 16 * 8; savey = 15 * 8; saverx = 46; savery = 54; savegc = 0; savedir = 1; //Final Level Start
|
|
|
|
|
//savex = 5 * 8; savey = 15 * 8; saverx = 41; savery = 52; savegc = 0; savedir = 1; //Final Level Midpoint
|
|
|
|
|
//savex = (5-3) * 8; savey = (5+2) * 8; saverx = 52-2; savery = 53; savegc = 0; savedir = 1; //Final Level End
|
|
|
|
|
|
|
|
|
|
//savex = 6 * 8; savey = 6 * 8; saverx = 117; savery = 107; savegc = 0; savedir = 1; //Space Station Start
|
|
|
|
|
|
|
|
|
|
savex = 13 * 8; savey = 129; saverx = 102; savery = 111; savegc = 0; savedir = 1; //Worldmap Start **********
|
|
|
|
|
//savex = 13 * 8; savey = (19 * 8)-22; saverx = 107; savery = 108; savegc = 0; savedir = 1; //Worldmap Start
|
|
|
|
|
|
|
|
|
|
//savex = 228; savey = 129; saverx = 53; savery = 49; savegc = 0; savedir = 0; //Intermission level 2
|
|
|
|
|
//savex = 80; savey = 57; saverx = 41; savery = 56; savegc = 0; savedir = 0; //Intermission level 1
|
|
|
|
|
//savex = 215; savey = 33; saverx = 52-1; savery = 56; savegc = 0; savedir = 0; //Intermission level 1
|
|
|
|
|
|
|
|
|
|
//savex = 104; savey = 169; saverx = 118; savery = 106; savegc = 0; savedir = 1; //Secret Lab
|
|
|
|
|
//savex = 132; savey = 137; saverx = 119; savery = 107; savegc = 0; savedir = 1; //Secret Lab (beside gravitron)
|
|
|
|
|
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
gravitycontrol = savegc;
|
|
|
|
|
|
|
|
|
|
coins = 0; trinkets = 0;
|
|
|
|
|
|
|
|
|
|
state = 0; deathseq = -1; lifeseq = 10;
|
|
|
|
|
|
|
|
|
|
//music.play(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Menu stuff first!
|
|
|
|
|
public function createmenu(t:String):void {
|
|
|
|
|
var tcount:int, i:int, tvar:int, j:int;
|
|
|
|
|
for (i = 0; i < 25; i++) menuoptionslayout[i] = 0;
|
|
|
|
|
|
|
|
|
|
currentmenuoption = 0; menuselection = "null"; currentmenuname = t;
|
|
|
|
|
menuxoff = 0; menuyoff = 0;
|
|
|
|
|
menucountdown = 0; menudest="null";
|
|
|
|
|
|
|
|
|
|
if (mobilemenu) {
|
|
|
|
|
if (t == "mainmenu") {
|
|
|
|
|
showloadingnotice = false;
|
|
|
|
|
menuoptions[0] = "play";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 1;
|
|
|
|
|
menuoptions[1] = "player worlds";
|
|
|
|
|
menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 2;
|
|
|
|
|
/*menuoptions[2] = "super gravitron";
|
|
|
|
|
menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 2;
|
|
|
|
|
*/
|
|
|
|
|
menuoptions[2] = "options";
|
|
|
|
|
menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 7;
|
|
|
|
|
menuoptions[3] = "credits";
|
|
|
|
|
menuoptionsactive[3] = true;
|
|
|
|
|
menuoptionslayout[3] = 8;
|
|
|
|
|
menuoptions[4] = "more games";
|
|
|
|
|
menuoptionsactive[4] = true;
|
|
|
|
|
menuoptionslayout[4] = 12;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -16;
|
|
|
|
|
menuyoff = -50+20;
|
|
|
|
|
}else if (t == "playerworlds"){
|
|
|
|
|
menuoptions[0] = "play a level";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "level editor";
|
|
|
|
|
menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -30;
|
|
|
|
|
menuyoff = -40-(12*2);
|
|
|
|
|
}else if (t == "quickloadlevel") {
|
|
|
|
|
menuoptions[0] = "continue from save";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
menuoptions[1] = "start from beginning";
|
|
|
|
|
menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 4;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -40;
|
|
|
|
|
menuyoff = -30-(12*2);
|
|
|
|
|
}else if (t == "youwannaquit") {
|
|
|
|
|
menuoptions[0] = "yes, quit"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "no, return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 0; menuyoff = -20-(12*2);
|
|
|
|
|
}else if (t == "levellist"){
|
|
|
|
|
if (editor.ListOfMetaData.length == 0) {
|
|
|
|
|
menuoptions[0] = "ok";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 0;
|
|
|
|
|
menuyoff = -20;
|
|
|
|
|
}else{
|
|
|
|
|
tcount = 0;
|
|
|
|
|
for (i = 0; i < editor.ListOfMetaData.length; i++) {
|
|
|
|
|
if (i >= levelpage * 3 && i < (levelpage * 3) + 3) {
|
|
|
|
|
//This is, er, suboptimal. Whatever, life optimisation and all that
|
|
|
|
|
tvar = -1;
|
|
|
|
|
for (j = 0; j < numcustomlevelstats; j++) {
|
|
|
|
|
if (editor.ListOfMetaData[i].filename == customlevelstats[j]) {
|
|
|
|
|
tvar = customlevelscore[j];
|
|
|
|
|
j=numcustomlevelstats+1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
if(tvar>=0){
|
|
|
|
|
if(customlevelscore[tvar]==0){
|
|
|
|
|
menuoptions[tcount] = " " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}else if(customlevelscore[tvar]==1){
|
|
|
|
|
menuoptions[tcount] = " * " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}else if(customlevelscore[tvar]==3){
|
|
|
|
|
menuoptions[tcount] = "** " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[tcount] = " " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
menuoptions[tcount] = String(i);
|
|
|
|
|
menuoptions_alt[tcount] = String(tvar);
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
menuoptionslayout[tcount] = 11;
|
|
|
|
|
menuoptions[tcount] = menuoptions[tcount].toLowerCase();
|
|
|
|
|
tcount++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if((levelpage*3)+3<editor.ListOfMetaData.length){
|
|
|
|
|
menuoptions[tcount] = "next page";
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
menuoptionslayout[tcount] = 10;
|
|
|
|
|
tcount++;
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[tcount] = "first page";
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
menuoptionslayout[tcount] = 10;
|
|
|
|
|
tcount++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
menuoptions[tcount] = "< back"; menuoptionsactive[tcount] = true;
|
|
|
|
|
menuoptionslayout[tcount] = 3;
|
|
|
|
|
tcount++;
|
|
|
|
|
|
|
|
|
|
nummenuoptions = tcount;
|
|
|
|
|
menuxoff = -90;
|
|
|
|
|
menuyoff = -120;
|
|
|
|
|
}
|
|
|
|
|
}else if (t == "graphicoptions") {
|
|
|
|
|
if (advanced_mode) {
|
|
|
|
|
if(fullscreen){
|
|
|
|
|
menuoptions[0] = "change to windowed mode"; menuoptionsactive[0] = true;
|
|
|
|
|
}else {
|
|
|
|
|
menuoptions[0] = "change to fullscreen"; menuoptionsactive[0] = true;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[1] = "enable acceleration"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "change scaling mode"; menuoptionsactive[2] = true;
|
|
|
|
|
if (advanced_smoothing) {
|
|
|
|
|
menuoptions[3] = "disable smoothing"; menuoptionsactive[3] = true;
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[3] = "enable smoothing"; menuoptionsactive[3] = true;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[4] = "< back"; menuoptionsactive[4] = true;
|
|
|
|
|
menuoptionslayout[4] = 3;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -50; menuyoff = 16-(12*4);
|
|
|
|
|
}else{
|
|
|
|
|
if(fullscreen){
|
|
|
|
|
menuoptions[0] = "change to windowed mode"; menuoptionsactive[0] = true;
|
|
|
|
|
}else {
|
|
|
|
|
menuoptions[0] = "change to fullscreen"; menuoptionsactive[0] = true;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[1] = "disable acceleration"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -50; menuyoff = 16-(12*2);
|
|
|
|
|
}
|
|
|
|
|
}else if (t == "options") {
|
|
|
|
|
menuoptions[0] = "accessibility options"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
menuoptions[1] = "unlock play modes"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 4;
|
|
|
|
|
menuoptions[2] = "clear data"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 4;
|
|
|
|
|
menuoptions[3] = "< back"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptionslayout[3] = 3;
|
|
|
|
|
nummenuoptions = 4;
|
|
|
|
|
menuxoff = -40; menuyoff = -30-(12*3);
|
|
|
|
|
}else if (t == "accessibility") {
|
|
|
|
|
menuoptions[0] = "animated backgrounds"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
menuoptions[1] = "screen effects"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 4;
|
|
|
|
|
//menuoptions[2] = "invincibility"; menuoptionsactive[2] = true;
|
|
|
|
|
//menuoptions[3] = "slowdown"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -40; menuyoff = 16-(12*2);
|
|
|
|
|
}else if (t == "cleardatamenu") {
|
|
|
|
|
menuoptions[0] = "no! don't delete"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
menuoptions[1] = "delete everything"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 4;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 32-(12*2)-32;
|
|
|
|
|
}else if (t == "setinvincibility") {
|
|
|
|
|
menuoptions[0] = "no, return to options"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "yes, delete saves"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64-(12*2);
|
|
|
|
|
}else if (t == "setslowdown1") {
|
|
|
|
|
menuoptions[0] = "no, return to options"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "yes, delete saves"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64-(12*2);
|
|
|
|
|
}else if (t == "setslowdown2") {
|
|
|
|
|
menuoptions[0] = "normal speed"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "80% speed"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "60% speed"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "40% speed"; menuoptionsactive[3] = true;
|
|
|
|
|
nummenuoptions = 4;
|
|
|
|
|
menuxoff = -40; menuyoff = 16-(12*3);
|
|
|
|
|
}else if (t == "unlockmenu") {
|
|
|
|
|
menuoptions[0] = "unlock time trials"; menuoptionsactive[0] = true; menuoptionslayout[0] = 9;
|
|
|
|
|
menuoptions[1] = "unlock intermissions"; menuoptionsactive[1] = !unlock[16]; menuoptionslayout[1] = 9;
|
|
|
|
|
menuoptions[2] = "unlock no death mode"; menuoptionsactive[2] = !unlock[17];menuoptionslayout[2] = 9;
|
|
|
|
|
menuoptions[3] = "unlock flip mode"; menuoptionsactive[3] = !unlock[18];menuoptionslayout[3] = 9;
|
|
|
|
|
menuoptions[4] = "unlock ship jukebox"; menuoptionsactive[4] = (stat_trinkets<20);menuoptionslayout[4] = 9;
|
|
|
|
|
menuoptions[5] = "unlock secret lab"; menuoptionsactive[5] = !unlock[8];menuoptionslayout[5] = 9;
|
|
|
|
|
|
|
|
|
|
menuoptions_alt[0] = "time trials unlocked";
|
|
|
|
|
menuoptions_alt[1] = "intermissions unlocked";
|
|
|
|
|
menuoptions_alt[2] = "no death mode unlocked";
|
|
|
|
|
menuoptions_alt[3] = "flip mode unlocked";
|
|
|
|
|
menuoptions_alt[4] = "ship jukebox unlocked";
|
|
|
|
|
menuoptions_alt[5] = "secret lab unlocked";
|
|
|
|
|
|
|
|
|
|
menuoptions[6] = "< back"; menuoptionsactive[6] = true;
|
|
|
|
|
menuoptionslayout[6] = 3;
|
|
|
|
|
|
|
|
|
|
nummenuoptions = 7;
|
|
|
|
|
menuxoff = -70; menuyoff = -55-(12*6);
|
|
|
|
|
}else if (t == "credits") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits2") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits3") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits4") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits5") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits6") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits7") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits8") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits9") {
|
|
|
|
|
menuoptions[0] = "first page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "play") {
|
|
|
|
|
//Ok, here's where the unlock stuff comes into it:
|
|
|
|
|
//First up, time trials:
|
|
|
|
|
temp = 0;
|
|
|
|
|
if (unlock[0] && stat_trinkets >= 3 && !unlocknotify[9]) temp++;
|
|
|
|
|
if (unlock[1] && stat_trinkets >= 6 && !unlocknotify[10]) temp++;
|
|
|
|
|
if (unlock[2] && stat_trinkets >= 9 && !unlocknotify[11]) temp++;
|
|
|
|
|
if (unlock[3] && stat_trinkets >= 12 && !unlocknotify[12]) temp++;
|
|
|
|
|
if (unlock[4] && stat_trinkets >= 15 && !unlocknotify[13]) temp++;
|
|
|
|
|
if (unlock[5] && stat_trinkets >= 18 && !unlocknotify[14]) temp++;
|
|
|
|
|
if (temp > 0) {
|
|
|
|
|
//you've unlocked a time trial!
|
|
|
|
|
if (unlock[0] && stat_trinkets >= 3) { unlocknotify[9] = true; unlock[9] = true; }
|
|
|
|
|
if (unlock[1] && stat_trinkets >= 6) { unlocknotify[10] = true; unlock[10] = true; }
|
|
|
|
|
if (unlock[2] && stat_trinkets >= 9) { unlocknotify[11] = true; unlock[11] = true; }
|
|
|
|
|
if (unlock[3] && stat_trinkets >= 12) { unlocknotify[12] = true; unlock[12] = true; }
|
|
|
|
|
if (unlock[4] && stat_trinkets >= 15) { unlocknotify[13] = true; unlock[13] = true; }
|
|
|
|
|
if (unlock[5] && stat_trinkets >= 18) { unlocknotify[14] = true; unlock[14] = true; }
|
|
|
|
|
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
createmenu("unlocktimetrial"); savemystats = true;
|
|
|
|
|
}else if (temp > 1) {
|
|
|
|
|
createmenu("unlocktimetrials"); savemystats = true;
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
//Alright, we haven't unlocked any time trials. How about no death mode?
|
|
|
|
|
temp = 0;
|
|
|
|
|
if (bestrank[0] >= 2) temp++;
|
|
|
|
|
if (bestrank[1] >= 2) temp++;
|
|
|
|
|
if (bestrank[2] >= 2) temp++;
|
|
|
|
|
if (bestrank[3] >= 2) temp++;
|
|
|
|
|
if (bestrank[4] >= 2) temp++;
|
|
|
|
|
if (bestrank[5] >= 2) temp++;
|
|
|
|
|
if (temp >= 4 && !unlocknotify[17]) {
|
|
|
|
|
//Unlock No Death Mode
|
|
|
|
|
unlocknotify[17] = true; unlock[17] = true;
|
|
|
|
|
createmenu("unlocknodeathmode");
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}else{
|
|
|
|
|
//Alright then! Flip mode?
|
|
|
|
|
if (unlock[5] && !unlocknotify[18]) {
|
|
|
|
|
unlock[18] = true; unlocknotify[18] = true;
|
|
|
|
|
createmenu("unlockflipmode");
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}else {
|
|
|
|
|
//What about the intermission levels?
|
|
|
|
|
if (unlock[7] && !unlocknotify[16]) {
|
|
|
|
|
unlock[16] = true; unlocknotify[16] = true;
|
|
|
|
|
createmenu("unlockintermission");
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}else {
|
|
|
|
|
//ok, secret lab! no notification, but test:
|
|
|
|
|
if (unlock[8]) {
|
|
|
|
|
createmenu("playsecretlab");
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "play modes"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "new game"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "< back"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptionslayout[3] = 3;
|
|
|
|
|
nummenuoptions = 4;
|
|
|
|
|
menuxoff = -20; menuyoff = -30 -(12*3);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else if (t == "unlocktimetrial" || t == "unlocktimetrials") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "unlocknodeathmode") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "unlockintermission") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "unlockflipmode") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "playsecretlab") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "secret lab"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "play modes"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "new game"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "< back"; menuoptionsactive[4] = true;
|
|
|
|
|
menuoptionslayout[4] = 3;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -40; menuyoff = -35-(12*4);
|
|
|
|
|
}else if (t == "newgamewarning") {
|
|
|
|
|
menuoptions[0] = "start new game"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64-(16*2)-32;
|
|
|
|
|
}else if (t == "flipmode_mobile") {
|
|
|
|
|
menuoptions[0] = "change flip mode"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64-(16*2);
|
|
|
|
|
}else if (t == "playmodes") {
|
|
|
|
|
menuoptions[0] = "time trials"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "intermissions"; menuoptionsactive[1] = unlock[16];
|
|
|
|
|
menuoptions[2] = "no death mode"; menuoptionsactive[2] = unlock[17];
|
|
|
|
|
menuoptions[3] = "flip mode"; menuoptionsactive[3] = unlock[18];
|
|
|
|
|
menuoptions[4] = "< back"; menuoptionsactive[4] = true;
|
|
|
|
|
menuoptionslayout[4] = 3;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -70; menuyoff = -35-(12*4);
|
|
|
|
|
}else if (t == "intermissionmenu") {
|
|
|
|
|
menuoptions[0] = "play intermission 1"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "play intermission 2"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[0] = 4; menuoptionslayout[1] = 4;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -50; menuyoff = -35-(12*2);
|
|
|
|
|
}else if (t == "playint1") {
|
|
|
|
|
menuoptions[0] = "Vitellary"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "Vermilion"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "Verdigris"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "Victoria"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "< back"; menuoptionsactive[4] = true;
|
|
|
|
|
menuoptionslayout[4] = 3;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -60; menuyoff = -30-(12*4);
|
|
|
|
|
}else if (t == "playint2") {
|
|
|
|
|
menuoptions[0] = "Vitellary"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "Vermilion"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "Verdigris"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "Victoria"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "< back"; menuoptionsactive[4] = true;
|
|
|
|
|
menuoptionslayout[4] = 3;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -60; menuyoff = -30-(12*4);
|
|
|
|
|
}else if (t == "continue") {
|
|
|
|
|
menuoptions[0] = "continue from teleporter"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "continue from quicksave"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[0] = 4; menuoptionslayout[1] = 4;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -60; menuyoff = 20-(12*2);
|
|
|
|
|
}else if (t == "startnodeathmode") {
|
|
|
|
|
menuoptions[0] = "disable cutscenes"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "enable cutscenes"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[0] = 4; menuoptionslayout[1] = 4;
|
|
|
|
|
menuoptions[2] = "< back"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptionslayout[2] = 3;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -60; menuyoff = 30-(12*2);
|
|
|
|
|
}else if (t == "gameover") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 120; menudest="gameover2";
|
|
|
|
|
}else if (t == "gameover2") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = -25; menuyoff = 80-8;
|
|
|
|
|
}else if (t == "unlockmenutrials") {
|
|
|
|
|
if (unlock[9]) { menuoptions[0] = "space station 1"; menuoptionsactive[0] = false;
|
|
|
|
|
}else{ menuoptions[0] = "space station 1"; menuoptionsactive[0] = true;}
|
|
|
|
|
if (unlock[10]) { menuoptions[1] = "the laboratory"; menuoptionsactive[1] = false;
|
|
|
|
|
}else{ menuoptions[1] = "the laboratory"; menuoptionsactive[1] = true;}
|
|
|
|
|
if (unlock[11]) { menuoptions[2] = "the tower"; menuoptionsactive[2] = false;
|
|
|
|
|
}else{ menuoptions[2] = "the tower"; menuoptionsactive[2] = true;}
|
|
|
|
|
if (unlock[12]) { menuoptions[3] = "space station 2"; menuoptionsactive[3] = false;
|
|
|
|
|
}else{ menuoptions[3] = "space station 2"; menuoptionsactive[3] = true;}
|
|
|
|
|
if (unlock[13]) { menuoptions[4] = "the warp zone"; menuoptionsactive[4] = false;
|
|
|
|
|
}else{ menuoptions[4] = "the warp zone"; menuoptionsactive[4] = true;}
|
|
|
|
|
if (unlock[14]) { menuoptions[5] = "the final level"; menuoptionsactive[5] = false;
|
|
|
|
|
}else{ menuoptions[5] = "the final level"; menuoptionsactive[5] = true;}
|
|
|
|
|
|
|
|
|
|
menuoptions_alt[0] = "space station 1 unlocked";
|
|
|
|
|
menuoptions_alt[1] = "the laboratory unlocked";
|
|
|
|
|
menuoptions_alt[2] = "the tower unlocked";
|
|
|
|
|
menuoptions_alt[3] = "space station 2 unlocked";
|
|
|
|
|
menuoptions_alt[4] = "the warp zone unlocked";
|
|
|
|
|
menuoptions_alt[5] = "the final level unlocked";
|
|
|
|
|
|
|
|
|
|
menuoptionslayout[0] = 9;
|
|
|
|
|
menuoptionslayout[1] = 9;
|
|
|
|
|
menuoptionslayout[2] = 9;
|
|
|
|
|
menuoptionslayout[3] = 9;
|
|
|
|
|
menuoptionslayout[4] = 9;
|
|
|
|
|
menuoptionslayout[5] = 9;
|
|
|
|
|
|
|
|
|
|
menuoptions[6] = "< back"; menuoptionsactive[6] = true;
|
|
|
|
|
menuoptionslayout[6] = 3;
|
|
|
|
|
nummenuoptions = 7;
|
|
|
|
|
menuxoff = -80; menuyoff = -55-(12*6);
|
|
|
|
|
}else if (t == "timetrials") {
|
|
|
|
|
if (!unlock[9]) { menuoptions[0] = "???"; menuoptionsactive[0] = false;
|
|
|
|
|
}else{ menuoptions[0] = "space station 1"; menuoptionsactive[0] = true;}
|
|
|
|
|
if (!unlock[10]) { menuoptions[1] = "???"; menuoptionsactive[1] = false;
|
|
|
|
|
}else{ menuoptions[1] = "the laboratory"; menuoptionsactive[1] = true;}
|
|
|
|
|
if (!unlock[11]) { menuoptions[2] = "???"; menuoptionsactive[2] = false;
|
|
|
|
|
}else{ menuoptions[2] = "the tower"; menuoptionsactive[2] = true;}
|
|
|
|
|
if (!unlock[12]) { menuoptions[3] = "???"; menuoptionsactive[3] = false;
|
|
|
|
|
}else{ menuoptions[3] = "space station 2"; menuoptionsactive[3] = true;}
|
|
|
|
|
if (!unlock[13]) { menuoptions[4] = "???"; menuoptionsactive[4] = false;
|
|
|
|
|
}else{ menuoptions[4] = "the warp zone"; menuoptionsactive[4] = true;}
|
|
|
|
|
if (!unlock[14]) { menuoptions[5] = "???"; menuoptionsactive[5] = false;
|
|
|
|
|
}else{ menuoptions[5] = "the final level"; menuoptionsactive[5] = true;}
|
|
|
|
|
menuoptionslayout[0] = 5;
|
|
|
|
|
menuoptionslayout[1] = 5;
|
|
|
|
|
menuoptionslayout[2] = 5;
|
|
|
|
|
menuoptionslayout[3] = 6;
|
|
|
|
|
menuoptionslayout[4] = 6;
|
|
|
|
|
menuoptionslayout[5] = 6;
|
|
|
|
|
|
|
|
|
|
menuoptions[6] = "< back"; menuoptionsactive[6] = true;
|
|
|
|
|
menuoptionslayout[6] = 3;
|
|
|
|
|
nummenuoptions = 7;
|
|
|
|
|
menuxoff = -80; menuyoff = -100;
|
|
|
|
|
}else if (t == "nodeathmodecomplete") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 90; menudest = "nodeathmodecomplete2";
|
|
|
|
|
}else if (t == "nodeathmodecomplete2") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = -25; menuyoff = 70-8;
|
|
|
|
|
}else if (t == "timetrialcomplete") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 90; menudest="timetrialcomplete2";
|
|
|
|
|
}else if (t == "timetrialcomplete2") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 60; menudest="timetrialcomplete3";
|
|
|
|
|
}else if (t == "timetrialcomplete3") {
|
|
|
|
|
menuoptions[0] = "try again"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "< back"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptionslayout[1] = 3;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -25; menuyoff = 70;
|
|
|
|
|
}else if (t == "gamecompletecontinue") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptionslayout[0] = 4;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = -25; menuyoff = 70-8;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
if (t == "mainmenu") {
|
|
|
|
|
menuoptions[0] = "start game";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "player levels";
|
|
|
|
|
menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "graphic options";
|
|
|
|
|
menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "game options";
|
|
|
|
|
menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "view credits";
|
|
|
|
|
menuoptionsactive[4] = true;
|
|
|
|
|
menuoptions[5] = "quit game";
|
|
|
|
|
menuoptionsactive[5] = true;
|
|
|
|
|
nummenuoptions = 6;
|
|
|
|
|
menuxoff = -16;
|
|
|
|
|
menuyoff = -10;
|
|
|
|
|
}else if (t == "playerworlds"){
|
|
|
|
|
menuoptions[0] = "play a level";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "level editor";
|
|
|
|
|
menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "back to menu";
|
|
|
|
|
menuoptionsactive[3] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -30;
|
|
|
|
|
menuyoff = -40;
|
|
|
|
|
}else if (t == "quickloadlevel") {
|
|
|
|
|
menuoptions[0] = "continue from save";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "start from beginning";
|
|
|
|
|
menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "back to levels";
|
|
|
|
|
menuoptionsactive[2] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -40;
|
|
|
|
|
menuyoff = -30;
|
|
|
|
|
}else if (t == "youwannaquit") {
|
|
|
|
|
menuoptions[0] = "yes, quit"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "no, return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 0; menuyoff = -20;
|
|
|
|
|
}else if (t == "levellist"){
|
|
|
|
|
if (editor.ListOfMetaData.length == 0) {
|
|
|
|
|
menuoptions[0] = "ok";
|
|
|
|
|
menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 0;
|
|
|
|
|
menuyoff = -20;
|
|
|
|
|
}else{
|
|
|
|
|
tcount = 0;
|
|
|
|
|
for (i = 0; i < editor.ListOfMetaData.length; i++) {
|
|
|
|
|
if (i >= levelpage * 8 && i < (levelpage * 8) + 8) {
|
|
|
|
|
//This is, er, suboptimal. Whatever, life optimisation and all that
|
|
|
|
|
tvar = -1;
|
|
|
|
|
for (j = 0; j < numcustomlevelstats; j++) {
|
|
|
|
|
if (editor.ListOfMetaData[i].filename == customlevelstats[j]) {
|
|
|
|
|
tvar=j;
|
|
|
|
|
j=numcustomlevelstats+1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(tvar>=0){
|
|
|
|
|
if(customlevelscore[tvar]==0){
|
|
|
|
|
menuoptions[tcount] = " " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}else if(customlevelscore[tvar]==1){
|
|
|
|
|
menuoptions[tcount] = " * " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}else if(customlevelscore[tvar]==3){
|
|
|
|
|
menuoptions[tcount] = "** " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[tcount] = " " + editor.ListOfMetaData[i].title;
|
|
|
|
|
}
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
menuoptions[tcount] = menuoptions[tcount].toLowerCase();
|
|
|
|
|
tcount++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if((levelpage*8)+8<editor.ListOfMetaData.length){
|
|
|
|
|
menuoptions[tcount] = "next page";
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
tcount++;
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[tcount] = "first page";
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
tcount++;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[tcount] = "return to menu";
|
|
|
|
|
menuoptionsactive[tcount] = true;
|
|
|
|
|
tcount++;
|
|
|
|
|
|
|
|
|
|
nummenuoptions = tcount;
|
|
|
|
|
menuxoff = -90;
|
|
|
|
|
menuyoff = 70-(tcount*10);
|
|
|
|
|
}
|
|
|
|
|
}else if (t == "graphicoptions") {
|
|
|
|
|
if (advanced_mode) {
|
|
|
|
|
if(fullscreen){
|
|
|
|
|
menuoptions[0] = "change to windowed mode"; menuoptionsactive[0] = true;
|
|
|
|
|
}else {
|
|
|
|
|
menuoptions[0] = "change to fullscreen"; menuoptionsactive[0] = true;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[1] = "enable acceleration"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "change scaling mode"; menuoptionsactive[2] = true;
|
|
|
|
|
if (advanced_smoothing) {
|
|
|
|
|
menuoptions[3] = "disable smoothing"; menuoptionsactive[3] = true;
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[3] = "enable smoothing"; menuoptionsactive[3] = true;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[4] = "return"; menuoptionsactive[4] = true;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -50; menuyoff = 16;
|
|
|
|
|
}else{
|
|
|
|
|
if(fullscreen){
|
|
|
|
|
menuoptions[0] = "change to windowed mode"; menuoptionsactive[0] = true;
|
|
|
|
|
}else {
|
|
|
|
|
menuoptions[0] = "change to fullscreen"; menuoptionsactive[0] = true;
|
|
|
|
|
}
|
|
|
|
|
menuoptions[1] = "disable acceleration"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "return"; menuoptionsactive[2] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -50; menuyoff = 16;
|
|
|
|
|
}
|
|
|
|
|
}else if (t == "options") {
|
|
|
|
|
menuoptions[0] = "accessibility options"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "unlock play modes"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "clear data"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "return"; menuoptionsactive[3] = true;
|
|
|
|
|
nummenuoptions = 4;
|
|
|
|
|
menuxoff = -40; menuyoff = 0;
|
|
|
|
|
}else if (t == "accessibility") {
|
|
|
|
|
menuoptions[0] = "animated backgrounds"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "screen effects"; menuoptionsactive[1] = true;
|
|
|
|
|
//menuoptions[2] = "invincibility"; menuoptionsactive[2] = true;
|
|
|
|
|
//menuoptions[3] = "slowdown"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[2] = "return"; menuoptionsactive[2] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -40; menuyoff = 16;
|
|
|
|
|
}else if (t == "cleardatamenu") {
|
|
|
|
|
menuoptions[0] = "no! don't delete"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "yes, delete everything"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64;
|
|
|
|
|
}else if (t == "setinvincibility") {
|
|
|
|
|
menuoptions[0] = "no, return to options"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "yes, delete saves"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64;
|
|
|
|
|
}else if (t == "setslowdown1") {
|
|
|
|
|
menuoptions[0] = "no, return to options"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "yes, delete saves"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64;
|
|
|
|
|
}else if (t == "setslowdown2") {
|
|
|
|
|
menuoptions[0] = "normal speed"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "80% speed"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "60% speed"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "40% speed"; menuoptionsactive[3] = true;
|
|
|
|
|
nummenuoptions = 4;
|
|
|
|
|
menuxoff = -40; menuyoff = 16;
|
|
|
|
|
}else if (t == "unlockmenu") {
|
|
|
|
|
menuoptions[0] = "unlock time trials"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "unlock intermissions"; menuoptionsactive[1] = !unlock[16];
|
|
|
|
|
menuoptions[2] = "unlock no death mode"; menuoptionsactive[2] = !unlock[17];
|
|
|
|
|
menuoptions[3] = "unlock flip mode"; menuoptionsactive[3] = !unlock[18];
|
|
|
|
|
menuoptions[4] = "unlock ship jukebox"; menuoptionsactive[4] = (stat_trinkets<20);
|
|
|
|
|
menuoptions[5] = "unlock secret lab"; menuoptionsactive[5] = !unlock[8];
|
|
|
|
|
menuoptions[6] = "return"; menuoptionsactive[6] = true;
|
|
|
|
|
nummenuoptions = 7;
|
|
|
|
|
menuxoff = -70; menuyoff = -20;
|
|
|
|
|
}else if (t == "credits") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits2") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits3") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits4") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits5") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits6") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits7") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits8") {
|
|
|
|
|
menuoptions[0] = "next page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "credits9") {
|
|
|
|
|
menuoptions[0] = "first page"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = 20; menuyoff = 64;
|
|
|
|
|
}else if (t == "play") {
|
|
|
|
|
//Ok, here's where the unlock stuff comes into it:
|
|
|
|
|
//First up, time trials:
|
|
|
|
|
temp = 0;
|
|
|
|
|
if (unlock[0] && stat_trinkets >= 3 && !unlocknotify[9]) temp++;
|
|
|
|
|
if (unlock[1] && stat_trinkets >= 6 && !unlocknotify[10]) temp++;
|
|
|
|
|
if (unlock[2] && stat_trinkets >= 9 && !unlocknotify[11]) temp++;
|
|
|
|
|
if (unlock[3] && stat_trinkets >= 12 && !unlocknotify[12]) temp++;
|
|
|
|
|
if (unlock[4] && stat_trinkets >= 15 && !unlocknotify[13]) temp++;
|
|
|
|
|
if (unlock[5] && stat_trinkets >= 18 && !unlocknotify[14]) temp++;
|
|
|
|
|
if (temp > 0) {
|
|
|
|
|
//you've unlocked a time trial!
|
|
|
|
|
if (unlock[0] && stat_trinkets >= 3) { unlocknotify[9] = true; unlock[9] = true; }
|
|
|
|
|
if (unlock[1] && stat_trinkets >= 6) { unlocknotify[10] = true; unlock[10] = true; }
|
|
|
|
|
if (unlock[2] && stat_trinkets >= 9) { unlocknotify[11] = true; unlock[11] = true; }
|
|
|
|
|
if (unlock[3] && stat_trinkets >= 12) { unlocknotify[12] = true; unlock[12] = true; }
|
|
|
|
|
if (unlock[4] && stat_trinkets >= 15) { unlocknotify[13] = true; unlock[13] = true; }
|
|
|
|
|
if (unlock[5] && stat_trinkets >= 18) { unlocknotify[14] = true; unlock[14] = true; }
|
|
|
|
|
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
createmenu("unlocktimetrial"); savemystats = true;
|
|
|
|
|
}else if (temp > 1) {
|
|
|
|
|
createmenu("unlocktimetrials"); savemystats = true;
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
//Alright, we haven't unlocked any time trials. How about no death mode?
|
|
|
|
|
temp = 0;
|
|
|
|
|
if (bestrank[0] >= 2) temp++;
|
|
|
|
|
if (bestrank[1] >= 2) temp++;
|
|
|
|
|
if (bestrank[2] >= 2) temp++;
|
|
|
|
|
if (bestrank[3] >= 2) temp++;
|
|
|
|
|
if (bestrank[4] >= 2) temp++;
|
|
|
|
|
if (bestrank[5] >= 2) temp++;
|
|
|
|
|
if (temp >= 4 && !unlocknotify[17]) {
|
|
|
|
|
//Unlock No Death Mode
|
|
|
|
|
unlocknotify[17] = true; unlock[17] = true;
|
|
|
|
|
createmenu("unlocknodeathmode");
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}else{
|
|
|
|
|
//Alright then! Flip mode?
|
|
|
|
|
if (unlock[5] && !unlocknotify[18]) {
|
|
|
|
|
unlock[18] = true; unlocknotify[18] = true;
|
|
|
|
|
createmenu("unlockflipmode");
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}else {
|
|
|
|
|
//What about the intermission levels?
|
|
|
|
|
if (unlock[7] && !unlocknotify[16]) {
|
|
|
|
|
unlock[16] = true; unlocknotify[16] = true;
|
|
|
|
|
createmenu("unlockintermission");
|
|
|
|
|
savemystats = true;
|
|
|
|
|
}else {
|
|
|
|
|
//ok, secret lab! no notification, but test:
|
|
|
|
|
if (unlock[8]) {
|
|
|
|
|
createmenu("playsecretlab");
|
|
|
|
|
}else{
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "play modes"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "new game"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "return"; menuoptionsactive[3] = true;
|
|
|
|
|
nummenuoptions = 4;
|
|
|
|
|
menuxoff = -20; menuyoff = -40;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else if (t == "unlocktimetrial" || t == "unlocktimetrials") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "unlocknodeathmode") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "unlockintermission") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "unlockflipmode") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = 20; menuyoff = 70;
|
|
|
|
|
}else if (t == "playsecretlab") {
|
|
|
|
|
menuoptions[0] = "continue"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "secret lab"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "play modes"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "new game"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "return"; menuoptionsactive[4] = true;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -40; menuyoff = -30;
|
|
|
|
|
}else if (t == "newgamewarning") {
|
|
|
|
|
menuoptions[0] = "start new game"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "return to menu"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -30; menuyoff = 64;
|
|
|
|
|
}else if (t == "playmodes") {
|
|
|
|
|
menuoptions[0] = "time trials"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "intermissions"; menuoptionsactive[1] = unlock[16];
|
|
|
|
|
menuoptions[2] = "no death mode"; menuoptionsactive[2] = unlock[17];
|
|
|
|
|
menuoptions[3] = "flip mode"; menuoptionsactive[3] = unlock[18];
|
|
|
|
|
menuoptions[4] = "return to play menu"; menuoptionsactive[4] = true;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -70; menuyoff = 8;
|
|
|
|
|
}else if (t == "intermissionmenu") {
|
|
|
|
|
menuoptions[0] = "play intermission 1"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "play intermission 2"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "return to play menu"; menuoptionsactive[2] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -50; menuyoff = -35;
|
|
|
|
|
}else if (t == "playint1") {
|
|
|
|
|
menuoptions[0] = "Vitellary"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "Vermilion"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "Verdigris"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "Victoria"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "return"; menuoptionsactive[4] = true;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -60; menuyoff = 10;
|
|
|
|
|
}else if (t == "playint2") {
|
|
|
|
|
menuoptions[0] = "Vitellary"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "Vermilion"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "Verdigris"; menuoptionsactive[2] = true;
|
|
|
|
|
menuoptions[3] = "Victoria"; menuoptionsactive[3] = true;
|
|
|
|
|
menuoptions[4] = "return"; menuoptionsactive[4] = true;
|
|
|
|
|
nummenuoptions = 5;
|
|
|
|
|
menuxoff = -60; menuyoff = 10;
|
|
|
|
|
}else if (t == "continue") {
|
|
|
|
|
menuoptions[0] = "continue from teleporter"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "continue from quicksave"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "return to play menu"; menuoptionsactive[2] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -60; menuyoff = 20;
|
|
|
|
|
}else if (t == "startnodeathmode") {
|
|
|
|
|
menuoptions[0] = "disable cutscenes"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "enable cutscenes"; menuoptionsactive[1] = true;
|
|
|
|
|
menuoptions[2] = "return to play menu"; menuoptionsactive[2] = true;
|
|
|
|
|
nummenuoptions = 3;
|
|
|
|
|
menuxoff = -60; menuyoff = 40;
|
|
|
|
|
}else if (t == "gameover") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 120; menudest="gameover2";
|
|
|
|
|
}else if (t == "gameover2") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = -25; menuyoff = 80;
|
|
|
|
|
}else if (t == "unlockmenutrials") {
|
|
|
|
|
if (unlock[9]) { menuoptions[0] = "space station 1"; menuoptionsactive[0] = true;
|
|
|
|
|
}else{ menuoptions[0] = "space station 1"; menuoptionsactive[0] = true;}
|
|
|
|
|
if (unlock[10]) { menuoptions[1] = "the laboratory"; menuoptionsactive[1] = true;
|
|
|
|
|
}else{ menuoptions[1] = "the laboratory"; menuoptionsactive[1] = true;}
|
|
|
|
|
if (unlock[11]) { menuoptions[2] = "the tower"; menuoptionsactive[2] = true;
|
|
|
|
|
}else{ menuoptions[2] = "the tower"; menuoptionsactive[2] = true;}
|
|
|
|
|
if (unlock[12]) { menuoptions[3] = "space station 2"; menuoptionsactive[3] = true;
|
|
|
|
|
}else{ menuoptions[3] = "space station 2"; menuoptionsactive[3] = true;}
|
|
|
|
|
if (unlock[13]) { menuoptions[4] = "the warp zone"; menuoptionsactive[4] = true;
|
|
|
|
|
}else{ menuoptions[4] = "the warp zone"; menuoptionsactive[4] = true;}
|
|
|
|
|
if (unlock[14]) { menuoptions[5] = "the final level"; menuoptionsactive[5] = true;
|
|
|
|
|
}else{ menuoptions[5] = "the final level"; menuoptionsactive[5] = true;}
|
|
|
|
|
|
|
|
|
|
menuoptions[6] = "return to unlock menu"; menuoptionsactive[6] = true;
|
|
|
|
|
nummenuoptions = 7;
|
|
|
|
|
menuxoff = -80; menuyoff = 0 - (12*6);
|
|
|
|
|
}else if (t == "timetrials") {
|
|
|
|
|
if (!unlock[9]) { menuoptions[0] = "???"; menuoptionsactive[0] = true;
|
|
|
|
|
}else{ menuoptions[0] = "space station 1"; menuoptionsactive[0] = true;}
|
|
|
|
|
if (!unlock[10]) { menuoptions[1] = "???"; menuoptionsactive[1] = true;
|
|
|
|
|
}else{ menuoptions[1] = "the laboratory"; menuoptionsactive[1] = true;}
|
|
|
|
|
if (!unlock[11]) { menuoptions[2] = "???"; menuoptionsactive[2] = true;
|
|
|
|
|
}else{ menuoptions[2] = "the tower"; menuoptionsactive[2] = true;}
|
|
|
|
|
if (!unlock[12]) { menuoptions[3] = "???"; menuoptionsactive[3] = true;
|
|
|
|
|
}else{ menuoptions[3] = "space station 2"; menuoptionsactive[3] = true;}
|
|
|
|
|
if (!unlock[13]) { menuoptions[4] = "???"; menuoptionsactive[4] = true;
|
|
|
|
|
}else{ menuoptions[4] = "the warp zone"; menuoptionsactive[4] = true;}
|
|
|
|
|
if (!unlock[14]) { menuoptions[5] = "???"; menuoptionsactive[5] = true;
|
|
|
|
|
}else{ menuoptions[5] = "the final level"; menuoptionsactive[5] = true;}
|
|
|
|
|
|
|
|
|
|
menuoptions[6] = "return to play menu"; menuoptionsactive[6] = true;
|
|
|
|
|
nummenuoptions = 7;
|
|
|
|
|
menuxoff = -80; menuyoff = 0 - (12*6);
|
|
|
|
|
}else if (t == "nodeathmodecomplete") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 90; menudest = "nodeathmodecomplete2";
|
|
|
|
|
}else if (t == "nodeathmodecomplete2") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = -25; menuyoff = 70;
|
|
|
|
|
}else if (t == "timetrialcomplete") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 90; menudest="timetrialcomplete2";
|
|
|
|
|
}else if (t == "timetrialcomplete2") {
|
|
|
|
|
nummenuoptions = 0;
|
|
|
|
|
menucountdown = 60; menudest="timetrialcomplete3";
|
|
|
|
|
}else if (t == "timetrialcomplete3") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
menuoptions[1] = "try again"; menuoptionsactive[1] = true;
|
|
|
|
|
nummenuoptions = 2;
|
|
|
|
|
menuxoff = -25; menuyoff = 70;
|
|
|
|
|
}else if (t == "gamecompletecontinue") {
|
|
|
|
|
menuoptions[0] = "return to play menu"; menuoptionsactive[0] = true;
|
|
|
|
|
nummenuoptions = 1;
|
|
|
|
|
menuxoff = -25; menuyoff = 70;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function loadstats(map:mapclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
statcookie = SharedObject.getLocal("vvvvvv_unlock");
|
|
|
|
|
|
|
|
|
|
if (statcookie.data.stattrinkets == undefined) {
|
|
|
|
|
savestats(map, dwgfx); //save with default values
|
|
|
|
|
}else{
|
|
|
|
|
temp_unlock = statcookie.data.unlock.slice();
|
|
|
|
|
unlock = temp_unlock.slice();
|
|
|
|
|
|
|
|
|
|
temp_unlocknotify = statcookie.data.unlocknotify.slice();
|
|
|
|
|
unlocknotify = temp_unlocknotify.slice();
|
|
|
|
|
|
|
|
|
|
temp_besttimes = statcookie.data.besttimes.slice();
|
|
|
|
|
besttimes = temp_besttimes.slice();
|
|
|
|
|
temp_besttrinkets = statcookie.data.besttrinkets.slice();
|
|
|
|
|
besttrinkets = temp_besttrinkets.slice();
|
|
|
|
|
temp_bestlives = statcookie.data.bestlives.slice();
|
|
|
|
|
bestlives = temp_bestlives.slice();
|
|
|
|
|
temp_bestrank = statcookie.data.bestrank.slice();
|
|
|
|
|
bestrank = temp_bestrank.slice();
|
|
|
|
|
|
|
|
|
|
bestgamedeaths = statcookie.data.bestgamedeaths;
|
|
|
|
|
|
|
|
|
|
stat_trinkets = statcookie.data.stattrinkets;
|
|
|
|
|
fullscreen = statcookie.data.fullscreen;
|
|
|
|
|
|
|
|
|
|
noflashingmode = statcookie.data.screenshakes;
|
|
|
|
|
colourblindmode = statcookie.data.backgrounds;
|
|
|
|
|
dwgfx.setflipmode = statcookie.data.flipmode;
|
|
|
|
|
map.invincibility = statcookie.data.invincibility;
|
|
|
|
|
slowdown = statcookie.data.slowdown;
|
|
|
|
|
|
|
|
|
|
swnbestrank = statcookie.data.swnbestrank;
|
|
|
|
|
swnrecord = statcookie.data.swnrecord;
|
|
|
|
|
|
|
|
|
|
advanced_mode = statcookie.data.advanced_mode;
|
|
|
|
|
advanced_smoothing = statcookie.data.advanced_smoothing;
|
|
|
|
|
advanced_scaling = statcookie.data.advanced_scaling;
|
|
|
|
|
|
|
|
|
|
controlstyle = statcookie.data.controlstyle;
|
|
|
|
|
controlsensitivity = statcookie.data.controlsensitivity;
|
|
|
|
|
showcontroltutorial = statcookie.data.showcontroltutorial;
|
|
|
|
|
}
|
|
|
|
|
statcookie.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function savestats(map:mapclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
statcookie = SharedObject.getLocal("vvvvvv_unlock");
|
|
|
|
|
|
|
|
|
|
temp_unlock = unlock.slice();
|
|
|
|
|
temp_unlocknotify = unlocknotify.slice();
|
|
|
|
|
|
|
|
|
|
statcookie.data.unlock = temp_unlock.slice();
|
|
|
|
|
statcookie.data.unlocknotify = temp_unlocknotify.slice();
|
|
|
|
|
|
|
|
|
|
temp_besttimes = besttimes.slice();
|
|
|
|
|
temp_besttrinkets = besttrinkets.slice();
|
|
|
|
|
temp_bestlives = bestlives.slice();
|
|
|
|
|
temp_bestrank = bestrank.slice();
|
|
|
|
|
statcookie.data.besttimes = temp_besttimes.slice();
|
|
|
|
|
statcookie.data.besttrinkets = temp_besttrinkets.slice();
|
|
|
|
|
statcookie.data.bestlives = temp_bestlives.slice();
|
|
|
|
|
statcookie.data.bestrank = temp_bestrank.slice();
|
|
|
|
|
|
|
|
|
|
statcookie.data.bestgamedeaths = bestgamedeaths;
|
|
|
|
|
|
|
|
|
|
statcookie.data.stattrinkets = stat_trinkets;
|
|
|
|
|
statcookie.data.fullscreen = fullscreen;
|
|
|
|
|
|
|
|
|
|
statcookie.data.screenshakes = noflashingmode;
|
|
|
|
|
statcookie.data.backgrounds = colourblindmode;
|
|
|
|
|
statcookie.data.flipmode = dwgfx.setflipmode;
|
|
|
|
|
statcookie.data.invincibility = map.invincibility;
|
|
|
|
|
statcookie.data.slowdown = slowdown;
|
|
|
|
|
|
|
|
|
|
statcookie.data.swnbestrank = swnbestrank;
|
|
|
|
|
statcookie.data.swnrecord = swnrecord;
|
|
|
|
|
|
|
|
|
|
statcookie.data.advanced_mode = advanced_mode;
|
|
|
|
|
statcookie.data.advanced_smoothing = advanced_smoothing;
|
|
|
|
|
statcookie.data.advanced_scaling = advanced_scaling;
|
|
|
|
|
|
|
|
|
|
statcookie.data.controlstyle = controlstyle;
|
|
|
|
|
statcookie.data.controlsensitivity = controlsensitivity;
|
|
|
|
|
statcookie.data.showcontroltutorial = showcontroltutorial;
|
|
|
|
|
|
|
|
|
|
statcookie.flush()
|
|
|
|
|
statcookie.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deletestats(map:mapclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
for (i = 0; i < 25; i++) {
|
|
|
|
|
unlock[i] = false;
|
|
|
|
|
unlocknotify[i] = false;
|
|
|
|
|
}
|
|
|
|
|
for (i = 0; i < 6; i++) {
|
|
|
|
|
besttimes[i] = -1;
|
|
|
|
|
besttrinkets[i] = -1;
|
|
|
|
|
bestlives[i] = -1;
|
|
|
|
|
bestrank[i] = -1;
|
|
|
|
|
}
|
|
|
|
|
dwgfx.setflipmode = false;
|
|
|
|
|
stat_trinkets = 0;
|
|
|
|
|
controlstyle = 0;
|
|
|
|
|
controlsensitivity = 50;
|
|
|
|
|
savestats(map, dwgfx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function unlocknum(t:int, map:mapclass, dwgfx:dwgraphicsclass):void {
|
|
|
|
|
unlock[t] = true;
|
|
|
|
|
savestats(map, dwgfx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function CopyLevelData():void {
|
|
|
|
|
//Not used in mobile version
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function loadsummary(map:mapclass, help:helpclass):void {
|
|
|
|
|
quickcookie = SharedObject.getLocal("vvvvvv_quicksave");
|
|
|
|
|
telecookie = SharedObject.getLocal("vvvvvv_telesave");
|
|
|
|
|
|
|
|
|
|
if (telecookie.data.savex == undefined) {
|
|
|
|
|
telecookieexists = false; telesummary = "";
|
|
|
|
|
} else {
|
|
|
|
|
telecookieexists = true; telesummary = telecookie.data.summary;
|
|
|
|
|
tele_gametime = giventimestring(telecookie.data.hours, telecookie.data.minutes, telecookie.data.seconds, help);
|
|
|
|
|
tele_trinkets = telecookie.data.trinkets;
|
|
|
|
|
tele_currentarea = map.currentarea(map.area(telecookie.data.savex, telecookie.data.savey));
|
|
|
|
|
|
|
|
|
|
summary_crewstats = telecookie.data.crewstats.slice();
|
|
|
|
|
tele_crewstats = summary_crewstats.slice();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (quickcookie.data.savex == undefined) {
|
|
|
|
|
quickcookieexists = false; quicksummary = "";
|
|
|
|
|
} else {
|
|
|
|
|
quickcookieexists = true; quicksummary = quickcookie.data.summary;
|
|
|
|
|
quick_gametime = giventimestring(quickcookie.data.hours, quickcookie.data.minutes, quickcookie.data.seconds, help);
|
|
|
|
|
quick_trinkets = quickcookie.data.trinkets;
|
|
|
|
|
quick_currentarea = map.currentarea(map.area(quickcookie.data.savex, quickcookie.data.savey));
|
|
|
|
|
|
|
|
|
|
summary_crewstats = quickcookie.data.crewstats.slice();
|
|
|
|
|
quick_crewstats = summary_crewstats.slice();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function savequick(map:mapclass, obj:entityclass, music:musicclass, help:helpclass):void {
|
|
|
|
|
quickcookie = SharedObject.getLocal("vvvvvv_quicksave");
|
|
|
|
|
//Save to the quicksave cookie
|
|
|
|
|
quickcookieexists = true;
|
|
|
|
|
//Flags, map and stats
|
|
|
|
|
savestate[0].explored = map.explored.slice();
|
|
|
|
|
savestate[0].flags = obj.flags.slice();
|
|
|
|
|
savestate[0].crewstats = crewstats.slice();
|
|
|
|
|
savestate[0].collect = obj.collect.slice();
|
|
|
|
|
|
|
|
|
|
quickcookie.data.worldmap = savestate[0].explored.slice();
|
|
|
|
|
quickcookie.data.flags = savestate[0].flags.slice();
|
|
|
|
|
quickcookie.data.crewstats = savestate[0].crewstats.slice();
|
|
|
|
|
quickcookie.data.collect = savestate[0].collect.slice();
|
|
|
|
|
|
|
|
|
|
//trace(obj.flags);
|
|
|
|
|
|
|
|
|
|
quickcookie.data.finalmode = map.finalmode;
|
|
|
|
|
quickcookie.data.finalstretch = map.finalstretch;
|
|
|
|
|
|
|
|
|
|
quickcookie.data.finalx = map.finalx;
|
|
|
|
|
quickcookie.data.finaly = map.finaly;
|
|
|
|
|
//Position
|
|
|
|
|
quickcookie.data.savex = savex;
|
|
|
|
|
quickcookie.data.savey = savey;
|
|
|
|
|
quickcookie.data.saverx = saverx;
|
|
|
|
|
quickcookie.data.savery = savery;
|
|
|
|
|
quickcookie.data.savegc = savegc;
|
|
|
|
|
quickcookie.data.savedir = savedir;
|
|
|
|
|
quickcookie.data.savepoint = savepoint;
|
|
|
|
|
quickcookie.data.trinkets = trinkets;
|
|
|
|
|
|
|
|
|
|
quickcookie.data.currentsong = music.currentsong;
|
|
|
|
|
quickcookie.data.teleportscript = teleportscript;
|
|
|
|
|
|
|
|
|
|
//Special stats
|
|
|
|
|
quickcookie.data.companion = companion;
|
|
|
|
|
quickcookie.data.lastsaved = lastsaved;
|
|
|
|
|
quickcookie.data.supercrewmate = supercrewmate;
|
|
|
|
|
quickcookie.data.scmprogress = scmprogress;
|
|
|
|
|
quickcookie.data.scmmoveme = scmmoveme;
|
|
|
|
|
|
|
|
|
|
quickcookie.data.frames = frames; quickcookie.data.seconds = seconds;
|
|
|
|
|
quickcookie.data.minutes = minutes; quickcookie.data.hours = hours;
|
|
|
|
|
|
|
|
|
|
quickcookie.data.deathcounts = deathcounts;
|
|
|
|
|
quickcookie.data.totalflips = totalflips;
|
|
|
|
|
quickcookie.data.hardestroom = hardestroom; quickcookie.data.hardestroomdeaths = hardestroomdeaths;
|
|
|
|
|
|
|
|
|
|
savearea = map.currentarea(map.area(roomx, roomy));
|
|
|
|
|
quickcookie.data.summary = savearea + ", " + timestring(help);
|
|
|
|
|
quicksummary = quickcookie.data.summary;
|
|
|
|
|
|
|
|
|
|
quickcookie.flush()
|
|
|
|
|
quickcookie.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function customsavequick(t:int, map:mapclass, obj:entityclass, music:musicclass, help:helpclass):void {
|
|
|
|
|
customcookie[t] = SharedObject.getLocal("vvvvvv_custom_" + String(t));
|
|
|
|
|
|
|
|
|
|
//Flags, map and stats
|
|
|
|
|
savestate[2].explored = map.explored.slice();
|
|
|
|
|
savestate[2].flags = obj.flags.slice();
|
|
|
|
|
savestate[2].crewstats = crewstats.slice();
|
|
|
|
|
savestate[2].collect = obj.collect.slice();
|
|
|
|
|
savestate[2].customcollect = obj.customcollect.slice();
|
|
|
|
|
savestate[2].moods = obj.customcrewmoods.slice();
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.worldmap = savestate[2].explored.slice();
|
|
|
|
|
customcookie[t].data.flags = savestate[2].flags.slice();
|
|
|
|
|
customcookie[t].data.crewstats = savestate[2].crewstats.slice();
|
|
|
|
|
customcookie[t].data.collect = savestate[2].collect.slice();
|
|
|
|
|
customcookie[t].data.customcollect = savestate[2].customcollect.slice();
|
|
|
|
|
customcookie[t].data.moods = savestate[2].moods.slice();
|
|
|
|
|
|
|
|
|
|
//trace(obj.flags);
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.finalmode = map.finalmode;
|
|
|
|
|
customcookie[t].data.finalstretch = map.finalstretch;
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.finalx = map.finalx;
|
|
|
|
|
customcookie[t].data.finaly = map.finaly;
|
|
|
|
|
//Position
|
|
|
|
|
customcookie[t].data.savex = savex;
|
|
|
|
|
customcookie[t].data.savey = savey;
|
|
|
|
|
customcookie[t].data.saverx = saverx;
|
|
|
|
|
customcookie[t].data.savery = savery;
|
|
|
|
|
customcookie[t].data.savegc = savegc;
|
|
|
|
|
customcookie[t].data.savedir = savedir;
|
|
|
|
|
customcookie[t].data.savepoint = savepoint;
|
|
|
|
|
customcookie[t].data.trinkets = trinkets;
|
|
|
|
|
customcookie[t].data.crewmates = crewmates;
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.currentsong = music.currentsong;
|
|
|
|
|
customcookie[t].data.teleportscript = teleportscript;
|
|
|
|
|
|
|
|
|
|
//Special stats
|
|
|
|
|
customcookie[t].data.companion = companion;
|
|
|
|
|
customcookie[t].data.lastsaved = lastsaved;
|
|
|
|
|
customcookie[t].data.supercrewmate = supercrewmate;
|
|
|
|
|
customcookie[t].data.scmprogress = scmprogress;
|
|
|
|
|
customcookie[t].data.scmmoveme = scmmoveme;
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.frames = frames; customcookie[t].data.seconds = seconds;
|
|
|
|
|
customcookie[t].data.minutes = minutes; customcookie[t].data.hours = hours;
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.deathcounts = deathcounts;
|
|
|
|
|
customcookie[t].data.totalflips = totalflips;
|
|
|
|
|
customcookie[t].data.hardestroom = hardestroom; customcookie[t].data.hardestroomdeaths = hardestroomdeaths;
|
|
|
|
|
|
|
|
|
|
customcookie[t].data.showminimap = map.customshowmm;
|
|
|
|
|
|
|
|
|
|
savearea = map.currentarea(map.area(roomx, roomy))
|
|
|
|
|
customcookie[t].data.summary = savearea + ", " + timestring(help);
|
|
|
|
|
customcookiesummary[t] = customcookie[t].data.summary;
|
|
|
|
|
|
|
|
|
|
customcookie[t].flush()
|
|
|
|
|
customcookie[t].close();
|
|
|
|
|
|
|
|
|
|
customcookieexists[t] = true;
|
|
|
|
|
customcookiesummary[t] = savearea + ", " + timestring(help);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function loadquick(map:mapclass, obj:entityclass, music:musicclass):void {
|
|
|
|
|
quickcookie = SharedObject.getLocal("vvvvvv_quicksave");
|
|
|
|
|
//Save to the quicksave cookie
|
|
|
|
|
savestate[0].explored = quickcookie.data.worldmap.slice();
|
|
|
|
|
savestate[0].flags = quickcookie.data.flags.slice();
|
|
|
|
|
savestate[0].crewstats = quickcookie.data.crewstats.slice();
|
|
|
|
|
savestate[0].collect = quickcookie.data.collect.slice();
|
|
|
|
|
|
|
|
|
|
map.explored = savestate[0].explored.slice();
|
|
|
|
|
obj.flags = savestate[0].flags.slice();
|
|
|
|
|
crewstats = savestate[0].crewstats.slice();
|
|
|
|
|
obj.collect = savestate[0].collect.slice();
|
|
|
|
|
//trace(obj.flags);
|
|
|
|
|
|
|
|
|
|
map.finalmode = quickcookie.data.finalmode;
|
|
|
|
|
map.finalstretch = quickcookie.data.finalstretch;
|
|
|
|
|
if (map.finalmode) {
|
|
|
|
|
map.final_colormode = false; map.final_mapcol = 0; map.final_colorframe = 0;
|
|
|
|
|
}
|
|
|
|
|
if (map.finalstretch) {
|
|
|
|
|
map.finalstretch = true;
|
|
|
|
|
map.final_colormode = true;
|
|
|
|
|
map.final_mapcol = 0;
|
|
|
|
|
map.final_colorframe = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
map.finalx = quickcookie.data.finalx;
|
|
|
|
|
map.finaly = quickcookie.data.finaly;
|
|
|
|
|
//position
|
|
|
|
|
savex = quickcookie.data.savex;
|
|
|
|
|
savey = quickcookie.data.savey;
|
|
|
|
|
saverx = quickcookie.data.saverx;
|
|
|
|
|
savery = quickcookie.data.savery;
|
|
|
|
|
savegc = quickcookie.data.savegc;
|
|
|
|
|
savedir = quickcookie.data.savedir;
|
|
|
|
|
savepoint = quickcookie.data.savepoint;
|
|
|
|
|
trinkets = quickcookie.data.trinkets;
|
|
|
|
|
|
|
|
|
|
//Special stats
|
|
|
|
|
companion = quickcookie.data.companion;
|
|
|
|
|
lastsaved = quickcookie.data.lastsaved;
|
|
|
|
|
teleportscript = quickcookie.data.teleportscript;
|
|
|
|
|
supercrewmate = quickcookie.data.supercrewmate;
|
|
|
|
|
scmprogress = quickcookie.data.scmprogress;
|
|
|
|
|
scmmoveme = quickcookie.data.scmmoveme;
|
|
|
|
|
|
|
|
|
|
frames = quickcookie.data.frames; seconds = quickcookie.data.seconds;
|
|
|
|
|
minutes = quickcookie.data.minutes; hours = quickcookie.data.hours;
|
|
|
|
|
|
|
|
|
|
deathcounts = quickcookie.data.deathcounts;
|
|
|
|
|
totalflips = quickcookie.data.totalflips;
|
|
|
|
|
hardestroom = quickcookie.data.hardestroom; hardestroomdeaths = quickcookie.data.hardestroomdeaths;
|
|
|
|
|
|
|
|
|
|
music.play(quickcookie.data.currentsong);
|
|
|
|
|
|
|
|
|
|
//Ok, now we determine some game stuff based on the above:
|
|
|
|
|
map.showteleporters = true;
|
|
|
|
|
if(obj.flags[12]==1) map.showtargets = true;
|
|
|
|
|
if (obj.flags[42] == 1) map.showtrinkets = true;
|
|
|
|
|
|
|
|
|
|
quickcookie.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function customloadquick(t:int, map:mapclass, obj:entityclass, music:musicclass):void{
|
|
|
|
|
customcookie[t] = SharedObject.getLocal("vvvvvv_custom_" + String(t));
|
|
|
|
|
|
|
|
|
|
savestate[2].explored = customcookie[t].data.worldmap.slice();
|
|
|
|
|
savestate[2].flags = customcookie[t].data.flags.slice();
|
|
|
|
|
savestate[2].crewstats = customcookie[t].data.crewstats.slice();
|
|
|
|
|
savestate[2].collect = customcookie[t].data.collect.slice();
|
|
|
|
|
savestate[2].customcollect = customcookie[t].data.customcollect.slice();
|
|
|
|
|
savestate[2].moods = customcookie[t].data.moods.slice();
|
|
|
|
|
|
|
|
|
|
map.explored = savestate[2].explored.slice();
|
|
|
|
|
obj.flags = savestate[2].flags.slice();
|
|
|
|
|
crewstats = savestate[2].crewstats.slice();
|
|
|
|
|
obj.collect = savestate[2].collect.slice();
|
|
|
|
|
obj.customcollect = savestate[2].customcollect.slice();
|
|
|
|
|
obj.customcrewmoods = savestate[2].moods.slice();
|
|
|
|
|
//trace(obj.flags);
|
|
|
|
|
|
|
|
|
|
map.finalmode = customcookie[t].data.finalmode;
|
|
|
|
|
map.finalstretch = customcookie[t].data.finalstretch;
|
|
|
|
|
if (map.finalmode) {
|
|
|
|
|
map.final_colormode = false; map.final_mapcol = 0; map.final_colorframe = 0;
|
|
|
|
|
}
|
|
|
|
|
if (map.finalstretch) {
|
|
|
|
|
map.finalstretch = true;
|
|
|
|
|
map.final_colormode = true;
|
|
|
|
|
map.final_mapcol = 0;
|
|
|
|
|
map.final_colorframe = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
map.finalx = customcookie[t].data.finalx;
|
|
|
|
|
map.finaly = customcookie[t].data.finaly;
|
|
|
|
|
//position
|
|
|
|
|
savex = customcookie[t].data.savex;
|
|
|
|
|
savey = customcookie[t].data.savey;
|
|
|
|
|
saverx = customcookie[t].data.saverx;
|
|
|
|
|
savery = customcookie[t].data.savery;
|
|
|
|
|
savegc = customcookie[t].data.savegc;
|
|
|
|
|
savedir = customcookie[t].data.savedir;
|
|
|
|
|
savepoint = customcookie[t].data.savepoint;
|
|
|
|
|
trinkets = customcookie[t].data.trinkets;
|
|
|
|
|
crewmates = customcookie[t].data.crewmates;
|
|
|
|
|
|
|
|
|
|
//Special stats
|
|
|
|
|
companion = customcookie[t].data.companion;
|
|
|
|
|
lastsaved = customcookie[t].data.lastsaved;
|
|
|
|
|
teleportscript = customcookie[t].data.teleportscript;
|
|
|
|
|
supercrewmate = customcookie[t].data.supercrewmate;
|
|
|
|
|
scmprogress = customcookie[t].data.scmprogress;
|
|
|
|
|
scmmoveme = customcookie[t].data.scmmoveme;
|
|
|
|
|
|
|
|
|
|
frames = customcookie[t].data.frames; seconds = customcookie[t].data.seconds;
|
|
|
|
|
minutes = customcookie[t].data.minutes; hours = customcookie[t].data.hours;
|
|
|
|
|
|
|
|
|
|
deathcounts = customcookie[t].data.deathcounts;
|
|
|
|
|
totalflips = customcookie[t].data.totalflips;
|
|
|
|
|
hardestroom = customcookie[t].data.hardestroom; hardestroomdeaths = customcookie[t].data.hardestroomdeaths;
|
|
|
|
|
|
|
|
|
|
map.customshowmm = customcookie[t].data.showminimap;
|
|
|
|
|
|
|
|
|
|
music.play(customcookie[t].data.currentsong);
|
|
|
|
|
|
|
|
|
|
//Ok, now we determine some game stuff based on the above:
|
|
|
|
|
map.showteleporters = true;
|
|
|
|
|
if (obj.flags[12] == 1) map.showtargets = true;
|
|
|
|
|
if (obj.flags[42] == 1) map.showtrinkets = true;
|
|
|
|
|
|
|
|
|
|
customcookie[t].close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deletequick():void {
|
|
|
|
|
quicksummary = "";
|
|
|
|
|
quickcookieexists = false;
|
|
|
|
|
quickcookie.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function telegotoship():void {
|
|
|
|
|
//Special function to move the telesave to the ship teleporter.
|
|
|
|
|
telecookie.data.savex = 13*8;
|
|
|
|
|
telecookie.data.savey = 129;
|
|
|
|
|
telecookie.data.saverx = 102;
|
|
|
|
|
telecookie.data.savery = 111;
|
|
|
|
|
telecookie.data.savegc = 0;
|
|
|
|
|
telecookie.data.savedir = 1;
|
|
|
|
|
telecookie.data.savepoint = 0;
|
|
|
|
|
|
|
|
|
|
telecookie.data.currentsong = 4;
|
|
|
|
|
telecookie.data.companion = 0;
|
|
|
|
|
|
|
|
|
|
telecookie.data.finalmode = false;;
|
|
|
|
|
telecookie.data.finalstretch = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function savetele(map:mapclass, obj:entityclass, music:musicclass, help:helpclass):void {
|
|
|
|
|
//do a quicksave instead
|
|
|
|
|
savequick(map, obj, music, help);
|
|
|
|
|
/*
|
|
|
|
|
telecookie = SharedObject.getLocal("vvvvvv_telesave");
|
|
|
|
|
//Save to the telesave cookie
|
|
|
|
|
telecookieexists = true;
|
|
|
|
|
//Flags, map and stats
|
|
|
|
|
savestate[1].explored = map.explored.slice();
|
|
|
|
|
savestate[1].flags = obj.flags.slice();
|
|
|
|
|
savestate[1].crewstats = crewstats.slice();
|
|
|
|
|
savestate[1].collect = obj.collect.slice();
|
|
|
|
|
|
|
|
|
|
telecookie.data.worldmap = savestate[1].explored.slice();
|
|
|
|
|
telecookie.data.flags = savestate[1].flags.slice();
|
|
|
|
|
telecookie.data.crewstats = savestate[1].crewstats.slice();
|
|
|
|
|
telecookie.data.collect = savestate[1].collect.slice();
|
|
|
|
|
|
|
|
|
|
telecookie.data.finalmode = map.finalmode;
|
|
|
|
|
telecookie.data.finalstretch = map.finalstretch;
|
|
|
|
|
|
|
|
|
|
telecookie.data.finalx = map.finalx;
|
|
|
|
|
telecookie.data.finaly = map.finaly;
|
|
|
|
|
//Position
|
|
|
|
|
telecookie.data.savex = savex;
|
|
|
|
|
telecookie.data.savey = savey;
|
|
|
|
|
telecookie.data.saverx = saverx;
|
|
|
|
|
telecookie.data.savery = savery;
|
|
|
|
|
telecookie.data.savegc = savegc;
|
|
|
|
|
telecookie.data.savedir = savedir;
|
|
|
|
|
telecookie.data.savepoint = savepoint;
|
|
|
|
|
telecookie.data.trinkets = trinkets;
|
|
|
|
|
|
|
|
|
|
if (music.nicechange != -1) {
|
|
|
|
|
telecookie.data.currentsong = music.nicechange;
|
|
|
|
|
}else{
|
|
|
|
|
telecookie.data.currentsong = music.currentsong;
|
|
|
|
|
}
|
|
|
|
|
telecookie.data.teleportscript = teleportscript;
|
|
|
|
|
|
|
|
|
|
//Special stats
|
|
|
|
|
telecookie.data.companion = companion;
|
|
|
|
|
telecookie.data.lastsaved = lastsaved;
|
|
|
|
|
telecookie.data.supercrewmate = supercrewmate;
|
|
|
|
|
telecookie.data.scmprogress = scmprogress;
|
|
|
|
|
telecookie.data.scmmoveme = scmmoveme;
|
|
|
|
|
|
|
|
|
|
telecookie.data.frames = frames; telecookie.data.seconds = seconds;
|
|
|
|
|
telecookie.data.minutes = minutes; telecookie.data.hours = hours;
|
|
|
|
|
|
|
|
|
|
telecookie.data.deathcounts = deathcounts;
|
|
|
|
|
telecookie.data.totalflips = totalflips;
|
|
|
|
|
telecookie.data.hardestroom = hardestroom; telecookie.data.hardestroomdeaths = hardestroomdeaths;
|
|
|
|
|
|
|
|
|
|
savearea = map.currentarea(map.area(roomx, roomy))
|
|
|
|
|
telecookie.data.summary = savearea + ", " + timestring(help);
|
|
|
|
|
telesummary = telecookie.data.summary;
|
|
|
|
|
|
|
|
|
|
telecookie.flush();
|
|
|
|
|
telecookie.close();
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function loadtele(map:mapclass, obj:entityclass, music:musicclass):void {
|
|
|
|
|
telecookie = SharedObject.getLocal("vvvvvv_telesave");
|
|
|
|
|
//Save to the telesave cookie
|
|
|
|
|
savestate[1].explored = telecookie.data.worldmap.slice();
|
|
|
|
|
savestate[1].flags = telecookie.data.flags.slice();
|
|
|
|
|
savestate[1].crewstats = telecookie.data.crewstats.slice();
|
|
|
|
|
savestate[1].collect = telecookie.data.collect.slice();
|
|
|
|
|
|
|
|
|
|
map.explored = savestate[1].explored.slice();
|
|
|
|
|
obj.flags = savestate[1].flags.slice();
|
|
|
|
|
crewstats = savestate[1].crewstats.slice();
|
|
|
|
|
obj.collect = savestate[1].collect.slice();
|
|
|
|
|
|
|
|
|
|
map.finalmode = telecookie.data.finalmode;
|
|
|
|
|
map.finalstretch = telecookie.data.finalstretch;
|
|
|
|
|
if (map.finalmode) {
|
|
|
|
|
map.final_colormode = false; map.final_mapcol = 0; map.final_colorframe = 0;
|
|
|
|
|
}
|
|
|
|
|
if (map.finalstretch) {
|
|
|
|
|
map.finalstretch = true;
|
|
|
|
|
map.final_colormode = true;
|
|
|
|
|
map.final_mapcol = 0;
|
|
|
|
|
map.final_colorframe = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
map.finalx = telecookie.data.finalx;
|
|
|
|
|
map.finaly = telecookie.data.finaly;
|
|
|
|
|
//position
|
|
|
|
|
savex = telecookie.data.savex;
|
|
|
|
|
savey = telecookie.data.savey;
|
|
|
|
|
saverx = telecookie.data.saverx;
|
|
|
|
|
savery = telecookie.data.savery;
|
|
|
|
|
savegc = telecookie.data.savegc;
|
|
|
|
|
savedir = telecookie.data.savedir;
|
|
|
|
|
savepoint = telecookie.data.savepoint;
|
|
|
|
|
trinkets = telecookie.data.trinkets;
|
|
|
|
|
|
|
|
|
|
//trinkets = 19; obj.flags[41] = 0; obj.flags[42] = 0; obj.collect[18] = 0; //Testing Victoria epilogue criteria#
|
|
|
|
|
|
|
|
|
|
//Special stats
|
|
|
|
|
companion = telecookie.data.companion;
|
|
|
|
|
lastsaved = telecookie.data.lastsaved;
|
|
|
|
|
teleportscript = telecookie.data.teleportscript;
|
|
|
|
|
supercrewmate = telecookie.data.supercrewmate;
|
|
|
|
|
scmprogress = telecookie.data.scmprogress;
|
|
|
|
|
scmmoveme = telecookie.data.scmmoveme;
|
|
|
|
|
|
|
|
|
|
frames = telecookie.data.frames; seconds = telecookie.data.seconds;
|
|
|
|
|
minutes = telecookie.data.minutes; hours = telecookie.data.hours;
|
|
|
|
|
|
|
|
|
|
deathcounts = telecookie.data.deathcounts;
|
|
|
|
|
totalflips = telecookie.data.totalflips;
|
|
|
|
|
hardestroom = telecookie.data.hardestroom; hardestroomdeaths = telecookie.data.hardestroomdeaths;
|
|
|
|
|
|
|
|
|
|
music.play(telecookie.data.currentsong);
|
|
|
|
|
|
|
|
|
|
//Ok, now we determine some game stuff based on the above:
|
|
|
|
|
map.showteleporters = true;
|
|
|
|
|
if(obj.flags[12]==1) map.showtargets = true;
|
|
|
|
|
if (obj.flags[42] == 1) map.showtrinkets = true;
|
|
|
|
|
|
|
|
|
|
telecookie.close();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deletetele():void {
|
|
|
|
|
telesummary = "";
|
|
|
|
|
telecookieexists = false;
|
|
|
|
|
telecookie.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function crewrescued():int {
|
|
|
|
|
temp = 0;
|
|
|
|
|
if (crewstats[0]) temp++;
|
|
|
|
|
if (crewstats[1]) temp++;
|
|
|
|
|
if (crewstats[2]) temp++;
|
|
|
|
|
if (crewstats[3]) temp++;
|
|
|
|
|
if (crewstats[4]) temp++;
|
|
|
|
|
if (crewstats[5]) temp++;
|
|
|
|
|
return temp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function unrescued():String {
|
|
|
|
|
//Randomly return the name of an unrescued crewmate
|
|
|
|
|
if (Math.random() * 100 > 50) {
|
|
|
|
|
if (!crewstats[5]) return "Victoria";
|
|
|
|
|
if (!crewstats[2]) return "Vitellary";
|
|
|
|
|
if (!crewstats[4]) return "Verdigris";
|
|
|
|
|
if (!crewstats[3]) return "Vermilion";
|
|
|
|
|
}else {
|
|
|
|
|
if (Math.random() * 100 > 50) {
|
|
|
|
|
if (!crewstats[2]) return "Vitellary";
|
|
|
|
|
if (!crewstats[4]) return "Verdigris";
|
|
|
|
|
if (!crewstats[3]) return "Vermilion";
|
|
|
|
|
if (!crewstats[5]) return "Victoria";
|
|
|
|
|
}else {
|
|
|
|
|
if (!crewstats[4]) return "Verdigris";
|
|
|
|
|
if (!crewstats[3]) return "Vermilion";
|
|
|
|
|
if (!crewstats[5]) return "Victoria";
|
|
|
|
|
if (!crewstats[2]) return "Vitellary";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return "you";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function gethardestroom(map:mapclass):void {
|
|
|
|
|
if (currentroomdeaths > hardestroomdeaths) {
|
|
|
|
|
hardestroomdeaths = currentroomdeaths;
|
|
|
|
|
hardestroom = map.roomname;
|
|
|
|
|
if (map.roomname == "glitch") {
|
|
|
|
|
if (roomx == 42 && roomy == 51) {
|
|
|
|
|
hardestroom = "Rear Vindow";
|
|
|
|
|
}else if (roomx == 48 && roomy == 51) {
|
|
|
|
|
hardestroom = "On the Vaterfront";
|
|
|
|
|
}else if (roomx == 49 && roomy == 51) {
|
|
|
|
|
hardestroom = "The Untouchavles";
|
|
|
|
|
}
|
|
|
|
|
}else if (map.roomname == "change") {
|
|
|
|
|
if (roomx == 45 && roomy == 51) hardestroom =map.specialnames[3];
|
|
|
|
|
if (roomx == 46 && roomy == 51) hardestroom =map.specialnames[4];
|
|
|
|
|
if (roomx == 47 && roomy == 51) hardestroom =map.specialnames[5];
|
|
|
|
|
if (roomx == 50 && roomy == 53) hardestroom =map.specialnames[6];
|
|
|
|
|
if (roomx == 50 && roomy == 54) hardestroom = map.specialnames[7];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updatestate(dwgfx:dwgraphicsclass, map:mapclass, obj:entityclass, help:helpclass, music:musicclass):void {
|
|
|
|
|
statedelay--; if(statedelay<=0) statedelay=0;
|
|
|
|
|
if (statedelay <= 0) {
|
|
|
|
|
switch(state){
|
|
|
|
|
case 0:
|
|
|
|
|
//Do nothing here! Standard game state
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
//Game initilisation
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
//Opening cutscene
|
|
|
|
|
advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state = 3;
|
|
|
|
|
dwgfx.createtextbox("To do: write quick", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("intro to story!");
|
|
|
|
|
//Oh no! what happen to rest of crew etc crash into dimension
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
//End of opening cutscene for now
|
|
|
|
|
switch(controlstyle) {
|
|
|
|
|
case 0:
|
|
|
|
|
dwgfx.createtextbox(" Swipe on the left side to move ", -1, 195, 174, 174, 174);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
dwgfx.createtextbox(" Touch the screen sides to move ", -1, 195, 174, 174, 174);
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
dwgfx.createtextbox(" Tap the buttons to move ", -1, 195, 174, 174, 174);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
//Demo over
|
|
|
|
|
advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
/*dwgfx.createtextbox(" Prototype Complete ", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("Congrats! More Info Soon!");
|
|
|
|
|
dwgfx.textboxcenter();
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
startscript = true; newscript="returntohub";
|
|
|
|
|
obj.removetrigger(5);
|
|
|
|
|
state = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
//End of opening cutscene for now
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false;
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
//Enter dialogue
|
|
|
|
|
obj.removetrigger(8);
|
|
|
|
|
if (obj.flags[13] == 0) {
|
|
|
|
|
obj.changeflag(13, 1);
|
|
|
|
|
if (mobilemenu) {
|
|
|
|
|
dwgfx.createtextbox(" Tap the top right corner ", -1, 155, 174, 174, 174);
|
|
|
|
|
dwgfx.addline(" to view map and crew");
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" Press ENTER to view map ", -1, 155, 174, 174, 174);
|
|
|
|
|
dwgfx.addline(" and quicksave");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
}
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 9:
|
|
|
|
|
//Start SWN Minigame Mode B
|
|
|
|
|
obj.removetrigger(9);
|
|
|
|
|
|
|
|
|
|
swnmode = true;
|
|
|
|
|
swngame = 6;
|
|
|
|
|
swndelay = 150;
|
|
|
|
|
swntimer = 60 * 30;
|
|
|
|
|
|
|
|
|
|
//set the checkpoint in the middle of the screen
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
savex = 148;
|
|
|
|
|
savey = 100;
|
|
|
|
|
savegc = 0;
|
|
|
|
|
saverx = roomx; savery = roomy;
|
|
|
|
|
savedir = 0;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 10:
|
|
|
|
|
//Start SWN Minigame Mode A
|
|
|
|
|
obj.removetrigger(10);
|
|
|
|
|
|
|
|
|
|
swnmode = true;
|
|
|
|
|
swngame = 4;
|
|
|
|
|
swndelay = 150;
|
|
|
|
|
swntimer = 60 * 30;
|
|
|
|
|
|
|
|
|
|
//set the checkpoint in the middle of the screen
|
|
|
|
|
savepoint = 0;
|
|
|
|
|
savex = 148;
|
|
|
|
|
savey = 100;
|
|
|
|
|
savegc = 0;
|
|
|
|
|
saverx = roomx; savery = roomy;
|
|
|
|
|
savedir = 0;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 11:
|
|
|
|
|
//Intermission 1 instructional textbox, depends on last saved
|
|
|
|
|
dwgfx.textboxremovefast();
|
|
|
|
|
dwgfx.createtextbox(" When you're NOT standing on ", -1, 3, 174, 174, 174);
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
if (lastsaved == 2) { dwgfx.addline(" the ceiling, Vitellary will");
|
|
|
|
|
}else if (lastsaved == 3) { dwgfx.addline(" the ceiling, Vermilion will");
|
|
|
|
|
}else if (lastsaved == 4) { dwgfx.addline(" the ceiling, Verdigris will");
|
|
|
|
|
}else if (lastsaved == 5) { dwgfx.addline(" the ceiling, Victoria will"); }
|
|
|
|
|
}else{
|
|
|
|
|
if (lastsaved == 2) { dwgfx.addline(" the floor, Vitellary will");
|
|
|
|
|
}else if (lastsaved == 3) { dwgfx.addline(" the floor, Vermilion will");
|
|
|
|
|
}else if (lastsaved == 4) { dwgfx.addline(" the floor, Verdigris will");
|
|
|
|
|
}else if (lastsaved == 5) { dwgfx.addline(" the floor, Victoria will"); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dwgfx.addline(" stop and wait for you.");
|
|
|
|
|
dwgfx.textboxtimer(180);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 12:
|
|
|
|
|
//Intermission 1 instructional textbox, depends on last saved
|
|
|
|
|
obj.removetrigger(12);
|
|
|
|
|
if (obj.flags[61] == 0) {
|
|
|
|
|
obj.changeflag(61, 1);
|
|
|
|
|
dwgfx.textboxremovefast();
|
|
|
|
|
dwgfx.createtextbox(" You can't continue to the next ", -1, 8, 174, 174, 174);
|
|
|
|
|
if (lastsaved == 5) {
|
|
|
|
|
dwgfx.addline(" room until she is safely across. ");
|
|
|
|
|
}else {
|
|
|
|
|
dwgfx.addline(" room until he is safely across. ");
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxtimer(120);
|
|
|
|
|
}
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 13:
|
|
|
|
|
//textbox removal
|
|
|
|
|
obj.removetrigger(13);
|
|
|
|
|
dwgfx.textboxremovefast();
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 14:
|
|
|
|
|
//Intermission 1 instructional textbox, depends on last saved
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox(" When you're standing on the ceiling, ", -1, 3, 174, 174, 174);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" When you're standing on the floor, ", -1, 3, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
if (lastsaved == 2) { dwgfx.addline(" Vitellary will try to walk to you. ");
|
|
|
|
|
}else if (lastsaved == 3) { dwgfx.addline(" Vermilion will try to walk to you. ");
|
|
|
|
|
}else if (lastsaved == 4) { dwgfx.addline(" Verdigris will try to walk to you. ");
|
|
|
|
|
}else if (lastsaved == 5) { dwgfx.addline(" Victoria will try to walk to you. ");}
|
|
|
|
|
dwgfx.textboxtimer(280);
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 15:
|
|
|
|
|
//leaving the naughty corner
|
|
|
|
|
obj.entities[obj.getplayer()].tile = 0;
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 16:
|
|
|
|
|
//entering the naughty corner
|
|
|
|
|
if(obj.entities[obj.getplayer()].tile == 0){
|
|
|
|
|
obj.entities[obj.getplayer()].tile = 144;
|
|
|
|
|
music.playef(2, 10);
|
|
|
|
|
}
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 17:
|
|
|
|
|
//Arrow key tutorial
|
|
|
|
|
/*
|
|
|
|
|
obj.removetrigger(17);
|
|
|
|
|
dwgfx.createtextbox(" If you prefer, you can press UP or ", -1, 195, 174, 174, 174);
|
|
|
|
|
dwgfx.addline(" DOWN instead of ACTION to flip.");
|
|
|
|
|
dwgfx.textboxtimer(100);
|
|
|
|
|
*/
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 20:
|
|
|
|
|
if (obj.flags[1] == 0) {
|
|
|
|
|
obj.changeflag(1, 1);
|
|
|
|
|
state = 0;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(20);
|
|
|
|
|
break;
|
|
|
|
|
case 21:
|
|
|
|
|
if (obj.flags[2] == 0) {
|
|
|
|
|
obj.changeflag(2, 1);
|
|
|
|
|
state = 0;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(21);
|
|
|
|
|
break;
|
|
|
|
|
case 22:
|
|
|
|
|
if (obj.flags[3] == 0) {
|
|
|
|
|
dwgfx.textboxremovefast();
|
|
|
|
|
obj.changeflag(3, 1);
|
|
|
|
|
state = 0;
|
|
|
|
|
|
|
|
|
|
switch(controlstyle) {
|
|
|
|
|
case 0: case 2:
|
|
|
|
|
dwgfx.createtextbox(" Tap on the right to flip ", -1, 25, 174, 174, 174);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
dwgfx.createtextbox(" Tap both sides together to flip ", -1, 25, 174, 174, 174);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(22);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 30:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[4] == 0) {
|
|
|
|
|
obj.changeflag(4, 1);
|
|
|
|
|
startscript = true; newscript="firststeps";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(30);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 31:
|
|
|
|
|
//state = 55; statedelay = 50;
|
|
|
|
|
state = 0; statedelay = 0;
|
|
|
|
|
if (obj.flags[6] == 0) {
|
|
|
|
|
obj.changeflag(6, 1);
|
|
|
|
|
|
|
|
|
|
obj.changeflag(5, 1);
|
|
|
|
|
startscript = true; newscript="communicationstation";
|
|
|
|
|
state = 0; statedelay = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(31);
|
|
|
|
|
break;
|
|
|
|
|
case 32:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[7] == 0) {
|
|
|
|
|
obj.changeflag(7, 1);
|
|
|
|
|
startscript = true; newscript="teleporterback";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(32);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 33:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[9] == 0) {
|
|
|
|
|
obj.changeflag(9, 1);
|
|
|
|
|
startscript = true; newscript="rescueblue";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(33);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 34:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[10] == 0) {
|
|
|
|
|
obj.changeflag(10, 1);
|
|
|
|
|
startscript = true; newscript="rescueyellow";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(34);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 35:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[11] == 0) {
|
|
|
|
|
obj.changeflag(11, 1);
|
|
|
|
|
startscript = true; newscript="rescuegreen";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(35);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 36:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[8] == 0) {
|
|
|
|
|
obj.changeflag(8, 1);
|
|
|
|
|
startscript = true; newscript="rescuered";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(36);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 37:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (companion == 0) {
|
|
|
|
|
startscript = true; newscript="int2_yellow";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(37);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 38:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (companion == 0) {
|
|
|
|
|
startscript = true; newscript="int2_red";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(38);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 39:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (companion == 0) {
|
|
|
|
|
startscript = true; newscript="int2_green";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(39);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 40:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (companion == 0) {
|
|
|
|
|
startscript = true; newscript="int2_blue";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(40);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 41:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[60] == 0) {
|
|
|
|
|
obj.changeflag(60, 1);
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (lastsaved == 2) { newscript = "int1yellow_2";
|
|
|
|
|
}else if (lastsaved == 3) { newscript = "int1red_2";
|
|
|
|
|
}else if (lastsaved == 4) { newscript = "int1green_2";
|
|
|
|
|
}else if (lastsaved == 5) { newscript = "int1blue_2";}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(41);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 42:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[62] == 0) {
|
|
|
|
|
obj.changeflag(62, 1);
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (lastsaved == 2) { newscript = "int1yellow_3";
|
|
|
|
|
}else if (lastsaved == 3) { newscript = "int1red_3";
|
|
|
|
|
}else if (lastsaved == 4) { newscript = "int1green_3";
|
|
|
|
|
}else if (lastsaved == 5) { newscript = "int1blue_3";}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(42);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 43:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[63] == 0) {
|
|
|
|
|
obj.changeflag(63, 1);
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (lastsaved == 2) { newscript = "int1yellow_4";
|
|
|
|
|
}else if (lastsaved == 3) { newscript = "int1red_4";
|
|
|
|
|
}else if (lastsaved == 4) { newscript = "int1green_4";
|
|
|
|
|
}else if (lastsaved == 5) { newscript = "int1blue_4";}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(43);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 44:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[64] == 0) {
|
|
|
|
|
obj.changeflag(64, 1);
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (lastsaved == 2) { newscript = "int1yellow_5";
|
|
|
|
|
}else if (lastsaved == 3) { newscript = "int1red_5";
|
|
|
|
|
}else if (lastsaved == 4) { newscript = "int1green_5";
|
|
|
|
|
}else if (lastsaved == 5) { newscript = "int1blue_5";}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(44);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 45:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[65] == 0) {
|
|
|
|
|
obj.changeflag(65, 1);
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (lastsaved == 2) { newscript = "int1yellow_6";
|
|
|
|
|
}else if (lastsaved == 3) { newscript = "int1red_6";
|
|
|
|
|
}else if (lastsaved == 4) { newscript = "int1green_6";
|
|
|
|
|
}else if (lastsaved == 5) { newscript = "int1blue_6";}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(45);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 46:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[66] == 0) {
|
|
|
|
|
obj.changeflag(66, 1);
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (lastsaved == 2) { newscript = "int1yellow_7";
|
|
|
|
|
}else if (lastsaved == 3) { newscript = "int1red_7";
|
|
|
|
|
}else if (lastsaved == 4) { newscript = "int1green_7";
|
|
|
|
|
}else if (lastsaved == 5) { newscript = "int1blue_7";}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(46);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 47:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[69] == 0) {
|
|
|
|
|
obj.changeflag(69, 1);
|
|
|
|
|
startscript = true; newscript="trenchwarfare";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(47);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 48:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
if (obj.flags[70] == 0) {
|
|
|
|
|
obj.changeflag(70, 1);
|
|
|
|
|
startscript = true; newscript="trinketcollector";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(48);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 49:
|
|
|
|
|
//Start final level music
|
|
|
|
|
if (obj.flags[71] == 0) {
|
|
|
|
|
obj.changeflag(71, 1);
|
|
|
|
|
music.niceplay(15); //Final level remix
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
obj.removetrigger(49);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 50:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("Help! Can anyone hear", 35, 15, 255, 134, 255);
|
|
|
|
|
dwgfx.addline("this message?");
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state++; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
case 51:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("Verdigris? Are you out", 30, 12, 255, 134, 255);
|
|
|
|
|
dwgfx.addline("there? Are you ok?");
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state++; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
case 52:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("Please help us! We've crashed", 5, 22, 255, 134, 255);
|
|
|
|
|
dwgfx.addline("and need assistance!");
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state++; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
case 53:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("Hello? Anyone out there?", 40, 15, 255, 134, 255);
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state++; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
case 54:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("This is Doctor Violet from the", 5, 8, 255, 134, 255);
|
|
|
|
|
dwgfx.addline("D.S.S. Souleye! Please respond!");
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state++; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
case 55:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("Please... Anyone...", 45, 14, 255, 134, 255);
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state++; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
case 56:
|
|
|
|
|
music.playef(15, 10);
|
|
|
|
|
dwgfx.createtextbox("Please be alright, everyone...", 25, 18, 255, 134, 255);
|
|
|
|
|
dwgfx.textboxtimer(60);
|
|
|
|
|
state=50; statedelay = 100;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 80:
|
|
|
|
|
//Used to return to menu from the game
|
|
|
|
|
if(dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 81:
|
|
|
|
|
gamestate = 1; dwgfx.fademode = 4;
|
|
|
|
|
music.play(6); dwgfx.backgrounddrawn = false; map.tdrawback = true;
|
|
|
|
|
dwgfx.flipmode = false;
|
|
|
|
|
createmenu("mainmenu");
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 82:
|
|
|
|
|
//Time Trial Complete!
|
|
|
|
|
obj.removetrigger(82);
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
timetrialresulttime = seconds + (minutes * 60);
|
|
|
|
|
timetrialrank = 0;
|
|
|
|
|
if (timetrialresulttime <= timetrialpar) timetrialrank++;
|
|
|
|
|
if (trinkets >= timetrialshinytarget) timetrialrank++;
|
|
|
|
|
if (deathcounts == 0) timetrialrank++;
|
|
|
|
|
|
|
|
|
|
if (timetrialresulttime < besttimes[timetriallevel] || besttimes[timetriallevel]==-1) {
|
|
|
|
|
besttimes[timetriallevel] = timetrialresulttime;
|
|
|
|
|
}
|
|
|
|
|
if (trinkets > besttrinkets[timetriallevel] || besttrinkets[timetriallevel]==-1) {
|
|
|
|
|
besttrinkets[timetriallevel] = trinkets;
|
|
|
|
|
}
|
|
|
|
|
if (deathcounts < bestlives[timetriallevel] || bestlives[timetriallevel]==-1) {
|
|
|
|
|
bestlives[timetriallevel] = deathcounts;
|
|
|
|
|
}
|
|
|
|
|
if (timetrialrank > bestrank[timetriallevel] || bestrank[timetriallevel]==-1) {
|
|
|
|
|
bestrank[timetriallevel] = timetrialrank;
|
|
|
|
|
scores.reportAchievement(6 + timetriallevel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
savestats(map, dwgfx);
|
|
|
|
|
|
|
|
|
|
dwgfx.fademode = 2; music.fadeout();
|
|
|
|
|
state++;
|
|
|
|
|
break;
|
|
|
|
|
case 83:
|
|
|
|
|
frames--;
|
|
|
|
|
if(dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 84:
|
|
|
|
|
dwgfx.flipmode = false;
|
|
|
|
|
gamestate = 1; dwgfx.fademode = 4;
|
|
|
|
|
dwgfx.backgrounddrawn = true; map.tdrawback = true;
|
|
|
|
|
createmenu("timetrialcomplete");
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 85:
|
|
|
|
|
//Cutscene skip version of final level change
|
|
|
|
|
obj.removetrigger(85);
|
|
|
|
|
//Init final stretch
|
|
|
|
|
state++; music.playef(9, 10);
|
|
|
|
|
music.play(2);
|
|
|
|
|
obj.flags[72] = 1;
|
|
|
|
|
|
|
|
|
|
screenshake = 10;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
map.finalstretch = true;
|
|
|
|
|
map.warpx = false; map.warpy = false;
|
|
|
|
|
map.background = 6;
|
|
|
|
|
|
|
|
|
|
map.final_colormode = true; map.final_colorframe = 1;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
//From 90-100 are run scripts for the eurogamer expo only, remove later
|
|
|
|
|
case 90:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
startscript = true; newscript="startexpolevel_station1";
|
|
|
|
|
obj.removetrigger(90);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 91:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
startscript = true; newscript="startexpolevel_lab";
|
|
|
|
|
obj.removetrigger(91);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 92:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
startscript = true; newscript="startexpolevel_warp";
|
|
|
|
|
obj.removetrigger(92);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 93:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
startscript = true; newscript="startexpolevel_tower";
|
|
|
|
|
obj.removetrigger(93);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 94:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
startscript = true; newscript="startexpolevel_station2";
|
|
|
|
|
obj.removetrigger(94);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 95:
|
|
|
|
|
//Generic "run script"
|
|
|
|
|
startscript = true; newscript="startexpolevel_final";
|
|
|
|
|
obj.removetrigger(95);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 96:
|
|
|
|
|
//Used to return to gravitron to game
|
|
|
|
|
if(dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 97:
|
|
|
|
|
gamestate = 0; dwgfx.fademode = 4;
|
|
|
|
|
startscript = true; newscript="returntolab";
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 100:
|
|
|
|
|
//
|
|
|
|
|
// Meeting crewmate in the warpzone
|
|
|
|
|
//
|
|
|
|
|
obj.removetrigger(100);
|
|
|
|
|
if (obj.flags[4] == 0) {
|
|
|
|
|
obj.changeflag(4, 1);
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 101:
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
if (obj.entities[i].onroof > 0 && gravitycontrol == 1) {
|
|
|
|
|
gravitycontrol = 0; music.playef(1, 10);
|
|
|
|
|
}
|
|
|
|
|
if (obj.entities[i].onground > 0) {
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 102:
|
|
|
|
|
companion = 6;
|
|
|
|
|
i = obj.getcompanion(6); obj.entities[i].tile = 0; obj.entities[i].state = 1;
|
|
|
|
|
|
|
|
|
|
advancetext = true; hascontrol = false;
|
|
|
|
|
|
|
|
|
|
dwgfx.createtextbox("Captain! I've been so worried!", 60, 90, 164, 255, 164);
|
|
|
|
|
state++; music.playef(12, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 104:
|
|
|
|
|
dwgfx.createtextbox("I'm glad you're ok!", 135, 152, 164, 164, 255);
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
case 106:
|
|
|
|
|
dwgfx.createtextbox("I've been trying to find a", 74, 70, 164, 255, 164);
|
|
|
|
|
dwgfx.addline("way out, but I keep going");
|
|
|
|
|
dwgfx.addline("around in circles...");
|
|
|
|
|
state++; music.playef(2, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
i = obj.getcompanion(6);
|
|
|
|
|
obj.entities[i].tile = 54; obj.entities[i].state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 108:
|
|
|
|
|
dwgfx.createtextbox("Don't worry! I have a", 125, 152, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("teleporter key!");
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
case 110:
|
|
|
|
|
i = obj.getcompanion(6); obj.entities[i].tile = 0; obj.entities[i].state = 1;
|
|
|
|
|
dwgfx.createtextbox("Follow me!", 185, 154, 164, 164, 255);
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
case 112:
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 115:
|
|
|
|
|
//
|
|
|
|
|
// Test script for space station, totally delete me!
|
|
|
|
|
//
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state++;
|
|
|
|
|
break;
|
|
|
|
|
case 116:
|
|
|
|
|
advancetext = true; hascontrol = false;
|
|
|
|
|
|
|
|
|
|
dwgfx.createtextbox("Sorry Eurogamers! Teleporting around", 60 - 20, 200, 255, 64, 64);
|
|
|
|
|
dwgfx.addline("the map doesn't work in this version!");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
state++;
|
|
|
|
|
break;
|
|
|
|
|
case 118:
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 120:
|
|
|
|
|
//
|
|
|
|
|
// Meeting crewmate in the space station
|
|
|
|
|
//
|
|
|
|
|
obj.removetrigger(120);
|
|
|
|
|
if (obj.flags[5] == 0) {
|
|
|
|
|
obj.changeflag(5, 1);
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 121:
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
if (obj.entities[i].onground > 0 && gravitycontrol == 0) {
|
|
|
|
|
gravitycontrol = 1; music.playef(1, 10);
|
|
|
|
|
}
|
|
|
|
|
if (obj.entities[i].onroof > 0) {
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 122:
|
|
|
|
|
companion = 7;
|
|
|
|
|
i = obj.getcompanion(7); obj.entities[i].tile = 6; obj.entities[i].state = 1;
|
|
|
|
|
|
|
|
|
|
advancetext = true; hascontrol = false;
|
|
|
|
|
|
|
|
|
|
dwgfx.createtextbox("Captain! You're ok!", 60-10, 90-40, 255, 255, 134);
|
|
|
|
|
state++; music.playef(14, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 124:
|
|
|
|
|
dwgfx.createtextbox("I've found a teleporter, but", 60-20, 90 - 40, 255, 255, 134);
|
|
|
|
|
dwgfx.addline("I can't get it to go anywhere...");
|
|
|
|
|
state++; music.playef(2, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
i = obj.getcompanion(7); //obj.entities[i].tile = 66; obj.entities[i].state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 126:
|
|
|
|
|
dwgfx.createtextbox("I can help with that!", 125, 152-40, 164, 164, 255);
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
case 128:
|
|
|
|
|
dwgfx.createtextbox("I have the teleporter", 130, 152-35, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("codex for our ship!");
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 130:
|
|
|
|
|
dwgfx.createtextbox("Yey! Let's go home!", 60-30, 90-35, 255, 255, 134);
|
|
|
|
|
state++; music.playef(14, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
i = obj.getcompanion(7); obj.entities[i].tile = 6; obj.entities[i].state = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 132:
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 200:
|
|
|
|
|
//Init final stretch
|
|
|
|
|
state++; music.playef(9, 10);
|
|
|
|
|
//music.play(2);
|
|
|
|
|
obj.flags[72] = 1;
|
|
|
|
|
|
|
|
|
|
screenshake = 10;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
map.finalstretch = true;
|
|
|
|
|
map.warpx = false; map.warpy = false;
|
|
|
|
|
map.background = 6;
|
|
|
|
|
|
|
|
|
|
map.final_colormode = true; map.final_colorframe = 1;
|
|
|
|
|
|
|
|
|
|
startscript = true; newscript="finalterminal_finish";
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 300:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[0];
|
|
|
|
|
obj.removetrigger(300);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 301:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[1];
|
|
|
|
|
obj.removetrigger(301);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 302:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[2];
|
|
|
|
|
obj.removetrigger(302);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 303:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[3];
|
|
|
|
|
obj.removetrigger(303);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 304:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[4];
|
|
|
|
|
obj.removetrigger(304);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 305:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[5];
|
|
|
|
|
obj.removetrigger(305);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 306:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[6];
|
|
|
|
|
obj.removetrigger(306);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 307:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[7];
|
|
|
|
|
obj.removetrigger(307);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 308:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[8];
|
|
|
|
|
obj.removetrigger(308);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 309:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[9];
|
|
|
|
|
obj.removetrigger(309);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 310:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[10];
|
|
|
|
|
obj.removetrigger(310);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 311:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[11];
|
|
|
|
|
obj.removetrigger(311);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 312:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[12];
|
|
|
|
|
obj.removetrigger(312);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 313:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[13];
|
|
|
|
|
obj.removetrigger(313);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 314:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[14];
|
|
|
|
|
obj.removetrigger(314);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 315:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[15];
|
|
|
|
|
obj.removetrigger(315);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 316:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[16];
|
|
|
|
|
obj.removetrigger(316);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 317:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[17];
|
|
|
|
|
obj.removetrigger(317);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 318:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[18];
|
|
|
|
|
obj.removetrigger(318);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 319:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[19];
|
|
|
|
|
obj.removetrigger(319);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 320:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[20];
|
|
|
|
|
obj.removetrigger(320);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 321:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[21];
|
|
|
|
|
obj.removetrigger(321);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 322:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[22];
|
|
|
|
|
obj.removetrigger(322);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 323:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[23];
|
|
|
|
|
obj.removetrigger(323);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 324:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[24];
|
|
|
|
|
obj.removetrigger(324);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 325:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[25];
|
|
|
|
|
obj.removetrigger(325);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 326:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[26];
|
|
|
|
|
obj.removetrigger(326);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 327:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[27];
|
|
|
|
|
obj.removetrigger(327);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 328:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[28];
|
|
|
|
|
obj.removetrigger(328);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 329:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[29];
|
|
|
|
|
obj.removetrigger(329);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 330:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[30];
|
|
|
|
|
obj.removetrigger(330);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 331:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[31];
|
|
|
|
|
obj.removetrigger(331);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 332:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[32];
|
|
|
|
|
obj.removetrigger(332);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 333:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[33];
|
|
|
|
|
obj.removetrigger(333);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 334:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[34];
|
|
|
|
|
obj.removetrigger(334);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 335:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[35];
|
|
|
|
|
obj.removetrigger(335);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
case 336:
|
|
|
|
|
startscript = true;
|
|
|
|
|
newscript="custom_"+customscript[36];
|
|
|
|
|
obj.removetrigger(336);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 1000:
|
|
|
|
|
dwgfx.showcutscenebars = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
completestop = true;
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
break;
|
|
|
|
|
case 1001:
|
|
|
|
|
//Found a trinket!
|
|
|
|
|
advancetext = true;
|
|
|
|
|
state++;
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox(" Congratulations! ", 50, 105, 174, 174, 174);
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("You have found a shiny trinket!");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
if (map.custommode) {
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(trinkets) + " out of " + help.number(map.customtrinkets), 50, 65, 174, 174, 174);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(trinkets) + " out of Twenty ", 50, 65, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" Congratulations! ", 50, 85, 174, 174, 174);
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("You have found a shiny trinket!");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
if (map.custommode) {
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(trinkets) + " out of " + help.number(map.customtrinkets), 50, 135, 174, 174, 174);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(trinkets) + " out of Twenty ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1003:
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false; completestop = false;
|
|
|
|
|
state = 0;
|
|
|
|
|
//music.play(music.resumesong);
|
|
|
|
|
music.musicfadein = 90;
|
|
|
|
|
dwgfx.showcutscenebars = false;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 1010:
|
|
|
|
|
dwgfx.showcutscenebars = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
completestop = true;
|
|
|
|
|
state++;
|
|
|
|
|
statedelay = 15;
|
|
|
|
|
break;
|
|
|
|
|
case 1011:
|
|
|
|
|
//Found a trinket!
|
|
|
|
|
advancetext = true;
|
|
|
|
|
state++;
|
|
|
|
|
if (dwgfx.flipmode)
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" Congratulations! ", 50, 105, 174, 174, 174);
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("You have found a lost crewmate!");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
if(int(map.customcrewmates-crewmates)==0)
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" All crewmates rescued! ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
else if(map.customcrewmates-crewmates==1)
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(int(map.customcrewmates-crewmates))+ " remains ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(int(map.customcrewmates-crewmates))+ " remain ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" Congratulations! ", 50, 85, 174, 174, 174);
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("You have found a lost crewmate!");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
if(int(map.customcrewmates-crewmates)==0)
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" All crewmates rescued! ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
else if(map.customcrewmates-crewmates==1)
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(int(map.customcrewmates-crewmates))+ " remains ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dwgfx.createtextbox(" " + help.number(int(map.customcrewmates-crewmates))+ " remain ", 50, 135, 174, 174, 174);
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1013:
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false;
|
|
|
|
|
completestop = false;
|
|
|
|
|
state = 0;
|
|
|
|
|
|
|
|
|
|
if(map.customcrewmates-crewmates==0)
|
|
|
|
|
{
|
|
|
|
|
if(map.custommodeforreal)
|
|
|
|
|
{
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
if(!muted && editor.levmusic>0) music.musicfadein = 90;
|
|
|
|
|
if(editor.levmusic>0) music.fadeout();
|
|
|
|
|
state=1014;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
gamestate = EDITORMODE;
|
|
|
|
|
dwgfx.backgrounddrawn=false;
|
|
|
|
|
if(!muted && editor.levmusic>0) music.musicfadein = 90;
|
|
|
|
|
if(editor.levmusic>0) music.fadeout();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(!muted && editor.levmusic>0) music.musicfadein = 90;
|
|
|
|
|
}
|
|
|
|
|
dwgfx.showcutscenebars = false;
|
|
|
|
|
break;
|
|
|
|
|
case 1014:
|
|
|
|
|
frames--;
|
|
|
|
|
if(dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 1015:
|
|
|
|
|
dwgfx.flipmode = false;
|
|
|
|
|
gamestate = TITLEMODE;
|
|
|
|
|
dwgfx.fademode = 4;
|
|
|
|
|
music.play(6);
|
|
|
|
|
dwgfx.backgrounddrawn = true;
|
|
|
|
|
map.tdrawback = true;
|
|
|
|
|
//Update level stats
|
|
|
|
|
if(map.customcrewmates-crewmates==0)
|
|
|
|
|
{
|
|
|
|
|
//Finished level
|
|
|
|
|
if(map.customtrinkets-trinkets==0)
|
|
|
|
|
{
|
|
|
|
|
//and got all the trinkets!
|
|
|
|
|
updatecustomlevelstats(customlevelfilename, 3);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
updatecustomlevelstats(customlevelfilename, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
createmenu("levellist");
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 2000:
|
|
|
|
|
//Game Saved!
|
|
|
|
|
if (intimetrial || nodeathmode || inintermission) {
|
|
|
|
|
state = 0;
|
|
|
|
|
}else{
|
|
|
|
|
savetele(map, obj, music, help);
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox(" Game Saved ", -1, 202, 174, 174, 174);
|
|
|
|
|
dwgfx.textboxtimer(25);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" Game Saved ", -1, 12, 174, 174, 174);
|
|
|
|
|
dwgfx.textboxtimer(25);
|
|
|
|
|
}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 2500:
|
|
|
|
|
|
|
|
|
|
music.play(5);
|
|
|
|
|
//Activating a teleporter (appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 2501:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
flashlight = 5; screenshake = 0;
|
|
|
|
|
//we're done here!
|
|
|
|
|
music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 2502:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].colour = 0;
|
|
|
|
|
obj.entities[i].invis = false;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].xp = obj.entities[obj.getteleporter()].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[obj.getteleporter()].yp+44;
|
|
|
|
|
obj.entities[i].ay = -6;
|
|
|
|
|
obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6;
|
|
|
|
|
obj.entities[i].vx = 6;
|
|
|
|
|
|
|
|
|
|
i = obj.getteleporter();
|
|
|
|
|
obj.entities[i].tile = 1;
|
|
|
|
|
obj.entities[i].colour = 101;
|
|
|
|
|
break;
|
|
|
|
|
case 2503:
|
|
|
|
|
state++;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].xp += 10;
|
|
|
|
|
break;
|
|
|
|
|
case 2504:
|
|
|
|
|
state++;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
//obj.entities[i].xp += 10;
|
|
|
|
|
break;
|
|
|
|
|
case 2505:
|
|
|
|
|
state++;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].xp += 8;
|
|
|
|
|
break;
|
|
|
|
|
case 2506:
|
|
|
|
|
state++;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].xp += 6;
|
|
|
|
|
break;
|
|
|
|
|
case 2507:
|
|
|
|
|
state++;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
//obj.entities[i].xp += 4;
|
|
|
|
|
break;
|
|
|
|
|
case 2508:
|
|
|
|
|
state++;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].xp += 2;
|
|
|
|
|
break;
|
|
|
|
|
case 2509:
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].xp += 1;
|
|
|
|
|
break;
|
|
|
|
|
case 2510:
|
|
|
|
|
advancetext = true; hascontrol = false;
|
|
|
|
|
dwgfx.createtextbox("Hello?", 125+24, 152-20, 164, 164, 255);
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
case 2512:
|
|
|
|
|
advancetext = true; hascontrol = false;
|
|
|
|
|
dwgfx.createtextbox("Is anyone there?", 125+8, 152-24, 164, 164, 255);
|
|
|
|
|
state++; music.playef(11, 10);
|
|
|
|
|
dwgfx.textboxactive();
|
|
|
|
|
break;
|
|
|
|
|
case 2514:
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
hascontrol = true;
|
|
|
|
|
advancetext = false;
|
|
|
|
|
|
|
|
|
|
state = 0;
|
|
|
|
|
music.play(3);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 3000:
|
|
|
|
|
//Activating a teleporter (long version for level complete)
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3001:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3002:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3003:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3004:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
flashlight = 5; screenshake = 0;
|
|
|
|
|
//we're done here!
|
|
|
|
|
music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3005:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 50;
|
|
|
|
|
//testing!
|
|
|
|
|
//state = 3006; //Warp Zone
|
|
|
|
|
//state = 3020; //Space Station
|
|
|
|
|
switch(companion) {
|
|
|
|
|
case 6: state = 3006; break; //Warp Zone
|
|
|
|
|
case 7: state = 3020; break; //Space Station
|
|
|
|
|
case 8: state = 3040; break; //Lab
|
|
|
|
|
case 9: state = 3060; break; //Tower
|
|
|
|
|
case 10: state = 3080; break; //Intermission 2
|
|
|
|
|
case 11: state = 3085; break; //Intermission 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].colour = 0;
|
|
|
|
|
obj.entities[i].invis = true;
|
|
|
|
|
|
|
|
|
|
i = obj.getcompanion(companion);
|
|
|
|
|
if(i>-1){
|
|
|
|
|
obj.entities[i].active = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
i = obj.getteleporter();
|
|
|
|
|
obj.entities[i].tile = 1;
|
|
|
|
|
obj.entities[i].colour = 100;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3006:
|
|
|
|
|
//Level complete! (warp zone)
|
|
|
|
|
unlocknum(4, map, dwgfx);
|
|
|
|
|
lastsaved = 4;
|
|
|
|
|
music.play(0);
|
|
|
|
|
state++; statedelay = 75;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 180, 165, 165, 255);
|
|
|
|
|
}else{ dwgfx.createtextbox("", -1, 12, 165, 165, 255); }
|
|
|
|
|
//dwgfx.addline(" Level Complete! ");
|
|
|
|
|
dwgfx.addline(" ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
/* advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state = 3;
|
|
|
|
|
dwgfx.createtextbox("To do: write quick", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("intro to story!");*/
|
|
|
|
|
break;
|
|
|
|
|
case 3007:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 104, 175,174,174);
|
|
|
|
|
}else { dwgfx.createtextbox("", -1, 64+8+16, 175,174,174); }
|
|
|
|
|
dwgfx.addline(" You have rescued ");
|
|
|
|
|
dwgfx.addline(" a crew member! ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3008:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
temp = 6 - crewrescued();
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
tempstring = " One remains ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else if (temp > 0) {
|
|
|
|
|
tempstring = " " + help.number(temp) + " remain ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else {
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3009:
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" Tap screen to continue ", -1, 20, 164, 164, 255);
|
|
|
|
|
}else { dwgfx.createtextbox(" Tap screen to continue ", -1, 196, 164, 164, 255); }
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3010:
|
|
|
|
|
if (jumppressed) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3011:
|
|
|
|
|
state = 3070; statedelay = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3020:
|
|
|
|
|
//Level complete! (Space Station 2)
|
|
|
|
|
unlocknum(3, map, dwgfx);
|
|
|
|
|
lastsaved = 2;
|
|
|
|
|
music.play(0);
|
|
|
|
|
state++; statedelay = 75;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 180, 165, 165, 255);
|
|
|
|
|
}else{ dwgfx.createtextbox("", -1, 12, 165, 165, 255); }
|
|
|
|
|
//dwgfx.addline(" Level Complete! ");
|
|
|
|
|
dwgfx.addline(" ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
/* advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state = 3;
|
|
|
|
|
dwgfx.createtextbox("To do: write quick", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("intro to story!");*/
|
|
|
|
|
break;
|
|
|
|
|
case 3021:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 104, 174,175,174);
|
|
|
|
|
}else { dwgfx.createtextbox("", -1, 64+8+16, 174,175,174); }
|
|
|
|
|
dwgfx.addline(" You have rescued ");
|
|
|
|
|
dwgfx.addline(" a crew member! ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3022:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
temp = 6 - crewrescued();
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
tempstring = " One remains ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else if (temp > 0) {
|
|
|
|
|
tempstring = " " + help.number(temp) + " remain ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else {
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3023:
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" Tap screen to continue ", -1, 20, 164, 164, 255);
|
|
|
|
|
}else { dwgfx.createtextbox(" Tap screen to continue ", -1, 196, 164, 164, 255); }
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3024:
|
|
|
|
|
if (jumppressed) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3025:
|
|
|
|
|
state = 3070; statedelay = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3040:
|
|
|
|
|
//Level complete! (Lab)
|
|
|
|
|
unlocknum(1, map, dwgfx);
|
|
|
|
|
lastsaved = 5;
|
|
|
|
|
music.play(0);
|
|
|
|
|
state++; statedelay = 75;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 180, 165, 165, 255);
|
|
|
|
|
}else{ dwgfx.createtextbox("", -1, 12, 165, 165, 255); }
|
|
|
|
|
//dwgfx.addline(" Level Complete! ");
|
|
|
|
|
dwgfx.addline(" ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
/* advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state = 3;
|
|
|
|
|
dwgfx.createtextbox("To do: write quick", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("intro to story!");*/
|
|
|
|
|
break;
|
|
|
|
|
case 3041:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 104, 174,174,175);
|
|
|
|
|
}else { dwgfx.createtextbox("", -1, 64+8+16, 174,174,175); }
|
|
|
|
|
dwgfx.addline(" You have rescued ");
|
|
|
|
|
dwgfx.addline(" a crew member! ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3042:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
temp = 6 - crewrescued();
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
tempstring = " One remains ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else if (temp > 0) {
|
|
|
|
|
tempstring = " " + help.number(temp) + " remain ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else {
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3043:
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" Tap screen to continue ", -1, 20, 164, 164, 255);
|
|
|
|
|
}else { dwgfx.createtextbox(" Tap screen to continue ", -1, 196, 164, 164, 255); }
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3044:
|
|
|
|
|
if (jumppressed) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3045:
|
|
|
|
|
state = 3070; statedelay = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3050:
|
|
|
|
|
//Level complete! (Space Station 1)
|
|
|
|
|
unlocknum(0, map, dwgfx);
|
|
|
|
|
lastsaved = 1;
|
|
|
|
|
music.play(0);
|
|
|
|
|
state++; statedelay = 75;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 180, 165, 165, 255);
|
|
|
|
|
}else{ dwgfx.createtextbox("", -1, 12, 165, 165, 255); }
|
|
|
|
|
//dwgfx.addline(" Level Complete! ");
|
|
|
|
|
dwgfx.addline(" ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
/* advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state = 3;
|
|
|
|
|
dwgfx.createtextbox("To do: write quick", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("intro to story!");*/
|
|
|
|
|
break;
|
|
|
|
|
case 3051:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 104, 175,175,174);
|
|
|
|
|
}else { dwgfx.createtextbox("", -1, 64+8+16, 175,175,174); }
|
|
|
|
|
dwgfx.addline(" You have rescued ");
|
|
|
|
|
dwgfx.addline(" a crew member! ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3052:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
temp = 6 - crewrescued();
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
tempstring = " One remains ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else if (temp > 0) {
|
|
|
|
|
tempstring = " " + help.number(temp) + " remain ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else {
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3053:
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" Tap screen to continue ", -1, 20, 164, 164, 255);
|
|
|
|
|
}else { dwgfx.createtextbox(" Tap screen to continue ", -1, 196, 164, 164, 255); }
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3054:
|
|
|
|
|
if (jumppressed) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
crewstats[1] = 0; //Set violet's rescue script to 0 to make the next bit easier
|
|
|
|
|
teleportscript = "";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3055:
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
state++; statedelay = 10;
|
|
|
|
|
break;
|
|
|
|
|
case 3056:
|
|
|
|
|
if(dwgfx.fademode==1){
|
|
|
|
|
startscript = true;
|
|
|
|
|
if (nocutscenes) {
|
|
|
|
|
newscript="bigopenworldskip";
|
|
|
|
|
}else{
|
|
|
|
|
newscript = "bigopenworld";
|
|
|
|
|
}
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 3060:
|
|
|
|
|
//Level complete! (Tower)
|
|
|
|
|
unlocknum(2, map, dwgfx);
|
|
|
|
|
lastsaved = 3;
|
|
|
|
|
music.play(0);
|
|
|
|
|
state++; statedelay = 75;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 180, 165, 165, 255);
|
|
|
|
|
}else{ dwgfx.createtextbox("", -1, 12, 165, 165, 255); }
|
|
|
|
|
//dwgfx.addline(" Level Complete! ");
|
|
|
|
|
dwgfx.addline(" ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
|
|
|
|
|
/* advancetext = true;
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
state = 3;
|
|
|
|
|
dwgfx.createtextbox("To do: write quick", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("intro to story!");*/
|
|
|
|
|
break;
|
|
|
|
|
case 3061:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 104, 175,174,175);
|
|
|
|
|
}else { dwgfx.createtextbox("", -1, 64+8+16, 175,174,175); }
|
|
|
|
|
dwgfx.addline(" You have rescued ");
|
|
|
|
|
dwgfx.addline(" a crew member! ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3062:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
temp = 6 - crewrescued();
|
|
|
|
|
if (temp == 1) {
|
|
|
|
|
tempstring = " One remains ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else if (temp > 0) {
|
|
|
|
|
tempstring = " " + help.number(temp) + " remain ";
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(tempstring, -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(tempstring, -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}else {
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 72, 174, 174, 174);
|
|
|
|
|
}else { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 128+16, 174, 174, 174); }
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3063:
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" Tap screen to continue ", -1, 20, 164, 164, 255);
|
|
|
|
|
}else { dwgfx.createtextbox(" Tap screen to continue ", -1, 196, 164, 164, 255); }
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3064:
|
|
|
|
|
if (jumppressed) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3065:
|
|
|
|
|
state = 3070; statedelay = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 3070:
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3071:
|
|
|
|
|
if (dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3072:
|
|
|
|
|
//Ok, we need to adjust some flags based on who've we've rescued. Some of there conversation options
|
|
|
|
|
//change depending on when they get back to the ship.
|
|
|
|
|
if (lastsaved == 2) {
|
|
|
|
|
if (crewstats[3]) obj.flags[25] = 1;
|
|
|
|
|
if (crewstats[4]) obj.flags[26] = 1;
|
|
|
|
|
if (crewstats[5]) obj.flags[24] = 1;
|
|
|
|
|
}else if (lastsaved == 3) {
|
|
|
|
|
if (crewstats[2]) obj.flags[50] = 1;
|
|
|
|
|
if (crewstats[4]) obj.flags[49] = 1;
|
|
|
|
|
if (crewstats[5]) obj.flags[48] = 1;
|
|
|
|
|
}else if (lastsaved == 4) {
|
|
|
|
|
if (crewstats[2]) obj.flags[54] = 1;
|
|
|
|
|
if (crewstats[3]) obj.flags[55] = 1;
|
|
|
|
|
if (crewstats[5]) obj.flags[56] = 1;
|
|
|
|
|
}else if (lastsaved == 5) {
|
|
|
|
|
if (crewstats[2]) obj.flags[37] = 1;
|
|
|
|
|
if (crewstats[3]) obj.flags[38] = 1;
|
|
|
|
|
if (crewstats[4]) obj.flags[39] = 1;
|
|
|
|
|
}
|
|
|
|
|
//We're pitch black now, make a decision
|
|
|
|
|
companion = 0;
|
|
|
|
|
if (crewrescued() == 6) {
|
|
|
|
|
startscript = true; newscript="startlevel_final";
|
|
|
|
|
state = 0;
|
|
|
|
|
}else if (crewrescued() == 4) {
|
|
|
|
|
companion = 11;
|
|
|
|
|
supercrewmate = true;
|
|
|
|
|
scmprogress = 0;
|
|
|
|
|
|
|
|
|
|
startscript = true; newscript = "intermission_1";
|
|
|
|
|
obj.flags[19] = 1;
|
|
|
|
|
if (lastsaved == 2) obj.flags[32] = 1;
|
|
|
|
|
if (lastsaved == 3) obj.flags[35] = 1;
|
|
|
|
|
if (lastsaved == 4) obj.flags[34] = 1;
|
|
|
|
|
if (lastsaved == 5) obj.flags[33] = 1;
|
|
|
|
|
state = 0;
|
|
|
|
|
}else if (crewrescued() == 5) {
|
|
|
|
|
startscript = true; newscript = "intermission_2";
|
|
|
|
|
obj.flags[20] = 1;
|
|
|
|
|
if (lastsaved == 2) obj.flags[32] = 1;
|
|
|
|
|
if (lastsaved == 3) obj.flags[35] = 1;
|
|
|
|
|
if (lastsaved == 4) obj.flags[34] = 1;
|
|
|
|
|
if (lastsaved == 5) obj.flags[33] = 1;
|
|
|
|
|
state = 0;
|
|
|
|
|
}else {
|
|
|
|
|
startscript = true; newscript="regularreturn";
|
|
|
|
|
state = 0;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3080:
|
|
|
|
|
//returning from an intermission, very like 3070
|
|
|
|
|
if (inintermission) {
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
companion = 0;
|
|
|
|
|
state=3100;
|
|
|
|
|
}else{
|
|
|
|
|
unlocknum(7, map, dwgfx);
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
companion = 0;
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3081:
|
|
|
|
|
if (dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3082:
|
|
|
|
|
map.finalmode = false;
|
|
|
|
|
startscript = true; newscript="regularreturn";
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3085:
|
|
|
|
|
//returning from an intermission, very like 3070
|
|
|
|
|
//return to menu from here
|
|
|
|
|
if (inintermission) {
|
|
|
|
|
companion = 0;
|
|
|
|
|
supercrewmate = false;
|
|
|
|
|
state++;
|
|
|
|
|
dwgfx.fademode = 2; music.fadeout();
|
|
|
|
|
state=3100;
|
|
|
|
|
}else{
|
|
|
|
|
unlocknum(6, map, dwgfx);
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
companion = 0;
|
|
|
|
|
supercrewmate = false;
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3086:
|
|
|
|
|
if (dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3087:
|
|
|
|
|
map.finalmode = false;
|
|
|
|
|
startscript = true; newscript="regularreturn";
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3100:
|
|
|
|
|
if(dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3101:
|
|
|
|
|
dwgfx.flipmode = false;
|
|
|
|
|
gamestate = 1; dwgfx.fademode = 4;
|
|
|
|
|
dwgfx.backgrounddrawn = true; map.tdrawback = true;
|
|
|
|
|
createmenu("play");
|
|
|
|
|
music.play(6);
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
//startscript = true; newscript="returntohub";
|
|
|
|
|
//state = 0;
|
|
|
|
|
|
|
|
|
|
/*case 3025:
|
|
|
|
|
if (recording == 1) {
|
|
|
|
|
//if recording the input, output it to debug here
|
|
|
|
|
trace(recordstring);
|
|
|
|
|
help.toclipboard(recordstring);
|
|
|
|
|
}
|
|
|
|
|
test = true; teststring = recordstring;
|
|
|
|
|
dwgfx.createtextbox(" Congratulations! ", 50, 80, 164, 164, 255);
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("Your play of this level has");
|
|
|
|
|
dwgfx.addline("been copied to the clipboard.");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("Please consider pasting and");
|
|
|
|
|
dwgfx.addline("sending it to me! Even if you");
|
|
|
|
|
dwgfx.addline("made a lot of mistakes - knowing");
|
|
|
|
|
dwgfx.addline("exactly where people are having");
|
|
|
|
|
dwgfx.addline("trouble is extremely useful!");
|
|
|
|
|
dwgfx.textboxcenter();
|
|
|
|
|
state = 0;
|
|
|
|
|
break;*/
|
|
|
|
|
|
|
|
|
|
case 3500:
|
|
|
|
|
music.fadeout();
|
|
|
|
|
state++; statedelay = 120;
|
|
|
|
|
//state = 3511; //testing
|
|
|
|
|
break;
|
|
|
|
|
case 3501:
|
|
|
|
|
//Game complete!
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvgamecomplete);
|
|
|
|
|
unlocknum(5, map, dwgfx);
|
|
|
|
|
crewstats[0] = true;
|
|
|
|
|
state++; statedelay = 75;
|
|
|
|
|
music.play(7);
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox("", -1, 180, 164, 165, 255);
|
|
|
|
|
}else{ dwgfx.createtextbox("", -1, 12, 164, 165, 255); }
|
|
|
|
|
dwgfx.addline(" ");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.addline("");
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3502:
|
|
|
|
|
state++; statedelay = 45+15;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) { dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 175-24, 0, 0, 0);
|
|
|
|
|
}else{ dwgfx.createtextbox(" All Crew Members Rescued! ", -1, 64, 0, 0, 0);}
|
|
|
|
|
savetime = timestring(help);
|
|
|
|
|
break;
|
|
|
|
|
case 3503:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
tempstring = help.number(trinkets);
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox("Trinkets Found:", 48, 155-24, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(tempstring, 180, 155-24, 0, 0, 0);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox("Trinkets Found:", 48, 84, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(tempstring, 180, 84, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3504:
|
|
|
|
|
state++; statedelay = 45+15;
|
|
|
|
|
|
|
|
|
|
tempstring = String(savetime);
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox(" Game Time:", 64, 143-24, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(tempstring, 180, 143-24, 0, 0, 0);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" Game Time:", 64, 96, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(tempstring, 180, 96, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3505:
|
|
|
|
|
state++; statedelay = 45;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox(" Total Flips:", 64, 116-24, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(String(totalflips), 180, 116-24, 0, 0, 0);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" Total Flips:", 64, 123, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(String(totalflips), 180, 123, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3506:
|
|
|
|
|
state++; statedelay = 45+15;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox("Total Deaths:", 64, 104-24, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(String(deathcounts), 180, 104-24, 0, 0, 0);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox("Total Deaths:", 64, 135, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(String(deathcounts), 180, 135, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3507:
|
|
|
|
|
state++; statedelay = 45+15;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
tempstring = "Hardest Room (with " + String(hardestroomdeaths) + " deaths)";
|
|
|
|
|
dwgfx.createtextbox(tempstring, -1, 81-24, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(hardestroom, -1, 69-24, 0, 0, 0);
|
|
|
|
|
}else{
|
|
|
|
|
tempstring = "Hardest Room (with " + String(hardestroomdeaths) + " deaths)";
|
|
|
|
|
dwgfx.createtextbox(tempstring, -1, 158, 0,0,0);
|
|
|
|
|
dwgfx.createtextbox(hardestroom, -1, 170, 0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3508:
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
|
|
|
|
|
if (dwgfx.flipmode) {
|
|
|
|
|
dwgfx.createtextbox(" Tap screen to continue ", -1, 20, 164, 164, 255);
|
|
|
|
|
}else{
|
|
|
|
|
dwgfx.createtextbox(" Tap screen to continue ", -1, 196, 164, 164, 255);
|
|
|
|
|
}
|
|
|
|
|
dwgfx.textboxcenterx();
|
|
|
|
|
break;
|
|
|
|
|
case 3509:
|
|
|
|
|
if (jumppressed) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
dwgfx.textboxremove();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3510:
|
|
|
|
|
//Save stats and stuff here
|
|
|
|
|
if (obj.flags[73] == 0) {
|
|
|
|
|
//flip mode complete
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvgamecompleteflip);
|
|
|
|
|
unlock[19] = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bestgamedeaths == -1) {
|
|
|
|
|
bestgamedeaths = deathcounts;
|
|
|
|
|
}else {
|
|
|
|
|
if (deathcounts < bestgamedeaths) {
|
|
|
|
|
bestgamedeaths = deathcounts;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bestgamedeaths > -1) {
|
|
|
|
|
if (bestgamedeaths <= 500) {
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvcomplete500);
|
|
|
|
|
}
|
|
|
|
|
if (bestgamedeaths <= 250) {
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvcomplete250);
|
|
|
|
|
}
|
|
|
|
|
if (bestgamedeaths <= 100) {
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvcomplete100);
|
|
|
|
|
}
|
|
|
|
|
if (bestgamedeaths <= 50) {
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvcomplete50);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
savestats(map, dwgfx);
|
|
|
|
|
if (nodeathmode) {
|
|
|
|
|
scores.reportAchievement(scores.vvvvvvmaster); //bloody hell
|
|
|
|
|
unlock[20] = true;
|
|
|
|
|
state = 3520; statedelay = 0;
|
|
|
|
|
}else{
|
|
|
|
|
statedelay = 120;
|
|
|
|
|
state++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3511:
|
|
|
|
|
//Activating a teleporter (long version for level complete)
|
|
|
|
|
i = obj.getplayer(); obj.entities[i].colour = 102;
|
|
|
|
|
|
|
|
|
|
obj.flags[67] = 1;
|
|
|
|
|
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3512:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3513:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3514:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 3515:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
flashlight = 5; screenshake = 0;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); obj.entities[i].colour = 0;
|
|
|
|
|
obj.entities[i].invis = true;
|
|
|
|
|
|
|
|
|
|
//we're done here!
|
|
|
|
|
music.playef(10, 10);
|
|
|
|
|
statedelay = 60;
|
|
|
|
|
break;
|
|
|
|
|
case 3516:
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3517:
|
|
|
|
|
if (dwgfx.fademode == 1) {
|
|
|
|
|
state++; statedelay = 30;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 3518:
|
|
|
|
|
dwgfx.fademode = 4;
|
|
|
|
|
state = 0; statedelay = 30;
|
|
|
|
|
//music.play(5);
|
|
|
|
|
//music.play(10);
|
|
|
|
|
|
|
|
|
|
map.finalmode = false;
|
|
|
|
|
map.final_colormode = false; map.final_mapcol = 0; map.final_colorframe = 0;
|
|
|
|
|
map.finalstretch = false;
|
|
|
|
|
map.finalx = 100; map.finaly = 100;
|
|
|
|
|
|
|
|
|
|
dwgfx.cutscenebarspos = 320;
|
|
|
|
|
|
|
|
|
|
teleport_to_new_area = true;
|
|
|
|
|
teleportscript = "gamecomplete";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 3520:
|
|
|
|
|
//NO DEATH MODE COMPLETE JESUS
|
|
|
|
|
hascontrol = false;
|
|
|
|
|
crewstats[0] = true;
|
|
|
|
|
|
|
|
|
|
dwgfx.fademode = 2;
|
|
|
|
|
state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3521:
|
|
|
|
|
if(dwgfx.fademode == 1) state++;
|
|
|
|
|
break;
|
|
|
|
|
case 3522:
|
|
|
|
|
dwgfx.flipmode = false;
|
|
|
|
|
gamestate = 1; dwgfx.fademode = 4;
|
|
|
|
|
dwgfx.backgrounddrawn = true; map.tdrawback = true;
|
|
|
|
|
createmenu("nodeathmodecomplete");
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4000:
|
|
|
|
|
//Activating a teleporter (short version)
|
|
|
|
|
state++; statedelay = 10;
|
|
|
|
|
flashlight = 5;
|
|
|
|
|
screenshake = 10;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4001:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0;
|
|
|
|
|
flashlight = 5; screenshake = 0;
|
|
|
|
|
//we're done here!
|
|
|
|
|
music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4002:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 10;
|
|
|
|
|
//testing!
|
|
|
|
|
//state = 3006; //Warp Zone
|
|
|
|
|
//state = 3020; //Space Station
|
|
|
|
|
//state = 3040; //Lab
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].colour = 0;
|
|
|
|
|
obj.entities[i].invis = true;
|
|
|
|
|
|
|
|
|
|
i = obj.getteleporter();
|
|
|
|
|
if(i>-1){
|
|
|
|
|
obj.entities[i].tile = 1;
|
|
|
|
|
obj.entities[i].colour = 100;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 4003:
|
|
|
|
|
state = 0; statedelay = 0;
|
|
|
|
|
teleport_to_new_area = true;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4010:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4011:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4012:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4013: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4014: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4015: state++; i = obj.getplayer(); obj.entities[i].xp += 8; break;
|
|
|
|
|
case 4016: state++; i = obj.getplayer(); obj.entities[i].xp += 6; break;
|
|
|
|
|
case 4017: state++; i = obj.getplayer(); obj.entities[i].xp += 3; break;
|
|
|
|
|
case 4018: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 1; break;
|
|
|
|
|
case 4019:
|
|
|
|
|
if (intimetrial || nodeathmode || inintermission) {
|
|
|
|
|
}else{
|
|
|
|
|
savetele(map, obj, music, help);
|
|
|
|
|
}
|
|
|
|
|
i = obj.getteleporter();
|
|
|
|
|
activetele = true;
|
|
|
|
|
teleblock.x = obj.entities[i].xp - 32; teleblock.y = obj.entities[i].yp - 32;
|
|
|
|
|
teleblock.width = 160; teleblock.height = 160;
|
|
|
|
|
hascontrol = true; advancetext = false; state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4020:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4021:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4022:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4023: state++; i = obj.getplayer(); obj.entities[i].xp += 12; break;
|
|
|
|
|
case 4024: state++; i = obj.getplayer(); obj.entities[i].xp += 12; break;
|
|
|
|
|
case 4025: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4026: state++; i = obj.getplayer(); obj.entities[i].xp += 8; break;
|
|
|
|
|
case 4027: state++; i = obj.getplayer(); obj.entities[i].xp += 5; break;
|
|
|
|
|
case 4028: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 2; break;
|
|
|
|
|
case 4029: hascontrol = true; advancetext = false; state = 0; break;
|
|
|
|
|
|
|
|
|
|
case 4030:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4031:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4032:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 0;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = -6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = -6;
|
|
|
|
|
break;
|
|
|
|
|
case 4033: state++; i = obj.getplayer(); obj.entities[i].xp -= 12; break;
|
|
|
|
|
case 4034: state++; i = obj.getplayer(); obj.entities[i].xp -= 12; break;
|
|
|
|
|
case 4035: state++; i = obj.getplayer(); obj.entities[i].xp -= 10; break;
|
|
|
|
|
case 4036: state++; i = obj.getplayer(); obj.entities[i].xp -= 8; break;
|
|
|
|
|
case 4037: state++; i = obj.getplayer(); obj.entities[i].xp -= 5; break;
|
|
|
|
|
case 4038: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp -= 2; break;
|
|
|
|
|
case 4039: hascontrol = true; advancetext = false; state = 0; break;
|
|
|
|
|
|
|
|
|
|
case 4040:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4041:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4042:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4043: state++; i = obj.getplayer(); obj.entities[i].xp += 12; obj.entities[i].yp -= 15; break;
|
|
|
|
|
case 4044: state++; i = obj.getplayer(); obj.entities[i].xp += 12; obj.entities[i].yp -= 10; break;
|
|
|
|
|
case 4045: state++; i = obj.getplayer(); obj.entities[i].xp += 12; obj.entities[i].yp -= 10; break;
|
|
|
|
|
case 4046: state++; i = obj.getplayer(); obj.entities[i].xp += 8; obj.entities[i].yp -= 8; break;
|
|
|
|
|
case 4047: state++; i = obj.getplayer(); obj.entities[i].xp += 6; obj.entities[i].yp -= 8; break;
|
|
|
|
|
case 4048: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 3; break;
|
|
|
|
|
case 4049: hascontrol = true; advancetext = false; state = 0; break;
|
|
|
|
|
|
|
|
|
|
case 4050:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4051:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4052:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4053: state++; i = obj.getplayer(); obj.entities[i].xp += 4; obj.entities[i].yp -= 15; break;
|
|
|
|
|
case 4054: state++; i = obj.getplayer(); obj.entities[i].xp += 4; obj.entities[i].yp -= 10; break;
|
|
|
|
|
case 4055: state++; i = obj.getplayer(); obj.entities[i].xp += 4; obj.entities[i].yp -= 10; break;
|
|
|
|
|
case 4056: state++; i = obj.getplayer(); obj.entities[i].xp += 4; obj.entities[i].yp -= 8; break;
|
|
|
|
|
case 4057: state++; i = obj.getplayer(); obj.entities[i].xp += 2; obj.entities[i].yp -= 8; break;
|
|
|
|
|
case 4058: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 1; break;
|
|
|
|
|
case 4059: hascontrol = true; advancetext = false; state = 0; break;
|
|
|
|
|
|
|
|
|
|
case 4060:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4061:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4062:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 0;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = -6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = -6;
|
|
|
|
|
break;
|
|
|
|
|
case 4063: state++; i = obj.getplayer(); obj.entities[i].xp -= 28; obj.entities[i].yp -= 8; break;
|
|
|
|
|
case 4064: state++; i = obj.getplayer(); obj.entities[i].xp -= 28; obj.entities[i].yp -= 8; break;
|
|
|
|
|
case 4065: state++; i = obj.getplayer(); obj.entities[i].xp -= 25; break;
|
|
|
|
|
case 4066: state++; i = obj.getplayer(); obj.entities[i].xp -= 25; break;
|
|
|
|
|
case 4067: state++; i = obj.getplayer(); obj.entities[i].xp -= 20; break;
|
|
|
|
|
case 4068: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp -= 16; break;
|
|
|
|
|
case 4069: hascontrol = true; advancetext = false; state = 0; break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 4070:
|
|
|
|
|
//Activating a teleporter (special for final script, player has colour changed to match rescued crewmate)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4071:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4072:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
obj.entities[i].colour = obj.crewcolour(lastsaved);
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4073: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4074: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4075: state++; i = obj.getplayer(); obj.entities[i].xp += 8; break;
|
|
|
|
|
case 4076: state++; i = obj.getplayer(); obj.entities[i].xp += 6; break;
|
|
|
|
|
case 4077: state++; i = obj.getplayer(); obj.entities[i].xp += 3; break;
|
|
|
|
|
case 4078: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 1; break;
|
|
|
|
|
case 4079:
|
|
|
|
|
state = 0;
|
|
|
|
|
startscript = true; newscript = "finallevel_teleporter";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4080:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4081:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4082:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4083: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4084: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4085: state++; i = obj.getplayer(); obj.entities[i].xp += 8; break;
|
|
|
|
|
case 4086: state++; i = obj.getplayer(); obj.entities[i].xp += 6; break;
|
|
|
|
|
case 4087: state++; i = obj.getplayer(); obj.entities[i].xp += 3; break;
|
|
|
|
|
case 4088: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 1; break;
|
|
|
|
|
case 4089:
|
|
|
|
|
startscript = true; newscript = "gamecomplete_ending";
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 4090:
|
|
|
|
|
//Activating a teleporter (default appear)
|
|
|
|
|
state++; statedelay = 15;
|
|
|
|
|
flashlight = 5; screenshake = 90;
|
|
|
|
|
music.playef(9, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4091:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 0; flashlight = 5; screenshake = 0; music.playef(10, 10);
|
|
|
|
|
break;
|
|
|
|
|
case 4092:
|
|
|
|
|
//Activating a teleporter 2
|
|
|
|
|
state++; statedelay = 5;
|
|
|
|
|
|
|
|
|
|
i = obj.getplayer(); j = obj.getteleporter();
|
|
|
|
|
if (j != -1) {
|
|
|
|
|
obj.entities[i].xp = obj.entities[j].xp+44;
|
|
|
|
|
obj.entities[i].yp = obj.entities[j].yp+44;
|
|
|
|
|
obj.entities[j].tile = 2; obj.entities[j].colour = 101;
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 0; obj.entities[i].invis = false; obj.entities[i].dir = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].ay = -6; obj.entities[i].ax = 6;
|
|
|
|
|
obj.entities[i].vy = -6; obj.entities[i].vx = 6;
|
|
|
|
|
break;
|
|
|
|
|
case 4093: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4094: state++; i = obj.getplayer(); obj.entities[i].xp += 10; break;
|
|
|
|
|
case 4095: state++; i = obj.getplayer(); obj.entities[i].xp += 8; break;
|
|
|
|
|
case 4096: state++; i = obj.getplayer(); obj.entities[i].xp += 6; break;
|
|
|
|
|
case 4097: state++; i = obj.getplayer(); obj.entities[i].xp += 3; break;
|
|
|
|
|
case 4098: state++; statedelay = 15; i = obj.getplayer(); obj.entities[i].xp += 1; break;
|
|
|
|
|
case 4099:
|
|
|
|
|
if (nocutscenes) {
|
|
|
|
|
startscript = true; newscript = "levelonecompleteskip";
|
|
|
|
|
}else{
|
|
|
|
|
startscript = true; newscript = "levelonecomplete_ending";
|
|
|
|
|
}
|
|
|
|
|
state = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function lifesequence(obj:entityclass):void{
|
|
|
|
|
if (lifeseq > 0) {
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
obj.entities[i].invis = false;
|
|
|
|
|
if (lifeseq == 2) obj.entities[i].invis = true;
|
|
|
|
|
if (lifeseq == 6) obj.entities[i].invis = true;
|
|
|
|
|
if (lifeseq >= 8) obj.entities[i].invis = true;
|
|
|
|
|
if (lifeseq > 5) gravitycontrol = savegc;
|
|
|
|
|
|
|
|
|
|
lifeseq--;
|
|
|
|
|
if (lifeseq <= 0) { obj.entities[i].invis = false; }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function resetgameclock():void {
|
|
|
|
|
frames = 0;
|
|
|
|
|
seconds = 0;
|
|
|
|
|
minutes = 0;
|
|
|
|
|
hours = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function gameclock():void {
|
|
|
|
|
frames++;
|
|
|
|
|
if (frames >= 30) {
|
|
|
|
|
frames -= 30;
|
|
|
|
|
seconds++;
|
|
|
|
|
if (seconds >= 60) {
|
|
|
|
|
seconds -= 60;
|
|
|
|
|
minutes++;
|
|
|
|
|
if (minutes >= 60) {
|
|
|
|
|
minutes -= 60;
|
|
|
|
|
hours++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function giventimestring(hrs:int, min:int, sec:int, help:helpclass):String {
|
|
|
|
|
tempstring = "";
|
|
|
|
|
if (hrs > 0) {
|
|
|
|
|
tempstring += String(hrs) + ":";
|
|
|
|
|
}
|
|
|
|
|
tempstring += help.twodigits(min) + ":" + help.twodigits(sec);
|
|
|
|
|
return tempstring;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function timestring(help:helpclass):String {
|
|
|
|
|
tempstring = "";
|
|
|
|
|
if (hours > 0) {
|
|
|
|
|
tempstring += String(hours) + ":";
|
|
|
|
|
}
|
|
|
|
|
tempstring += help.twodigits(minutes) + ":" + help.twodigits(seconds);
|
|
|
|
|
return tempstring;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function partimestring(help:helpclass):String {
|
|
|
|
|
//given par time in seconds:
|
|
|
|
|
tempstring = "";
|
|
|
|
|
if (timetrialpar >= 60) {
|
|
|
|
|
tempstring = help.twodigits(int((timetrialpar - (timetrialpar % 60)) / 60)) + ":" + help.twodigits(timetrialpar % 60);
|
|
|
|
|
}else {
|
|
|
|
|
tempstring = "00:" + help.twodigits(timetrialpar);
|
|
|
|
|
}
|
|
|
|
|
return tempstring;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function resulttimestring(help:helpclass):String {
|
|
|
|
|
//given result time in seconds:
|
|
|
|
|
tempstring = "";
|
|
|
|
|
if (timetrialresulttime > 60) {
|
|
|
|
|
tempstring = help.twodigits(int((timetrialresulttime - (timetrialresulttime % 60)) / 60)) + ":"
|
|
|
|
|
+ help.twodigits(timetrialresulttime % 60);
|
|
|
|
|
}else {
|
|
|
|
|
tempstring = "00:" + help.twodigits(timetrialresulttime);
|
|
|
|
|
}
|
|
|
|
|
return tempstring;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function timetstring(t:int, help:helpclass):String {
|
|
|
|
|
//given par time in seconds:
|
|
|
|
|
tempstring = "";
|
|
|
|
|
if (t >= 60) {
|
|
|
|
|
tempstring = help.twodigits(int((t - (t % 60)) / 60)) + ":" + help.twodigits(t % 60);
|
|
|
|
|
}else {
|
|
|
|
|
tempstring = "00:" + help.twodigits(t);
|
|
|
|
|
}
|
|
|
|
|
return tempstring;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function deathsequence(map:mapclass, obj:entityclass, music:musicclass):void {
|
|
|
|
|
if (supercrewmate && scmhurt) {
|
|
|
|
|
i = obj.getscm();
|
|
|
|
|
}else{
|
|
|
|
|
i = obj.getplayer();
|
|
|
|
|
}
|
|
|
|
|
obj.entities[i].colour = 1;
|
|
|
|
|
|
|
|
|
|
obj.entities[i].invis = false;
|
|
|
|
|
if (deathseq == 30) {
|
|
|
|
|
if (nodeathmode) {
|
|
|
|
|
music.fadeout();
|
|
|
|
|
gameoverdelay = 60;
|
|
|
|
|
}
|
|
|
|
|
deathcounts++;
|
|
|
|
|
music.playef(2,10);
|
|
|
|
|
obj.entities[i].invis = true;
|
|
|
|
|
if (map.finalmode) {
|
|
|
|
|
map.roomdeathsfinal[roomx - 41 + (20 * (roomy - 48))]++;
|
|
|
|
|
currentroomdeaths = map.roomdeathsfinal[roomx - 41 + (20 * (roomy - 48))];
|
|
|
|
|
}else{
|
|
|
|
|
map.roomdeaths[roomx - 100 + (20*(roomy - 100))]++;
|
|
|
|
|
currentroomdeaths = map.roomdeaths[roomx - 100 + (20 * (roomy - 100))];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (deathseq == 25) obj.entities[i].invis = true;
|
|
|
|
|
if (deathseq == 20) obj.entities[i].invis = true;
|
|
|
|
|
if (deathseq == 16) obj.entities[i].invis = true;
|
|
|
|
|
if (deathseq == 14) obj.entities[i].invis = true;
|
|
|
|
|
if (deathseq == 12) obj.entities[i].invis = true;
|
|
|
|
|
if (deathseq < 10) obj.entities[i].invis = true;
|
|
|
|
|
if (!nodeathmode) {
|
|
|
|
|
if (deathseq <= 1) obj.entities[i].invis = false;
|
|
|
|
|
}else {
|
|
|
|
|
gameoverdelay--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function initteleportermode(map:mapclass):void {
|
|
|
|
|
//Set the teleporter variable to the right position!
|
|
|
|
|
teleport_to_teleporter = 0;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < map.numteleporters; i++) {
|
|
|
|
|
if (roomx == map.teleporters[i].x + 100 && roomy == map.teleporters[i].y + 100) {
|
|
|
|
|
teleport_to_teleporter = i;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function swnpenalty():void {
|
|
|
|
|
//set the SWN clock back to the closest 5 second interval
|
|
|
|
|
if (swntimer <= 150) { swntimer += 8; if (swntimer > 150) swntimer = 150;
|
|
|
|
|
}else if (swntimer <= 300) { swntimer += 8; if (swntimer > 300) swntimer = 300;
|
|
|
|
|
}else if (swntimer <= 450) { swntimer += 8; if (swntimer > 450) swntimer = 450;
|
|
|
|
|
}else if (swntimer <= 600) { swntimer += 8; if (swntimer > 600) swntimer = 600;
|
|
|
|
|
}else if (swntimer <= 750) { swntimer += 8; if (swntimer > 750) swntimer = 750;
|
|
|
|
|
}else if (swntimer <= 900) { swntimer += 8; if (swntimer > 900) swntimer = 900;
|
|
|
|
|
}else if (swntimer <= 1050) { swntimer += 8; if (swntimer > 1050) swntimer = 1050;
|
|
|
|
|
}else if (swntimer <= 1200) { swntimer += 8; if (swntimer > 1200) swntimer = 1200;
|
|
|
|
|
}else if (swntimer <= 1350) { swntimer += 8; if (swntimer > 1350) swntimer = 1350;
|
|
|
|
|
}else if (swntimer <= 1500) { swntimer += 8; if (swntimer > 1500) swntimer = 1500;
|
|
|
|
|
}else if (swntimer <= 1650) { swntimer += 8; if (swntimer > 1650) swntimer = 1650;
|
|
|
|
|
}else if (swntimer <= 1800) { swntimer += 8; if (swntimer > 1800) swntimer = 1800;
|
|
|
|
|
}else if (swntimer <= 2100) { swntimer += 8; if (swntimer > 2100) swntimer = 2100;
|
|
|
|
|
}else if (swntimer <= 2400) { swntimer += 8; if (swntimer > 2400) swntimer = 2400;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Game room control
|
|
|
|
|
public var door_left:int, door_right:int, door_up:int, door_down:int;
|
|
|
|
|
public var roomx:int, roomy:int, roomchangedir:int;
|
|
|
|
|
public var temp:int, i:int, j:int, k:int;
|
|
|
|
|
|
|
|
|
|
//Save points
|
|
|
|
|
public var savex:int, savey:int, saverx:int, savery:int;
|
|
|
|
|
public var savegc:int, savedir:int;
|
|
|
|
|
|
|
|
|
|
//Game save variables: two cookies, one for quicksaves and one for teleporters
|
|
|
|
|
public var telecookie:SharedObject, quickcookie:SharedObject, statcookie:SharedObject;
|
|
|
|
|
public var customcookie:Vector.<SharedObject> = new Vector.<SharedObject>;
|
|
|
|
|
public var customcookieexists:Vector.<Boolean> = new Vector.<Boolean>;
|
|
|
|
|
public var customcookiesummary:Vector.<String> = new Vector.<String>;
|
|
|
|
|
public var telecookieexists:Boolean, quickcookieexists:Boolean;
|
|
|
|
|
public var telesummary:String, quicksummary:String;
|
|
|
|
|
public var tele_crewstats:Array = new Array();
|
|
|
|
|
public var tele_gametime:String;
|
|
|
|
|
public var tele_trinkets:int;
|
|
|
|
|
public var tele_currentarea:String;
|
|
|
|
|
public var quick_crewstats:Array = new Array();
|
|
|
|
|
public var quick_gametime:String;
|
|
|
|
|
public var quick_trinkets:int;
|
|
|
|
|
public var quick_currentarea:String;
|
|
|
|
|
public var summary_crewstats:Array;// = new Array();
|
|
|
|
|
|
|
|
|
|
public var savestate:Array = new Array();
|
|
|
|
|
|
|
|
|
|
//Added for port
|
|
|
|
|
public var edsavex:int, edsavey:int, edsaverx:int, edsavery:int;
|
|
|
|
|
public var edsavegc:int, edsavedir:int;
|
|
|
|
|
|
|
|
|
|
//State Logic stuff
|
|
|
|
|
public var state:int, statedelay:int;
|
|
|
|
|
|
|
|
|
|
public var gamestate:int;
|
|
|
|
|
public var hascontrol:Boolean, jumpheld:Boolean, jumppressed:int;
|
|
|
|
|
public var gravitycontrol:int;
|
|
|
|
|
|
|
|
|
|
public var infocus:Boolean, paused:Boolean;
|
|
|
|
|
public var muted:Boolean;
|
|
|
|
|
public var mutebutton:int;
|
|
|
|
|
public var globalsound:int;
|
|
|
|
|
|
|
|
|
|
public var mx:int, my:int;
|
|
|
|
|
public var screenshake:int, flashlight:int;
|
|
|
|
|
public var test:Boolean, teststring:String, tempstring:String;
|
|
|
|
|
public var advancetext:Boolean, pausescript:Boolean;
|
|
|
|
|
|
|
|
|
|
public var deathseq:int, lifeseq:int;
|
|
|
|
|
|
|
|
|
|
public var coins:int, trinkets:int, crewmates:int, trinketcollect:int;
|
|
|
|
|
public var savepoint:int, teleport:Boolean, teleportxpos:int;
|
|
|
|
|
public var edteleportent:int;
|
|
|
|
|
public var completestop:Boolean;
|
|
|
|
|
|
|
|
|
|
public var inertia:Number;
|
|
|
|
|
|
|
|
|
|
public var companion:int, roomchange:Boolean;
|
|
|
|
|
public var teleblock:Rectangle, activetele:Boolean, readytotele:int;
|
|
|
|
|
public var activeactivity:int, act_fade:int;
|
|
|
|
|
public var activity_lastprompt:String, activity_r:int, activity_g:int, activity_b:int;
|
|
|
|
|
public var backgroundtext:Boolean;
|
|
|
|
|
|
|
|
|
|
public var press_left:Boolean, press_right:Boolean, press_action:Boolean, press_map:Boolean;
|
|
|
|
|
|
|
|
|
|
//Some stats:
|
|
|
|
|
public var totalflips:int;
|
|
|
|
|
public var hardestroom:String, hardestroomdeaths:int, currentroomdeaths:int;
|
|
|
|
|
|
|
|
|
|
//Menu interaction stuff
|
|
|
|
|
public var mapheld:Boolean; //Is the map key being held down?
|
|
|
|
|
public var menupage:int;
|
|
|
|
|
public var crewstats:Array = new Array();
|
|
|
|
|
public var lastsaved:int;
|
|
|
|
|
public var deathcounts:int;
|
|
|
|
|
public var frames:int, seconds:int, minutes:int, hours:int;
|
|
|
|
|
public var gamesaved:Boolean;
|
|
|
|
|
public var savetime:String, savearea:String, savetrinkets:int;
|
|
|
|
|
public var startscript:Boolean, newscript:String;
|
|
|
|
|
|
|
|
|
|
public var mainmenu:int, menustart:Boolean;
|
|
|
|
|
|
|
|
|
|
//teleporting
|
|
|
|
|
public var teleport_to_new_area:Boolean;
|
|
|
|
|
public var teleport_to_x:int, teleport_to_y:int;
|
|
|
|
|
public var teleportscript:String;
|
|
|
|
|
public var useteleporter:Boolean;
|
|
|
|
|
public var teleport_to_teleporter:int;
|
|
|
|
|
|
|
|
|
|
//Screenrecording stuff, for beta/trailer
|
|
|
|
|
public var recording:int;
|
|
|
|
|
public var recordstring:String;
|
|
|
|
|
public var combomode:Boolean, combolen:int, comboaction:String;
|
|
|
|
|
public var currentaction:String, recordinit:Boolean;
|
|
|
|
|
|
|
|
|
|
public var alarmon:Boolean, alarmdelay:int;
|
|
|
|
|
public var blackout:Boolean;
|
|
|
|
|
|
|
|
|
|
public var playback:Array = new Array();
|
|
|
|
|
public var playbackpos:int, playbacksize:int;
|
|
|
|
|
public var playmove:int, playcombo:int;
|
|
|
|
|
public var playbackfinished:Boolean;
|
|
|
|
|
|
|
|
|
|
//functions for recording:
|
|
|
|
|
public function initplayback():void {
|
|
|
|
|
playback = new Array();
|
|
|
|
|
|
|
|
|
|
playback = recordstring.split(",");
|
|
|
|
|
playbacksize = playback.length;
|
|
|
|
|
playbackpos = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Main Menu Variables
|
|
|
|
|
public var menuoptions:Vector.<String> = new Vector.<String>;
|
|
|
|
|
public var menuoptions_alt:Vector.<String> = new Vector.<String>;
|
|
|
|
|
public var menuoptionsactive:Vector.<Boolean> = new Vector.<Boolean>;
|
|
|
|
|
public var menuoptionslayout:Vector.<int> = new Vector.<int>;
|
|
|
|
|
public var nummenuoptions:int, currentmenuoption:int;
|
|
|
|
|
public var menuselection:String, currentmenuname:String, previousmenuname:String;
|
|
|
|
|
public var menuxoff:int, menuyoff:int;
|
|
|
|
|
|
|
|
|
|
public var menucountdown:int, menudest:String;
|
|
|
|
|
|
|
|
|
|
public var creditposx:int, creditposy:int, creditposdelay:int;
|
|
|
|
|
|
|
|
|
|
//60 fps mode!
|
|
|
|
|
public var sfpsmode:Boolean;
|
|
|
|
|
|
|
|
|
|
//Sine Wave Ninja Minigame
|
|
|
|
|
public var swnmode:Boolean;
|
|
|
|
|
public var swngame:int, swnstate:int, swnstate2:int, swnstate3:int, swnstate4:int, swndelay:int, swndeaths:int;
|
|
|
|
|
public var swntimer:int, swncolstate:int, swncoldelay:int;
|
|
|
|
|
public var swnrecord:int, swnbestrank:int, swnrank:int, swnmessage:int;
|
|
|
|
|
|
|
|
|
|
//SuperCrewMate Stuff
|
|
|
|
|
public var supercrewmate:Boolean, scmhurt:Boolean, scmprogress:int, scmmoveme:Boolean;
|
|
|
|
|
|
|
|
|
|
//Accessibility Options
|
|
|
|
|
public var colourblindmode:Boolean;
|
|
|
|
|
public var noflashingmode:Boolean;
|
|
|
|
|
public var slowdown:int;
|
|
|
|
|
|
|
|
|
|
public var nodeathmode:Boolean;
|
|
|
|
|
public var gameoverdelay:int;
|
|
|
|
|
public var nocutscenes:Boolean;
|
|
|
|
|
|
|
|
|
|
//Time Trials
|
|
|
|
|
public var intimetrial:Boolean, timetrialparlost:Boolean;
|
|
|
|
|
public var timetrialcountdown:int, timetrialshinytarget:int, timetriallevel:int;
|
|
|
|
|
public var timetrialpar:int, timetrialresulttime:int, timetrialrank:int;
|
|
|
|
|
|
|
|
|
|
public var creditposition:int;
|
|
|
|
|
public var insecretlab:Boolean;
|
|
|
|
|
|
|
|
|
|
public var inintermission:Boolean;
|
|
|
|
|
|
|
|
|
|
//Tap sensors
|
|
|
|
|
public var tapleft:int, tapright:int;
|
|
|
|
|
|
|
|
|
|
//Stats
|
|
|
|
|
public var unlock:Array = new Array();
|
|
|
|
|
public var unlocknotify:Array = new Array();
|
|
|
|
|
public var temp_unlock:Array;
|
|
|
|
|
public var temp_unlocknotify:Array;
|
|
|
|
|
public var stat_trinkets:int;
|
|
|
|
|
public var fullscreen:Boolean;
|
|
|
|
|
public var bestgamedeaths:int;
|
|
|
|
|
|
|
|
|
|
public var stat_screenshakes:Boolean;
|
|
|
|
|
public var stat_backgrounds:Boolean;
|
|
|
|
|
public var stat_flipmode:Boolean;
|
|
|
|
|
public var stat_invincibility:Boolean;
|
|
|
|
|
public var stat_slowdown:int;
|
|
|
|
|
|
|
|
|
|
public var besttimes:Array = new Array();
|
|
|
|
|
public var besttrinkets:Array = new Array();
|
|
|
|
|
public var bestlives:Array = new Array();
|
|
|
|
|
public var bestrank:Array = new Array();
|
|
|
|
|
public var temp_besttimes:Array;
|
|
|
|
|
public var temp_besttrinkets:Array;
|
|
|
|
|
public var temp_bestlives:Array;
|
|
|
|
|
public var temp_bestrank:Array;
|
|
|
|
|
|
|
|
|
|
public var savemystats:Boolean;
|
|
|
|
|
|
|
|
|
|
public var menukludge:Boolean;
|
|
|
|
|
public var quickrestartkludge:Boolean;
|
|
|
|
|
|
|
|
|
|
public var advanced_mode:Boolean;
|
|
|
|
|
public var advanced_smoothing:Boolean;
|
|
|
|
|
public var advanced_scaling:int;
|
|
|
|
|
|
|
|
|
|
public var fullscreentoggleheld:Boolean = false;
|
|
|
|
|
|
|
|
|
|
//Custom stuff
|
|
|
|
|
public var levelstatscookie:SharedObject;
|
|
|
|
|
public var levelstatscookieloaded:Boolean;
|
|
|
|
|
public var customscript:Vector.<String> = new Vector.<String>;
|
|
|
|
|
public var customcol:int, levelpage:int, playcustomlevel:int;
|
|
|
|
|
public var customleveltitle:String;
|
|
|
|
|
public var customlevelfilename:String;
|
|
|
|
|
|
|
|
|
|
public var customlevelstats:Vector.<String> = new Vector.<String>; //string array containing level filenames
|
|
|
|
|
public var customlevelscore:Vector.<int> = new Vector.<int>;
|
|
|
|
|
public var numcustomlevelstats:int;
|
|
|
|
|
public var customlevelstatsloaded:Boolean;
|
|
|
|
|
|
|
|
|
|
//Control types!
|
|
|
|
|
//0 is swipe, 1 is both sides, 2 is d-pad
|
|
|
|
|
public var controlstyle:int = 0;
|
|
|
|
|
public var last_left:int = 0, last_right:int = 0;
|
|
|
|
|
public var last_action:int = 0;
|
|
|
|
|
public var controlsensitivity:int = 50;
|
|
|
|
|
|
|
|
|
|
//Mobile menu options
|
|
|
|
|
public var mobilemenu:Boolean = true;
|
|
|
|
|
public var autoquicksave:Boolean = false;
|
|
|
|
|
public var mobilequicksave_thisroom:Boolean = false;
|
|
|
|
|
public var controltutorialstate:int = 0;
|
|
|
|
|
public var controltutorialstatedelay:int = 0;
|
|
|
|
|
public var controllerp1:int = 0;
|
|
|
|
|
public var controllerp2:int = 0;
|
|
|
|
|
public var controllerp3:int = 0;
|
|
|
|
|
|
|
|
|
|
public var showloadingnotice:Boolean = false;
|
|
|
|
|
|
|
|
|
|
public var disablekludge_1:Boolean = false;
|
|
|
|
|
public var disablekludge_2:Boolean = false;
|
|
|
|
|
public var disablekludge_3:Boolean = false;
|
|
|
|
|
public var disablekludge_4:Boolean = false;
|
|
|
|
|
|
|
|
|
|
public var showcontroltutorial:int = 0;
|
|
|
|
|
|
|
|
|
|
public var platform:platformclass = new platformclass;
|
|
|
|
|
public var scores:scoreclass = new scoreclass;
|
|
|
|
|
}
|
|
|
|
|
}
|