Exemple #1
0
        private void OnSkillEvent(object sender, SkillEventArgs e)
        {
            // return if did 0 damage
            if (e.SkillResult.IsHeal == false && e.SkillResult.Damage <= 0)
            {
                return;
            }
            _combatControl.CombatCheck();

            var doesPlayerExistInCurrentCombat = false;

            foreach (var combatBreakdown  in _combatControl.CurrentCombat)
            {
                if (combatBreakdown.Source == e.SkillResult.SourcePlayer.Name)
                {
                    combatBreakdown.ActUponSkillEvent(e.SkillResult, true);
                    doesPlayerExistInCurrentCombat = true;
                }
                else if (combatBreakdown.Source == e.SkillResult?.TargetPlayer?.Name)
                {
                    combatBreakdown.ActUponSkillEvent(e.SkillResult, false);
                }
            }
            if (doesPlayerExistInCurrentCombat == false)
            {
                var breakdown = new DelegateBreakdown();
                breakdown.ActUponSkillEvent(e.SkillResult, true);
                _combatControl.CurrentCombat.Add(breakdown);
            }
            var damage = _combatControl.CurrentCombat.Sum(breakdown => breakdown.Damage);

            foreach (var breakdown in _combatControl.CurrentCombat)
            {
                breakdown.DamagePercent = Math.Truncate(10 * (double)damage / breakdown.Damage) / 10;
            }
            _combatControl.UpdateCombat();
        }
        private void OnMessageReceived(Message obj)
        {
            var message = _messageFactory.Create(obj);

            _entityTracker.Update(message);

            var skillResultMessage = message as EachSkillResultServerMessage;

            if (skillResultMessage?.IsUseless == false)
            {
                var skillResult = new SkillResult(skillResultMessage, _entityTracker, _playerTracker,
                                                  _teraData.SkillDatabase);

                if (skillResult.Skill != null)
                {
                    var args = new SkillEventArgs {
                        SkillResult = skillResult
                    };

                    SkillEvent?.Invoke(this, args);
                    Console.WriteLine($@"Skill: {skillResult.Skill.Name} did {skillResult.Damage} to {skillResult.Target} from {skillResult.Source}");
                }
            }
        }
Exemple #3
0
 public void OnSkillAdded(object source, SkillEventArgs e)
 {
     //  healthSlotsController.OrganizeInEmptySlot(e.SkillHero);
     energySlotsController.OrganizeInEmptySlot(e.SkillHero);
 }