Toaster Kitty Script for Crash

Toaster Kitty, a crash game script, is designed for those aiming for a substantial reward, potentially over 50 times the initial wager. You set your initial payout and can adjust settings for losses and minimum profit. The script automates the process from there. It was taken from the BC.Game forums, and has been refactored to make it work.

var config = {
  mainTitle: { label: "*** Nubs27's Toaster Kitty ***", type: "title" },
  payout: { label: "Exit Point Minimum", value: 88, type: "number" },
  increase: { label: "Increase Payout", value: 0.05, type: "number" },
  losses: { label: "Minimum Profit on Win", value: 0.01, type: "number" },
  stopTitle: { label: "Stop When", type: "title" },
  stop: { label: "Coins Lost >", value: 1, type: "number" },
  wins: { label: "wins =", value: 1, type: "number" },
};
function main() {
  var isPlaying = false;
  var gamesPlayed = 0;
  var currentGameID = 0;
  var lastResult = "Not Played";
  var lastCrash = 2;
  var prevCashOut = lastCrash;
  var baseBet = config.losses.value / config.payout.value;
  var currentBet = baseBet;
  var lastBet = currentBet;
  var didBet = false;
  var gameInfoLogged = false;
  var scriptHistory = [];
  var updateConsole = false;
  var currentMultiplier = config.payout.value;
  var lastMultiplier = config.payout.value - 0.05;
  var coinLost = 0;
  var wins = 0;
  var losses = 0;
  game.on("GAME_STARTING", function () {
    // set base bet and show initial data log
    if (gamesPlayed < 1) {
      log.info("     Toaster Kitty");
      log.info("     by Nubs27");
      log.info("    ****************");
      baseBet = config.losses.value / config.payout.value;
      if (!Number.isInteger(config.wins.value)) {
        log.info("***** Attention *****");
        log.info("wins = " + config.wins.value + " is NOT valid");
        log.info("Integers ONLY");
        log.info(
          "I could have the script auto round the number, but you like being funny too :)"
        );
        game.stop();
      }
    }
    checkForStops();
    // adjust current bet and multiplier
    if (gamesPlayed < 2 || lastResult === "Won") {
      currentBet = baseBet;
      currentMultiplier = config.payout.value;
      isPlaying = true;
      if (gamesPlayed < 2) {
        log.info(`Played < 2 games`);
      }
      if (lastResult === "Won") {
        log.success(`Won!`);
      }
      log.info(`Current bet: ${currentBet}`);
      log.info(`Current Multiplier: ${currentMultiplier}`);
    }
    // adjust current bet and multiplier
    if (lastResult === "Lost") {
      currentBet = (coinLost + config.losses.value) / (currentMultiplier - 1);
      currentMultiplier = lastMultiplier + config.increase.value;
      log.error(`Lost`);
      log.info(`Current bet: ${currentBet}`);
      log.info(`Current Multiplier: ${currentMultiplier}`);
    }
    // adjust current bet
    if (currentBet < currency.minAmount) {
      currentBet = currency.minAmount;
      log.info(`Current Bet < Min Bet`);
      log.info(`Current bet: ${currentBet}`);
    }
  });
  function checkForStops() {
    if (coinLost > config.stop.value) {
      log.info("Maximum Coin Loss Reached. Script Stopped");
      game.stop();
    }
    if (wins === config.wins.value) {
      log.info("Congratulations");
      log.info("wins goal reached. Script Stopped");
      game.stop();
    }
    currentMultiplier = currentMultiplier * 100;
    currentMultiplier = Math.round(currentMultiplier);
    currentMultiplier = currentMultiplier / 100;
    gamesPlayed++;
    setTimeout(placeBet, 0);
  }
  function placeBet() {
    if (!didBet) {
      game.bet(currentBet, currentMultiplier);
      isPlaying = true;
      didBet = true;
      log.info("    ***********");
    }
    gameInfoLogged = false;
  }
  game.on("GAME_ENDED", function () {
    var lastGame = game.history[0];
    var lastCrash = lastGame.crash / 100;
    currentGameID = lastGame.gameId;
    prevCashOut = lastCrash;
    lastBet = currentBet;
    lastMultiplier = currentMultiplier;
    didBet = false;
    if (!gameInfoLogged) {
      logAllInfo();
    }
  });
  function logAllInfo() {
    if (scriptHistory.push(prevCashOut) > 999) {
      scriptHistory.shift();
    }
    if (isPlaying === true && prevCashOut >= currentMultiplier) {
      var wonAmount = lastBet * currentMultiplier - coinLost;
      lastResult = "Won";
      wins++;
      losses = 0;
      coinLost = config.losses.value;
      log.info("[Game Won] " + wonAmount + " " + currencyName);
    } else if (isPlaying && prevCashOut < currentMultiplier) {
      lastResult = "Lost";
      losses++;
      coinLost = coinLost + lastBet;
    }
    currentGameID = currentGameID.toString();
    if (currentGameID.endsWith("0")) {
      updateConsole = true;
    }
    if (updateConsole) {
      log.info(
        "Amount Lost in search of this Kitty " +
          (coinLost - config.losses.value) +
          " " +
          currency.currencyName
      );
      updateConsole = false;
    }
    gameInfoLogged = true;
  }
}

Let’s try to analyze it and attempt to maximize its profit.

