Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        public static void Speed()
        {
            float f = BalanceFormulas.ComputeSPEED(1, 0.3f, 1.008f, 1, 3, 0.5f, 1.008f);

            Console.WriteLine((f * 5));
        }
Esempio n. 4
0
        public static void Distance()
        {
            float f = BalanceFormulas.ComputeWeaponOPTIMALDISTANCE(1, 10, 1.02f, 1, 5, 10, 1.02f);

            Console.WriteLine("distance = {0}", f);
        }
Esempio n. 5
0
        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
                       ));
        }
Esempio n. 6
0
        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);
        }