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); }
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(""); } }