Esempio n. 1
0
 public RoleBarChart ExpandByRBCPercent(RoleBarChart percentArray)
 {
     HP = (int)(HP * AllRandomSetClass.SimplePercentToDecimal(percentArray.HP));
     MP = (int)(MP * AllRandomSetClass.SimplePercentToDecimal(percentArray.MP));
     TP = (int)(TP * AllRandomSetClass.SimplePercentToDecimal(percentArray.TP));
     return(this);
 }
Esempio n. 2
0
    public virtual RoleBarChart bcCaused(BattleRoleData source, BattleRoleData target)
    {
        RoleBarChart bc = RoleBarChart.zero;
        int          hp = ChangeInBarChart.HP.DATA;

        if (ChangeInBarChart.HP.dataTag == NumberData.DataType.percent)
        {
            hp = (int)(target.HpController.MaxHp * ChangeInBarChart.HP.DECIMAL);
        }
        bc.HP = hp;
        int mp = ChangeInBarChart.MP.DATA;

        if (ChangeInBarChart.MP.dataTag == NumberData.DataType.percent)
        {
            mp = (int)(target.MpController.maxMp * ChangeInBarChart.MP.DECIMAL);
        }
        bc.MP = mp;
        int tp = ChangeInBarChart.TP.DATA;

        if (ChangeInBarChart.TP.dataTag == NumberData.DataType.percent)
        {
            tp = (int)(target.TpController.maxTp * ChangeInBarChart.TP.DECIMAL);
        }
        bc.TP = tp;
        return(bc);
    }
Esempio n. 3
0
    public void getBCOA(RoleBarChart BC)
    {
        if (BC.HP > 0)
        {
            HpController.addHp(BC.HP);
        }
        else if (BC.HP < 0)
        {
            HpController.getExtraDamage(BC.HP);
        }

        if (BC.MP > 0)
        {
            MpController.addMp(BC.MP);
        }
        else if (BC.MP < 0)
        {
            MpController.consumeMp(BC.MP);
        }

        if (BC.TP > 0)
        {
            TpController.addTp(BC.TP);
        }
        else if (BC.TP < 0)
        {
            TpController.consumeTp(BC.TP);
        }
    }
Esempio n. 4
0
    public void CheckStates()
    {
        ThisBasicRoleProperty()._role.AllARevision.Clear();

        stateExtraDamage = 0;
        AllRegend        = ThisBasicRoleProperty().BarChartRegendPerTurn;
        checkAllStandardStates();
        //八大直接显示类状态
        for (int i = 0; i < (int)StateTag.End; i++)
        {
            if (checkPerState((StateTag)i))
            {
                ThisBasicRoleProperty()._role.AllARevision
                    += OneState((StateTag)i).UniqueEffectInRA;
                stateExtraDamage += OneState((StateTag)i).ExtraDmg;
                PerStateUnit((StateTag)i).gameObject.SetActive(true);
            }
            else
            {
                PerStateUnit((StateTag)i).gameObject.SetActive(false);
            }
        }
        HpController.getExtraDamage(stateExtraDamage);

        #region otherBuff
        if (_Tag == SDConstants.CharacterType.Hero)
        {
            Race _race = HeroProperty._hero._heroRace;
            RoleAttributeList basic = ThisBasicRoleProperty()._role.ThisRoleAttributes.Clone;
            ThisBasicRoleProperty()._role.AllARevision
            .Add(SDDataManager.Instance.BuffFromDaynight(basic));
            ThisBasicRoleProperty()._role.AllARevision
            .Add(SDDataManager.Instance.BuffFromRace(basic, _race));
        }
        #endregion

        #region GoddessState
        if (BM.GM.haveGoddess)
        {
            ThisBasicRoleProperty()._role.AllARevision.Add(BM.GM.GetRALUpByGoddess
                                                               (ThisBasicRoleProperty()._role.ThisRoleAttributes.Clone));
        }
        #endregion
        #region extraState
        RoleExtraState.checkExtraStates();
        #endregion
        #region fatigueStateCheck
        if (SDDataManager.Instance.checkHeroFatigueTooHigh(unitHashcode))
        {
            Debug.Log("英雄 " + name + " 过度劳累");
            HpController.getExtraDamage(HpController.CurrentHp);
        }
        #endregion

        writeData();
    }
