Package services

Source Code of services.Roulette

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package services;

import lineage2.commons.util.Rnd;
import lineage2.gameserver.Config;
import lineage2.gameserver.cache.Msg;
import lineage2.gameserver.data.htm.HtmCache;
import lineage2.gameserver.model.Player;
import lineage2.gameserver.network.serverpackets.components.CustomMessage;
import lineage2.gameserver.scripts.Functions;
import lineage2.gameserver.utils.GameStats;
import lineage2.gameserver.utils.Util;

/**
* @author Mobius
* @version $Revision: 1.0 $
*/
public class Roulette extends Functions
{
  /**
   * Field R. (value is ""red"")
   */
  private static final String R = "red";
  /**
   * Field B. (value is ""black"")
   */
  private static final String B = "black";
  /**
   * Field fst. (value is ""first"")
   */
  private static final String fst = "first";
  /**
   * Field snd. (value is ""second"")
   */
  private static final String snd = "second";
  /**
   * Field trd. (value is ""third"")
   */
  private static final String trd = "third";
  /**
   * Field E. (value is ""even"")
   */
  private static final String E = "even";
  /**
   * Field O. (value is ""odd"")
   */
  private static final String O = "odd";
  /**
   * Field L. (value is ""low"")
   */
  private static final String L = "low";
  /**
   * Field H. (value is ""high"")
   */
  private static final String H = "high";
  /**
   * Field Z. (value is ""zero"")
   */
  private static final String Z = "zero";
  /**
   * Field Numbers.
   */
  private static final String[][] Numbers =
  {
    {
      "0",
      Z,
      Z,
      Z,
      Z,
      Z
    },
    {
      "1",
      R,
      fst,
      fst,
      O,
      L,
    },
    {
      "2",
      B,
      fst,
      snd,
      E,
      L,
    },
    {
      "3",
      R,
      fst,
      trd,
      O,
      L,
    },
    {
      "4",
      B,
      fst,
      fst,
      E,
      L,
    },
    {
      "5",
      R,
      fst,
      snd,
      O,
      L,
    },
    {
      "6",
      B,
      fst,
      trd,
      E,
      L,
    },
    {
      "7",
      R,
      fst,
      fst,
      O,
      L,
    },
    {
      "8",
      B,
      fst,
      snd,
      E,
      L,
    },
    {
      "9",
      R,
      fst,
      trd,
      O,
      L,
    },
    {
      "10",
      B,
      fst,
      fst,
      E,
      L,
    },
    {
      "11",
      B,
      fst,
      snd,
      O,
      L,
    },
    {
      "12",
      R,
      fst,
      trd,
      E,
      L,
    },
    {
      "13",
      B,
      snd,
      fst,
      O,
      L,
    },
    {
      "14",
      R,
      snd,
      snd,
      E,
      L,
    },
    {
      "15",
      B,
      snd,
      trd,
      O,
      L,
    },
    {
      "16",
      R,
      snd,
      fst,
      E,
      L,
    },
    {
      "17",
      B,
      snd,
      snd,
      O,
      L,
    },
    {
      "18",
      R,
      snd,
      trd,
      E,
      L,
    },
    {
      "19",
      R,
      snd,
      fst,
      O,
      H,
    },
    {
      "20",
      B,
      snd,
      snd,
      E,
      H,
    },
    {
      "21",
      R,
      snd,
      trd,
      O,
      H,
    },
    {
      "22",
      B,
      snd,
      fst,
      E,
      H,
    },
    {
      "23",
      R,
      snd,
      snd,
      O,
      H,
    },
    {
      "24",
      B,
      snd,
      trd,
      E,
      H,
    },
    {
      "25",
      R,
      trd,
      fst,
      O,
      H,
    },
    {
      "26",
      B,
      trd,
      snd,
      E,
      H,
    },
    {
      "27",
      R,
      trd,
      trd,
      O,
      H,
    },
    {
      "28",
      B,
      trd,
      fst,
      E,
      H,
    },
    {
      "29",
      B,
      trd,
      snd,
      O,
      H,
    },
    {
      "30",
      R,
      trd,
      trd,
      E,
      H,
    },
    {
      "31",
      B,
      trd,
      fst,
      O,
      H,
    },
    {
      "32",
      R,
      trd,
      snd,
      E,
      H,
    },
    {
      "33",
      B,
      trd,
      trd,
      O,
      H,
    },
    {
      "34",
      R,
      trd,
      fst,
      E,
      H,
    },
    {
      "35",
      B,
      trd,
      snd,
      O,
      H,
    },
    {
      "36",
      R,
      trd,
      trd,
      E,
      H,
    },
  };
 
  /**
   * @author Mobius
   */
  private static enum GameType
  {
    /**
     * Field StraightUp.
     */
    StraightUp,
    /**
     * Field ColumnBet.
     */
    ColumnBet,
    /**
     * Field DozenBet.
     */
    DozenBet,
    /**
     * Field RedOrBlack.
     */
    RedOrBlack,
    /**
     * Field EvenOrOdd.
     */
    EvenOrOdd,
    /**
     * Field LowOrHigh.
     */
    LowOrHigh;
  }
 
  /**
   * Method dialog.
   */
  public void dialog()
  {
    Player player = getSelf();
    show(HtmCache.getInstance().getNotNull("scripts/services/roulette.htm", player).replaceFirst("%min%", Util.formatAdena(Config.SERVICES_ROULETTE_MIN_BET)).replaceFirst("%max%", Util.formatAdena(Config.SERVICES_ROULETTE_MAX_BET)), player);
  }
 
