//This is a helper class to create a void crewman public CrewMember(int id) { ID = id; _changeOnHire = new SkillModifiers(); _changeOnFire = new SkillModifiers(); _currentContribution = new SkillModifiers(); }
void InitChangeOnHire() { var gameVars = Globals.GameVars; _changeOnHire = new SkillModifiers { CitiesInNetwork = gameVars.Network.GetCrewMemberNetwork(this).Count(s => !gameVars.Network.MyCompleteNetwork.Contains(s)), BattlePercentChance = typeOfCrew == CrewType.Warrior ? 5 : 0, Navigation = typeOfCrew == CrewType.Sailor ? 1 : 0, PositiveEvent = typeOfCrew == CrewType.Guide ? 10 : 0 }; }
void InitCurrentContribution() { var gameVars = Globals.GameVars; // very similar to changeOnFire, but shows it as positives. this is their contribution to your team, not what you'll lose if you fire them (but it's basically the same). _currentContribution = new SkillModifiers { CitiesInNetwork = gameVars.Network.GetCrewMemberNetwork(this).Count(s => !gameVars.Network.CrewMembersWithNetwork(s).Any(crew => crew != this) && !gameVars.Network.MyImmediateNetwork.Contains(s)), BattlePercentChance = typeOfCrew == CrewType.Warrior ? 5 : 0, Navigation = typeOfCrew == CrewType.Sailor ? 1 : 0, PositiveEvent = typeOfCrew == CrewType.Guide ? 10 : 0 }; }
void InitChangeOnFire() { var gameVars = Globals.GameVars; // the cities in network calculation is too expensive right now. disabled temporarily _changeOnFire = new SkillModifiers { CitiesInNetwork = -gameVars.Network.GetCrewMemberNetwork(this).Count(s => !gameVars.Network.CrewMembersWithNetwork(s).Any(crew => crew != this) && !gameVars.Network.MyImmediateNetwork.Contains(s)), BattlePercentChance = typeOfCrew == CrewType.Warrior ? -5 : 0, Navigation = typeOfCrew == CrewType.Sailor ? -1 : 0, PositiveEvent = typeOfCrew == CrewType.Guide ? -10 : 0 }; }
public override void AddTooltipInfo(ref string name, ref string description) { if (damageModifiers.Any(d => !MathUtils.NearlyEqual(d.DamageMultiplier, 1f) || !MathUtils.NearlyEqual(d.ProbabilityMultiplier, 1f)) || SkillModifiers.Any()) { description += "\n"; } if (damageModifiers.Any()) { foreach (DamageModifier damageModifier in damageModifiers) { if (MathUtils.NearlyEqual(damageModifier.DamageMultiplier, 1f)) { continue; } foreach (string afflictionIdentifier in damageModifier.ParsedAfflictionIdentifiers) { GetDamageModifierText(ref description, damageModifier, afflictionIdentifier); } foreach (string afflictionIdentifier in damageModifier.ParsedAfflictionTypes) { GetDamageModifierText(ref description, damageModifier, afflictionIdentifier); } } } if (SkillModifiers.Any()) { foreach (var skillModifier in SkillModifiers) { string colorStr = XMLExtensions.ColorToString(GUI.Style.Green); int roundedValue = (int)Math.Round(skillModifier.Value); if (roundedValue == 0) { continue; } description += $"\n ‖color:{colorStr}‖{roundedValue.ToString("+0;-#")}‖color:end‖ {TextManager.Get("SkillName." + skillModifier.Key, true) ?? skillModifier.Key}"; } } }