Ejemplo n.º 1
0
        private static int optimize_actor_weapon_value(InventoryOptimizePasses pass,
                                                       Game_Actor actor, Data_Weapon weapon, List <WeaponType> weapon_types)
        {
            int value = 0;

            switch (pass)
            {
            case InventoryOptimizePasses.VanillaWeapon:
                value = weapon.vanilla_value();
                break;

            case InventoryOptimizePasses.RangedWeapon:
                value = weapon.ranged_value();
                break;

            case InventoryOptimizePasses.EffectWeapon:
                value = weapon.effect_value();
                break;

            case InventoryOptimizePasses.BackupWeapon:
                value = weapon.effect_value();
                if (weapon.main_type() == weapon_types[0])
                {
                    value += 10;
                }
                break;

            case InventoryOptimizePasses.HealingStaff:
                value = weapon.healing_value();
                break;

            case InventoryOptimizePasses.StatusStaff:
                value = weapon.status_value();
                break;

            case InventoryOptimizePasses.UtilityStaff:
                value = weapon.utility_value();
                break;
            }

            // Add a small bonus if it's the actor's best weapon type
            if (weapon.main_type() == weapon_types[0])
            {
                value += 3;
            }
            // Penalize AS loss
            value -= actor.wgt_penalty(weapon);
            // Bonus for Prfs
            if (weapon.is_prf)
            {
                value += 5;
            }
            return(value);
        }