public bool DoesActorWinFight() { float winChance = EWFightPet.kBaseWinChance; float actorSkillLevel = skillActor.getEffectiveSkillLevel(Actor.LotCurrent == Actor.LotHome, Target); int targetSkill = Math.Max(0, Target.SkillManager.GetSkillLevel(SkillNames.MartialArts)); winChance += (actorSkillLevel - targetSkill) * EWFightPet.kWinChanceBonusPerSkillLevelDiff; for (int i = 0; i < EWFightPet.kWinChanceModifyTraits.Length; i++) { if (Actor.HasTrait(EWFightPet.kWinChanceModifyTraits[i])) { winChance += EWFightPet.kWinChanceModifyValues[i]; } } for (int i = 0; i < kWinChanceModifyTraitsHuman.Length; i++) { if (Target.HasTrait(kWinChanceModifyTraitsHuman[i])) { winChance -= kWinChanceModifyValuesHuman[i]; } } float probability = MathUtils.Clamp(winChance, 0, 100); return(RandomUtil.RandomChance(winChance)); }
public new bool DoesActorWinFight() { float winChance = kBaseWinChance; float actorSkillLevel = skillActor.getEffectiveSkillLevel(Actor.LotCurrent == Actor.LotHome, Target); float targetSkillLevel = skillTarget.getEffectiveSkillLevel(Target.LotCurrent == Target.LotHome, Actor); winChance += (actorSkillLevel - targetSkillLevel) * kWinChanceBonusPerSkillLevelDiff; for (int i = 0; i < kWinChanceModifyTraits.Length; i++) { if (Actor.HasTrait(kWinChanceModifyTraits[i])) { winChance += kWinChanceModifyValues[i]; } if (Target.HasTrait(kWinChanceModifyTraits[i])) { winChance -= kWinChanceModifyValues[i]; } } return(RandomUtil.RandomChance(winChance)); }