public static void AdjustCreatureLevel(ICreature creature, int delta) { if (creature.Role is ComplexRole) { ComplexRole role = creature.Role as ComplexRole; int num = 8; switch (role.Type) { case RoleType.Artillery: case RoleType.Lurker: { num = 6; goto case RoleType.Controller; } case RoleType.Blaster: case RoleType.Controller: { switch (role.Flag) { case RoleFlag.Elite: { num *= 2; break; } case RoleFlag.Solo: { num *= 5; break; } } ICreature hP = creature; hP.HP = hP.HP + num * delta; creature.HP = Math.Max(creature.HP, 1); break; } case RoleType.Brute: { num = 10; goto case RoleType.Controller; } default: { goto case RoleType.Controller; } } } int initiative = creature.Initiative - creature.Level / 2; creature.Initiative = initiative + (creature.Level + delta) / 2; ICreature aC = creature; aC.AC = aC.AC + delta; ICreature fortitude = creature; fortitude.Fortitude = fortitude.Fortitude + delta; ICreature reflex = creature; reflex.Reflex = reflex.Reflex + delta; ICreature will = creature; will.Will = will.Will + delta; foreach (CreaturePower creaturePower in creature.CreaturePowers) { CreatureHelper.AdjustPowerLevel(creaturePower, delta); } if (creature.Skills != "") { Dictionary <string, int> strs = CreatureHelper.ParseSkills(creature.Skills); BinarySearchTree <string> binarySearchTree = new BinarySearchTree <string>(); foreach (string key in strs.Keys) { binarySearchTree.Add(key); } string str = ""; foreach (string sortedList in binarySearchTree.SortedList) { if (str != "") { str = string.Concat(str, ", "); } int item = strs[sortedList]; int level = item - creature.Level / 2; item = level + (creature.Level + delta) / 2; if (item < 0) { object obj = str; object[] objArray = new object[] { obj, sortedList, " ", item }; str = string.Concat(objArray); } else { object obj1 = str; object[] objArray1 = new object[] { obj1, sortedList, " +", item }; str = string.Concat(objArray1); } } creature.Skills = str; } ICreature level1 = creature; level1.Level = level1.Level + delta; }