  /**
   * Method play.
   * @param param String[]
   */
  public void play(String[] param)
  {
    Player player = getSelf();
    GameType type;
    long bet = 0;
    String betID = "";
    try
    {
      if (param.length != 3)
      {
        throw new NumberFormatException();
      }
      type = GameType.valueOf(param[0]);
      betID = param[1].trim();
      bet = Long.parseLong(param[2]);
      if ((type == GameType.StraightUp) && ((betID.length() > 2) || (Integer.parseInt(betID) < 0) || (Integer.parseInt(betID) > 36)))
      {
        throw new NumberFormatException();
      }
    }
    catch (NumberFormatException e)
    {
      show("Invalid value input!<br><a action=\"bypass -h scripts_services.Roulette:dialog\">Back</a>", player);
      return;
    }
    if (bet < Config.SERVICES_ROULETTE_MIN_BET)
    {
      show("Too small bet!<br><a action=\"bypass -h scripts_services.Roulette:dialog\">Back</a>", player);
      return;
    }
    if (bet > Config.SERVICES_ROULETTE_MAX_BET)
    {
      show("Too large bet!<br><a action=\"bypass -h scripts_services.Roulette:dialog\">Back</a>", player);
      return;
    }
    if (player.getAdena() < bet)
    {
      player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
      show("You do not have enough adena!<br><a action=\"bypass -h scripts_services.Roulette:dialog\">Back</a>", player);
      return;
    }
    String[] roll = Numbers[Rnd.get(Numbers.length)];
    int result = check(betID, roll, type);
    String ret = HtmCache.getInstance().getNotNull("scripts/services/rouletteresult.htm", player);
    if (result == 0)
    {
      removeItem(player, 57, bet);
      GameStats.addRoulette(bet);
      ret = ret.replace("%result%", "<font color=\"FF0000\">Fail!</font>");
    }
    else
    {
      addItem(player, 57, bet * result);
      GameStats.addRoulette(-1 * bet * result);
      ret = ret.replace("%result%", "<font color=\"00FF00\">Succes!</font>");
    }
    if (player.isGM())
    {
      player.sendMessage("Roulette balance: " + Util.formatAdena(GameStats.getRouletteSum()));
    }
    ret = ret.replace("%bettype%", new CustomMessage("Roulette." + type.toString(), player).toString());
    ret = ret.replace("%betnumber%", type == GameType.StraightUp ? betID : new CustomMessage("Roulette." + betID, player).toString());
    ret = ret.replace("%number%", roll[0]);
    ret = ret.replace("%color%", new CustomMessage("Roulette." + roll[1], player).toString());
    ret = ret.replace("%evenness%", new CustomMessage("Roulette." + roll[4], player).toString());
    ret = ret.replace("%column%", new CustomMessage("Roulette." + roll[3], player).toString());
    ret = ret.replace("%dozen%", new CustomMessage("Roulette." + roll[2], player).toString());
    ret = ret.replace("%highness%", new CustomMessage("Roulette." + roll[5], player).toString());
    ret = ret.replace("%param%", param[0] + " " + param[1] + " " + param[2]);
    show(ret, player);
  }
 
  /**
   * Method check.
   * @param betID String
   * @param roll String[]
   * @param type GameType
   * @return int
   */
  private static final int check(String betID, String[] roll, GameType type)
  {
    switch (type)
    {
      case StraightUp:
        if (betID.equals(roll[0]))
        {
          return 35;
        }
        return 0;
      case ColumnBet:
        if (betID.equals(roll[3]))
        {
          return 2;
        }
        return 0;
      case DozenBet:
        if (betID.equals(roll[2]))
        {
          return 2;
        }
        return 0;
      case RedOrBlack:
        if (betID.equals(roll[1]))
        {
          return 1;
        }
        return 0;
      case EvenOrOdd:
        if (betID.equals(roll[4]))
        {
          return 1;
        }
        return 0;
      case LowOrHigh:
        if (betID.equals(roll[5]))
        {
          return 1;
        }
        return 0;
      default:
        return 0;
    }
  }
 
  /**
   * Method DialogAppend_30990.
   * @param val Integer
   * @return String
   */
  public String DialogAppend_30990(Integer val)
  {
    return getHtmlAppends(val);
  }
 
  /**
   * Method DialogAppend_30991.
   * @param val Integer
   * @return String
   */
  public String DialogAppend_30991(Integer val)
  {
    return getHtmlAppends(val);
  }
 
  /**
   * Method DialogAppend_30992.
   * @param val Integer
   * @return String
   */
  public String DialogAppend_30992(Integer val)
  {
    return getHtmlAppends(val);
  }
 
  /**
   * Method DialogAppend_30993.
   * @param val Integer
   * @return String
   */
  public String DialogAppend_30993(Integer val)
  {
    return getHtmlAppends(val);
  }
 
  /**
   * Method DialogAppend_30994.
   * @param val Integer
   * @return String
   */
  public String DialogAppend_30994(Integer val)
  {
    return getHtmlAppends(val);
  }
 
  /**
   * Method getHtmlAppends.
   * @param val Integer
   * @return String
   */
  public String getHtmlAppends(Integer val)
  {
    Player player = getSelf();
    if (Config.SERVICES_ALLOW_ROULETTE)
    {
      return "<br><a action=\"bypass -h scripts_services.Roulette:dialog\">" + new CustomMessage("Roulette.dialog", player).toString() + "</a>";
    }
    return "";
  }
}
TOP

Related Classes of services.Roulette

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.