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); } } } } } } }
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];
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); }
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); }
public BaseStatus(BaseStatus src) { src.CopyTo(this); }