예제 #1
0
        public DamageSet ModifyDamage(AcriStone stone)
        {
            int minDiceValue = (int)Enum.GetValues(typeof(Dice)).Cast <Dice>().First();
            int maxDiceValue = (int)Enum.GetValues(typeof(Dice)).Cast <Dice>().Last();

            var newDamageSet     = new DamageSet();
            var newDiceList      = new List <Dice>(DamageDice);
            int lowestDamageDice = (int)newDiceList.Min();
            int stoneValue       = (int)stone;
            int extraDamage      = stoneValue % 2 == 0 ? 0 : 1;

            if ((maxDiceValue + minDiceValue) - lowestDamageDice <= stoneValue)
            {
                newDiceList[newDiceList.IndexOf(newDiceList.Min())] = Dice.d12;
                newDiceList.Insert(newDiceList.Count, (Dice)((stoneValue - extraDamage) - (maxDiceValue - lowestDamageDice)));
            }
            else if (maxDiceValue - lowestDamageDice < stoneValue && stoneValue - (maxDiceValue - lowestDamageDice) < minDiceValue)
            {
                newDiceList[newDiceList.IndexOf(newDiceList.Min())] = Dice.d12;
                extraDamage = stoneValue - (maxDiceValue - lowestDamageDice);
            }
            else
            {
                newDiceList[newDiceList.IndexOf(newDiceList.Min())] = (Dice)(lowestDamageDice + stoneValue - extraDamage);
            }

            newDamageSet.DamageDice  = newDiceList;
            newDamageSet.DamageBonus = DamageBonus + extraDamage;

            return(newDamageSet);
        }
예제 #2
0
        public static string EncodeAcriSymbol(AcriStone stone)
        {
            switch (stone)
            {
            case AcriStone.Green:
                return("VIRHREI");

            case AcriStone.Yellow:
                return("KELAVOTAINEN");

            case AcriStone.Orange:
                return("AURANOSSI");

            case AcriStone.Red:
                return("PURUBRAINEN");

            case AcriStone.Blue:
                return("CAERINILEUM");

            case AcriStone.Purple:
                return("VIOPURETTI");

            case AcriStone.Black:
                return("NISTAGREOS");

            case AcriStone.White:
                return("VALKOIBUNEN");

            default:
                return("");
            }
        }