Esempio n. 1
0
    public static int GetAbilityDC(MTEML teml, int level)
    {
        if (Main.instance != null && Main.instance.forbidExtreme && teml < MTEML.HIGH)
        {
            teml = MTEML.HIGH;
        }
        switch (teml)
        {
        case MTEML.JUST_BONKERS:
            return(22 + level + (level / 2));

        case MTEML.EXTREME:
            return(19 + level + ((level + 3) / 5) + ((level + 1) / 5) + (level > 23 ? -1 : 0));

        case MTEML.HIGH:
            return(16 + level + (level / 3));

        case MTEML.MODERATE:
            return(13 + level + (level / 3));

        case MTEML.LOW:
            return(10 + level + (level / 3));

        case MTEML.TERRIBLE:
            return(7 + level + (level / 3));

        case MTEML.THE_WORST:
            return(4 + level + (level / 3));
        }
        return(0);
    }
Esempio n. 2
0
    public static int GetArmor(MTEML teml, int level)
    {
        if (Main.instance != null && Main.instance.forbidExtreme && teml < MTEML.HIGH)
        {
            teml = MTEML.HIGH;
        }
        switch (teml)
        {
        case MTEML.JUST_BONKERS:
            return(21 + level + (level / 2) + (level < 1 ? 1 : 0));

        case MTEML.EXTREME:
            return(18 + level + (level / 2) + (level < 1 ? 1 : 0));

        case MTEML.HIGH:
            return(15 + level + (level / 2) + (level < 1 ? 1 : 0));

        case MTEML.MODERATE:
            return(14 + level + (level / 2) + (level < 1 ? 1 : 0));

        case MTEML.LOW:
            return(12 + level + (level / 2) + (level < 1 ? 1 : 0));

        case MTEML.TERRIBLE:
            return(8 + level + (level / 2) + (level < 1 ? 1 : 0));

        case MTEML.THE_WORST:
            return(4 + level + (level / 2) + (level < 1 ? 1 : 0));
        }
        return(0);
    }
Esempio n. 3
0
    /*public static int GetStatValue(Monster mon, MStatAttr stat) {
     *      MTEML teml = mon.GetAttribute(stat);
     *      return 0;// GetValueFor(teml, mon.level);
     * }*/

    public static int GetAttack(MTEML teml, int level, bool isSpell)
    {
        if (Main.instance != null && Main.instance.forbidExtreme && teml < MTEML.HIGH)
        {
            teml = MTEML.HIGH;
        }
        if (isSpell)
        {
            return(GetAbilityDC(teml, level) - 8);
        }
        switch (teml)
        {
        case MTEML.JUST_BONKERS:
            return(12 + level + ((level + 1) / 2));

        case MTEML.EXTREME:
            return(10 + level + (level / 2) + (level < 0 ? 1 : 0));

        case MTEML.HIGH:
            return(8 + level + (level / 2) + (level < 0 ? 1 : 0));

        case MTEML.MODERATE:
            return(6 + level + (level / 2) + (level < 0 ? 1 : 0));

        case MTEML.LOW:
            return(4 + level + ((level + 1) / 3) + (level < 0 ? 1 : 0));

        case MTEML.TERRIBLE:
            return(2 + level + ((level + 1) / 3));

        case MTEML.THE_WORST:
            return(-1 + level + ((level + 1) / 3));
        }
        return(0);
    }
Esempio n. 4
0
    public static int GetStealth(MTEML teml, int level)
    {
        if (Main.instance != null && Main.instance.forbidExtreme && teml < MTEML.HIGH)
        {
            teml = MTEML.HIGH;
        }
        switch (teml)
        {
        case MTEML.JUST_BONKERS:
            return(12 + level + (level / 3) + ((level - 1) / 3));

        case MTEML.EXTREME:
            return(9 + level + (level / 3) + ((level - 1) / 3));

        case MTEML.HIGH:
            return(6 + level + (level / 3) + ((level - 1) / 3));

        case MTEML.MODERATE:
            return(5 + level + ((level - 1) / 2));

        case MTEML.LOW:
            return(3 + level + ((level - 1) / 2));

        case MTEML.TERRIBLE:
            return(2 + level + ((level + 1) / 3));

        case MTEML.THE_WORST:
            return(-1 + level + ((level + 1) / 3));
        }
        return(0);
    }
Esempio n. 5
0
    public static int GetFortReflexBonus(MTEML teml, int level)
    {
        if (Main.instance != null && Main.instance.forbidExtreme && teml < MTEML.HIGH)
        {
            teml = MTEML.HIGH;
        }
        switch (teml)
        {
        case MTEML.JUST_BONKERS:
            return(13 + level + ((level - 1 + (level > 21 ? (1) : 0)) / 2));

        case MTEML.EXTREME:
            return(10 + level + ((level - 1 + (level > 21 ? (1) : 0)) / 2));

        case MTEML.HIGH:
            return(9 + level + ((level - 1 + (level > 5 ? (level > 10 ? (level > 18 ? (3) : 2) : 1) : 0)) / 3));

        case MTEML.MODERATE:
            return(7 + level + ((level - 1 + (level > 5 ? (level > 10 ? (level > 18 ? (3) : 2) : 1) : 0)) / 3));

        case MTEML.LOW:
            return(3 + level + ((level - 1 + (level > 5 ? (level > 10 ? (level > 15 ? (3) : 2) : 1) : 0)) / 3));

        case MTEML.TERRIBLE:
            return(0 + level + ((level - 1 + (level > 5 ? (level > 10 ? (level > 15 ? (3) : 2) : 1) : 0)) / 3));

        case MTEML.THE_WORST:
            return(-3 + level + ((level - 1 + (level > 5 ? (level > 10 ? (level > 15 ? (3) : 2) : 1) : 0)) / 3));
        }
        return(0);
    }