Esempio n. 5
0
 public override void initData(int level
                               , RoleAttributeList dataRA
                               , int criDmg, int dmgReduction, int dmgReflection, int RewardRate
                               , RoleBarChart bcRegendPerTurn, string id, string name
                               , int wakeNum)
 {
     base.initData(level
                   , dataRA, criDmg, dmgReduction, dmgReflection, RewardRate
                   , bcRegendPerTurn, id, name, wakeNum);
 }
Esempio n. 6
0
 public void initArmor(int level, RoleAttributeList dataRA
                       , int criDmg, int dmgReduction, int dmgReflection
                       , int RewardRate, RoleBarChart bcRegendPerTurn, string id, string name
                       , int wakeNum, int grade)
 {
     initData(level
              , dataRA, criDmg, dmgReduction, dmgReflection, RewardRate
              , bcRegendPerTurn, id, name, wakeNum);
     AddMultiplier(grade);
 }
Esempio n. 7
0
 public override void initData_Hero(Job heroJob, Race heroRace, int grade, int quality, int Level
                                    , RoleAttributeList ra, int criDmg
                                    , int dmgReduction, int dmgReflection, int RewardRate
                                    , RoleBarChart bcRegendPerTurn, string id, string name, int wakeNum)
 {
     base.initData_Hero(heroJob, heroRace, grade, quality, Level
                        , ra, criDmg, dmgReduction, dmgReflection, RewardRate
                        , bcRegendPerTurn, id, name, wakeNum);
     Debug.Log(name + " " + heroJob + " & " + heroRace);
     this._heroJob  = heroJob;
     this._heroRace = heroRace;
 }
Esempio n. 8
0
    /// <summary>
    /// 构建英雄数据
    /// </summary>
    /// <param name="heroJob"></param>
    /// <param name="grade">英雄当前等级</param>
    /// <param name="quality"></param>
    /// <param name="Level"></param>
    /// <param name="ra"></param>
    /// <param name="raRate"></param>
    /// <param name="speed"></param>
    /// <param name="cri"></param>
    /// <param name="criDmg"></param>
    /// <param name="dmgReduction"></param>
    /// <param name="dmgReflection"></param>
    /// <param name="RewardRate"></param>
    /// <param name="bcRegendPerTurn"></param>
    /// <param name="id"></param>
    /// <param name="name"></param>
    /// <param name="wakeNum"></param>
    public virtual void initData_Hero(Job heroJob, Race heroRace, int grade
                                      , int quality, int Level
                                      , RoleAttributeList ra
                                      , int criDmg, int dmgReduction, int dmgReflection, int RewardRate
                                      , RoleBarChart bcRegendPerTurn, string id, string name, int wakeNum)
    {
        LEVEL                 = Level;
        Quality               = quality;
        RoleBasicRA           = ra.Clone;
        CRIDmg                = criDmg;
        DmgReduction          = dmgReduction; DmgReflection = dmgReflection;
        this.RewardRate       = RewardRate;
        BarChartRegendPerTurn = bcRegendPerTurn;
        ID = id; Name = name;
        AddMultiplier(grade);
        AddWakeMultiplier(wakeNum);
        //补充设置(职业影响)
        switch (heroJob)
        {
        case Job.Fighter:
            initData_supplement_H_Fighter(RoleBasicRA, grade);
            break;

        case Job.Ranger:
            initData_supplement_H_Ranger(RoleBasicRA, grade);
            break;

        case Job.Priest:
            initData_supplement_H_Priest(RoleBasicRA, grade);
            break;

        case Job.Caster:
            initData_supplement_H_Caster(RoleBasicRA, grade);
            break;
        }
        switch (heroRace)
        {
        case Race.Human:
            initData_supplement_H_human();
            break;

        case Race.Elf:
            initData_supplement_H_elf();
            break;

        case Race.Dragonborn:
            initData_supplement_H_dragonborn();
            break;
        }
        AddLEVELNumMultiplier(LEVEL);
        Name = SDGameManager.T(name);
    }
