public Dictionary <Feat, AbilityDetail> BuildAbilities() { var builder = new AbilityBuilder() .Create(Feat.Sleep, PerkType.Sleep) .Name("Sleep") .HasRecastDelay(RecastGroup.Sleep, 12f) .HasActivationDelay(2f) .RequirementMP(8) .UsesActivationType(AbilityActivationType.Casted) .DisplaysVisualEffectWhenActivating() .HasImpactAction((activator, target, level) => { var resistance = Resistance.GetResistance(target, ResistanceType.Sleep); var baseDuration = Random.NextFloat(15.0f, 30.0f); var duration = baseDuration * resistance; StatusEffect.Apply(activator, target, StatusEffectType.Sleep, duration); Resistance.ModifyResistance(target, ResistanceType.Sleep, -0.25f); CombatPoint.AddCombatPoint(activator, target, SkillType.BlackMagic, 3); Enmity.ModifyEnmity(activator, target, 18); }); return(builder.Build()); }
public void TakeDamage(float amount, ElementalType type) { float resistance = m_Resistance.GetResistance(type); m_Damage = (int)System.Math.Round(amount * (1.0f - resistance)); TakeDamage(m_Damage); }
private static int CalculateDamage(uint activator, uint target, int baseDamage) { var resistance = Resistance.GetResistance(target, ResistanceType.Ice); var statAdjustment = 0.1f * (GetAbilityModifier(AbilityType.Intelligence, activator) - GetAbilityModifier(AbilityType.Intelligence, target)); resistance += statAdjustment; var damage = (int)(baseDamage * resistance); if (damage < 1) { damage = 1; } return(damage); }