Mirroar/hivemind

View on GitHub
src/settings.default.ts

Summary

Maintainability
A
50 mins
Test Coverage
/* global POWER_BANK_CAPACITY_MAX PWR_REGEN_SOURCE PWR_REGEN_MINERAL
PWR_OPERATE_CONTROLLER PWR_OPERATE_SPAWN PWR_OPERATE_TOWER PWR_OPERATE_EXTENSION
PWR_OPERATE_LAB PWR_OPERATE_OBSERVER PWR_OPERATE_TERMINAL PWR_OPERATE_FACTORY
PWR_OPERATE_STORAGE PWR_GENERATE_OPS */

/**
 * This file contains the default settings for hivemind.
 *
 * Please do not edit these settings directly, as they might be overwritten
 * should you update to a newer release of the bot.
 * Instead, you may create a file named `settings.local.js` where you may
 * override any setting from this file.
 *
 * Example `settings.local.js`:
 * @code
 * export default {
 *   visualizeNavMesh: true,
 *   enablePowerMining: Game.shard.name !== 'shard1',
 * };
 * @endcode
 *
 * You may also override any setting via memory within the game. You may use
 * the following method in the game's console:
 * @code
 * hivemind.settings.set('visualizeNavMesh', true);
 * @endcode
 */
const settings: SettingsObject = {
    // Relations:
    // If true, any player that is not declared to be your ally will be treated
    // as an enemy, rather than neutral, and actively harrassed.
    treatNonAlliesAsEnemies: false,

    // Visualization:
    // If true, lines representing connections in the bot's nav mesh will be drawn
    // on the world map.
    visualizeNavMesh: false,
    visualizeRemoteMines: true,
    visualizeCreepMovement: true,
    visualizeSpawnQueue: true,

    disableRoomVisuals: false,
    disableMapVisuals: false,

    // Remote mining:
    // The maximum distance for rooms to be mined.
    maxRemoteMineRoomDistance: 3,
    // The maximum path length from a source to a storage. Any more and the source
    // will not be mined.
    maxRemoteMinePathLength: 150,
    // Filter rooms where remote mining is allowed to take place. This needs to be
    // a function that is passed a room name and returns true for allowed rooms.
    remoteMineRoomFilter: null,

    // Power mining:
    // Enable power mining in general.
    enablePowerMining: true,
    minRclForPowerMining: 8,
    maxRangeForPowerMining: 5,
    powerMiningCheckInterval: 100,
    // Filter rooms where power mining is allowed to take place. This needs to be
    // a function that is passed a room name and returns true for allowed rooms.
    powerMineRoomFilter: null,
    powerBankMinAmount: POWER_BANK_CAPACITY_MAX / 4,
    powerMineCreepPriority: 3,
    minEnergyForPowerHarvesting: 75_000,
    minEnergyForPowerProcessing: 100_000,

    // Commodities:
    enableDepositMining: true,
    maxRangeForDepositMining: 5,
    maxDepositCooldown: 100,
    depositMineRoomFilter: null,
    minEnergyForDepositMining: 20_000,
    minRclForDepositMining: 8,

    // Power creeps:
    powerCreepUpgradeCheckInterval: 1000,
    powerPriorities: [
        PWR_OPERATE_FACTORY,
        PWR_REGEN_SOURCE,
        PWR_REGEN_MINERAL,
        PWR_OPERATE_STORAGE,
        PWR_GENERATE_OPS,
        PWR_OPERATE_CONTROLLER,
        PWR_OPERATE_SPAWN,
        PWR_OPERATE_TOWER,
        PWR_OPERATE_EXTENSION,
        PWR_OPERATE_LAB,
        PWR_OPERATE_OBSERVER,
        PWR_OPERATE_TERMINAL,
    ],
    automaticallyUpgradePowerCreeps: true,
    operatorEachRoom: false,
    prioritizeFactoryLevels: false,
    operatorNames: ['Jekyll', 'Hyde', 'Banner', 'Robotnik', 'Strange', 'Venkman', 'Dolittle', 'Zhivago', 'Crane', 'McCoy', 'VanHelsing', 'Frankenstein', 'Scully', 'Connors', 'Lecter'],

    // Scouting:
    // Interval for running room prioritizing process.
    scoutProcessInterval: 25,
    // Maximum amount of CPU to spend on prioritizing rooms when the process runs.
    maxRoomPrioritizationCpuPerTick: 50,
    maxScoutsPerRoom: 1,
    scoutSpawnPriority: 1,
    roomScoutInterval: 5000,
    highwayScoutInterval: 1000,
    roomIntelCacheDuration: 500,

    // Expansion:
    // Number of ticks we may cache expansion scores.
    expansionScoreCacheDuration: 20_000,
    maxOwnedRooms: null,
    // Maximum amount of CPU that may be spent each tick on finding a suitable
    // expansion target.
    maxExpansionCpuPerTick: 30,

    // Expansion scoring:
    expansionScoreBonusHighwayExit: 0,
    expansionMinRoomDistance: 0,
    expansionMaxRoomDistance: 3,

    // Room planning:
    minCutRampartDistance: 4,
    visualizeRoomPlan: false,

    // Room management:
    // Number of hits for walls / ramparts needed for more expensive structures
    // to be built.
    minWallIntegrity: 500_000,
    maxWallHealth: {
        0: 1,
        1: 5000,
        2: 10_000,
        3: 20_000,
        4: 100_000,
        5: 500_000,
        6: 2_000_000,
        7: 3_000_000,
        8: 20_000_000,
    },
    // Toggles whether certain specialized structures should be built.
    constructLabs: true,
    constructNukers: true,
    constructPowerSpawns: true,
    constructObservers: true,
    constructFactories: true,
    constructRoadsUnderRamparts: true,
    // Manages energy spending in high level rooms.
    minEnergyToUpgradeAtRCL8: 50_000,
    minEnergyForNuker: 50_000,
    // The ratio of leftover energy to put into power processing vs. GPL.
    // Must be between 0 and 1.
    powerProcessingEnergyRatio: 0.5,
    // Notify about resources produces in factories via E-Mail.
    notifyFactoryProduction: false,

    // List of user names that may move through our ramparts.
    rampartWhitelistedUsers: [],
    maxVisitorsPerUser: 0,
    dismantleUnwantedRamparts: true,

    // Saves statistics about the time it takes to reach certain milestones.
    // Available in `Memory.roomStats`.
    recordRoomStats: true,

    // Trade:
    enableTradeManagement: true,
    allowBuyingEnergy: false,
    allowBuyingPixels: false,
    allowSellingPower: true,
    allowSellingOps: true,

    // Script hooks:
    onTick: null,
};

export default settings;