private float GetColorRemapWeight(NebulaObject playerObject, int groupCount) { if (playerObject != null) { var passiveBonuses = playerObject.GetComponent <PassiveBonusesComponent>(); float remap = 0.0f; if (passiveBonuses != null) { remap += passiveBonuses.coloredLootBonus; } var character = playerObject.GetComponent <PlayerCharacterObject>(); remap += BalanceFormulas.RemapParameter(character.level, groupCount); return(Mathf.Clamp01(remap)); } return(0f); }
private void SetAddionalParameter(ref ShipModule module, ModuleSettingsRes res, ModuleSlotSettingData slotSetting, AdditionalParameter prm, ColorInfo color) { int pointsMax = 10; switch (prm) { case AdditionalParameter.resist: //module.SetResist(BalanceFormulas.ComputeRESISTANCE(Rand.Int(1, pointsMax), pointsMax, dropParams.level, dropParams.resource.Leveling.CapLevel(), slotSetting.resist_max, color.factor)); module.SetCommonResist(BalanceFormulas.Resistance(res, slotSetting.resist, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; case AdditionalParameter.damage_bonus: //module.SetDamageBonus(BalanceFormulas.ComputeDAMAGEBONUS(Rand.Int(1, pointsMax), slotSetting.damage_bonus_points_value, slotSetting.damage_bonus_points_factor, dropParams.level)); module.SetDamageBonus(BalanceFormulas.DamageBonus(res, slotSetting.damageBonus, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; case AdditionalParameter.energy_bonus: //module.SetEnergyBonus(BalanceFormulas.ComputeENERGYBONUS(Rand.Int(1, pointsMax), slotSetting.energy_bonus_points_value, slotSetting.energy_bonus_points_factor, dropParams.level)); module.SetEnergyBonus(BalanceFormulas.EnergyBonus(res, slotSetting.energyBonus, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; case AdditionalParameter.crit_chance: //module.SetCritChance(BalanceFormulas.ComputeCRITCHANCE(Rand.Int(1, pointsMax), slotSetting.critical_chance_points_value, slotSetting.critical_chance_points_factor, dropParams.level)); module.SetCritChance(BalanceFormulas.CritChance(res, slotSetting.critChanceBonus, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; case AdditionalParameter.crit_damage: //module.SetCritDamage(BalanceFormulas.ComputeCRITDAMAGEBONUS(Rand.Int(1, pointsMax), slotSetting.critical_damage_points_value, slotSetting.critical_damage_points_factor, dropParams.level)); module.SetCritDamage(BalanceFormulas.CritDamageBonus(res, slotSetting.critDamageBonus, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; case AdditionalParameter.speed_bonus: //module.SetSpeedBonus(BalanceFormulas.ComputeSPEEDBONUS(Rand.Int(1, pointsMax), slotSetting.speed_bonus_points_value, slotSetting.speed_bonus_points_factor, dropParams.level)); module.SetSpeedBonus(BalanceFormulas.SpeedBonus(res, slotSetting.speedBonus, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; case AdditionalParameter.hold_bonus: //module.SetHoldBonus(BalanceFormulas.ComputeCARGOBONUS(Rand.Int(1, pointsMax), slotSetting.cargo_bonus_points_value, slotSetting.cargo_bonus_points_factor, dropParams.level)); module.SetHoldBonus(BalanceFormulas.CargoBonus(res, slotSetting.cargoBonus, dropParams.level, Rand.Int(1, res.addPointMax), color)); break; } }
public static void Speed() { float f = BalanceFormulas.ComputeSPEED(1, 0.3f, 1.008f, 1, 3, 0.5f, 1.008f); Console.WriteLine((f * 5)); }
public static void Distance() { float f = BalanceFormulas.ComputeWeaponOPTIMALDISTANCE(1, 10, 1.02f, 1, 5, 10, 1.02f); Console.WriteLine("distance = {0}", f); }
public WeaponObject DropWeapon(ColorInfo colorInfo) { WeaponData data = dropParams.resource.RandomWeapon(dropParams.workshop); if (data == null) { throw new Exception("not found weapon data"); } WeaponWorkshopSetting setting; if (!dropParams.resource.WeaponSettings.TryGetSetting(dropParams.workshop, out setting)) { throw new Exception("Not found weapon settings"); } int[] points = Rand.GenerateNumbers(2, 10); /* * float damage = BalanceFormulas.ComputeWeaponDAMAGE(colorInfo.factor, setting.base_damage, setting.base_damage_factor, * dropParams.level, points[0], setting.damage_points_value, setting.damage_points_factor) * mDmgDiff[dropParams.difficulty]; * * float distance = BalanceFormulas.ComputeWeaponOPTIMALDISTANCE(colorInfo.factor, setting.base_optimal_distance, setting.base_optimal_distance_factor, * dropParams.level, points[1], setting.optimal_distance_points_value, setting.optimal_distance_points_factor); * * //float critChance = 0; // * float critChance = colorInfo.factor * setting.base_crit_chance * Rand.Int(1, 10) * (((float)dropParams.level / 60.0f + 1)); */ float damage = BalanceFormulas.WeaponDamage(dropParams.resource.WeaponSettings, setting.damage, dropParams.level, points[0], colorInfo) * dropParams.resource.difficulty.weapon[dropParams.difficulty]; float distance = BalanceFormulas.WeaponOptimalDistance(dropParams.resource.WeaponSettings, setting.optimalDistance, dropParams.level, points[1], colorInfo); float critChance = BalanceFormulas.WeaponCriticalChance(dropParams.resource.WeaponSettings, setting.critChance, dropParams.level, Rand.Int(1, 10), colorInfo); //if (colorInfo.isBetterThanWhite) { // critChance = colorInfo.factor * setting.base_crit_chance * Rand.Int(1, 10); //} Race weaponRace = CommonUtils.RaceForWorkshop(dropParams.workshop); WeaponDamage weaponDamage = null; switch (weaponRace) { case Race.Humans: { weaponDamage = new WeaponDamage(WeaponBaseType.Rocket, damage, 0f, 0f); } break; case Race.Borguzands: { weaponDamage = new WeaponDamage(WeaponBaseType.Acid, 0f, 0f, damage); } break; case Race.Criptizoids: { weaponDamage = new WeaponDamage(WeaponBaseType.Laser, 0f, damage, 0f); } break; default: { weaponDamage = new WeaponDamage(WeaponBaseType.Rocket, 0.3f * damage, 0.3f * damage, 0.3f * damage); } break; } return(new WeaponObject( Guid.NewGuid().ToString(), data.Id, dropParams.level, weaponDamage, distance, colorInfo.color, dropParams.damageType, critChance, (int)(byte)dropParams.workshop )); }
public ShipModule DropModule() { ModuleInfo moduleData; if (dropParams.useTemplateID) { moduleData = dropParams.moduleInfo; } else { moduleData = dropParams.resource.ModuleTemplates.RandomModule(dropParams.workshop, dropParams.slotType); } if (moduleData == null) { throw new Exception("not found module data"); } ModuleSettingData moduleSetting; if (!dropParams.resource.ModuleSettings.TeyGetWorkshopData(dropParams.workshop, out moduleSetting)) { throw new Exception("not found module settings"); } ModuleSlotSettingData slotSetting; if (!moduleSetting.TryGetSlotSetting(dropParams.slotType, out slotSetting)) { throw new Exception("not found module slot settings"); } ShipModule module = new ShipModule( dropParams.slotType, Guid.NewGuid().ToString(), dropParams.level, moduleData.Name, dropParams.workshop, moduleData.Id, dropParams.craftingMaterials, dropParams.difficulty); ColorInfo colorInfo = dropParams.resource.ColorRes.Color(ColoredObjectType.Module, dropParams.color); //SelectColor(dropParams.resource); int[] basePoints = Rand.GenerateNumbers(3, dropParams.resource.ModuleSettings.hpSpeedCargoPtMax); module.SetColor(colorInfo.color); module.SetPrefab(moduleData.Model); //module.SetHP(BalanceFormulas.ComputeHP(colorInfo.factor, moduleSetting.base_hp, moduleSetting.base_hp_factor, dropParams.level, basePoints[0], slotSetting.hp_points_value, slotSetting.hp_points_factor) * mHPDiff[dropParams.difficulty]); //module.SetSpeed(BalanceFormulas.ComputeSPEED(colorInfo.factor, moduleSetting.base_speed, moduleSetting.base_speed_factor, dropParams.level, basePoints[1], slotSetting.speed_points_value, slotSetting.speed_points_factor)); //module.SetHold(BalanceFormulas.ComputeCARGO(colorInfo.factor, moduleSetting.base_cargo, moduleSetting.base_cargo_factor, dropParams.level, basePoints[2], slotSetting.cargo_points_value)); module.SetHP(BalanceFormulas.Hp(dropParams.resource.ModuleSettings, slotSetting.hp, dropParams.level, basePoints[0], colorInfo) * dropParams.resource.difficulty.module[dropParams.difficulty]); module.SetSpeed(BalanceFormulas.Speed(dropParams.resource.ModuleSettings, slotSetting.speed, dropParams.level, basePoints[1], colorInfo)); module.SetHold((int)BalanceFormulas.Cargo(dropParams.resource.ModuleSettings, slotSetting.cargo, dropParams.level, basePoints[2], colorInfo)); module.SetCritDamage(BalanceFormulas.CritDamageBonus(dropParams.resource.ModuleSettings, slotSetting.critDamageBonus, dropParams.level, Rand.Int(1, dropParams.resource.ModuleSettings.addPointMax), colorInfo) ); foreach (AdditionalParameter prm in GenerateAdditionalParameters(colorInfo)) { SetAddionalParameter(ref module, dropParams.resource.ModuleSettings, slotSetting, prm, colorInfo); } int[] skills = dropParams.resource.skillDropping.AllowedSkills(dropParams.workshop, dropParams.slotType, dropParams.level); if (skills.Length > 0) { module.SetSkill(skills[Rand.Int(0, skills.Length - 1)]); } else { module.SetSkill(-1); } module.SetSet(dropParams.set); return(module); }