public void ApplyOptions(Creature obj, bool levelup) { if (m_refItem.levelup == null || m_refItem.levelup.optionPerLevel == null) return; foreach(RefPriceCondition.RefOptionPerLevel op in m_refItem.levelup.optionPerLevel) { float optionValue = 0f; if (op.levelPer == false) { if (levelup == false) { if (Level >= op.level) optionValue = op.option.values[0]; } else { if (Level == op.level) optionValue = op.option.values[0]; } } else { if (levelup == false) optionValue = op.option.values[0]*(Level/op.level); else { if (Level%op.level == 0) optionValue = op.option.values[0]; } } switch(op.option.type) { case Option.DmgMultiplier: obj.m_creatureProperty.DamageMultiPlier += optionValue; break; case Option.MoveSpeed: obj.m_creatureProperty.AlphaMoveSpeed += optionValue; break; case Option.DmgReduction: obj.m_creatureProperty.DamageReduction += optionValue; break; case Option.Weapon: int weaponRefItemId = (int)optionValue; if (weaponRefItemId == 0) break; if (weaponRefItemId == Const.EmbersRefItemId) { obj.SetSubWeapon(obj.WeaponHolder.MainWeapon, new ItemWeaponData(Const.EmbersRefItemId), new RefMob.WeaponDesc()); } else { ItemWeaponData weaponData = new ItemWeaponData((int)optionValue); weaponData.Level = (int)op.option.values[1]; obj.EquipPassiveSkillWeapon(weaponData, new RefMob.WeaponDesc()); } break; case Option.Strength: obj.m_creatureProperty.AlphaPhysicalAttackDamage += (int)optionValue; break; case Option.MaxHp: obj.m_creatureProperty.AlphaMaxHP += (int)optionValue; break; case Option.MaxSp: obj.m_creatureProperty.AlphaMaxSP += (int)optionValue; break; case Option.RegenSp: obj.m_creatureProperty.AlphaSPRegen += optionValue; break; case Option.TapDamage: obj.m_creatureProperty.TapDamage += (int)optionValue; break; case Option.Critical: obj.m_creatureProperty.AlphaCriticalChance += optionValue; break; case Option.CriticalDmg: obj.m_creatureProperty.AlphaCriticalDamage += optionValue; break; case Option.LifeSteal: obj.m_creatureProperty.AlphaLifeSteal += optionValue; break; case Option.Dodge: obj.m_creatureProperty.Dodge += optionValue; break; case Option.GainExtraGold: obj.m_creatureProperty.GainExtraGold += optionValue; Creature owner = obj.GetOwner(); if (owner != null) { owner.m_creatureProperty.GainExtraGold += optionValue; } break; } } }