Esempio n. 9
0
 public virtual void initData(int level, RoleAttributeList dataRA
                              , int criDmg, int dmgReduction, int dmgReflection, int RewardRate
                              , RoleBarChart bcRegendPerTurn, string id, string name, int wakeNum)
 {
     LEVEL                 = level;
     RoleBasicRA           = dataRA.Clone;
     CRIDmg                = criDmg;
     DmgReduction          = dmgReduction;
     DmgReflection         = dmgReflection;
     this.RewardRate       = RewardRate;
     BarChartRegendPerTurn = bcRegendPerTurn;
     ID = id; Name = SDGameManager.T(name);
 }
Esempio n. 10
0
    public IEnumerator IEStartSkill(BattleRoleData source, BattleRoleData target, NDBarChart _val)
    {
        source.unit_character_model.CurrentCharacterModel.ChangeModelAnim
            (source.unit_character_model.CurrentCharacterModel.anim_cast, false);
        SLEffectManager.Instance.playCommonEffectCast(source.transform.position);
        yield return(new WaitForSeconds(castLastTime));

        SLEffectManager.Instance.playCommonEffectRevive(target.transform.position);
        yield return(new WaitForSeconds(effectLastTime));

        source.unit_character_model.CurrentCharacterModel.ChangeModelAnim
            (source.unit_character_model.CurrentCharacterModel.anim_idle, true);

        RoleBarChart val = RoleBarChart.zero;

        if (_val.HP.dataTag == NumberData.DataType.integer)
        {
            val.HP = _val.HP.DATA;
        }
        else if (_val.HP.dataTag == NumberData.DataType.percent)
        {
            val.HP = (int)(target.HpController.MaxHp * _val.HP.DECIMAL);
        }
        if (_val.MP.dataTag == NumberData.DataType.integer)
        {
            val.MP = _val.MP.DATA;
        }
        else if (_val.MP.dataTag == NumberData.DataType.percent)
        {
            val.MP = (int)(target.MpController.maxMp * _val.MP.DECIMAL);
        }
        if (_val.TP.dataTag == NumberData.DataType.integer)
        {
            val.TP = _val.TP.DATA;
        }
        else if (_val.TP.dataTag == NumberData.DataType.percent)
        {
            val.TP = (int)(target.TpController.maxTp * _val.TP.DECIMAL);
        }

        Debug.Log(source.name + "revive BCAdd "
                  + " hp+" + val.HP + " mp+" + val.MP + " tp+" + val.TP + "  to " + target.name);
        target.revive(val);

        yield return(new WaitForSeconds(skillLastTime));

        StartCoroutine(IEWaitForShortEnd(source));
    }
Esempio n. 11
0
    public void refreshBtnState()
    {
        Debug.Log("Refresh This SKill:" + this.name + " State");
        bool btnEnable = true;

        #region 该技能存在使用次数限制
        if (SkillFiniteTimes > 0)
        {
            if (SFT_CurrentTimes >= SkillFiniteTimes)
            {
                btnEnable = false;
            }
            //显示当前剩余次数
        }
        #endregion
        BattleRoleData   Unit      = BM._currentBattleUnit;
        OneRoleClassData R         = Unit.ThisBasicRoleProperty()._role;
        RoleBarChart     CurrentBC = R.ReadAllMaxSSD;
        #region 该技能消耗超过角色现有量
        bool flag = CheckIfCanConsume(Unit);
        if (!flag)
        {
            btnEnable = false;
        }
        #endregion
        #region 角色状态影响技能
        if (Unit.checkPerState(StateTag.Hush))
        {
            if (this is NormalAttack)
            {
                btnEnable = true;
            }
            else
            {
                btnEnable = false;
            }
        }
        #endregion
        SkillDisable = !btnEnable;
        if (!btnEnable)//显示技能是否可以继续使用
        {
            _btn.interactable = false;
        }
        else
        {
            _btn.interactable = true;
        }
    }
