Author Topic: Dual Death Run idea (any possible flaws?)  (Read 1955 times)

It's like a normal death run only...
Two teams split 50/50 Both have traps, a finish, mirrored maps, and buttons to press all on the same platforms.

Feel free to use this idea.
I'm just looking for any possible flaws before I start this project.
« Last Edit: May 02, 2013, 04:14:09 PM by Fastlex »

So the button presser would have to do more work?

So the button presser would have to do more work?

What do you mean?

What do you mean?
He would have to deal with both lanes at the same time, wouldn't he?

...all on the same platforms.
There will be traps and buttons on both of the team's platforms.

Also the floor will slowly start to fall to avoid stallers.
« Last Edit: May 02, 2013, 04:27:47 PM by Fastlex »

Oh, ok. Sorry, looked past that. Seems like a great idea then.

Been a while since I've seen something that requires ACTUAL TEAMWORK.
The only flaw would be splitting them up. I was thinking the buttons for the traps would be ON the road to the finish. They run around and push buttons to stop the other team from running to Finish #2 while they run to Finish #1.
Sounds more like it.

Alright here is what I have so far.

This is where the traps and buttons will be placed.



As you can see its very easy to modify these.
Making trap building very easy.

I disabled shadows since the whole thing would appear to be black.
« Last Edit: May 02, 2013, 05:14:20 PM by Fastlex »

Would the maps change in each round in this DM? (assuming this is a DM styled death-run)

Would the maps change in each round in this DM? (assuming this is a DM styled death-run)

Thats if I could figure out how to make a map rotation.
Also I'll will be publishing the save when it's done so you too can make maps for your own DDR sever.
« Last Edit: May 02, 2013, 05:12:03 PM by Fastlex »

Try to look at the speedKart gamemode, it has a map rotation.

Code: [Select]
function Map_Phase1()
{
BrickGroup_888888.chaindeletecallback = "Map_Phase2();";
BrickGroup_888888.chaindeleteall();
}

function Map_Phase2()
{
schedule(10, 0, serverDirectSaveFileLoad, "save.bls", 3, "", 2, 1);
}

assuming you know how to code, you should be able to work the rest out

Code: [Select]
function Map_Phase1()
{
BrickGroup_888888.chaindeletecallback = "Map_Phase2();";
BrickGroup_888888.chaindeleteall();
}

function Map_Phase2()
{
schedule(10, 0, serverDirectSaveFileLoad, "save.bls", 3, "", 2, 1);
}

assuming you know how to code, you should be able to work the rest out

This could work as well, this was from GameMode_SpeedKart

Code: [Select]
if($pref::Server::SpeedKart::RoundLimit $= "")
{
   $pref::Server::SpeedKart::RoundLimit = 8;
}

$SK::Initialized = false;

function SK_BuildTrackList()
{
   //
   %pattern = "Add-Ons/SpeedKart_*/save.bls";
   
   $SK::numTracks = 0;
   
   %file = findFirstFile(%pattern);
   while(%file !$= "")
   {
      $SK::Track[$SK::numTracks] = %file;
      $SK::numTracks++;

      %file = findNextFile(%pattern);
   }
}

function SK_DumpTrackList()
{
   echo("");
   if($SK::numTracks == 1)
      echo("1 track");
   else
      echo($SK::numTracks @ " tracks");
   for(%i = 0; %i < $SK::numTracks; %i++)
   {
      %displayName = $SK::Track[%i];
      %displayName = strReplace(%displayName, "Add-Ons/SpeedKart_", "");
      %displayName = strReplace(%displayName, "/save.bls", "");
      %displayName = strReplace(%displayName, "_", " ");

      if(%i == $SK::CurrentTrack)
         echo(" >" @ %displayName);
      else
         echo("  " @ %displayName);
   }
   echo("");
}

function SK_NextTrack()
{
   $SK::CurrentTrack = mFloor($SK::CurrentTrack);
   $SK::CurrentTrack++;
   $SK::CurrentTrack = $SK::CurrentTrack % $SK::numTracks;

   $SK::ResetCount = 0;

   SK_LoadTrack_Phase1($SK::Track[$SK::CurrentTrack]);
}

function SK_LoadTrack_Phase1(%filename)
{
   //suspend minigame resets
   $SK::MapChange = 1;

   //put everyone in observer mode
   %mg = $DefaultMiniGame;
   if(!isObject(%mg))
   {
      error("ERROR: SK_LoadTrack( " @ %filename  @ " ) - default minigame does not exist");
      return;
   }
   for(%i = 0; %i < %mg.numMembers; %i++)
   {
      %client = %mg.member[%i];
      %player = %client.player;
      if(isObject(%player))
         %player.delete();

      %camera = %client.camera;
      %camera.setFlyMode();
      %camera.mode = "Observer";
      %client.setControlObject(%camera);
   }
   
   //clear all bricks
   // note: this function is deferred, so we'll have to set a callback to be triggered when it's done
   BrickGroup_888888.chaindeletecallback = "SK_LoadTrack_Phase2(\"" @ %filename @ "\");";
BrickGroup_888888.chaindeleteall();
}

function SK_LoadTrack_Phase2(%filename)
{
   echo("Loading speedkart track " @ %filename);

   %displayName = %filename;
   %displayName = strReplace(%displayName, "Add-Ons/SpeedKart_", "");
   %displayName = strReplace(%displayName, "/save.bls", "");
   %displayName = strReplace(%displayName, "_", " ");
   
   %loadMsg = "\c5Now loading \c6" @ %displayName;

   //read and display credits file, if it exists
   // limited to one line
   %creditsFilename = filePath(%fileName) @ "/credits.txt";
   if(isFile(%creditsFilename))
   {
      %file = new FileObject();
      %file.openforRead(%creditsFilename);

      %line = %file.readLine();
      %line = stripMLControlChars(%line);
      %loadMsg = %loadMsg @ "\c5, created by \c3" @ %line;

      %file.close();
      %file.delete();
   }

   messageAll('', %loadMsg);

   //load environment if it exists
   %envFile = filePath(%fileName) @ "/environment.txt";
   if(isFile(%envFile))
   { 
      //echo("parsing env file " @ %envFile);
      //usage: GameModeGuiServer::ParseGameModeFile(%filename, %append);
      //if %append == 0, all minigame variables will be cleared
      %res = GameModeGuiServer::ParseGameModeFile(%envFile, 1);

      EnvGuiServer::getIdxFromFilenames();
      EnvGuiServer::SetSimpleMode();

      if(!$EnvGuiServer::SimpleMode)     
      {
         EnvGuiServer::fillAdvancedVarsFromSimple();
         EnvGuiServer::SetAdvancedMode();
      }
   }
   
   //load save file
   schedule(10, 0, serverDirectSaveFileLoad, %fileName, 3, "", 2, 1);
}

There is a little more of it, but it isn't really important.

I have no idea how to work that or know or to program.

I have no idea how to work that or know or to program.
I could script an auto rotation for you if you want me to. The problem is, I need you to tell me the name of the builds (file names)