Ejemplo n.º 1
0
        public void UpdateJobRankTransfarStatus(MasterParam master)
        {
            BaseStatus baseStatus = new BaseStatus();

            for (int index1 = 0; index1 < this.ranks.Length; ++index1)
            {
                if (this.ranks[index1] != null)
                {
                    this.ranks[index1].TransfarStatus.Clear();
                    baseStatus.CopyTo(this.ranks[index1].TransfarStatus);
                    if (this.ranks[index1].equips != null || index1 != this.ranks.Length)
                    {
                        for (int index2 = 0; index2 < this.ranks[index1].equips.Length; ++index2)
                        {
                            if (!string.IsNullOrEmpty(this.ranks[index1].equips[index2]))
                            {
                                ItemParam itemParam = master.GetItemParam(this.ranks[index1].equips[index2]);
                                if (itemParam != null && !string.IsNullOrEmpty((string)itemParam.skill))
                                {
                                    SkillData skillData = new SkillData();
                                    skillData.Setup((string)itemParam.skill, 1, 1, master);
                                    skillData.BuffSkill(ESkillTiming.Passive, baseStatus, (BaseStatus)null, baseStatus, (BaseStatus)null, (RandXorshift)null, SkillEffectTargets.Target);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void CalcLevelCurveStatus(int rank, ref BaseStatus result, BaseStatus ini_status, BaseStatus max_status)
        {
            int num1 = this.GetLevelCap() - 1;
            int num2 = rank - 1;

            ini_status.CopyTo(result);
            if (num2 < 1 || num1 < 1)
            {
                return;
            }
            if (num2 >= num1)
            {
                max_status.CopyTo(result);
            }
            else
            {
                BaseStatus baseStatus1 = new BaseStatus();
                BaseStatus baseStatus2 = new BaseStatus();
                for (int index1 = 0; index1 < this.curve.Count; ++index1)
                {
                    long num3 = (long)((int)this.curve[index1].lv - 1);
                    for (int index2 = index1; index2 > 0; --index2)
                    {
                        num3 -= (long)(int)this.curve[index2 - 1].lv;
                    }
                    long        num4         = (long)num2 >= num3 ? num3 : (long)num2;
                    StatusParam statusParam1 = ini_status.param;
                    StatusParam statusParam2 = max_status.param;
                    StatusParam src          = this.curve[index1].status.param;
                    src.CopyTo(baseStatus1.param);
                    baseStatus1.param.Sub(baseStatus2.param);
                    baseStatus2.param.Add(src);
                    for (int index2 = 0; index2 < baseStatus1.param.Length; ++index2)
                    {
                        long num5 = (long)(((int)statusParam2[(StatusTypes)index2] - (int)statusParam1[(StatusTypes)index2]) * (int)baseStatus1.param[(StatusTypes)index2] / 100);
                        if (num5 != 0L)
                        {
                            StatusParam statusParam3;
                            StatusTypes index3;
                            (statusParam3 = result.param)[index3 = (StatusTypes)index2] = (OInt)((int)statusParam3[index3] + (int)(100000L * num5 / num3 * num4 / 100000L));
                        }
                    }
                    ElementParam elementAssist1 = ini_status.element_assist;
                    ElementParam elementAssist2 = max_status.element_assist;
                    ElementParam elementAssist3 = this.curve[index1].status.element_assist;
                    elementAssist3.CopyTo(baseStatus1.element_assist);
                    baseStatus1.element_assist.Sub(baseStatus2.element_assist);
                    baseStatus2.element_assist.Add(elementAssist3);
                    for (int index2 = 0; index2 < baseStatus1.element_assist.values.Length; ++index2)
                    {
                        long num5 = (long)(((int)elementAssist2.values[index2] - (int)elementAssist1.values[index2]) * (int)baseStatus1.element_assist.values[index2] / 100);
                        if (num5 != 0L)
                        {
                            // ISSUE: explicit reference operation
                            // ISSUE: variable of a reference type
                            OShort& local = @result.element_assist.values[index2];
Ejemplo n.º 3
0
        private BuffAttachment createBuffAttachment(Unit target, BuffTypes buff_type, SkillParamCalcTypes calc_type, BaseStatus status, EffectCheckTimings chk_timing)
        {
            if (this.mBuffEffect == null)
            {
                return((BuffAttachment)null);
            }
            BuffAttachment buffAttachment = new BuffAttachment(this.mBuffEffect.param);

            buffAttachment.user           = this.mCreateUnit;
            buffAttachment.skill          = (SkillData)null;
            buffAttachment.skilltarget    = SkillEffectTargets.Self;
            buffAttachment.IsPassive      = (OBool)false;
            buffAttachment.CheckTarget    = (Unit)null;
            buffAttachment.DuplicateCount = 0;
            buffAttachment.CheckTiming    = chk_timing;
            buffAttachment.turn           = (OInt)1;
            buffAttachment.BuffType       = buff_type;
            buffAttachment.CalcType       = calc_type;
            buffAttachment.UseCondition   = this.mBuffEffect.param.cond;
            status.CopyTo(buffAttachment.status);
            return(buffAttachment);
        }
Ejemplo n.º 4
0
        private BuffAttachment createBuffAttachment(Unit target, BuffEffect effect, BuffTypes buff_type, SkillParamCalcTypes calc_type, BaseStatus status)
        {
            if (effect == null)
            {
                return((BuffAttachment)null);
            }
            BuffAttachment buffAttachment = new BuffAttachment(effect.param);

            buffAttachment.user           = this.mModifyUnit;
            buffAttachment.skill          = (SkillData)null;
            buffAttachment.skilltarget    = SkillEffectTargets.Self;
            buffAttachment.IsPassive      = (OBool)true;
            buffAttachment.CheckTarget    = (Unit)null;
            buffAttachment.DuplicateCount = 0;
            buffAttachment.CheckTiming    = effect.param.chk_timing;
            buffAttachment.turn           = effect.param.turn;
            buffAttachment.BuffType       = buff_type;
            buffAttachment.CalcType       = calc_type;
            buffAttachment.UseCondition   = ESkillCondition.Weather;
            status.CopyTo(buffAttachment.status);
            return(buffAttachment);
        }
Ejemplo n.º 5
0
 public BaseStatus(BaseStatus src)
 {
     src.CopyTo(this);
 }