public override void MatchedTilesAsBonus(GameDriver driver, TileType matchedType)
 {
     if (Random.Range(0, 100) <= bonusChance) {
         driver.AddStats(matchedType, 3, matchedType);
         driver.AddBonus(type);
     }
 }
 public override void AddStatsAsBonus(GameDriver driver, TileType statsType, float amount, TileType primaryType)
 {
     if (primaryType == TileType.None) {
         return; // this was an cascading or auto-match, ignore it
     }
     float now = driver.GetTime();
     if (lastMatch != Mathf.Infinity && now - lastMatch < bonusThreshold) {
         driver.AddBonus(type, bonusAmount);
     }
     lastMatch = now;
     return;
 }
 public override void UpdateAsBonus(GameDriver driver)
 {
     // each second after a match, has bonusChance to automatch
     if (driver.board.IsNewIdleSecond
         && Random.Range(0, 100) < bonusChance) {
         PairInt position, direction;
         if (driver.board.FindMatch(out position, out direction)) {
             driver.board.SwapTile(position, direction, false);
             driver.board.CreateHintOneShot(position, direction, hintArrowRobot);
             driver.AddBonus(type);
         }
     }
 }
 public override void UpdateAsBonus(GameDriver driver)
 {
     if (driver.board.HandleHint(hintCooldown, hintArrowHoly)) {
         driver.AddBonus(type);
     }
 }
 public override void MatchedTilesAsBonus(GameDriver driver, TileType matchedType)
 {
     if (driver.GetCurrentAntiStreak() >= 4) {
         driver.AddBonus(type, bonusAmount);
     }
 }