Esempio n. 6
0
 public static int GetSavingThrow(MTEML teml, int level)
 {
     if (Main.instance != null && Main.instance.forbidExtreme && teml < MTEML.HIGH)
     {
         teml = MTEML.HIGH;
     }
     switch (teml)
     {
     case MTEML.JUST_BONKERS:
         return(17 + level + (level / 2));
     }
     return(GetPerception(teml, level));
 }
Esempio n. 7
0
    void Start()
    {
        instance = this;
        allChar  = Resources.LoadAll <Character>("classes");
        allHaz   = Resources.LoadAll <Hazard>("hazards");
        List <int> availLevels = new List <int>();

        classOpts = new List <Dropdown.OptionData>();
        foreach (Character c in allChar)
        {
            if (!classOpts.Any(ooo => ooo.text == c.name))
            {
                Dropdown.OptionData opt = new Dropdown.OptionData(c.name);
                classOpts.Add(opt);
            }
            if (!availLevels.Contains(c.level))
            {
                availLevels.Add(c.level);
            }
        }
        levelOpts = new List <Dropdown.OptionData>();
        availLevels.Sort();
        foreach (int lv in availLevels)
        {
            levelOpts.Add(new Dropdown.OptionData(lv.ToString()));
        }
        diffDropdown.onValueChanged.AddListener(v => {
            diffSetting = v;
        });
        Transform legend = topBar.Find("Legend");

        legend.Find("Hover").GetComponent <Image>().AddHover(p => {
            ShowTooltip(legend.transform.position + new Vector3(-50, -100, 0), "Indicates an approximate result of making a roll against challenges of the indicated difficulty as an average between all possible outcomes (nat-1 to nat-20).\nE.g. if only two results are possible (fail or success) then the average will be a blend between the two (yellow).", 4, 1, false);
        });
        legend.Find("Hover2").GetComponent <Image>().AddHover(p => {
            ShowTooltip(legend.transform.position + new Vector3(-50, -100, 0), "Black: Critical Failure\nRed: Failure\nGreen: Success\nBlue: Critical Success\nBlend: Some mixture.", 4, 1, false);
        });
        Color[] col = new Color[20];
        for (int i = 0; i < 20; i++)
        {
            col[i] = gradient.gradient.Evaluate((float)i / 19);
        }
        legend.GetComponentInChildren <BreakdownBar>().SetBitColors(col);
        legend.GetComponentInChildren <Dropdown>().onValueChanged.AddListener(v => {
            gradient     = gradients[v];
            Color[] cols = new Color[20];
            for (int i = 0; i < 20; i++)
            {
                cols[i] = gradient.gradient.Evaluate((float)i / 19);
            }
            legend.GetComponentInChildren <BreakdownBar>().SetBitColors(cols);
            foreach (GameObject window in resultWindow)
            {
                window.GetComponent <ResultWindow>().RefreshColor();
            }
        });
        ToggleDropdown togg = topBar.Find("SourceDropdown").GetComponent <ToggleDropdown>();

        togg.onValueChanged.AddListener(_ => {
            allMons = new Monster[0];
            foreach (int i in togg.activeValues)
            {
                Dropdown.OptionData dat = togg.options[i];
                Monster[] mons          = Resources.LoadAll <Monster>("specific_monsters/" + dat.text.Replace(" ", "_").ToLower());
                int olen = allMons.Length;
                Array.Resize <Monster>(ref allMons, olen + mons.Length);
                Array.Copy(mons, 0, allMons, olen, mons.Length);
            }
        });
        togg.value = 1;
        //legend.GetComponentInChildren<BreakdownBar>().SetNotches(-1, -1);
        Debug.Log(allMons.Length);
        foreach (MStatAttr atr in Enum.GetValues(typeof(MStatAttr)))
        {
            if (atr == MStatAttr.DISABLE)
            {
                continue;
            }
            int ext  = 0;
            int high = 0;
            int mod  = 0;
            int low  = 0;
            int ter  = 0;
            int wrst = 0;
            int bnk  = 0;
            foreach (Monster mon in allMons)
            {
                MTEML teml = mon.GetAttribute(atr);
                switch (teml)
                {
                case MTEML.THE_WORST:
                    wrst++;
                    break;

                case MTEML.TERRIBLE:
                    ter++;
                    break;

                case MTEML.LOW:
                    low++;
                    break;

                case MTEML.MODERATE:
                    mod++;
                    break;

                case MTEML.HIGH:
                    high++;
                    break;

                case MTEML.EXTREME:
                    ext++;
                    break;

                case MTEML.JUST_BONKERS:
                    bnk++;
                    break;
                }
            }
            Debug.Log(atr.ToString() +
                      "\nwrst: " + wrst +
                      "\nter: " + ter +
                      "\nlow: " + low +
                      "\nmod: " + mod +
                      "\nhigh: " + high +
                      "\next: " + ext +
                      "\nbnk: " + bnk);
        }
        topBar.Find("DifficultySelect/UpdateBtn").GetComponent <Button>().onClick.AddListener(() => {
            foreach (GameObject window in resultWindow)
            {
                window.GetComponent <ResultWindow>().UpdateDifficulty();
            }
        });
        topBar.Find("CycleToggle").GetComponent <Toggle>().onValueChanged.AddListener(b => {
            if (b)
            {
                StartCoroutine(CycleLevelValues());
            }
        });
        forbidExtreme = false;
        topBar.Find("DifficultySelect/ExtremeToggle").GetComponent <Toggle>().onValueChanged.AddListener(b => {
            forbidExtreme = b;
        });
    }