public void OnDamage(VCharacterBase vCharacter) { Manager.BattleCalculateManager calculateManager = Global.battleManager.calculateManager; Manager.BattleCharactersManager charactersManager = Global.charactersManager; MCharacter mCharacter = vCharacter.mCharacter; MCharacter targetModel = mCharacter.target; VCharacterBase target = charactersManager.GetVCharacter(targetModel); List <VCharacterBase> characters = charactersManager.GetTargetCharacters(vCharacter, target, mCharacter.currentSkill.master); VTile tile = Global.mapSearch.GetTile(mCharacter.coordinate); foreach (VCharacter child in characters) { MCharacter childModel = child.mCharacter; bool hit = calculateManager.AttackHitrate(mCharacter, childModel); if (!hit) { child.SendMessage(CharacterEvent.OnBlock.ToString()); continue; } Model.Battle.MDamageParam arg = new App.Model.Battle.MDamageParam(-calculateManager.Hert(mCharacter, childModel, tile)); child.SendMessage(CharacterEvent.OnDamage.ToString(), arg); if (child.mCharacter.characterId != targetModel.characterId) { continue; } if (mCharacter.currentSkill.master.effect.enemy.time == SkillEffectBegin.enemy_hert) { if (mCharacter.currentSkill.master.effect.special == SkillEffectSpecial.vampire) { Model.Master.MStrategy strategy = Cacher.StrategyCacher.Instance.Get(mCharacter.currentSkill.master.effect.enemy.strategys[0]); int addHp = -UnityEngine.Mathf.FloorToInt(arg.value * strategy.hert * 0.01f); Model.Battle.MDamageParam arg2 = new Model.Battle.MDamageParam(addHp); vCharacter.SendMessage(CharacterEvent.OnHealWithoutAction.ToString(), arg2); } } else if (mCharacter.currentSkill.master.effect.enemy.time == SkillEffectBegin.attack_end) { if (mCharacter.currentSkill.master.effect.special == SkillEffectSpecial.status) { int specialValue = mCharacter.currentSkill.master.effect.special_value; if (specialValue > 0 && UnityEngine.Random.Range(0, 50) > specialValue) { continue; } childModel.attackEndEffects.Add(mCharacter.currentSkill.master.effect.enemy); } } } }
public void OnDamage(VCharacter vCharacter) { MCharacter mCharacter = this.GetCharacterModel(vCharacter); MCharacter targetModel = vCharacter.ViewModel.Target.Value; VCharacter target = this.GetCharacterView(targetModel); List <VCharacter> characters = this.charactersManager.GetTargetCharacters(vCharacter, target, vCharacter.ViewModel.CurrentSkill.Value.Master); App.View.VTile tile = mapSearch.GetTile(mCharacter.CoordinateX, mCharacter.CoordinateY); foreach (VCharacter child in characters) { MCharacter childModel = this.GetCharacterModel(child); bool hit = calculateManager.AttackHitrate(mCharacter, childModel); if (!hit) { child.SendMessage(CharacterEvent.OnBlock.ToString()); continue; } App.Model.Battle.MDamageParam arg = new App.Model.Battle.MDamageParam(-this.calculateManager.Hert(mCharacter, childModel, tile)); child.SendMessage(CharacterEvent.OnDamage.ToString(), arg); if (child.ViewModel.CharacterId.Value != targetModel.CharacterId) { continue; } if (mCharacter.CurrentSkill.Master.effect.enemy.time == App.Model.Master.SkillEffectBegin.enemy_hert) { if (mCharacter.CurrentSkill.Master.effect.special == App.Model.Master.SkillEffectSpecial.vampire) { App.Model.Master.MStrategy strategy = App.Util.Cacher.StrategyCacher.Instance.Get(mCharacter.CurrentSkill.Master.effect.enemy.strategys[0]); VCharacter currentCharacter = this.GetCharacterView(mCharacter); int addHp = -UnityEngine.Mathf.FloorToInt(arg.value * strategy.hert * 0.01f); App.Model.Battle.MDamageParam arg2 = new App.Model.Battle.MDamageParam(addHp); currentCharacter.SendMessage(CharacterEvent.OnHealWithoutAction.ToString(), arg2); } } else if (mCharacter.CurrentSkill.Master.effect.enemy.time == App.Model.Master.SkillEffectBegin.attack_end) { if (mCharacter.CurrentSkill.Master.effect.special == App.Model.Master.SkillEffectSpecial.status) { int specialValue = mCharacter.CurrentSkill.Master.effect.special_value; if (specialValue > 0 && UnityEngine.Random.Range(0, 50) > specialValue) { continue; } childModel.attackEndEffects.Add(mCharacter.CurrentSkill.Master.effect.enemy); } } } }
public void OnHeal(VCharacter vCharacter) { //UnityEngine.Debug.LogError("OnHeal"); MCharacter mCharacter = this.GetCharacterModel(vCharacter); MCharacter targetModel = vCharacter.ViewModel.Target.Value; VCharacter target = this.GetCharacterView(targetModel); List <VCharacter> characters = this.charactersManager.GetTargetCharacters(vCharacter, target, vCharacter.ViewModel.CurrentSkill.Value.Master); App.View.VTile tile = mapSearch.GetTile(mCharacter.CoordinateX, mCharacter.CoordinateY); foreach (VCharacter child in characters) { App.Model.Battle.MDamageParam arg = new App.Model.Battle.MDamageParam(this.calculateManager.Heal(mCharacter, this.GetCharacterModel(child), tile)); child.SendMessage(CharacterEvent.OnHeal.ToString(), arg); } }
public void OnHealWithoutAction(App.Model.Battle.MDamageParam arg) { this.num.text = string.Format("+{0}", arg.value); this.num.gameObject.SetActive(true); this.num.transform.localPosition = new Vector3(0, 0.2f, 0); this.num.color = Color.green; this.num.transform.localScale = Vector3.zero; Sequence seqHp = new Sequence(); seqHp.Insert(0f, HOTween.To(this.num.transform, 0.2f, new TweenParms().Prop("localScale", numScale * 2f, false).Ease(EaseType.EaseInQuart))); seqHp.Insert(0.2f, HOTween.To(this.num.transform, 0.3f, new TweenParms().Prop("localScale", numScale, false).Ease(EaseType.EaseOutBounce))); seqHp.Insert(0.5f, HOTween.To(this.num, 0.2f, new TweenParms().Prop("color", new Color(this.num.color.r, this.num.color.g, this.num.color.b, 0f), false).OnComplete(() => { this.num.gameObject.SetActive(false); }))); seqHp.Insert(0f, HOTween.To(this.ViewModel.Hp, 0.2f, new TweenParms().Prop("Value", this.ViewModel.Hp.Value + arg.value, false).Ease(EaseType.EaseInQuart))); seqHp.Play(); }
public void OnDamage(App.Model.Battle.MDamageParam arg) { this.action = ActionType.hert; this.num.text = arg.value.ToString(); this.num.gameObject.SetActive(true); this.num.transform.localPosition = new Vector3(0, 0.2f, 0); this.num.color = Color.white; this.num.transform.localScale = Vector3.zero; Sequence seqHp = new Sequence(); seqHp.Insert(0f, HOTween.To(this.num.transform, 0.2f, new TweenParms().Prop("localScale", numScale * 2f, false).Ease(EaseType.EaseInQuart))); seqHp.Insert(0.2f, HOTween.To(this.num.transform, 0.3f, new TweenParms().Prop("localScale", numScale, false).Ease(EaseType.EaseOutBounce))); seqHp.Insert(0.5f, HOTween.To(this.num, 0.2f, new TweenParms().Prop("color", new Color(this.num.color.r, this.num.color.g, this.num.color.b, 0f), false).OnComplete(() => { this.num.gameObject.SetActive(false); }))); seqHp.Insert(0f, HOTween.To(this, 0.2f, new TweenParms().Prop("hp", this.mCharacter.hp + arg.value, false).Ease(EaseType.EaseInQuart))); seqHp.Play(); }
public IEnumerator OnBoutFixedDamage(MCharacter mCharacter, App.Model.Master.MSkill skill, List <VCharacter> characters) { App.View.VTile targetTile = this.mapSearch.GetTile(mCharacter.CoordinateX, mCharacter.CoordinateY); foreach (VCharacter child in characters) { App.View.VTile tile = this.mapSearch.GetTile(child.ViewModel.CoordinateX.Value, child.ViewModel.CoordinateY.Value); if (this.mapSearch.GetDistance(targetTile, tile) <= skill.radius) { int hert = skill.strength; if (child.ViewModel.Hp.Value - hert <= 0) { hert = child.ViewModel.Hp.Value - 1; } App.Model.Battle.MDamageParam arg = new App.Model.Battle.MDamageParam(-hert); child.SendMessage(CharacterEvent.OnDamage.ToString(), arg); } } while (HasDynamicCharacter()) { yield return(new UnityEngine.WaitForEndOfFrame()); } }