private void UpdateKillAddCritical(CharacterInfo sender) { KillAddCritical attr = sender.TalentManager.GetTalentAttribute(AttributeId.kKillAddCritical) as KillAddCritical; CombatStatisticInfo combat_info = sender.GetCombatStatisticInfo(); if (attr != null && combat_info != null) { attr.OnKill(combat_info.LastHitCountId); } }
private bool AdjustCritical(CharacterInfo sender, out float critical) { critical = sender.GetActualProperty().Critical; KillAddCritical attr = sender.TalentManager.GetTalentAttribute(AttributeId.kKillAddCritical) as KillAddCritical; CombatStatisticInfo combat_info = sender.GetCombatStatisticInfo(); if (attr != null && combat_info != null) { attr.OnHit(combat_info.LastHitCountId); if (attr.IsCriticalHit(combat_info.LastHitCountId)) { float new_critical = critical + attr.CriticalAdd; new_critical = new_critical > 1 ? 1 : new_critical; sender.GetActualProperty().SetCritical(Operate_Type.OT_Absolute, new_critical); //LogSystem.Error("----critical: set critical = {0}", new_critical); } return(true); } return(false); }