Пример #1
0
        public System.Collections.IEnumerator OnBoutFixedDamage(MCharacter mCharacter, Model.Master.MSkill skill, List <VCharacterBase> characters)
        {
            TileMap mapSearch = Global.mapSearch;

            Manager.BattleCharactersManager charactersManager = Global.charactersManager;
            VTile targetTile = mapSearch.GetTile(mCharacter.coordinate);

            foreach (VCharacter child in characters)
            {
                VTile tile = mapSearch.GetTile(child.mCharacter.coordinate);
                if (mapSearch.GetDistance(targetTile, tile) <= skill.radius)
                {
                    int hert = skill.strength;
                    if (child.hp - hert <= 0)
                    {
                        hert = child.hp - 1;
                    }
                    Model.Battle.MDamageParam arg = new Model.Battle.MDamageParam(-hert);
                    child.SendMessage(CharacterEvent.OnDamage.ToString(), arg);
                }
            }
            while (charactersManager.HasDynamicCharacter())
            {
                yield return(new UnityEngine.WaitForEndOfFrame());
            }
        }
Пример #2
0
        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);
                    }
                }
            }
        }
Пример #3
0
        public void OnHealWithoutAction(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, 0.2f, new TweenParms().Prop("hp", this.mCharacter.hp + arg.value, false).Ease(EaseType.EaseInQuart)));
            seqHp.Play();
        }
Пример #4
0
 public void OnHeal(Model.Battle.MDamageParam arg)
 {
     this.action = ActionType.block;
     OnHealWithoutAction(arg);
 }