Esempio n. 12
0
    public void checkAllStandardStates()
    {
        RoleAttributeList RAL = new RoleAttributeList();

        for (int i = 0; i < CurrentStateList.Count; i++)
        {
            if (CurrentStateList[i].LastTime <= 0)
            {
                CurrentStateList.RemoveAt(i);
            }
            else
            {
                if (CurrentStateList[i].StateEndType == StandardState.StateEndType.time)
                {
                    CurrentStateList[i].LastTime--;
                }
                //
                RAL.Add(CurrentStateList[i].RAL);
                stateExtraDamage += CurrentStateList[i].ExtraDmg;
                AllRegend        += CurrentStateList[i].BarChart;
                CurrentStateList[i].ExtraFunction(this);
            }
        }
        Debug.Log("StandardState_IfHaveData: " + RAL.HaveData);
        ThisBasicRoleProperty()._role.AllARevision.Add(RAL);
        Debug.Log("AllARevision_IfHaveData: "
                  + ThisBasicRoleProperty()._role.AllARevision.HaveData);
        //
        if (RAL.AllAttributeData.ToList().Exists(x => x > 0) ||
            RAL.AllResistData.ToList().Exists(x => x > 0))
        {
            Unit_Buff.gameObject.SetActive(true);
        }
        else
        {
            Unit_Buff.gameObject.SetActive(false);
        }
        if (RAL.AllAttributeData.ToList().Exists(x => x < 0) ||
            RAL.AllResistData.ToList().Exists(x => x < 0))
        {
            Unit_Debuff.gameObject.SetActive(true);
        }
        else
        {
            Unit_Debuff.gameObject.SetActive(false);
        }
    }
Esempio n. 13
0
    public void StateFunctionWork(BattleRoleData source, BattleRoleData target
                                  , RoleAttributeList ral, RoleBarChart bc
                                  , int dmg, int lastTime)
    {
        OneStateController state = new OneStateController()
        {
            ID       = NAME + "#" + stateTag.ToString().ToUpper(),
            NAME     = NAME,
            LastTime = stateEndType == StateEndType.time ? lastTime : 1,
            RAL      = ral,
            BarChart = bc,
            ExtraDmg = dmg,
            StateTag = stateTag,
        };

        if (target.AddStandardState(state))
        {
            Debug.Log("对 " + target.name + "添加 状态(sstate)" + state.NAME + " 成功");
        }
    }
Esempio n. 14
0
 public void revive(RoleBarChart recoverVal)
 {
     hideDead();
     IsDead = false;
     HpController.addHp(recoverVal.HP);
     MpController.addMp(recoverVal.MP);
     TpController.addTp(recoverVal.TP);
     HpController.BarChartStatus.gameObject.SetActive(true);
     if (!IsEnemy)
     {
         BM.Remaining_SRL.Add(this);
     }
     else
     {
         BM.Remaining_ORL.Add(this);
     }
     unit_character_model.CurrentCharacterModel._isDead = false;
     unit_character_model.CurrentCharacterModel.SetReplaceImgState(true);
     unit_character_model.CurrentCharacterModel.ChangeModelAnim
         (unit_character_model.CurrentCharacterModel.anim_idle, true);
 }
Esempio n. 15
0
 public NDBarChart(RoleBarChart bc)
 {
     HP = new NumberData(bc.HP);
     MP = new NumberData(bc.MP);
     TP = new NumberData(bc.TP);
 }