Initial Configuration

  • Exit Point Minimum (Payout): 88x (This is your target multiplier. You aim to cash out before this multiplier.)
  • Increase Payout: 0.05 (Each time you lose, you increase your target multiplier by this amount.)
  • Minimum Profit on Win: $0.01 (You want to ensure a minimum profit of $0.01 for each win.)
  • Coins Lost >: 1 (Stop if the total coins lost exceed $1.)
  • Wins =: 1 (Stop after 1 win.)

Given this setup, let’s proceed with a real example, applying the strategy after a loss, as the script suggests.

Step 1: Calculate Initial Bet

  • The base bet is determined so that a win will cover the minimum profit desired. Given the payout is 88x, and you want at least $0.01 profit: Base Bet=Minimum ProfitPayout=0.0188

For simplicity, let’s round this to $0.00011 for our example.

Step 2: Start Playing

You start with a bet of $0.00011 aiming for an 88x multiplier.

Step 3: Adjust After a Loss

The script calculates a new bet after a loss to ensure covering the losses plus the minimum profit. The calculation after a loss takes into account the total coins lost and the new target multiplier.

If the last result was a loss, the script uses the following formula to adjust the bet:

New Bet = (Coin Lost+Minimum Profit) / (Current Multiplier−1)

Let’s break down what these adjustments look like with real numbers, taking into account an initial loss. Assuming the coin lost so far is $0.00011 (the amount of the first bet), and we are adjusting our target multiplier to 88.05x due to the increase after a loss.

Step 4: Calculating New Bet After First Loss

Assuming the total coin lost is still just the initial bet ($0.00011), and you want to not only recover that but also ensure the minimum profit on the next win, with the increased multiplier now at 88.05:

New Bet = (0.00011+0.01) / (88.05−1) 

Let’s calculate the new bet:

New Bet = 0.01011 / 87.05 ≈ 0.0001161

So, your next bet should be approximately $0.00012 (rounding up for simplicity) aiming for a multiplier of 88.05x.

Step 5: Continuing the Strategy

  • Winning: If the next game wins at or above the target multiplier, reset your bet to the original base bet ($0.00011) and target multiplier (88x).
  • Further Losses: If you lose again, repeat the calculation process with updated totals for coin lost and adjust the target multiplier again by 0.05.

Accurate Logic

This strategy hinges on increasing your bet just enough after a loss to cover the lost amount plus a minimum profit, adjusting the target multiplier slightly upward each time to aim for slightly higher returns. This creates a balancing act between recovering from losses and achieving consistent, albeit small, profits.

Despite targeting a large multiplier for the bet, the strategy outlined in the script aims for a moderate profit.

Optimize the Profit

To optimize the configuration for a balanced strategy that aims for better sustainability and a reasonable chance at hitting larger multipliers, while also being mindful of risk management, let’s adjust the configuration:

var config = {
  mainTitle: { label: "*** Nubs27's Toaster Kitty ***", type: "title" },
  payout: { label: "Exit Point Minimum", value: 2.5, type: "number" }, // Adjusted for more achievable targets
  increase: { label: "Increase Payout", value: 0.02, type: "number" }, // Slight increase after each loss for gradual recovery
  losses: { label: "Minimum Profit on Win", value: 0.01, type: "number" }, // Keeping the minimum profit target realistic
  stopTitle: { label: "Stop When", type: "title" },
  stop: { label: "Coins Lost >", value: 0.5, type: "number" }, // Adjusted to a more cautious stop loss value
  wins: { label: "wins =", value: 3, type: "number" }, // Setting a win target for taking profits and pausing
};

Explanation of Adjustments

  1. Exit Point Minimum (Payout): Lowered to 2.5x from 88x. This target is more attainable, allowing for wins more frequently, which is crucial for a strategy that involves recovering from losses and accumulating profits over time.
  2. Increase Payout: Adjusted to 0.02x, down from 0.05x. This smaller increment after each loss allows for a more gradual approach to increasing the target multiplier. It helps in managing the bankroll more effectively by not escalating the required win target too quickly after a loss.
  3. Minimum Profit on Win: Remains at $0.01, maintaining the goal of securing a minimum profit with each win. This ensures that the strategy aims for consistent incremental gains.
  4. Coins Lost (Stop Loss): Set to 0.5 (assuming this is a reasonable portion of the player’s bankroll based on their total funds). It’s a more conservative stop-loss setting that helps manage risk by preventing large losses.
  5. Wins (Profit Taking): Increased to 3 wins before pausing or stopping. This gives a clear profit-taking strategy, allowing for the collection of gains and reassessment of the strategy.

Focusing on a worst-case scenario where every game results in a loss until the total loss limit of 0.5 is reached, you could potentially play up to 64 games before hitting the stop condition. This calculation assumes that after each loss, the bet is slightly increased in an attempt to cover the previous losses plus secure a minimum profit, following the strategy’s logic but without explicitly recalculating the bet based on each game’s outcome.


So, adjusting the initial configuration is indeed recommended to optimize results. The current setup, while providing a straightforward strategy, indicates a high risk for the amount of play possible before hitting the stop loss, alongside a relatively modest maximum win per game. Balancing the potential for both wins and losses more effectively can lead to a more sustainable strategy, potentially increasing both the enjoyment and profitability of the game.