Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.bbg.tb.utility;
- import java.util.Random;
- import com.bbg.tb.mobile.Mobile;
- public class Formula {
- public static Random random = new Random();
- public static void seed(long s) {
- random.setSeed(s);
- }
- public static int d20() {
- return random.nextInt(20);
- }
- public static int getSavingThrow(Mobile m, String stat) {
- try {
- return d20() + abilityCheck(m, stat) + proficiencyCheck(m, stat + "_save");
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- public static int dexSave(Mobile m) {
- return getSavingThrow(m, "dexterity");
- }
- public static int intSave(Mobile m) {
- return getSavingThrow(m, "intelligence");
- }
- public static int strSave(Mobile m) {
- return getSavingThrow(m, "strength");
- }
- public static int conSave(Mobile m) {
- return getSavingThrow(m, "constitution");
- }
- public static int wisSave(Mobile m) {
- return getSavingThrow(m, "wisdom");
- }
- public static int chaSave(Mobile m) {
- return getSavingThrow(m, "charisma");
- }
- public static float initiativeCheck(Mobile m) {
- try {
- float check = d20() + dexCheck(m) + ((boolean) m.fields.get("alert") ? 0 : 5)
- + (int) m.fields.get("initiative_bonus");
- check += ((float) m.fields.get("dexterity") / 100f);
- return check;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- public static int skillCheck(Mobile m, String skill) {
- int check = d20();
- switch (skill.toLowerCase()) {
- case "athletics":
- check += strCheck(m);
- break;
- case "acrobatics":
- case "sleight_of_hand":
- case "stealth":
- check += dexCheck(m);
- break;
- case "arcana":
- case "history":
- case "investigation":
- case "nature":
- case "religion":
- check += intCheck(m);
- break;
- case "animal_handling":
- case "insight":
- case "medicine":
- case "perception":
- case "survival":
- check += wisCheck(m);
- break;
- case "deception":
- case "intimidation":
- case "performance":
- case "persuasion":
- check += chaCheck(m);
- break;
- default:
- return 0;
- }
- return check + proficiencyCheck(m, skill);
- }
- public static int proficiencyCheck(Mobile m, String skill) {
- try {
- return (boolean) m.fields.get(skill) ? getProficiencyBonus(m) : 0;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- public static int abilityCheck(Mobile m, String stat) {
- try {
- return ((int) m.fields.get(stat) / 2) - 5;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- public static int dexCheck(Mobile m) {
- return abilityCheck(m, "dexterity");
- }
- public static int intCheck(Mobile m) {
- return abilityCheck(m, "intelligence");
- }
- public static int strCheck(Mobile m) {
- return abilityCheck(m, "strength");
- }
- public static int conCheck(Mobile m) {
- return abilityCheck(m, "constitution");
- }
- public static int wisCheck(Mobile m) {
- return abilityCheck(m, "wisdom");
- }
- public static int chaCheck(Mobile m) {
- return abilityCheck(m, "charisma");
- }
- public static int getProficiencyBonus(Mobile m) {
- try {
- return (((int) m.fields.get("level") - 1) / 4) + 2;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 2;
- }
- public static int roll(String dice) {
- try {
- dice = dice.replace(" ", "");
- String[] split = dice.split("d");
- int numDice = Integer.parseInt(split[0]);
- int numSides = 0;
- int bonus = 0;
- if (split[1].indexOf("+") < 0) {
- numSides = Integer.parseInt(split[1]);
- } else {
- split = split[1].split("+");
- numSides = Integer.parseInt(split[0]);
- bonus = Integer.parseInt(split[1]);
- }
- int roll = 0;
- for (int i = 0; i < numDice; i++) {
- roll += random.nextInt(numSides);
- }
- return roll + bonus;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement