private void OnSelectedSkill(Model.CharacterRelated.SkillRelated.Skill sk) { if (SelectedSkillEvent != null) { Selected = sk; SelectedSkillEvent(this, EventArgs.Empty); } }
private bool LearnSkill(Model.CharacterRelated.SkillRelated.Skill sk) { Int32 ind = Skills.SkillTree.FindIndex(x => x == sk); if (!Skills.SkillTree[ind].IsUnlocked && Skills.SkillTree[ind].LevelRequired <= _level && Skills.UnSpentPoints > 0) { Skills.SkillTree[ind].IsUnlocked = true; --Skills.UnSpentPoints; return(true); } return(false); }
private void EnemyTurn(Int32 t) { EndOfTurnMaintainEnemy(); Model.CharacterRelated.SkillRelated.Skill sk = _map.Current.Special.Enemies[t].ChooseSkill(_player); if (_map.Current.Special.Distances[t] > sk.Range) { Battle_Content += _map.Current.Special.Enemies[t].Name + " comes closer to you." + Environment.NewLine; OnPropertyChanged("Battle_Content"); _map.Current.Special.Distances[t] -= _map.Current.Special.Enemies[t].TotalStats.Speed; if (_map.Current.Special.Distances[t] < 0) { _map.Current.Special.Distances[t] = 0; } OnPropertyChanged("Battle_EnemyDistance"); return; } _map.Current.Special.Enemies[t].BaseStats.Mana.Consume(sk.ManaCost); _map.Current.Special.Enemies[t].Skills.SkillTree.Find(skill => skill == sk).IsOnCooldown = _map.Current.Special.Enemies[t].Skills.SkillTree.Find(skill => skill == sk).Cooldown; _map.Current.Special.Enemies[t].ActiveEffects.Add(sk); //Add skill stats _map.Current.Special.Enemies[t].BaseStats.Attack += sk.AdditionalAttack; _map.Current.Special.Enemies[t].BaseStats.Defense += sk.AdditionalDefense; _map.Current.Special.Enemies[t].BaseStats.Health.Increase(sk.AdditionalHealth); _map.Current.Special.Enemies[t].BaseStats.Health.Heal(sk.Heal); _map.Current.Special.Enemies[t].BaseStats.Mana.Increase(sk.AdditionalMana); _map.Current.Special.Enemies[t].BaseStats.Mana.Regen(sk.Recover); _map.Current.Special.Enemies[t].BaseStats.Speed += sk.AdditionalSpeed; Battle_Content += "Enemy: " + sk.UseMessage + Environment.NewLine; OnPropertyChanged("Battle_Content"); //DO damage HitPlayer(t); }
private Boolean SwapSkills(int mod) { Model.CharacterRelated.ProfessionManager.ProfessionInfo ri = Model.CharacterRelated.ProfessionManager.Professions[(String)ProfessionListBox.SelectedItem]; if (SkillListBox.SelectedIndex >= 0 && SkillListBox.SelectedIndex + mod >= 0 && SkillListBox.SelectedIndex < ri.SkillTree.Count && SkillListBox.SelectedIndex + mod < ri.SkillTree.Count) { int i = SkillListBox.SelectedIndex; Model.CharacterRelated.SkillRelated.Skill temp = ri.SkillTree[i + mod]; ri.SkillTree[i + mod] = ri.SkillTree[i]; ri.SkillTree[i] = temp; return(true); } return(false); }
public SkillEventArgs(Model.CharacterRelated.SkillRelated.Skill sk) : base() { Skill = sk; }
public void SelectSkill(Model.CharacterRelated.SkillRelated.Skill sk) { if (_target == -1) { String text = "Select a target!"; Battle_Content += text + Environment.NewLine; OnPropertyChanged("Battle_Content"); OnShowMessage(text); return; } if (_player.TotalStats.Mana.Current < sk.ManaCost) { String text = "You need more mana to cast that!"; Battle_Content += text + Environment.NewLine; OnPropertyChanged("Battle_Content"); OnShowMessage(text); return; } if (_map.Current.Special.Distances[_target] > sk.Range) { Battle_Content += "You run closer to your target and your enemies." + Environment.NewLine; OnPropertyChanged("Battle_Content"); for (Int32 i = 0; i < _map.Current.Special.Distances.Count; ++i) { if (_map.Current.Special.Enemies[i].TotalStats.Health.Current <= 0) { continue; } if (i == _target) { if (_map.Current.Special.Distances[i] == 0) { continue; } _map.Current.Special.Distances[i] -= _player.TotalStats.Speed; } else { if (_map.Current.Special.Distances[i] == 0) { continue; } _map.Current.Special.Distances[i] -= _player.TotalStats.Speed / 2; } } OnPropertyChanged("Battle_EnemyDistance"); return; } _player.BaseStats.Mana.Consume(sk.ManaCost); _player.Skills.SkillTree.Find(skill => skill == sk).IsOnCooldown = _player.Skills.SkillTree.Find(skill => skill == sk).Cooldown; _player.ActiveEffects.Add(sk); //Add skill stats _player.BaseStats.Attack += sk.AdditionalAttack; _player.BaseStats.Defense += sk.AdditionalDefense; _player.BaseStats.Health.Increase(sk.AdditionalHealth); _player.BaseStats.Health.Heal(sk.Heal); _player.BaseStats.Mana.Increase(sk.AdditionalMana); _player.BaseStats.Mana.Regen(sk.Recover); _player.BaseStats.Speed += sk.AdditionalSpeed; Battle_Content += sk.UseMessage + Environment.NewLine; OnPropertyChanged("Battle_Content"); //DO damage HitEnemy(); //enemy turn for (Int32 i = 0; i < _map.Current.Special.Enemies.Count; ++i) { if (_map.Current.Special.Enemies[i].TotalStats.Health.Current <= 0) { continue; } EnemyTurn(i); } //remove effects EndOfTurnMaintainPlayer(); //if end if (_map.Current.Special.Enemies.All(enemy => enemy.TotalStats.Health.Current <= 0)) { while (_player.ActiveEffects.Count > 0) { EndOfTurnMaintainPlayer(); } OnBattleEnd(); } }