Пример #1
0
 //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();
 }
Пример #2
0
    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
        };
    }
Пример #3
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
        };
    }
Пример #4
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
        };
    }
Пример #5
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}";
                }
            }
        }