예제 #1
0
    /// <summary>
    /// 状态造成的属性影响计算
    /// </summary>
    /// <param name="source"></param>
    /// <param name="target"></param>
    /// <returns></returns>
    public override RoleAttributeList ralCaused(BattleRoleData source, BattleRoleData target)
    {
        RoleAttributeList ral = new RoleAttributeList();
        //RoleAttributeList sourceRal = source.ThisBasicRoleProperty()._role.ThisRoleAttributes.Clone;
        RoleAttributeList targetRal = source.ThisBasicRoleProperty()._role.ThisRoleAttributes.Clone;

        for (int i = 0; i < AllChangesInRAL.Count; i++)
        {
            ChangeInRAL c = AllChangesInRAL[i];
            int         d = c.ChangeData.DATA;
            if (!c.IsForRD)
            {
                if (c.UseDataType == ChangeInRAL.DataOrigin.normal)
                {
                    if (c.ChangeData.dataTag == NumberData.DataType.percent)
                    {
                        d = (int)(targetRal.read(c.ADTag)
                                  * c.ChangeData.DECIMAL);
                    }
                }
                else if (c.UseDataType == ChangeInRAL.DataOrigin.otherAtb)
                {
                    int ori = targetRal.read(c.OtherAtb);
                    d = (int)(ori * AllRandomSetClass.SimplePercentToDecimal(c.UsePercent));
                }
                else if (c.UseDataType == ChangeInRAL.DataOrigin.armor)
                {
                    RoleAttributeList _ral = getRALFromEquip(c.UsePos, source, target).Clone;
                    d = _ral.read(c.ADTag);
                }

                ral.Add(d, c.ADTag);
            }
            else
            {
                if (c.UseDataType == ChangeInRAL.DataOrigin.normal)
                {
                    if (c.ChangeData.dataTag == NumberData.DataType.percent)
                    {
                        d = (int)(targetRal.read(c.STag)
                                  * c.ChangeData.DECIMAL);
                    }
                }
                else if (c.UseDataType == ChangeInRAL.DataOrigin.otherAtb)
                {
                    int ori = targetRal.read(c.OtherAtb);
                    d = (int)(ori * AllRandomSetClass.SimplePercentToDecimal(c.UsePercent));
                }
                else if (c.UseDataType == ChangeInRAL.DataOrigin.armor)
                {
                    RoleAttributeList _ral = getRALFromEquip(c.UsePos, source, target).Clone;
                    d = _ral.read(c.STag);
                }

                ral.Add(d, c.STag);
            }
        }
        return(ral);
    }
예제 #2
0
 public int ReadCurrentRoleRA(int Tag, bool IsAttributeData = true)
 {
     if (IsAttributeData)
     {
         AttributeData t = (AttributeData)Mathf.Clamp(Tag, 0, (int)AttributeData.End);
         return(ThisRoleAttributes.read(t) + AllARevision.read(t) + extraRALChangeData.read(t));
     }
     else
     {
         StateTag t = (StateTag)Mathf.Clamp(Tag, 0, (int)StateTag.End);
         return(ThisRoleAttributes.read(t) + AllARevision.read(t) + extraRALChangeData.read(t));
     }
 }
예제 #3
0
    /// <summary>
    /// 全战斗属性百分比增减+-()%
    /// </summary>
    /// <param name="ForwardRA">原属性</param>
    /// <param name="Percent">增加或减少的百分比</param>
    /// <returns></returns>
    public static RoleAttributeList RAChangeInPercent(RoleAttributeList ForwardRA, int Percent)
    {
        float             Decimal = AllRandomSetClass.SimplePercentToDecimal(Percent);
        RoleAttributeList RA      = ForwardRA;

        for (int i = 0; i < (int)AttributeData.End; i++)
        {
            AttributeData Tag = (AttributeData)i;
            RA.Add((int)(RA.read(Tag) * Decimal), Tag);
        }
        for (int i = 0; i < (int)StateTag.End; i++)
        {
            StateTag Tag = (StateTag)i;
            RA.Add((int)(RA.read(Tag) * Decimal), Tag);
        }
        return(RA);
    }
예제 #4
0
 public void Refresh(RoleAttributeList ral)
 {
     AttiFigure.text = "" + ral.read(TAG);
 }