@bf6mods/sdk 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +24227 -12694
- package/dist/index.js +91 -52
- package/dist/index.js.map +1 -1
- package/dist/std/index.d.ts +4 -4
- package/dist/std/index.js +12 -11
- package/dist/std/index.js.map +1 -1
- package/dist/std/{chunk-Bp6m_JJh.js → rolldown-runtime-D7D4PA-g.js} +4 -4
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["playerConditions: Conditions[]","teamConditions: Conditions[]","capturePointConditions: Conditions[]","mcomConditions: Conditions[]","vehicleConditions: Conditions[]","globalConditions: Conditions","widget: mod.UIWidget | undefined","msg","target"],"sources":["../src/config/mutators/index.ts","../src/config/index.ts","../src/modlib/index.ts"],"sourcesContent":["import type { PerTeam } from \"../index.ts\";\n\n/**\n * Determines the Man-Down behavior when a soldier is downed.\n */\nexport enum ManDownExperienceType {\n\tCrawl = 0,\n\tDowned = 1,\n\tInstantDeath = 2,\n}\n\n/**\n * Controls which type of AI to spawn. PvP AI will automatically spawn and can be replaced by human players. PvE AI is a fixed number that cannot be replaced, for Solo or Co-op experiences.\n */\nexport enum AiSpawnType {\n\tNoBots = 0,\n\tBackfill = 2,\n\tStatic = 1,\n}\n\n/**\n * Controls the rules for Squad Spawning, for squad members and squad leaders.\n */\nexport enum SquadSpawnType {\n\tAll = 0,\n\tSquadmatesOnLeader_LeaderNone = 1,\n\tSquadmatesOnLeader_LeaderAll = 2,\n\tDisabled = 2,\n\t// If you know what this is, please create an issue\n\tUndocumented = 3,\n}\n\n/**\n * Controls what type of scoreboard layout to use.\n */\nexport enum ScoreboardType {\n\tNotSet = 0,\n\tDefaultFAA = 1,\n\tOff = 2,\n\tCustomTwoTeams = 3,\n\tCustomFFA = 4,\n}\n\n/**\n * Determines the behavior of the Ping command.\n */\nexport enum PingBehavior {\n\tPingTargets = 0,\n\tDisabled = 1,\n}\n\nexport enum ModBuilderGameMode {\n\tCustom = 2,\n}\n\n/**\n * Sets the faction for each team.\n */\nexport enum FactionID {\n\tPax = -1865993703,\n\tMapDefault = 0,\n\tNATO = 607944106,\n}\n\nexport type Mutators = {\n\t/**\n\t * AI PRONE\n\t * Controls whether AI soldiers can go prone.\n\t *\n\t * @id 2294859495\n\t */\n\tAI_ProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 3918918809\n\t * @constraints Range: [0 to 1]\n\t * @default 1\n\t */\n\tAgingModifierForCommittedOrder: number;\n\n\t/**\n\t * MAXIMUM HUMAN PLAYERS\n\t * Max Player Count Per Team\n\t *\n\t * @id 2976738751\n\t * @constraints Range: [0 to 128]\n\t * @default 0\n\t */\n\tMaxPlayerCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Static AI Count Per Team\n\t * Sets the maximum number of static AI, this setting is not used for Backfill AI.\n\t *\n\t * @id 1544673979\n\t * @constraints Range: [0 to 64]\n\t * @default 0\n\t */\n\tAiMaxCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI TYPE\n\t * Controls which type of AI to spawn. PvP AI will automatically spawn and can be replaced by human players. PvE AI is a fixed number that cannot be replaced, for Solo or Co-op experiences.\n\t *\n\t * @id 1666992788\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @default 0\n\t */\n\tAiSpawnType: AiSpawnType;\n\n\t/**\n\t * FRIENDLY FIRE\n\t * Controls whether damage will be applied to allies.\n\t *\n\t * @id 836139493\n\t */\n\tFriendlyFireAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * FALL DAMAGE MULTIPLIER\n\t * Multiplies damage taken from falling. Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t *\n\t * @id 2759418217\n\t * @constraints Range: [0 to 2]\n\t * @default 1\n\t */\n\tFallDamageHeightMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SQUAD SPAWN TYPE\n\t * Controls the rules for Squad Spawning, for squad members and squad leaders.\n\t *\n\t * @id 1476270551\n\t * @constraints Allowed Values: 0, 1, 2, 3\n\t * @default 0\n\t */\n\tSquadSpawnMode_PerTeam: PerTeam<SquadSpawnType>;\n\n\t/**\n\t * MAN-DOWN TYPE\n\t * Determines the Man-Down behavior when a soldier is downed.\n\t *\n\t * @id 1722734603\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @default 1\n\t */\n\tManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * STRAFE WHILE SPRINTING\n\t * Controls whether soldiers are allowed to strafe laterally while sprinting.\n\t *\n\t * @id 2382243254\n\t */\n\tSprintStrafeAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * FACTION\n\t * Sets the faction for each team.\n\t *\n\t * @id 548273204\n\t * @constraints Allowed Values: -1865993703, 0, 607944106\n\t * @default 0\n\t */\n\tFactionID_PerTeam: PerTeam<FactionID>;\n\n\t/**\n\t * Sets the numbers of teams that will be in the match.\n\t *\n\t * @id 4262527312\n\t * @constraints Range: [1 to 129]\n\t * @default 3\n\t */\n\tMaxTeamCount: number;\n\n\t/**\n\t * PASSENGER SEATS\n\t * Controls whether vehicles take passengers.\n\t *\n\t * @id 561253693\n\t */\n\tVehicle_AllowPassengers: boolean;\n\n\t/**\n\t * AI PASSENGER SEATS\n\t * Controls whether vehicles take AI passengers.\n\t *\n\t * @id 1557246182\n\t */\n\tAI_Vehicle_AllowAiInPassengerSeats: boolean;\n\n\t/**\n\t * ALLY IDENTIFICATION\n\t * Controls whether allies are visibly marked as allies when viewed in-game.\n\t *\n\t * @id 1308565896\n\t */\n\tFriendlyIdentificationAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SQUAD REVIVE\n\t * Controls whether soldiers in a squad can revive other players in the squad, regardless of class or gadget.\n\t *\n\t * @id 2270279538\n\t */\n\tSquadReviveAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * REINFORCEMENT MULTIPLIER\n\t * Multiplies the reinforcement count required to end the game. Values less than 1.0 will result in fewer reinforcements and shorter games, while values greater than 1.0 will increase the reinforcement count and extend the game time.\n\t *\n\t * @id 809598703\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tScoreMultiplier: number;\n\n\t/**\n\t * SECTOR TIME\n\t * Sets the maximum time (in minutes) for each sector.\n\t *\n\t * @id 1663663112\n\t * @constraints Range: [10 to 60]\n\t * @default 15\n\t */\n\tR_iSectorTime: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round\n\t *\n\t * @id 3283626574\n\t * @constraints Range: [30 to 60]\n\t * @default 45\n\t */\n\tCQ_iModeTime: number;\n\n\t/**\n\t * AIM ASSIST ZOOM SNAP\n\t * Controls whether Snap-to-target is used for Aim Assisted players. When this is set to OFF, the crosshair will not snap to a nearby target when entering ADS.\n\t *\n\t * @id 1152845640\n\t */\n\tAimAssistSnapZoomEnabled: boolean;\n\n\t/**\n\t * PRONE\n\t * Controls whether soldiers can go prone.\n\t *\n\t * @id 2434061171\n\t */\n\tProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * VEHICLE HEALTH REGENERATION\n\t * Controls whether vehicles regenerate health over time after not taking damage.\n\t *\n\t * @id 3575692072\n\t */\n\tVehicleHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * INFINITE WEAPON MAGAZINES\n\t * Control if primary and secondary weapons have infinite magazines.\n\t *\n\t * @id 794544630\n\t */\n\tInfiniteWeaponMagazines_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SPRINT\n\t * Controls whether soldiers are allowed to sprint.\n\t *\n\t * @id 902078290\n\t */\n\tSprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SOLDIER HEALTH REGENERATION\n\t * Controls whether soldiers regenerate health over time after not taking damage.\n\t *\n\t * @id 233704148\n\t */\n\tSoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * STATIONARY WEAPON EMPLACEMENTS\n\t * Controls whether Stationary Weapon Emplacements should appear in the map (where applicable).\n\t *\n\t * @id 1526538121\n\t */\n\tStationaryEmplacementsAllowed: boolean;\n\n\t/**\n\t * SLIDE\n\t * Controls whether soldiers can slide.\n\t *\n\t * @id 3767405896\n\t */\n\tSlideAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * COMPASS\n\t * Controls whether the Compass is displayed in the HUD.\n\t *\n\t * @id 2005480485\n\t */\n\tCompassAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * MINIMAP\n\t * Controls whether the Minimap is displayed in the HUD.\n\t *\n\t * @id 588019110\n\t */\n\tMinimapAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * PING BEHAVIOR\n\t * Determines the behavior of the Ping command.\n\t *\n\t * @id 1017389623\n\t * @constraints Allowed Values: 0, 2\n\t * @default 0\n\t */\n\tPingBehavior_PerTeam: PerTeam<PingBehavior>;\n\n\t/**\n\t * HUD\n\t * Controls whether players have a Heads-Up Display. Does not disable the Full Map.\n\t *\n\t * @id 3287878479\n\t */\n\tHUDAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SOLDIER MAXIMUM HEALTH MULTIPLIER\n\t * Multiplies soldier maximum health. Values less than 1.0 reduce health, while values greater than 1.0 increase it.\n\t *\n\t * @id 1899412422\n\t * @constraints Range: [0.10000000149011612 to 5]\n\t * @default 1\n\t */\n\tSoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SOLDIER REDEPLOY DELAY MULTIPLIER\n\t * Multiplies the time it takes for soldiers to redeploy. Values less than 1.0 allow soldiers to redeploy more quickly, while values greater than 1.0 force soldiers to wait longer before redeploying.\n\t *\n\t * @id 2390282071\n\t * @constraints Range: [0 to 18]\n\t * @default 1\n\t */\n\tSoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * PLAYER DAMAGE MULTIPLIER\n\t * Multiplies damage from all sources. Values less than 1.0 reduce damage from all sources, while values greater than 1.0 increase damage.\n\t *\n\t * @id 1671953404\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE MAXIMUM HEALTH MULTIPLIER\n\t * Multiplies the maximum health of all vehicles. Values less than 1.0 reduces the health of all vehicles, while values greater than 1.0 increases it.\n\t *\n\t * @id 3752128436\n\t * @constraints Range: [0.10000000149011612 to 3.5]\n\t * @default 1\n\t */\n\tVehicleMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE SPAWN DELAY MULTIPLIER\n\t * Multiplies the default timer that spawns or respawns vehicles. Values below 1.0 make spawns faster, values above 1.0 delay spawns for longer.\n\t *\n\t * @id 2145356810\n\t * @constraints Range: [0.20000000298023224 to 5]\n\t * @default 1\n\t */\n\tPortal_KitsLimit_VehicleSpawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * PROJECTILE SPEED MULTIPLIER\n\t * Multiplies the speed of all projectiles. Values smaller than 1.0 will slow projectiles, values larger than 1.0 will increase the speed.\n\t *\n\t * @id 900970640\n\t * @constraints Range: [0.5 to 5]\n\t * @default 1\n\t */\n\tProjectileSpeedMultiplier: number;\n\n\t/**\n\t * BODY SHOT DAMAGE MULTIPLIER\n\t * Multiplies the damage dealt when successfully landing a body shot. Note that this modifier combines with other damage modifiers.\n\t *\n\t * @id 31136365\n\t * @constraints Range: [0 to 4]\n\t * @default 1\n\t */\n\tBodyshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * HEADSHOT DAMAGE MULTIPLIER\n\t * Multiplies the damage dealt when successfully landing a headshot. Note that this modifier combines with other damage modifiers.\n\t *\n\t * @id 2101284162\n\t * @constraints Range: [0 to 4]\n\t * @default 1\n\t */\n\tHeadshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE DAMAGE MULTIPLIER\n\t * Multiplies the damage output of vehicles. Note that this modifier combines with other damage modifiers.\n\t *\n\t * @id 2009820847\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tVehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE HEALTH REGENERATION RATE\n\t * Controls the timing for vehicle health regeneration. Values less than 1.0 slow the time it takes to regenerate to full health, while values greater than 1.0 regenerate health more quickly for all vehicles.\n\t *\n\t * @id 896388464\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tVehicleRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SOLDIER HEALTH REGENERATION RATE\n\t * Controls the timing for soldier health regeneration. Values less than 1.0 slow the time it takes to regenerate to full health, while values greater than 1.0 regenerate health more quickly.\n\t *\n\t * @id 2317849662\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tSoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SCOREBOARD TYPE\n\t * Controls what type of scoreboard layout to use.\n\t *\n\t * @id 2749696498\n\t * @constraints Allowed Values: 0, 1, 2, 3, 4\n\t * @default 1\n\t */\n\tScoreboardType: ScoreboardType;\n\n\t/**\n\t * AI MAN-DOWN TYPE\n\t * Determines the Man-Down behavior when an AI soldier is downed.\n\t *\n\t * @id 4119966672\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @default 1\n\t */\n\tAI_ManDownExperienceType_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI SOLDIER MOVEMENT SPEED\n\t * Controls the default speed of AI Soldier movement, which can then be multiplied by other movement types. Values less than 1.0 slow down AI soldier movement, while values greater than 1.0 increase movement speed.\n\t *\n\t * @id 918657157\n\t * @constraints Range: [0.800000011920929 to 1.2000000476837158]\n\t * @default 1\n\t */\n\tAI_SoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI SPRINT\n\t * Controls whether AI soldiers are allowed to sprint.\n\t *\n\t * @id 186024129\n\t */\n\tAI_SprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI EXITING VEHICLES\n\t * Controls whether AI soldiers inside a vehicle can exit the vehicle. When this is set to OFF, AI soldiers in a vehicle must remain in the vehicle.\n\t *\n\t * @id 3239967550\n\t */\n\tAI_ExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * TICKETS PER-KILL MULTIPLIER\n\t * Control how many tickets are removed on a kill.\n\t *\n\t * @id 105207428\n\t * @constraints Range: [0 to 10]\n\t * @default 1\n\t */\n\tScorePerKillMultiplier: number;\n\n\t/**\n\t * INFINITE AMMO\n\t * Controls whether soldier weapons have infinite ammo and never need to reload.\n\t *\n\t * @id 2114774834\n\t */\n\tInfiniteWeaponAmmo_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI SOLDIER HEALTH REGENERATION\n\t * Controls whether AI soldiers regenerate health over time after not taking damage.\n\t *\n\t * @id 734729469\n\t */\n\tAI_SoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI SOLDIER MAXIMUM HEALTH MULTIPLIER\n\t * Multiplies AI soldier maximum health. Values less than 1.0 reduce AI health, while values greater than 1.0 increase it.\n\t *\n\t * @id 4092794051\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tAI_SoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI HEALTH REGENERATION RATE\n\t * Controls the timing for AI soldier health regeneration. Values less than 1.0 slow the time it takes to regenerate AI soldiers to full health, while values greater than 1.0 regenerate health more quickly.\n\t *\n\t * @id 987645454\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tAI_SoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI DAMAGE MULTIPLIER\n\t * Multiplies AI damage output from all sources.\n\t *\n\t * @id 3626262758\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tAI_DamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AIM ASSIST\n\t * Controls whether Aim Assist is allowed for players using the Aim Assist option. When this is set to OFF, the crosshair will not adjust its speed when tracking over an enemy player.\n\t *\n\t * @id 2699039760\n\t */\n\tAimAssistSlowdownEnabled: boolean;\n\n\t/**\n\t * SOLDIER MOVE SPEED MULTIPLIER\n\t * Controls the default speed of Soldier movement, which can then be multiplied by other movement types. Values less than 1.0 slow down soldier movement, while values greater than 1.0 increase movement speed.\n\t *\n\t * @id 1955023128\n\t * @constraints Range: [0.800000011920929 to 1.2000000476837158]\n\t * @default 1\n\t */\n\tSoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * CROSSHAIR ALLOWED\n\t * Controls whether crosshairs are disabled for players.\n\t *\n\t * @id 289584529\n\t */\n\tCrosshairsAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * EXITING VEHICLES\n\t * Controls whether players inside a vehicle can exit the vehicle. When this is set to OFF, players in a vehicle must remain in the vehicle.\n\t *\n\t * @id 4072888461\n\t */\n\tExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * ON-FOOT DEPLOYMENT\n\t * Controls whether players are allowed to deploy on foot as a soldier.\n\t *\n\t * @id 2849852964\n\t */\n\tOnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI VEHICLE DAMAGE MULTIPLIER\n\t * Multiplies AI damage output from vehicles.\n\t *\n\t * @id 1871419702\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tAI_VehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI ON-FOOT DEPLOYMENT\n\t * Controls whether AI are allowed to deploy on foot as soldiers.\n\t *\n\t * @id 1807768999\n\t */\n\tAI_OnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI SQUAD SPAWN\n\t * Controls the rules for AI Squad Spawning, for squad members and squad leaders.\n\t *\n\t * @id 310492599\n\t * @constraints Allowed Values: 0, 1, 2, 3\n\t * @default 0\n\t */\n\tAI_SquadSpawnMode_PerTeam: PerTeam<SquadSpawnType>;\n\n\t/**\n\t * AI REDEPLOY DELAY MULTIPLIER\n\t * Multiplies the time it takes for AI soldiers to redeploy. Values less than 1.0 allow AI soldiers to redeploy more quickly, while values greater than 1.0 force AI soldiers to wait longer before redeploying.\n\t *\n\t * @id 830816070\n\t * @constraints Range: [0 to 18]\n\t * @default 1\n\t */\n\tAI_SoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * REFLECT FRIENDLY FIRE DAMAGE\n\t * If the FRIENDLY FIRE modifier is enabled all damage to allies will be reflected back to a player after they kill two allies. Resets after 90 seconds.\n\t *\n\t * @id 3050333889\n\t */\n\tFriendlyFireDamageReflectionEnabled: boolean;\n\n\t/**\n\t * @id 2047132398\n\t * @constraints Allowed Values: 2\n\t * @default 2\n\t */\n\tModBuilder_GameMode: ModBuilderGameMode;\n\n\t/**\n\t * @id 3985279000\n\t * @constraints Range: [-1000 to 1000]\n\t * @default 1\n\t */\n\tAimAssistSnapCapsuleRadiusMultiplier: number;\n\n\t/**\n\t * @id 482929310\n\t * @constraints Range: [1 to 50]\n\t * @default 2\n\t */\n\tFriendlyFireDamageReflectionMaxTeamKills: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round.\n\t *\n\t * @id 1796950356\n\t * @constraints Range: [6 to 60]\n\t * @default 20\n\t */\n\tfPortalExperienceGameTime: number;\n\n\t/**\n\t * Squad Size\n\t * Sets the maximum number of members per squad.\n\t *\n\t * @id 1512026338\n\t * @constraints Range: [1 to 4]\n\t * @default 4\n\t */\n\tSquadSize_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SECTOR TIME\n\t * Sets the maximum time (in minutes) for the sector.\n\t *\n\t * @id 3923238025\n\t * @constraints Range: [10 to 60]\n\t * @default 20\n\t */\n\tBT_iSectorTime: number;\n\n\t/**\n\t * DISABLE THIRD PERSON VIEW\n\t * Disables the third person view on vehicles.\n\t *\n\t * @id 2791486999\n\t */\n\tDisableVehicle3p: boolean;\n\n\t/**\n\t * RELOAD WHOLE MAGAZINES\n\t * Controls whether reloading a magazine causes the soldier or vehicle to lose any remaining ammo within the currently loaded magazine.\n\t *\n\t * @id 4131112494\n\t */\n\tReloadWholeWeaponMagazines: boolean;\n\n\t/**\n\t * CLASS LOCK WEAPONS\n\t * If enabled, all soldier kits will use their class locked weapon loadout variants instead of the normal open weapon pool loadouts.\n\t *\n\t * @id 3428887440\n\t */\n\tEnableClassLockedWeaponLoadouts: boolean;\n\n\t/**\n\t * RESTRICT GAME FEEDBACK\n\t * Controls the degree of feedback given to the player via audio or visual cues.\n\t *\n\t * @id 1979857396\n\t */\n\tbPortalRestrictedGameFeedback: boolean;\n\n\t/**\n\t * HARDCORE MODE\n\t * Enables hardcore mode. Hardcore tweaks the experience into a less forgiving and somewhat more \"realistic\" feel.\n\t *\n\t * @id 3696653317\n\t */\n\tIsHardcore: boolean;\n\n\t/**\n\t * @id 1461965916\n\t * @constraints Range: [0 to 1]\n\t * @default 0.5\n\t */\n\tFriendlyFireMinVelocityForRoadKill_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 2952797941\n\t */\n\tFriendlyFireDisableVehicleCollision_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 2664535737\n\t * @constraints Range: [1 to 600]\n\t * @default 90\n\t */\n\tFriendlyFireDamageReflectionResetTime: number;\n\n\t/**\n\t * @id 4064956639\n\t */\n\tFriendlyFireDisableVehicleTriggerFriendlyMines: boolean;\n\n\t/**\n\t * @id 1178389245\n\t */\n\tFriendlyFireDisableSoldierTriggerFriendlyMines: boolean;\n\n\t/**\n\t * @id 3570813653\n\t * @constraints Range: [0.10000000149011612 to 5]\n\t * @default 1\n\t */\n\tVehicleWeaponAutoReplenishDelayMultiplier: number;\n\n\t/**\n\t * @id 3585332942\n\t */\n\tHealthBarAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 1173798620\n\t */\n\tHideDamageNumbers_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 1519216395\n\t */\n\tHitIndicatorAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 3102875672\n\t * @constraints Range: [0 to 0]\n\t * @default 2\n\t */\n\tHUDInventoryDisplayTime_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 2589053639\n\t */\n\tHUDInventoryAutoHide_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 601034245\n\t */\n\tUseReducedSquadWorldIcon: boolean;\n\n\t/**\n\t * @id 1400955202\n\t */\n\tUseReducedFriendlyWorldIcon: boolean;\n\n\t/**\n\t * @id 2039415736\n\t * @constraints Range: [1 to 5000]\n\t * @default 2000\n\t */\n\tFriendlyInworldIconsMaxDistance: number;\n\n\t/**\n\t * @id 2629637312\n\t */\n\tCapturePointScaleAllowed: boolean;\n\n\t/**\n\t * @id 3795763303\n\t */\n\tKillFeedAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 4285291858\n\t */\n\tSquadListAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 4192837966\n\t */\n\tbRestrictCommunicationVO: boolean;\n\n\t/**\n\t * @id 1685003453\n\t */\n\tbRestrictCommunicationUI: boolean;\n\n\t/**\n\t * SECTOR REINFORCEMENT REWARD MULTIPLIER\n\t * Multiplies the reinforcement the attacking team is rewarded when taking a sector. Values less than 1.0 will result in fewer reinforcements, while values greater than 1.0 will increase the reinforcement count.\n\t *\n\t * @id 611091070\n\t * @constraints Range: [0 to 10]\n\t * @default 1\n\t */\n\tBT_fSectorRewardMultiplier: number;\n\n\t/**\n\t * FLAG CAPTURE TIME MULTIPLIER\n\t * Flag capture time multiplier\n\t *\n\t * @id 1246107735\n\t * @constraints Range: [1 to 10]\n\t * @default 1\n\t */\n\tfPortal_CaptureTimeMultiplier: number;\n\n\t/**\n\t * Flag Neutralization Time\n\t * Sets the time it takes to neutralize a flag in seconds\n\t *\n\t * @id 3826668350\n\t * @constraints Range: [1 to 10]\n\t * @default 1\n\t */\n\tfPortal_NeutralisationTimeMultiplier: number;\n\n\t/**\n\t * SPOTTING\n\t * Controls whether spotting is allowed for players.\n\t *\n\t * @id 2217845162\n\t */\n\tSpottingAllowed: boolean;\n\n\t/**\n\t * SHARED AMMO\n\t * Controls whether the soldier uses the default inventory or the Battle Royale inventory.\n\t *\n\t * @id 3493038109\n\t */\n\tPortal_UseSharedAmmo: boolean;\n\n\t/**\n\t * Second Chance Threshold\n\t * Controls when the second chance is disabled, the value is based on the percentage of squads alive, if set at 0.5 it means its disabled after half the squads are dead.\n\t *\n\t * @id 1823350640\n\t * @constraints Range: [0 to 1]\n\t * @default 0.75\n\t */\n\tBR_SecondChanceDeactivateThreshold: number;\n\n\t/**\n\t * Zone Shrink Time\n\t * Controls the time in seconds it takes for the Ring of Fire to shrink from one zone size to the next.\n\t *\n\t * @id 3390523150\n\t * @constraints Range: [240 to 1000]\n\t * @default 240\n\t */\n\tfPortal_BRShrinkTime: number;\n\n\t/**\n\t * Zone Damage\n\t * Controls the damage done by being outside the Ring of Fire.\n\t *\n\t * @id 1074769675\n\t * @constraints Range: [500 to 1000]\n\t * @default 500\n\t */\n\tPortal_BRZoneDamage: number;\n\n\t/**\n\t * ZONE SIZE 1\n\t * Controls the size of the zone at the first stage.\n\t *\n\t * @id 1726101892\n\t * @constraints Range: [1650 to 2000]\n\t * @default 1650\n\t */\n\tZoneSize_00: number;\n\n\t/**\n\t * ZONE SIZE 2\n\t * Controls the size of the zone at the second stage.\n\t *\n\t * @id 4126637072\n\t * @constraints Range: [1200 to 2000]\n\t * @default 1200\n\t */\n\tZoneSize_01: number;\n\n\t/**\n\t * ZONE SIZE 3\n\t * Controls the size of the zone at the third stage.\n\t *\n\t * @id 2050945192\n\t * @constraints Range: [800 to 2000]\n\t * @default 800\n\t */\n\tZoneSize_02: number;\n\n\t/**\n\t * ZONE SIZE 4\n\t * Controls the size of the zone at the fourth stage.\n\t *\n\t * @id 494621827\n\t * @constraints Range: [400 to 2000]\n\t * @default 400\n\t */\n\tZoneSize_03: number;\n\n\t/**\n\t * ZONE SIZE 5\n\t * Controls the size of the zone at the fifth stage.\n\t *\n\t * @id 3179700427\n\t * @constraints Range: [175 to 2000]\n\t * @default 175\n\t */\n\tZoneSize_04: number;\n\n\t/**\n\t * ZONE SIZE 6\n\t * Controls the size of the zone at the sixth stage.\n\t *\n\t * @id 2743600001\n\t * @constraints Range: [60 to 2000]\n\t * @default 60\n\t */\n\tZoneSize_05: number;\n\n\t/**\n\t * ZONE SIZE 7\n\t * Controls the size of the zone at the seventh stage.\n\t *\n\t * @id 3274338396\n\t * @constraints Range: [0 to 2000]\n\t * @default 0\n\t */\n\tZoneSize_06: number;\n\n\t/**\n\t * SECOND CHANCE DELAY\n\t * Controls how much delay the second chance has in seconds.\n\t *\n\t * @id 2064257196\n\t * @constraints Range: [29 to 60]\n\t * @default 29\n\t */\n\tBR_SecondChanceDelayTimer: number;\n\n\t/**\n\t * Disable Missions\n\t * Controls if missions are enabled or disabled.\n\t *\n\t * @id 1685318755\n\t */\n\tBR_Missions_DisableMissions: boolean;\n\n\t/**\n\t * Disable Respawn Towers\n\t * Controls if respawn towers are enabled or disabled.\n\t *\n\t * @id 4045121817\n\t */\n\tBR_DisableRespawnTower: boolean;\n\n\t/**\n\t * AI SQUAD REVIVE\n\t * Controls whether AI soldiers in a squad can revive other players in the squad, regardless of class or gadget.\n\t *\n\t * @id 3171571450\n\t */\n\tAI_SquadReviveAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 722396075\n\t * @constraints Range: [-1 to 90]\n\t * @default -1\n\t */\n\tSpawnBalancing_GamemodeStartTimer: number;\n\n\t/**\n\t * @id 3464890382\n\t */\n\tPortal_UsePortalRingOfFireMutators: boolean;\n\n\t/**\n\t * Players Required to Start Lobby Timer\n\t * The minimum number of players required to start the lobby countdown timer\n\t *\n\t * @id 212789314\n\t * @constraints Range: [50 to 100]\n\t * @default 96\n\t */\n\tBR_LobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 1896590494\n\t * @constraints Range: [100 to 100]\n\t * @default 100\n\t */\n\tBR_LobbyPlayerCountToSpeedUpTimer: number;\n\n\t/**\n\t * @id 3192277320\n\t * @constraints Range: [0.20000000298023224 to 500]\n\t * @default 1\n\t */\n\tVehicleSpawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 4132993187\n\t * @constraints Range: [0 to 1]\n\t * @default 1\n\t */\n\tSpawnBalancing_GamemodePlayerCountRatio: number;\n\n\t/**\n\t * @id 510030070\n\t * @constraints Range: [0 to 2]\n\t * @default 0\n\t */\n\tCrosshairType_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 3902436054\n\t */\n\tDisableKillCamUI: boolean;\n\n\t/**\n\t * CALL-IN VEHICLE COOLDOWN MULTIPLIER\n\t * Multiplies the default cooldown for call-in vehicles. Values below 1.0 make cooldowns faster, values above 1.0 make cooldowns longer.\n\t *\n\t * @id 745298605\n\t * @constraints Range: [0 to 100]\n\t * @default 1\n\t */\n\tVehicleCallInCoolDownMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 449841308\n\t * @constraints Range: [0 to 0]\n\t * @default 1\n\t */\n\tFriendlyFireExplosiveDamageMultiplier: number;\n\n\t/**\n\t * @id 2978413856\n\t * @constraints Range: [20 to 48]\n\t * @default 20\n\t */\n\tCQ_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 1962565\n\t * @constraints Range: [20 to 48]\n\t * @default 20\n\t */\n\tBT_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 1463281593\n\t * @constraints Range: [20 to 48]\n\t * @default 20\n\t */\n\tRush_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 4222134728\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_Mica_MaxBackfillAICount: number;\n\n\t/**\n\t * Soldier Redeploy Delay\n\t * Sets the time it takes for soldiers to redeploy.\n\t *\n\t * @id 3207432275\n\t * @constraints Range: [8 to 30]\n\t * @default 16\n\t */\n\tPortal_GauntletBaseRedeployDelay: number;\n\n\t/**\n\t * Mission Time\n\t * Sets the maximum time for all the mission.\n\t *\n\t * @id 739148162\n\t * @constraints Range: [300 to 420]\n\t * @default 360\n\t */\n\tPortal_GauntletGlobalMissionTimer: number;\n\n\t/**\n\t * Standard Armor\n\t * Controls if Standard Armor is enabled or disabled.\n\t *\n\t * @id 4233667812\n\t */\n\tPortal_GauntletIsSoftArmorEnabled: boolean;\n\n\t/**\n\t * Qualification Threshold\n\t * Controls the amount of team disqualified at the end of each round. (Every teams tied for last will all be eliminated).\n\t *\n\t * @id 4202445796\n\t * @constraints Range: [1 to 2]\n\t * @default 2\n\t */\n\tPortal_GauntletNumberOfDisqualifiedTeamsPerRound: number;\n\n\t/**\n\t * @id 2328511542\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Beacons_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 2470925258\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Contract_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 547841244\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Circuit_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3916424605\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_CTF_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 2071192473\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_DataExtraction_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 2547134283\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Mission_DefaultBaseRedeployDelay: number;\n\n\t/**\n\t * @id 86448352\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Relay_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 1067942808\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Rodeo_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 828448612\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Standoff_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3570063746\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Vendetta_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3554522018\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Wreckage_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3742609123\n\t */\n\tNewServerFetchQuestDefinitionsAtEor: boolean;\n\n\t/**\n\t * @id 1639766582\n\t */\n\tPortal_IsPortalVerifiedMode: boolean;\n\n\t/**\n\t * @id 2699056885\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Conquest: number;\n\n\t/**\n\t * @id 1478766565\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Breakthrough: number;\n\n\t/**\n\t * @id 475436411\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Rush: number;\n\n\t/**\n\t * Winter Mode\n\t * Enables Freeze for the Empire State map.\n\t *\n\t * @id 3245498713\n\t */\n\tWinterMode: boolean;\n\n\t/**\n\t * Winter Atmosphere\n\t * Enables the screen effect, map visuals and audio for the Empire State map.\n\t *\n\t * @id 3252054121\n\t */\n\tWinterShader: boolean;\n\n\t/**\n\t * @id 3685143182\n\t * @constraints Range: [6 to 100]\n\t * @default 28\n\t */\n\tGauntlet_LobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 2898594069\n\t * @constraints Range: [6 to 100]\n\t * @default 32\n\t */\n\tGauntlet_LobbyPlayerCountToSpeedUpTimer: number;\n};\n","import type { AssetRestrictions } from \"./asset-restrictions/index.ts\";\nimport type { Mutators } from \"./mutators/index.ts\";\n\nexport * from \"./asset-restrictions/index.ts\";\nexport * from \"./mutators/index.ts\";\n\n/**\n * Represents a value that can either apply globally or per team.\n * - Global: a single scalar (e.g., `true`, `5`, `1.2`)\n * - Per team: an array of `[teamIndex, value]` tuples\n */\nexport type PerTeam<T> = T | [number, T][];\n\nexport enum AttachmentType {\n\tSpatialData = 1,\n\tTypeScript = 2,\n\tStrings = 4,\n}\n\n/**\n * Represents a map resource within the game or editor.\n */\nexport type MapType = {\n\t/**\n\t * Unique identifier for the map.\n\t */\n\tid: string;\n\n\t/**\n\t * Spatial attachment data containing map metadata, versioning,\n\t * and processing information.\n\t */\n\tspatialAttachment: {\n\t\t/**\n\t\t * Unique identifier for the spatial attachment.\n\t\t */\n\t\tid: string;\n\n\t\t/**\n\t\t * Original filename of the attachment.\n\t\t */\n\t\tfilename: string;\n\n\t\t/**\n\t\t * Additional metadata describing the attachment\n\t\t */\n\t\tmetadata: string;\n\n\t\t/**\n\t\t * Version string representing the attachment's iteration or schema version.\n\t\t */\n\t\tversion: string;\n\n\t\t/**\n\t\t * Whether the attachment is processable\n\t\t */\n\t\tisProcessable: boolean;\n\n\t\t/**\n\t\t * Numeric code describing the attachment's current processing status.\n\t\t */\n\t\tprocessingStatus: number;\n\n\t\t/**\n\t\t * Raw data associated with the attachment.\n\t\t * May include both original and compiled forms.\n\t\t */\n\t\tattachmentData: {\n\t\t\t/**\n\t\t\t * This is encoded in base64\n\t\t\t */\n\t\t\toriginal: string;\n\n\t\t\t/**\n\t\t\t * This is encoded in base64\n\t\t\t */\n\t\t\tcompiled: string;\n\t\t};\n\n\t\t/**\n\t\t * Type of attachment\n\t\t */\n\t\tattachmentType: AttachmentType;\n\n\t\t/**\n\t\t * Any errors encountered during processing or validation.\n\t\t */\n\t\terrors: unknown[];\n\t};\n};\n\n/**\n * Represents the workspace structure for a mod or custom experience.\n */\nexport type Workspace = {\n\tmod: {\n\t\t/**\n\t\t * Describes block-based scripting data (e.g., visual logic definitions).\n\t\t */\n\t\tblocks: {\n\t\t\t/**\n\t\t\t * Version number of the block language schema (e.g., Blockly or internal DSL version).\n\t\t\t */\n\t\t\tlanguageVersion: number;\n\n\t\t\t/**\n\t\t\t * Array of block definitions representing visual scripting logic.\n\t\t\t */\n\t\t\tblocks: unknown[];\n\t\t};\n\n\t\t/**\n\t\t * List of variables defined within the workspace.\n\t\t */\n\t\tvariables: {\n\t\t\t/**\n\t\t\t * Human-readable name of the variable.\n\t\t\t */\n\t\t\tname: string;\n\n\t\t\t/**\n\t\t\t * Unique identifier of the variable.\n\t\t\t */\n\t\t\tid: string;\n\n\t\t\t/**\n\t\t\t * Variable type or data category (e.g., \"Global\").\n\t\t\t */\n\t\t\ttype: string;\n\t\t}[];\n\t};\n};\n\n/**\n * Describes the configuration of a single team in the game.\n * Each entry represents a team index and its composition limits.\n */\nexport type TeamComposition = [\n\t/**\n\t * The team index (e.g., 0–3 depending on the number of teams).\n\t */\n\tnumber,\n\t{\n\t\t/**\n\t\t * Maximum number of human players allowed on this team.\n\t\t */\n\t\thumanCapacity: number;\n\n\t\t/**\n\t\t * Maximum number of AI bots allowed on this team.\n\t\t */\n\t\taiCapacity?: number;\n\n\t\t/**\n\t\t * Type of AI assigned to this team.\n\t\t * Unknown what any other value than 1 means. If you are aware, please create an issue\n\t\t */\n\t\taiType?: 0 | 1;\n\t},\n];\n\n/**\n * Represents a collection of attachments associated with a map or project.\n * Each attachment can include original and compiled data, metadata,\n * and information about its processing status.\n */\nexport type Attachment = {\n\t/**\n\t * Unique identifier for this attachment.\n\t */\n\tid: string;\n\n\t/**\n\t * Version string or numeric revision of the attachment.\n\t */\n\tversion: string;\n\n\t/**\n\t * Name of the file represented by this attachment.\n\t */\n\tfilename: string;\n\n\t/**\n\t * Indicates whether this attachment can be processed (compiled or validated).\n\t */\n\tisProcessable: boolean;\n\n\t/**\n\t * Numeric code describing the current processing status of the attachment.\n\t */\n\tprocessingStatus: number;\n\n\t/**\n\t * Container for raw and compiled forms of the attachment data.\n\t */\n\tattachmentData: {\n\t\t/**\n\t\t * Base64-encoded JSON string containing the original (unprocessed) data.\n\t\t */\n\t\toriginal: string;\n\n\t\t/**\n\t\t * Base64-encoded JSON string containing the compiled or processed version.\n\t\t */\n\t\tcompiled: string;\n\t};\n\n\t/**\n\t * Numeric or string identifier describing the type of attachment.\n\t * For example, `1` may represent a map attachment.\n\t */\n\tattachmentType: AttachmentType;\n\n\t/**\n\t * Arbitrary metadata string associated with this attachment.\n\t * May contain additional parameters (e.g., \"mapIdx=5\").\n\t */\n\tmetadata?: string;\n\n\t/**\n\t * Any errors encountered while processing or validating this attachment.\n\t */\n\terrors: unknown[];\n};\n\n/**\n * Represents the configuration structure for a BF6 mod project.\n * This defines all high-level metadata, gameplay modifiers, asset restrictions,\n * and references to related attachments or workspace details.\n */\nexport type ConfigType = {\n\t/**\n\t * Optional set of mutator overrides or customizations.\n\t * Each key corresponds to a mutator category or setting that modifies gameplay rules.\n\t */\n\tmutators?: Partial<Mutators>;\n\n\t/**\n\t * Optional restrictions applied to in-game assets.\n\t * Used to limit or enable specific weapons, vehicles, or classes.\n\t */\n\tassetRestrictions?: Partial<AssetRestrictions>;\n\n\t/**\n\t * Display name of the mod project or configuration.\n\t */\n\tname: string;\n\n\t/**\n\t * Brief description of the mod, shown in the mod browser or editor.\n\t */\n\tdescription: string;\n\n\t/**\n\t * Optional list of maps included in this configuration’s rotation.\n\t * Each entry defines a playable map and its associated parameters.\n\t */\n\tmapRotation?: MapType[];\n\n\t/**\n\t * Optional workspace configuration defining project metadata,\n\t * environment paths, and editor state for the mod.\n\t */\n\tworkspace?: Workspace;\n\n\t/**\n\t * Defines team composition for this configuration.\n\t * IMPORTANT! Note that each teamComposition MUST be 1 greater than the team ID.\n\t */\n\tteamComposition?: TeamComposition[];\n\n\t/**\n\t * Specifies the game mode type this configuration belongs to.\n\t * Usually \"ModBuilderCustom\" for user-created modes.\n\t */\n\tgameMode?: \"ModBuilderCustom\";\n\n\t/**\n\t * Array of attachment objects containing spatial or file data\n\t * such as blueprints, scene files, or custom resource definitions.\n\t */\n\tattachments?: Attachment[];\n};\n","// export * from './store';\n\nexport function Concat(s1: string, s2: string) {\n return s1 + s2;\n}\n\nexport function And(...rest: boolean[]): boolean {\n for (let i = 0; i < rest.length; i++) {\n const cond = rest[i];\n if (!cond) return false;\n }\n return true;\n}\n\ntype ConditionFunction = () => boolean;\n\nexport function AndFn(...rest: ConditionFunction[]): boolean {\n for (let i = 0; i < rest.length; i++) {\n const condFn = rest[i];\n if (!condFn()) return false;\n }\n return true;\n}\n\nexport function getPlayerId(player: mod.Player): number {\n return mod.GetObjId(player);\n}\n\nexport function getTeamId(team: mod.Team): number {\n return mod.GetObjId(team);\n}\n\nexport function ConvertArray(array: mod.Array): any[] {\n let v = [];\n let n = mod.CountOf(array);\n for (let i = 0; i < n; i++) {\n let currentElement = mod.ValueInArray(array, i);\n v.push(currentElement);\n }\n return v;\n}\n\nexport function FilteredArray(array: mod.Array, cond: (currentElement: any) => boolean): mod.Array {\n const arr = ConvertArray(array);\n let v = mod.EmptyArray();\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentElement = arr[i];\n if (cond(currentElement)) v = mod.AppendToArray(v, currentElement);\n }\n return v;\n}\n\nexport function IndexOfFirstTrue(array: mod.Array, cond: (element: any, arg: any) => boolean, arg: any = null): number {\n const arr = ConvertArray(array);\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentArrayElement = arr[i];\n if (cond(currentArrayElement, arg)) return i;\n }\n return -1;\n}\n\nexport function IfThenElse<T>(condition: boolean, ifTrue: () => T, ifFalse: () => T) {\n if (condition) return ifTrue();\n else return ifFalse();\n}\n\nexport function IsTrueForAll(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\n const arr = ConvertArray(array);\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentArrayElement = arr[i];\n if (!condition(currentArrayElement, arg)) return false;\n }\n return true;\n}\n\nexport function IsTrueForAny(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\n const arr = ConvertArray(array);\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentArrayElement = arr[i];\n if (condition(currentArrayElement, arg)) return true;\n }\n return false;\n}\n\nexport function SortedArray(array: any[], compare: (a: any, b: any) => number) {\n let v1 = array.slice();\n v1.sort(compare);\n let v2 = [];\n for (let e of v1) v2.push(e);\n return v2;\n}\n\nexport function Equals(a: any, b: any) {\n if (a == null || b == null) debugger;\n return mod.Equals(a, b);\n}\n\n// Waits for a provided number of seconds or if the provided condition evaluates to true during that interval.\nexport async function WaitUntil(delay: number, cond: () => boolean) {\n // rush hack. this will likely wait too long and other problems.\n const interval = 0.2; // seconds\n const checks = Math.ceil(delay / interval);\n for (let t = 0; t < checks; t++) {\n if (cond()) break;\n await mod.Wait(interval);\n }\n}\n\nexport class ConditionState {\n lastState: boolean;\n\n constructor() {\n this.lastState = false;\n }\n\n update(newState: boolean): boolean {\n // if the new state is false then reset last state and don't trigger action\n if (!newState) {\n this.lastState = false;\n return false;\n }\n // if last state was already true then don't trigger\n if (this.lastState) return false;\n // if the state just transitioned to true then trigger\n this.lastState = true;\n return true;\n }\n}\n\nclass Conditions {\n constructor() {\n this.conditionStates = [];\n }\n\n conditionStates: ConditionState[];\n\n getConditionState(n: number): ConditionState {\n while (n >= this.conditionStates.length) {\n this.conditionStates.push(new ConditionState());\n }\n return this.conditionStates[n];\n }\n}\n\nlet playerConditions: Conditions[] = [];\nlet teamConditions: Conditions[] = [];\nlet capturePointConditions: Conditions[] = [];\nlet mcomConditions: Conditions[] = [];\nlet vehicleConditions: Conditions[] = [];\nlet globalConditions: Conditions = new Conditions();\n\nfunction getObjectCondition(id: number, objectConditions: Conditions[], n: number) {\n while (id >= objectConditions.length) {\n objectConditions.push(new Conditions());\n }\n let conditions = objectConditions[id];\n return conditions.getConditionState(n);\n}\n\nexport function getPlayerCondition(obj: mod.Player, n: number) {\n let id = getPlayerId(obj);\n while (id >= playerConditions.length) {\n playerConditions.push(new Conditions());\n }\n let conditions = playerConditions[id];\n return conditions.getConditionState(n);\n}\n\nexport function getTeamCondition(team: mod.Team, n: number) {\n let id = getTeamId(team);\n while (id >= teamConditions.length) {\n teamConditions.push(new Conditions());\n }\n let conditions = teamConditions[id];\n return conditions.getConditionState(n);\n}\n\nexport function getCapturePointCondition(obj: mod.CapturePoint, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, capturePointConditions, n);\n}\n\nexport function getMCOMCondition(obj: mod.MCOM, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, mcomConditions, n);\n}\n\nexport function getVehicleCondition(obj: mod.Vehicle, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, vehicleConditions, n);\n}\n\nexport function getGlobalCondition(n: number) {\n return globalConditions.getConditionState(n);\n}\n\nexport function getPlayersInTeam(teamObj: mod.Team) {\n const team = mod.GetObjId(teamObj);\n const allPlayers = mod.AllPlayers();\n const n = mod.CountOf(allPlayers);\n let teamMembers = [];\n\n for (let i = 0; i < n; i++) {\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\n if (mod.GetObjId(mod.GetTeam(player)) == team) {\n teamMembers.push(player);\n }\n }\n return teamMembers;\n}\n\n//-----------------------------------------------------------------------------------------------//\n//-----------------------------------------------------------------------------------------------//\n//-----------------------------------------------------------------------------------------------//\n//-----------------------------------------------------------------------------------------------//\n// Helper functions to create UI from a JSON object tree:\n//-----------------------------------------------------------------------------------------------//\n\ntype UIVector = mod.Vector | number[];\n\ninterface UIParams {\n name: string;\n type: string;\n position: any;\n size: any;\n anchor: mod.UIAnchor;\n parent: mod.UIWidget;\n visible: boolean;\n textLabel: string;\n textColor: UIVector;\n textAlpha: number;\n textSize: number;\n textAnchor: mod.UIAnchor;\n padding: number;\n bgColor: UIVector;\n bgAlpha: number;\n bgFill: mod.UIBgFill;\n imageType: mod.UIImageType;\n imageColor: UIVector;\n imageAlpha: number;\n teamId?: mod.Team;\n playerId?: mod.Player;\n children?: any[];\n buttonEnabled: boolean;\n buttonColorBase: UIVector;\n buttonAlphaBase: number;\n buttonColorDisabled: UIVector;\n buttonAlphaDisabled: number;\n buttonColorPressed: UIVector;\n buttonAlphaPressed: number;\n buttonColorHover: UIVector;\n buttonAlphaHover: number;\n buttonColorFocused: UIVector;\n buttonAlphaFocused: number;\n}\n\nfunction __asModVector(param: number[] | mod.Vector) {\n if (Array.isArray(param)) return mod.CreateVector(param[0], param[1], param.length == 2 ? 0 : param[2]);\n else return param;\n}\n\nfunction __asModMessage(param: string | mod.Message) {\n if (typeof param === 'string') return mod.Message(param);\n return param;\n}\n\nfunction __fillInDefaultArgs(params: UIParams) {\n if (!params.hasOwnProperty('name')) params.name = '';\n if (!params.hasOwnProperty('position')) params.position = mod.CreateVector(0, 0, 0);\n if (!params.hasOwnProperty('size')) params.size = mod.CreateVector(100, 100, 0);\n if (!params.hasOwnProperty('anchor')) params.anchor = mod.UIAnchor.TopLeft;\n if (!params.hasOwnProperty('parent')) params.parent = mod.GetUIRoot();\n if (!params.hasOwnProperty('visible')) params.visible = true;\n if (!params.hasOwnProperty('padding')) params.padding = params.type == 'Container' ? 0 : 8;\n if (!params.hasOwnProperty('bgColor')) params.bgColor = mod.CreateVector(0.25, 0.25, 0.25);\n if (!params.hasOwnProperty('bgAlpha')) params.bgAlpha = 0.5;\n if (!params.hasOwnProperty('bgFill')) params.bgFill = mod.UIBgFill.Solid;\n}\n\nfunction __setNameAndGetWidget(uniqueName: any, params: any) {\n let widget = mod.FindUIWidgetWithName(uniqueName) as mod.UIWidget;\n mod.SetUIWidgetName(widget, params.name);\n return widget;\n}\n\nconst __cUniqueName = '----uniquename----';\n\nfunction __addUIContainer(params: UIParams) {\n __fillInDefaultArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIContainer(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n restrict\n );\n } else {\n mod.AddUIContainer(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill\n );\n }\n let widget = __setNameAndGetWidget(__cUniqueName, params);\n if (params.children) {\n params.children.forEach((childParams: any) => {\n childParams.parent = widget;\n __addUIWidget(childParams);\n });\n }\n return widget;\n}\n\nfunction __fillInDefaultTextArgs(params: UIParams) {\n if (!params.hasOwnProperty('textLabel')) params.textLabel = '';\n if (!params.hasOwnProperty('textSize')) params.textSize = 0;\n if (!params.hasOwnProperty('textColor')) params.textColor = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('textAlpha')) params.textAlpha = 1;\n if (!params.hasOwnProperty('textAnchor')) params.textAnchor = mod.UIAnchor.CenterLeft;\n}\n\nfunction __addUIText(params: UIParams) {\n __fillInDefaultArgs(params);\n __fillInDefaultTextArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIText(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n __asModMessage(params.textLabel),\n params.textSize,\n __asModVector(params.textColor),\n params.textAlpha,\n params.textAnchor,\n restrict\n );\n } else {\n mod.AddUIText(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n __asModMessage(params.textLabel),\n params.textSize,\n __asModVector(params.textColor),\n params.textAlpha,\n params.textAnchor\n );\n }\n return __setNameAndGetWidget(__cUniqueName, params);\n}\n\nfunction __fillInDefaultImageArgs(params: any) {\n if (!params.hasOwnProperty('imageType')) params.imageType = mod.UIImageType.None;\n if (!params.hasOwnProperty('imageColor')) params.imageColor = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('imageAlpha')) params.imageAlpha = 1;\n}\n\nfunction __addUIImage(params: UIParams) {\n __fillInDefaultArgs(params);\n __fillInDefaultImageArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIImage(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.imageType,\n __asModVector(params.imageColor),\n params.imageAlpha,\n restrict\n );\n } else {\n mod.AddUIImage(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.imageType,\n __asModVector(params.imageColor),\n params.imageAlpha\n );\n }\n return __setNameAndGetWidget(__cUniqueName, params);\n}\n\nfunction __fillInDefaultArg(params: any, argName: any, defaultValue: any) {\n if (!params.hasOwnProperty(argName)) params[argName] = defaultValue;\n}\n\nfunction __fillInDefaultButtonArgs(params: any) {\n if (!params.hasOwnProperty('buttonEnabled')) params.buttonEnabled = true;\n if (!params.hasOwnProperty('buttonColorBase')) params.buttonColorBase = mod.CreateVector(0.7, 0.7, 0.7);\n if (!params.hasOwnProperty('buttonAlphaBase')) params.buttonAlphaBase = 1;\n if (!params.hasOwnProperty('buttonColorDisabled')) params.buttonColorDisabled = mod.CreateVector(0.2, 0.2, 0.2);\n if (!params.hasOwnProperty('buttonAlphaDisabled')) params.buttonAlphaDisabled = 0.5;\n if (!params.hasOwnProperty('buttonColorPressed')) params.buttonColorPressed = mod.CreateVector(0.25, 0.25, 0.25);\n if (!params.hasOwnProperty('buttonAlphaPressed')) params.buttonAlphaPressed = 1;\n if (!params.hasOwnProperty('buttonColorHover')) params.buttonColorHover = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('buttonAlphaHover')) params.buttonAlphaHover = 1;\n if (!params.hasOwnProperty('buttonColorFocused')) params.buttonColorFocused = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('buttonAlphaFocused')) params.buttonAlphaFocused = 1;\n}\n\nfunction __addUIButton(params: UIParams) {\n __fillInDefaultArgs(params);\n __fillInDefaultButtonArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIButton(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.buttonEnabled,\n __asModVector(params.buttonColorBase),\n params.buttonAlphaBase,\n __asModVector(params.buttonColorDisabled),\n params.buttonAlphaDisabled,\n __asModVector(params.buttonColorPressed),\n params.buttonAlphaPressed,\n __asModVector(params.buttonColorHover),\n params.buttonAlphaHover,\n __asModVector(params.buttonColorFocused),\n params.buttonAlphaFocused,\n restrict\n );\n } else {\n mod.AddUIButton(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.buttonEnabled,\n __asModVector(params.buttonColorBase),\n params.buttonAlphaBase,\n __asModVector(params.buttonColorDisabled),\n params.buttonAlphaDisabled,\n __asModVector(params.buttonColorPressed),\n params.buttonAlphaPressed,\n __asModVector(params.buttonColorHover),\n params.buttonAlphaHover,\n __asModVector(params.buttonColorFocused),\n params.buttonAlphaFocused\n );\n }\n return __setNameAndGetWidget(__cUniqueName, params);\n}\n\nfunction __addUIWidget(params: UIParams) {\n if (params == null) return undefined;\n if (params.type == 'Container') return __addUIContainer(params);\n else if (params.type == 'Text') return __addUIText(params);\n else if (params.type == 'Image') return __addUIImage(params);\n else if (params.type == 'Button') return __addUIButton(params);\n return undefined;\n}\n\nexport function ParseUI(...params: any[]) {\n let widget: mod.UIWidget | undefined;\n for (let a = 0; a < params.length; a++) {\n widget = __addUIWidget(params[a] as UIParams);\n }\n return widget;\n}\n\nexport function DisplayCustomNotificationMessage(msg: mod.Message, custom: mod.CustomNotificationSlots, duration: number, target?: mod.Player | mod.Team) {\n const CreateHeader = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(50, 250 + slot * (40 + 5), 0),\n mod.CreateVector(250, 60, 0),\n mod.UIAnchor.TopRight,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n msg,\n 30,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center,\n targetPlayer\n );\n if (duration > 0) {\n await mod.Wait(duration);\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\n }\n };\n const CreateSubText = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(85, 270 + slot * (40 + 3), 0),\n mod.CreateVector(125, 40, 0),\n mod.UIAnchor.TopRight,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n msg,\n 20,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center,\n targetPlayer\n );\n if (duration > 0) {\n await mod.Wait(duration);\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\n }\n };\n const createNotificationFunction = custom < 1 ? CreateHeader : CreateSubText;\n\n if (target) {\n // if target is player, fill message in their slot\n if (mod.IsType(target, mod.Types.Player)) {\n const widgetId = custom + String(target);\n createNotificationFunction(widgetId, msg, target as mod.Player, custom);\n }\n // if target is team, fill message in slot for all players on team\n else if (mod.IsType(target, mod.Types.Team)) {\n const teamMates = getPlayersInTeam(target as mod.Team);\n teamMates.forEach((player) => {\n const widgetId = custom + String(player);\n createNotificationFunction(widgetId, msg, player, custom);\n });\n }\n } else {\n const allPlayers = mod.AllPlayers();\n const n = mod.CountOf(allPlayers);\n for (let i = 0; i < n; i++) {\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\n const widgetId = custom + String(player);\n createNotificationFunction(widgetId, msg, player, custom);\n }\n }\n}\n\nexport function ShowEventGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\n //TODO: restore these once DisplayGameModeMessage is fixed\n // if (target) {\n // mod.DisplayGameModeMessage(event, target as mod.Player );\n // } else{\n // mod.DisplayGameModeMessage(event);\n // }\n\n const MakeShiftDisplayGameModeMessage = async (message: mod.Message, target?: mod.Player | mod.Team) => {\n const widgetId = 'GameModeMessage';\n if (target) {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(0, 0, 0),\n mod.CreateVector(2500, 80, 0),\n mod.UIAnchor.TopCenter,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n message,\n 30,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center,\n target as mod.Player\n );\n } else {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(0, 0, 0),\n mod.CreateVector(2500, 80, 0),\n mod.UIAnchor.TopCenter,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n message,\n 30,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center\n );\n }\n\n await mod.Wait(6);\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\n };\n\n if (target) {\n MakeShiftDisplayGameModeMessage(event, target as mod.Player);\n } else {\n MakeShiftDisplayGameModeMessage(event);\n }\n}\n\nexport function ShowHighlightedGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\n if (target) {\n mod.DisplayHighlightedWorldLogMessage(event, target as mod.Player);\n } else {\n mod.DisplayHighlightedWorldLogMessage(event);\n }\n}\n\nexport function ShowNotificationMessage(msg: mod.Message, target?: mod.Player | mod.Team) {\n if (target) {\n mod.DisplayNotificationMessage(msg, target as mod.Player);\n } else {\n mod.DisplayNotificationMessage(msg);\n }\n}\n\nexport function ClearAllCustomNotificationMessages(target: mod.Player) {\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.HeaderText, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText1, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText2, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText3, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText4, target);\n } catch {}\n}\n\nexport function ClearCustomNotificationMessage(custom: mod.CustomNotificationSlots, target?: mod.Player | mod.Team) {\n try {\n if (target) {\n // if target is player, just delete message in their slot\n if (mod.IsType(target, mod.Types.Player)) {\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(target as mod.Player)));\n }\n // if target is team, delete message in slot for all players on team\n else if (mod.IsType(target, mod.Types.Team)) {\n const teamMembers = getPlayersInTeam(target as mod.Team);\n for (let i = 0; i < teamMembers.length; i++) {\n let player = teamMembers[i];\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\n }\n }\n } else {\n // if no target, delete for all players\n const allPlayers = mod.AllPlayers();\n const n = mod.CountOf(allPlayers);\n for (let i = 0; i < n; i++) {\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\n }\n }\n } catch {\n console.error('Could not clear custom message for specified target(s)');\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/config/mutators/index.ts","../src/config/index.ts","../src/modlib/index.ts"],"sourcesContent":["import type { PerTeam } from \"../index.ts\";\n\n/**\n * Determines the Man-Down behavior when a soldier is downed.\n */\nexport enum ManDownExperienceType {\n\tCrawl = 0,\n\tDowned = 1,\n\tInstantDeath = 2,\n}\n\n/**\n * Controls which type of AI to spawn. PvP AI will automatically spawn and can be replaced by human players. PvE AI is a fixed number that cannot be replaced, for Solo or Co-op experiences.\n */\nexport enum AiSpawnType {\n\tNoBots = 0,\n\tBackfill = 2,\n\tStatic = 1,\n}\n\n/**\n * Controls the rules for Squad Spawning, for squad members and squad leaders.\n */\nexport enum SquadSpawnType {\n\tAll = 0,\n\tSquadmatesOnLeader_LeaderNone = 1,\n\tSquadmatesOnLeader_LeaderAll = 2,\n\tDisabled = 3,\n}\n\n/**\n * Controls what type of scoreboard layout to use.\n */\nexport enum ScoreboardType {\n\tNotSet = 0,\n\tDefaultFAA = 1,\n\tOff = 2,\n\tCustomTwoTeams = 3,\n\tCustomFFA = 4,\n}\n\n/**\n * Determines the behavior of the Ping command.\n */\nexport enum PingBehavior {\n\tPingTargets = 0,\n\tDisabled = 2,\n}\n\nexport enum ModBuilderGameMode {\n\tCustom = 2,\n}\n\n/**\n * Sets the faction for each team.\n */\nexport enum FactionID {\n\tPax = -1865993703,\n\tMapDefault = 0,\n\tNATO = 607944106,\n}\n\n/**\n * Sets which train variant will appear in the Railway to Golmud map.\n */\nexport enum GolmudTrainVariant {\n\tNone = 0,\n\tMovingTrain = 1,\n\tStaticTrainBreakthrough = 2,\n\tStaticTrainRush = 3,\n}\n\n/**\n * Sets the Aircraft Carrier variation for the map Tsuru Reef.\n */\nexport enum AircraftCarrierType {\n\tNone = 0,\n\tConquest = 1,\n\tCarrierStrike = 2,\n}\n\nexport type Mutators = {\n\t/**\n\t * AI PRONE\n\t * Controls whether AI soldiers can go prone.\n\t *\n\t * @id 2294859495\n\t */\n\tAI_ProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 3918918809\n\t * @constraints Range: [0 to 1]\n\t * @default 1\n\t */\n\tAgingModifierForCommittedOrder: number;\n\n\t/**\n\t * MAXIMUM HUMAN PLAYERS\n\t * Max Player Count Per Team\n\t *\n\t * @id 2976738751\n\t * @constraints Range: [0 to 128]\n\t * @default 0\n\t */\n\tMaxPlayerCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Static AI Count Per Team\n\t * Sets the maximum number of static AI, this setting is not used for Backfill AI.\n\t *\n\t * @id 1544673979\n\t * @constraints Range: [0 to 64]\n\t * @default 0\n\t */\n\tAiMaxCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI TYPE\n\t * Controls which type of AI to spawn. Backfill AI will automatically spawn and can be replaced by human players. Static AI is a fixed number that cannot be replaced, for Solo or Co-op experiences.\n\t *\n\t * @id 1666992788\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @value 0 No AI\n\t * @value 1 PvE AI\n\t * @value 2 PvP AI\n\t * @default 0\n\t */\n\tAiSpawnType: AiSpawnType;\n\n\t/**\n\t * FRIENDLY FIRE\n\t * Controls whether damage will be applied to allies.\n\t *\n\t * @id 836139493\n\t */\n\tFriendlyFireAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * FALL DAMAGE MULTIPLIER\n\t * Multiplies damage taken from falling. Values lower than 100% reduce damage, while values greater than 100% increase damage.\n\t *\n\t * @id 2759418217\n\t * @constraints Range: [0 to 2]\n\t * @default 1\n\t */\n\tFallDamageHeightMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SQUAD SPAWN TYPE\n\t * Controls the rules for Squad Spawning, for squad members and squad leaders.\n\t *\n\t * @id 1476270551\n\t * @constraints Allowed Values: 0, 1, 2, 3\n\t * @value 0 All\n\t * @value 1 Squadmates on Leader; Leader None\n\t * @value 2 Squadmates on Leader; Leader All\n\t * @value 3 Disabled\n\t * @default 0\n\t */\n\tSquadSpawnMode_PerTeam: PerTeam<SquadSpawnType>;\n\n\t/**\n\t * MAN-DOWN TYPE\n\t * Determines the Man-Down behavior when a soldier is downed.\n\t *\n\t * @id 1722734603\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @value 0 Crawl\n\t * @value 1 Downed\n\t * @value 2 Instant Death\n\t * @default 1\n\t */\n\tManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * STRAFE WHILE SPRINTING\n\t * Controls whether soldiers are allowed to strafe laterally while sprinting.\n\t *\n\t * @id 2382243254\n\t */\n\tSprintStrafeAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * FACTION\n\t * Sets the faction for each team.\n\t *\n\t * @id 548273204\n\t * @constraints Allowed Values: -1865993703, 0, 607944106\n\t * @value -1865993703 PAX\n\t * @value 0 Map Default\n\t * @value 607944106 NATO\n\t * @default 0\n\t */\n\tFactionID_PerTeam: PerTeam<FactionID>;\n\n\t/**\n\t * Sets the numbers of teams that will be in the match.\n\t *\n\t * @id 4262527312\n\t * @constraints Range: [1 to 129]\n\t * @default 3\n\t */\n\tMaxTeamCount: number;\n\n\t/**\n\t * PASSENGER SEATS\n\t * Controls whether vehicles take passengers.\n\t *\n\t * @id 561253693\n\t */\n\tVehicle_AllowPassengers: boolean;\n\n\t/**\n\t * AI PASSENGER SEATS\n\t * Controls whether vehicles take AI passengers.\n\t *\n\t * @id 1557246182\n\t */\n\tAI_Vehicle_AllowAiInPassengerSeats: boolean;\n\n\t/**\n\t * ALLY IDENTIFICATION\n\t * Controls whether allies are visibly marked as allies when viewed in-game.\n\t *\n\t * @id 1308565896\n\t */\n\tFriendlyIdentificationAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SQUAD REVIVE\n\t * Controls whether soldiers in a squad can revive other players in the squad, regardless of class or gadget.\n\t *\n\t * @id 2270279538\n\t */\n\tSquadReviveAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * REINFORCEMENT MULTIPLIER\n\t * Multiplies the reinforcement count required to end the game. Values less than 1.0 will result in fewer reinforcements and shorter games, while values greater than 1.0 will increase the reinforcement count and extend the game time.\n\t *\n\t * @id 809598703\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tScoreMultiplier: number;\n\n\t/**\n\t * SECTOR TIME\n\t * Sets the maximum time (in minutes) for each sector.\n\t *\n\t * @id 1663663112\n\t * @constraints Range: [10 to 60]\n\t * @default 15\n\t */\n\tR_iSectorTime: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round\n\t *\n\t * @id 3283626574\n\t * @constraints Range: [30 to 60]\n\t * @default 45\n\t */\n\tCQ_iModeTime: number;\n\n\t/**\n\t * AIM ASSIST ZOOM SNAP\n\t * Controls whether Snap-to-target is used for Aim Assisted players. When this is set to OFF, the crosshair will not snap to a nearby target when entering ADS.\n\t *\n\t * @id 1152845640\n\t */\n\tAimAssistSnapZoomEnabled: boolean;\n\n\t/**\n\t * PRONE\n\t * Controls whether soldiers can go prone.\n\t *\n\t * @id 2434061171\n\t */\n\tProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * VEHICLE HEALTH REGENERATION\n\t * Controls whether vehicles regenerate health over time after not taking damage.\n\t *\n\t * @id 3575692072\n\t */\n\tVehicleHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * INFINITE WEAPON MAGAZINES\n\t * Control if primary and secondary weapons have infinite magazines.\n\t *\n\t * @id 794544630\n\t */\n\tInfiniteWeaponMagazines_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SPRINT\n\t * Controls whether soldiers are allowed to sprint.\n\t *\n\t * @id 902078290\n\t */\n\tSprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SOLDIER HEALTH REGENERATION\n\t * Controls whether soldiers regenerate health over time after not taking damage.\n\t *\n\t * @id 233704148\n\t */\n\tSoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * STATIONARY WEAPON EMPLACEMENTS\n\t * Controls whether Stationary Weapon Emplacements should appear in the map (where applicable).\n\t *\n\t * @id 1526538121\n\t */\n\tStationaryEmplacementsAllowed: boolean;\n\n\t/**\n\t * SLIDE\n\t * Controls whether soldiers can slide.\n\t *\n\t * @id 3767405896\n\t */\n\tSlideAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * COMPASS\n\t * Controls whether the Compass is displayed in the HUD.\n\t *\n\t * @id 2005480485\n\t */\n\tCompassAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * MINIMAP\n\t * Controls whether the Minimap is displayed in the HUD.\n\t *\n\t * @id 588019110\n\t */\n\tMinimapAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * PING BEHAVIOR\n\t * Determines the behavior of the Ping command.\n\t *\n\t * @id 1017389623\n\t * @constraints Allowed Values: 0, 2\n\t * @value 0 Ping Targets\n\t * @value 2 Disabled\n\t * @default 0\n\t */\n\tPingBehavior_PerTeam: PerTeam<PingBehavior>;\n\n\t/**\n\t * HUD\n\t * Controls whether players have a Heads-Up Display. Does not disable the Full Map.\n\t *\n\t * @id 3287878479\n\t */\n\tHUDAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SOLDIER MAXIMUM HEALTH MULTIPLIER\n\t * Multiplies soldier maximum health. Values less than 100% reduce health, while values greater than 100% increase it.\n\t *\n\t * @id 1899412422\n\t * @constraints Range: [0.10000000149011612 to 5]\n\t * @default 1\n\t */\n\tSoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SOLDIER REDEPLOY DELAY MULTIPLIER\n\t * Multiplies the time it takes for soldiers to redeploy. Values less than 100% allow soldiers to redeploy more quickly, while values greater than 100% force soldiers to wait longer before redeploying.\n\t *\n\t * @id 2390282071\n\t * @constraints Range: [0 to 18]\n\t * @default 1\n\t */\n\tSoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * PLAYER DAMAGE MULTIPLIER\n\t * Multiplies damage from all sources. Values less than 1.0 reduce damage from all sources, while values greater than 1.0 increase damage.\n\t *\n\t * @id 1671953404\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE MAXIMUM HEALTH MULTIPLIER\n\t * Multiplies the maximum health of all vehicles. Values less than 100% reduces the health of all vehicles, while values greater than 100% increases it.\n\t *\n\t * @id 3752128436\n\t * @constraints Range: [0.10000000149011612 to 3.5]\n\t * @default 1\n\t */\n\tVehicleMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE SPAWN DELAY MULTIPLIER\n\t * Multiplies the default timer that spawns or respawns vehicles. Values below 100% make spawns faster, values above 100% delay spawns for longer.\n\t *\n\t * @id 2145356810\n\t * @constraints Range: [0.20000000298023224 to 5]\n\t * @default 1\n\t */\n\tPortal_KitsLimit_VehicleSpawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * PROJECTILE SPEED MULTIPLIER\n\t * Multiplies the speed of all projectiles. Values smaller than 100% will slow projectiles, values larger than 100% will increase the speed.\n\t *\n\t * @id 900970640\n\t * @constraints Range: [0.5 to 5]\n\t * @default 1\n\t */\n\tProjectileSpeedMultiplier: number;\n\n\t/**\n\t * BODY SHOT DAMAGE MULTIPLIER\n\t * Multiplies the damage dealt when successfully landing a body shot. Note that this modifier combines with other damage modifiers.\n\t *\n\t * @id 31136365\n\t * @constraints Range: [0 to 4]\n\t * @default 1\n\t */\n\tBodyshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * HEADSHOT DAMAGE MULTIPLIER\n\t * Multiplies the damage dealt when successfully landing a headshot. Note that this modifier combines with other damage modifiers.\n\t *\n\t * @id 2101284162\n\t * @constraints Range: [0 to 4]\n\t * @default 1\n\t */\n\tHeadshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE DAMAGE MULTIPLIER\n\t * Multiplies the damage output of vehicles. Note that this modifier combines with other damage modifiers.\n\t *\n\t * @id 2009820847\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tVehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * VEHICLE HEALTH REGENERATION RATE\n\t * Controls the timing for vehicle health regeneration. Values less than 100% slow the time it takes to regenerate to full health, while values greater than 100% regenerate health more quickly for all vehicles.\n\t *\n\t * @id 896388464\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tVehicleRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SOLDIER HEALTH REGENERATION RATE\n\t * Controls the timing for soldier health regeneration. Values less than 100% slow the time it takes to regenerate to full health, while values greater than 100% regenerate health more quickly.\n\t *\n\t * @id 2317849662\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tSoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SCOREBOARD TYPE\n\t * Controls what type of scoreboard layout to use.\n\t *\n\t * @id 2749696498\n\t * @constraints Allowed Values: 0, 1, 2, 3, 4\n\t * @value 0 Not Set\n\t * @value 1 Default FFA\n\t * @value 2 Off\n\t * @value 3 Custom Two Teams\n\t * @value 4 Custom FFA\n\t * @default 1\n\t */\n\tScoreboardType: ScoreboardType;\n\n\t/**\n\t * AI MAN-DOWN TYPE\n\t * Determines the Man-Down behavior when an AI soldier is downed.\n\t *\n\t * @id 4119966672\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @value 0 Crawl\n\t * @value 1 Downed\n\t * @value 2 Instant Death\n\t * @default 1\n\t */\n\tAI_ManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * AI SOLDIER MOVEMENT SPEED\n\t * Controls the default speed of AI Soldier movement, which can then be multiplied by other movement types. Values less than 100% slow down AI soldier movement, while values greater than 100% increase movement speed.\n\t *\n\t * @id 918657157\n\t * @constraints Range: [0.800000011920929 to 1.2000000476837158]\n\t * @default 1\n\t */\n\tAI_SoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI SPRINT\n\t * Controls whether AI soldiers are allowed to sprint.\n\t *\n\t * @id 186024129\n\t */\n\tAI_SprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI EXITING VEHICLES\n\t * Controls whether AI soldiers inside a vehicle can exit the vehicle. When this is set to OFF, AI soldiers in a vehicle must remain in the vehicle.\n\t *\n\t * @id 3239967550\n\t */\n\tAI_ExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * TICKETS PER-KILL MULTIPLIER\n\t * Control how many tickets are removed on a kill.\n\t *\n\t * @id 105207428\n\t * @constraints Range: [0 to 10]\n\t * @default 1\n\t */\n\tScorePerKillMultiplier: number;\n\n\t/**\n\t * INFINITE AMMO\n\t * Controls whether soldier weapons have infinite ammo and never need to reload.\n\t *\n\t * @id 2114774834\n\t */\n\tInfiniteWeaponAmmo_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI SOLDIER HEALTH REGENERATION\n\t * Controls whether AI soldiers regenerate health over time after not taking damage.\n\t *\n\t * @id 734729469\n\t */\n\tAI_SoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI SOLDIER MAXIMUM HEALTH MULTIPLIER\n\t * Multiplies AI soldier maximum health. Values less than 100% reduce AI health, while values greater than 100% increase it.\n\t *\n\t * @id 4092794051\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tAI_SoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI HEALTH REGENERATION RATE\n\t * Controls the timing for AI soldier health regeneration. Values less than 100% slow the time it takes to regenerate AI soldiers to full health, while values greater than 100% regenerate health more quickly.\n\t *\n\t * @id 987645454\n\t * @constraints Range: [0.10000000149011612 to 10]\n\t * @default 1\n\t */\n\tAI_SoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI DAMAGE MULTIPLIER\n\t * Multiplies AI damage output from all sources.\n\t *\n\t * @id 3626262758\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tAI_DamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AIM ASSIST\n\t * Controls whether Aim Assist is allowed for players using the Aim Assist option. When this is set to OFF, the crosshair will not adjust its speed when tracking over an enemy player.\n\t *\n\t * @id 2699039760\n\t */\n\tAimAssistSlowdownEnabled: boolean;\n\n\t/**\n\t * EXITING VEHICLES\n\t * Controls whether players inside a vehicle can exit the vehicle. When this is set to OFF, players in a vehicle must remain in the vehicle.\n\t *\n\t * @id 4072888461\n\t */\n\tExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * SOLDIER MOVE SPEED MULTIPLIER\n\t * Controls the default speed of Soldier movement, which can then be multiplied by other movement types. Values less than 100% slow down soldier movement, while values greater than 100% increase movement speed.\n\t *\n\t * @id 1955023128\n\t * @constraints Range: [0.800000011920929 to 1.2000000476837158]\n\t * @default 1\n\t */\n\tSoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * CROSSHAIR ALLOWED\n\t * Controls whether crosshairs are disabled for players.\n\t *\n\t * @id 289584529\n\t */\n\tCrosshairsAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * ON-FOOT DEPLOYMENT\n\t * Controls whether players are allowed to deploy on foot as a soldier.\n\t *\n\t * @id 2849852964\n\t */\n\tOnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI VEHICLE DAMAGE MULTIPLIER\n\t * Multiplies AI damage output from vehicles.\n\t *\n\t * @id 1871419702\n\t * @constraints Range: [0.009999999776482582 to 5]\n\t * @default 1\n\t */\n\tAI_VehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * AI ON-FOOT DEPLOYMENT\n\t * Controls whether AI are allowed to deploy on foot as soldiers.\n\t *\n\t * @id 1807768999\n\t */\n\tAI_OnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * AI SQUAD SPAWN\n\t * Controls the rules for AI Squad Spawning, for squad members and squad leaders.\n\t *\n\t * @id 310492599\n\t * @constraints Allowed Values: 0, 1, 2, 3\n\t * @value 0 All\n\t * @value 1 Squadmates on Leader; Leader None\n\t * @value 2 Squadmates on Leader; Leader All\n\t * @value 3 Disabled\n\t * @default 0\n\t */\n\tAI_SquadSpawnMode_PerTeam: PerTeam<SquadSpawnType>;\n\n\t/**\n\t * AI REDEPLOY DELAY MULTIPLIER\n\t * Multiplies the time it takes for AI soldiers to redeploy. Values less than 100% allow AI soldiers to redeploy more quickly, while values greater than 100% force AI soldiers to wait longer before redeploying.\n\t *\n\t * @id 830816070\n\t * @constraints Range: [0 to 18]\n\t * @default 1\n\t */\n\tAI_SoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * REFLECT FRIENDLY FIRE DAMAGE\n\t * If the FRIENDLY FIRE modifier is enabled all damage to allies will be reflected back to a player after they kill two allies. Resets after 90 seconds.\n\t *\n\t * @id 3050333889\n\t */\n\tFriendlyFireDamageReflectionEnabled: boolean;\n\n\t/**\n\t * @id 2047132398\n\t * @constraints Allowed Values: 2\n\t * @value 2 Free-For-All\n\t * @default 2\n\t */\n\tModBuilder_GameMode: ModBuilderGameMode;\n\n\t/**\n\t * @id 3985279000\n\t * @constraints Range: [-1000 to 1000]\n\t * @default 1\n\t */\n\tAimAssistSnapCapsuleRadiusMultiplier: number;\n\n\t/**\n\t * @id 482929310\n\t * @constraints Range: [1 to 50]\n\t * @default 2\n\t */\n\tFriendlyFireDamageReflectionMaxTeamKills: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round.\n\t *\n\t * @id 1796950356\n\t * @constraints Range: [6 to 60]\n\t * @default 20\n\t */\n\tfPortalExperienceGameTime: number;\n\n\t/**\n\t * Squad Size\n\t * Sets the maximum number of members per squad.\n\t *\n\t * @id 1512026338\n\t * @constraints Range: [1 to 4]\n\t * @default 4\n\t */\n\tSquadSize_PerTeam: PerTeam<number>;\n\n\t/**\n\t * SECTOR TIME\n\t * Sets the maximum time (in minutes) for the sector.\n\t *\n\t * @id 3923238025\n\t * @constraints Range: [10 to 60]\n\t * @default 20\n\t */\n\tBT_iSectorTime: number;\n\n\t/**\n\t * DISABLE THIRD PERSON VIEW\n\t * Disables the third person view on vehicles.\n\t *\n\t * @id 2791486999\n\t */\n\tDisableVehicle3p: boolean;\n\n\t/**\n\t * RELOAD WHOLE MAGAZINES\n\t * Controls whether reloading a magazine causes the soldier or vehicle to lose any remaining ammo within the currently loaded magazine.\n\t *\n\t * @id 4131112494\n\t */\n\tReloadWholeWeaponMagazines: boolean;\n\n\t/**\n\t * CLASS LOCK WEAPONS\n\t * If enabled, all soldier kits will use their class locked weapon loadout variants instead of the normal open weapon pool loadouts.\n\t *\n\t * @id 3428887440\n\t */\n\tEnableClassLockedWeaponLoadouts: boolean;\n\n\t/**\n\t * RESTRICT GAME FEEDBACK\n\t * Controls the degree of feedback given to the player via audio or visual cues.\n\t *\n\t * @id 1979857396\n\t */\n\tbPortalRestrictedGameFeedback: boolean;\n\n\t/**\n\t * HARDCORE MODE\n\t * Enables hardcore mode. Hardcore tweaks the experience into a less forgiving and somewhat more \"realistic\" feel.\n\t *\n\t * @id 3696653317\n\t */\n\tIsHardcore: boolean;\n\n\t/**\n\t * @id 1461965916\n\t * @constraints Range: [0 to 1]\n\t * @default 0.5\n\t */\n\tFriendlyFireMinVelocityForRoadKill_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 2952797941\n\t */\n\tFriendlyFireDisableVehicleCollision_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 2664535737\n\t * @constraints Range: [1 to 600]\n\t * @default 90\n\t */\n\tFriendlyFireDamageReflectionResetTime: number;\n\n\t/**\n\t * @id 4064956639\n\t */\n\tFriendlyFireDisableVehicleTriggerFriendlyMines: boolean;\n\n\t/**\n\t * @id 1178389245\n\t */\n\tFriendlyFireDisableSoldierTriggerFriendlyMines: boolean;\n\n\t/**\n\t * @id 3570813653\n\t * @constraints Range: [0.10000000149011612 to 5]\n\t * @default 1\n\t */\n\tVehicleWeaponAutoReplenishDelayMultiplier: number;\n\n\t/**\n\t * @id 3585332942\n\t */\n\tHealthBarAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 1173798620\n\t */\n\tHideDamageNumbers_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 1519216395\n\t */\n\tHitIndicatorAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 3102875672\n\t * @constraints Range: [0 to 0]\n\t * @default 2\n\t */\n\tHUDInventoryDisplayTime_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 2589053639\n\t */\n\tHUDInventoryAutoHide_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 601034245\n\t */\n\tUseReducedSquadWorldIcon: boolean;\n\n\t/**\n\t * @id 1400955202\n\t */\n\tUseReducedFriendlyWorldIcon: boolean;\n\n\t/**\n\t * @id 2039415736\n\t * @constraints Range: [1 to 5000]\n\t * @default 2000\n\t */\n\tFriendlyInworldIconsMaxDistance: number;\n\n\t/**\n\t * @id 2629637312\n\t */\n\tCapturePointScaleAllowed: boolean;\n\n\t/**\n\t * @id 3795763303\n\t */\n\tKillFeedAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 4285291858\n\t */\n\tSquadListAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 4192837966\n\t */\n\tbRestrictCommunicationVO: boolean;\n\n\t/**\n\t * @id 1685003453\n\t */\n\tbRestrictCommunicationUI: boolean;\n\n\t/**\n\t * SECTOR REINFORCEMENT REWARD MULTIPLIER\n\t * Multiplies the reinforcement the attacking team is rewarded when taking a sector. Values less than 1.0 will result in fewer reinforcements, while values greater than 1.0 will increase the reinforcement count.\n\t *\n\t * @id 611091070\n\t * @constraints Range: [0 to 10]\n\t * @default 1\n\t */\n\tBT_fSectorRewardMultiplier: number;\n\n\t/**\n\t * FLAG CAPTURE TIME MULTIPLIER\n\t * Flag capture time multiplier\n\t *\n\t * @id 1246107735\n\t * @constraints Range: [1 to 10]\n\t * @default 1\n\t */\n\tfPortal_CaptureTimeMultiplier: number;\n\n\t/**\n\t * Flag Neutralization Time\n\t * Sets the time it takes to neutralize a flag in seconds\n\t *\n\t * @id 3826668350\n\t * @constraints Range: [1 to 10]\n\t * @default 1\n\t */\n\tfPortal_NeutralisationTimeMultiplier: number;\n\n\t/**\n\t * SPOTTING\n\t * Controls whether spotting is allowed for players.\n\t *\n\t * @id 2217845162\n\t */\n\tSpottingAllowed: boolean;\n\n\t/**\n\t * SHARED AMMO\n\t * Controls whether the soldier uses the default inventory or the Battle Royale inventory.\n\t *\n\t * @id 3493038109\n\t */\n\tPortal_UseSharedAmmo: boolean;\n\n\t/**\n\t * Second Chance Threshold\n\t * Controls when the second chance is disabled, the value is based on the percentage of squads alive, if set at 0.5 it means its disabled after half the squads are dead.\n\t *\n\t * @id 1823350640\n\t * @constraints Range: [0 to 1]\n\t * @default 0.75\n\t */\n\tBR_SecondChanceDeactivateThreshold: number;\n\n\t/**\n\t * Zone Shrink Time\n\t * Controls the time in seconds it takes for the Ring of Fire to shrink from one zone size to the next.\n\t *\n\t * @id 3390523150\n\t * @constraints Range: [240 to 1000]\n\t * @default 240\n\t */\n\tfPortal_BRShrinkTime: number;\n\n\t/**\n\t * Zone Damage\n\t * Controls the damage done by being outside the Ring of Fire.\n\t *\n\t * @id 1074769675\n\t * @constraints Range: [500 to 1000]\n\t * @default 500\n\t */\n\tPortal_BRZoneDamage: number;\n\n\t/**\n\t * ZONE SIZE 1\n\t * Controls the size of the zone at the first stage.\n\t *\n\t * @id 1726101892\n\t * @constraints Range: [1650 to 2000]\n\t * @default 1650\n\t */\n\tZoneSize_00: number;\n\n\t/**\n\t * ZONE SIZE 2\n\t * Controls the size of the zone at the second stage.\n\t *\n\t * @id 4126637072\n\t * @constraints Range: [1200 to 2000]\n\t * @default 1200\n\t */\n\tZoneSize_01: number;\n\n\t/**\n\t * ZONE SIZE 3\n\t * Controls the size of the zone at the third stage.\n\t *\n\t * @id 2050945192\n\t * @constraints Range: [800 to 2000]\n\t * @default 800\n\t */\n\tZoneSize_02: number;\n\n\t/**\n\t * ZONE SIZE 4\n\t * Controls the size of the zone at the fourth stage.\n\t *\n\t * @id 494621827\n\t * @constraints Range: [400 to 2000]\n\t * @default 400\n\t */\n\tZoneSize_03: number;\n\n\t/**\n\t * ZONE SIZE 5\n\t * Controls the size of the zone at the fifth stage.\n\t *\n\t * @id 3179700427\n\t * @constraints Range: [175 to 2000]\n\t * @default 175\n\t */\n\tZoneSize_04: number;\n\n\t/**\n\t * ZONE SIZE 6\n\t * Controls the size of the zone at the sixth stage.\n\t *\n\t * @id 2743600001\n\t * @constraints Range: [60 to 2000]\n\t * @default 60\n\t */\n\tZoneSize_05: number;\n\n\t/**\n\t * ZONE SIZE 7\n\t * Controls the size of the zone at the seventh stage.\n\t *\n\t * @id 3274338396\n\t * @constraints Range: [0 to 2000]\n\t * @default 0\n\t */\n\tZoneSize_06: number;\n\n\t/**\n\t * SECOND CHANCE DELAY\n\t * Controls how much delay the second chance has in seconds.\n\t *\n\t * @id 2064257196\n\t * @constraints Range: [29 to 60]\n\t * @default 29\n\t */\n\tBR_SecondChanceDelayTimer: number;\n\n\t/**\n\t * Disable Missions\n\t * Controls if missions are enabled or disabled.\n\t *\n\t * @id 1685318755\n\t */\n\tBR_Missions_DisableMissions: boolean;\n\n\t/**\n\t * Disable Respawn Towers\n\t * Controls if respawn towers are enabled or disabled.\n\t *\n\t * @id 4045121817\n\t */\n\tBR_DisableRespawnTower: boolean;\n\n\t/**\n\t * AI SQUAD REVIVE\n\t * Controls whether AI soldiers in a squad can revive other players in the squad, regardless of class or gadget.\n\t *\n\t * @id 3171571450\n\t */\n\tAI_SquadReviveAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * @id 722396075\n\t * @constraints Range: [-1 to 90]\n\t * @default -1\n\t */\n\tSpawnBalancing_GamemodeStartTimer: number;\n\n\t/**\n\t * @id 3464890382\n\t */\n\tPortal_UsePortalRingOfFireMutators: boolean;\n\n\t/**\n\t * Players Required to Start Lobby Timer\n\t * The minimum number of players required to start the lobby countdown timer\n\t *\n\t * @id 212789314\n\t * @constraints Range: [50 to 100]\n\t * @default 96\n\t */\n\tBR_LobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * Players Required To Start Quick Lobby Timer\n\t * The minimum amount of players required to start the quick lobby countdown timer, this is started when the higher player threshold is reached.\n\t *\n\t * @id 1896590494\n\t * @constraints Range: [50 to 100]\n\t * @default 96\n\t */\n\tBR_LobbyPlayerCountToSpeedUpTimer: number;\n\n\t/**\n\t * @id 3192277320\n\t * @constraints Range: [0.20000000298023224 to 500]\n\t * @default 1\n\t */\n\tVehicleSpawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 4132993187\n\t * @constraints Range: [0 to 1]\n\t * @default 1\n\t */\n\tSpawnBalancing_GamemodePlayerCountRatio: number;\n\n\t/**\n\t * @id 510030070\n\t * @constraints Range: [0 to 3]\n\t * @default 0\n\t */\n\tCrosshairType_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 3902436054\n\t */\n\tDisableKillCamUI: boolean;\n\n\t/**\n\t * CALL-IN VEHICLE COOLDOWN MULTIPLIER\n\t * Multiplies the default cooldown for call-in vehicles. Values below 1.0 make cooldowns faster, values above 1.0 make cooldowns longer.\n\t *\n\t * @id 745298605\n\t * @constraints Range: [0 to 100]\n\t * @default 1\n\t */\n\tVehicleCallInCoolDownMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * @id 449841308\n\t * @constraints Range: [0 to 0]\n\t * @default 1\n\t */\n\tFriendlyFireExplosiveDamageMultiplier: number;\n\n\t/**\n\t * @id 2978413856\n\t * @constraints Range: [4 to 48]\n\t * @default 4\n\t */\n\tCQ_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 1962565\n\t * @constraints Range: [4 to 48]\n\t * @default 4\n\t */\n\tBT_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 1463281593\n\t * @constraints Range: [4 to 48]\n\t * @default 4\n\t */\n\tRush_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 4222134728\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_Mica_MaxBackfillAICount: number;\n\n\t/**\n\t * Soldier Redeploy Delay\n\t * Sets the time it takes for soldiers to redeploy.\n\t *\n\t * @id 3207432275\n\t * @constraints Range: [8 to 30]\n\t * @default 16\n\t */\n\tPortal_GauntletBaseRedeployDelay: number;\n\n\t/**\n\t * Mission Time\n\t * Sets the maximum time for all the mission.\n\t *\n\t * @id 739148162\n\t * @constraints Range: [300 to 420]\n\t * @default 360\n\t */\n\tPortal_GauntletGlobalMissionTimer: number;\n\n\t/**\n\t * Standard Armor\n\t * Controls if Standard Armor is enabled or disabled.\n\t *\n\t * @id 4233667812\n\t */\n\tPortal_GauntletIsSoftArmorEnabled: boolean;\n\n\t/**\n\t * Qualification Threshold\n\t * Controls the amount of team disqualified at the end of each round. (Every teams tied for last will all be eliminated).\n\t *\n\t * @id 4202445796\n\t * @constraints Range: [1 to 2]\n\t * @default 2\n\t */\n\tPortal_GauntletNumberOfDisqualifiedTeamsPerRound: number;\n\n\t/**\n\t * @id 2328511542\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Beacons_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 2470925258\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Contract_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 547841244\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Circuit_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3916424605\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_CTF_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 2071192473\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_DataExtraction_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 2547134283\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Mission_DefaultBaseRedeployDelay: number;\n\n\t/**\n\t * @id 86448352\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Relay_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 1067942808\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Rodeo_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 828448612\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Standoff_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3570063746\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Vendetta_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3554522018\n\t * @constraints Range: [0 to 30]\n\t * @default 16\n\t */\n\tGauntlet_Wreckage_BaseRedeployDelay: number;\n\n\t/**\n\t * @id 3742609123\n\t */\n\tNewServerFetchQuestDefinitionsAtEor: boolean;\n\n\t/**\n\t * @id 1639766582\n\t */\n\tPortal_IsPortalVerifiedMode: boolean;\n\n\t/**\n\t * @id 2699056885\n\t * @constraints Range: [28 to 28]\n\t * @default 28\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Conquest: number;\n\n\t/**\n\t * @id 1478766565\n\t * @constraints Range: [20 to 20]\n\t * @default 20\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Breakthrough: number;\n\n\t/**\n\t * @id 475436411\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Rush: number;\n\n\t/**\n\t * Winter Mode\n\t * Enables Freeze Mechanic.\n\t *\n\t * @id 3245498713\n\t */\n\tWinterMode: boolean;\n\n\t/**\n\t * Winter Atmosphere\n\t * Enables the screen effect, map visuals and audio for the Empire State map.\n\t *\n\t * @id 3252054121\n\t */\n\tWinterShader: boolean;\n\n\t/**\n\t * @id 3685143182\n\t * @constraints Range: [6 to 100]\n\t * @default 28\n\t */\n\tGauntlet_LobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * @id 2898594069\n\t * @constraints Range: [6 to 100]\n\t * @default 32\n\t */\n\tGauntlet_LobbyPlayerCountToSpeedUpTimer: number;\n\n\t/**\n\t * @id 1185270375\n\t * @constraints Range: [0 to 99]\n\t * @default 0\n\t */\n\tPortal_GauntletMissionPool_Large: PerTeam<number>;\n\n\t/**\n\t * @id 1270957592\n\t * @constraints Range: [0 to 99]\n\t * @default 0\n\t */\n\tPortal_GauntletMissionPool_Medium: PerTeam<number>;\n\n\t/**\n\t * @id 142353163\n\t * @constraints Range: [0 to 99]\n\t * @default 0\n\t */\n\tPortal_GauntletMissionPool_Small: PerTeam<number>;\n\n\t/**\n\t * @id 3963219136\n\t * @constraints Range: [0 to 99]\n\t * @default 0\n\t */\n\tPortal_GauntletMissionPool_Duel: PerTeam<number>;\n\n\t/**\n\t * SUPPORT AI NAVIGATION\n\t * Controls whether AI can navigate the map, turning it off will decrease loading times.\n\t *\n\t * @id 1629366163\n\t */\n\tPortal_GenerateNavMesh: boolean;\n\n\t/**\n\t * Freeze Max Amount\n\t * Sets maximum amount of time required to fully build freeze status.\n\t *\n\t * @id 4250685829\n\t * @constraints Range: [0 to 5000]\n\t * @default 100\n\t */\n\tFreezeMaxAmount: number;\n\n\t/**\n\t * Freeze Spawn Protection Time\n\t * Freeze build up immunity window after deploying.\n\t *\n\t * @id 3537159765\n\t * @constraints Range: [0 to 10]\n\t * @default 5\n\t */\n\tFreeze_SpawnProtectionTime: number;\n\n\t/**\n\t * Freeze Damage Interval\n\t * Freeze damage tick interval.\n\t *\n\t * @id 1427692226\n\t * @constraints Range: [0 to 30]\n\t * @default 4\n\t */\n\tFreezeDamageInterval: number;\n\n\t/**\n\t * Freeze Build-Up In Water\n\t * Freeze build-up amount while in water.\n\t *\n\t * @id 3717641496\n\t * @constraints Range: [0 to 10]\n\t * @default 5\n\t */\n\tFreezeInWaterModifyer: number;\n\n\t/**\n\t * Freeze Build-Up While Moving\n\t * Freeze build-up amount while moving.\n\t *\n\t * @id 3550460112\n\t * @constraints Range: [0 to 10]\n\t * @default 1.7000000476837158\n\t */\n\tFreezeModifyer: number;\n\n\t/**\n\t * Freeze Build-Up While Stationary\n\t * Freeze build-up amount while not moving.\n\t *\n\t * @id 3503392189\n\t * @constraints Range: [0 to 10]\n\t * @default 2.5\n\t */\n\tFreezeNotMovingModifyer: number;\n\n\t/**\n\t * Freeze Build-Up While Sprinting\n\t * Freeze build up amount while sprinting.\n\t *\n\t * @id 2596530532\n\t * @constraints Range: [0 to 10]\n\t * @default 1.2000000476837158\n\t */\n\tFreezeSprintingModifyer: number;\n\n\t/**\n\t * Large Heat Source Modifier\n\t * Heat build-up for large heat sources (Heat barrel, incendiary grenades, etc).\n\t *\n\t * @id 968858745\n\t * @constraints Range: [0 to 100]\n\t * @default 19\n\t */\n\tHeat_LargeModifier: number;\n\n\t/**\n\t * Small Heat Source Modifier\n\t * Heat build-up amount for small heat source (blow torch).\n\t *\n\t * @id 4103656462\n\t * @constraints Range: [0 to 20]\n\t * @default 2\n\t */\n\tHeat_SmallModifier: number;\n\n\t/**\n\t * Stalemate Initial Phase Delay\n\t * Sets the amount of time required in the initial phase of the game to trigger a stalemate.\n\t *\n\t * @id 1292210144\n\t * @constraints Range: [100 to 200]\n\t * @default 180\n\t */\n\tESC_fStalematePredelay_PhaseStart_Round0: number;\n\n\t/**\n\t * Stalemate Subsequent Phases Delay\n\t * Sets the requirement amount of time in the later phases to trigger a stalemate.\n\t *\n\t * @id 1028028128\n\t * @constraints Range: [100 to 200]\n\t * @default 120\n\t */\n\tESC_fStalematePredelay_PhaseStart: number;\n\n\t/**\n\t * Stalemate Mid-Phase Delay\n\t * Sets the requirement amount of time in all phases to trigger a stalemate if either team has started to gain progress.\n\t *\n\t * @id 1497782118\n\t * @constraints Range: [30 to 90]\n\t * @default 60\n\t */\n\tESC_fStalematePredelay: number;\n\n\t/**\n\t * Stalemate Lower Threshold\n\t * Sets the lower threshold of time to trigger a stalemate.\n\t *\n\t * @id 77067359\n\t * @constraints Range: [15 to 45]\n\t * @default 30\n\t */\n\tESC_fStalemateLowerThreshold: number;\n\n\t/**\n\t * Stalemate Delay Decrement\n\t * Sets the amount of time the Mid-Phase delay is reduced by each time a stalemate happens.\n\t *\n\t * @id 3771433474\n\t * @constraints Range: [5 to 15]\n\t * @default 10\n\t */\n\tESC_fStaleMateDelayDecrement: number;\n\n\t/**\n\t * @id 32390539\n\t */\n\tExcludeAiFromLobbyPlayerCount: boolean;\n\n\t/**\n\t * @id 2526193892\n\t * @constraints Range: [4 to 64]\n\t * @default 4\n\t */\n\tOBL_MinPlayerCount: number;\n\n\t/**\n\t * @id 831821514\n\t * @constraints Range: [4 to 64]\n\t * @default 64\n\t */\n\tOBL_TargetPlayerCount: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round\n\t *\n\t * @id 4017546121\n\t * @constraints Range: [25 to 40]\n\t * @default 25\n\t */\n\tOBL_MaxMatchDurationMins: number;\n\n\t/**\n\t * Bomb Carrier Allowed in HQ Sector\n\t * If enabled the player carrying the bomb will be considered Out of Bounds when they enter the friendly HQ Sector.\n\t *\n\t * @id 3370499063\n\t */\n\tOBL_IsFriendlyHQOOBForCarrier: boolean;\n\n\t/**\n\t * Mid-Match Delay\n\t * Sets the amount of time to switch from the start of match bomb count to middle of the match bomb count.\n\t *\n\t * @id 2242805129\n\t * @constraints Range: [360 to 2400]\n\t * @default 1050\n\t */\n\tOBL_DelayBeforeMidMatchBombs: number;\n\n\t/**\n\t * Bomb Mid-Match Amount\n\t * Sets the amount of bombs that can be active later in the match.\n\t *\n\t * @id 911973520\n\t * @constraints Range: [1 to 5]\n\t * @default 2\n\t */\n\tOBL_MidMatchBombCount: number;\n\n\t/**\n\t * Bombs Start Amount\n\t * Sets the number of bombs that can be active at the same time at the beginning of the match.\n\t *\n\t * @id 622704227\n\t * @constraints Range: [1 to 5]\n\t * @default 1\n\t */\n\tOBL_BombCountAtStart: number;\n\n\t/**\n\t * @id 3173895056\n\t * @constraints Range: [4 to 48]\n\t * @default 4\n\t */\n\tESC_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * Sprays\n\t * Enables or disables the use of sprays.\n\t *\n\t * @id 2070170860\n\t */\n\tPortal_AllowSprays: boolean;\n\n\t/**\n\t * GOLMUD TRAIN VARIANT\n\t * Sets which train variant will appear in the Railway to Golmud map.\n\t *\n\t * @id 2479102022\n\t * @constraints Allowed Values: 0, 1, 2, 3\n\t * @value 0 None\n\t * @value 1 Moving Train\n\t * @value 2 Static Train (Breakthrough)\n\t * @value 3 Static Train (Rush)\n\t * @default 0\n\t */\n\tPortal_GolmudRailway_Variant: GolmudTrainVariant;\n\n\t/**\n\t * @id 1276582718\n\t * @constraints Range: [0 to 48]\n\t * @default 48\n\t */\n\tSpawnBalancing_MaxBackfillAICount_ModbuilderCustom: number;\n\n\t/**\n\t * @id 3624680003\n\t * @constraints Range: [4 to 16]\n\t * @default 4\n\t */\n\tSDM_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round.\n\t *\n\t * @id 1283337146\n\t * @constraints Range: [10 to 45]\n\t * @default 15\n\t */\n\tSDM_fRoundTime: number;\n\n\t/**\n\t * TARGET SCORE\n\t * Sets the maximum score for the round.\n\t *\n\t * @id 371267867\n\t * @constraints Range: [40 to 250]\n\t * @default 50\n\t */\n\tSDM_iTargetScore: number;\n\n\t/**\n\t * @id 3706590196\n\t * @constraints Range: [4 to 16]\n\t * @default 4\n\t */\n\tTDM_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round\n\t *\n\t * @id 3661144175\n\t * @constraints Range: [10 to 45]\n\t * @default 15\n\t */\n\tTDM_fRoundTime: number;\n\n\t/**\n\t * TARGET SCORE\n\t * Sets the maximum score for the round\n\t *\n\t * @id 1791834452\n\t * @constraints Range: [80 to 500]\n\t * @default 100\n\t */\n\tTDM_iTargetScore: number;\n\n\t/**\n\t * @id 1464363688\n\t * @constraints Range: [4 to 16]\n\t * @default 4\n\t */\n\tSQOBL_MinPlayerCount: number;\n\n\t/**\n\t * @id 1054150059\n\t * @constraints Range: [4 to 16]\n\t * @default 16\n\t */\n\tSQOBL_TargetPlayerCount: number;\n\n\t/**\n\t * GAME TIME\n\t * Sets the maximum time (in minutes) for the round\n\t *\n\t * @id 2838568645\n\t * @constraints Range: [15 to 40]\n\t * @default 15\n\t */\n\tSQOBL_MaxMatchDurationMins: number;\n\n\t/**\n\t * Bomb Carrier Allowed in HQ Sector\n\t * If enabled the player carrying the bomb will be considered Out of Bounds when they enter the friendly HQ Sector.\n\t *\n\t * @id 2634624451\n\t */\n\tSQOBL_IsFriendlyHQOOBForCarrier: boolean;\n\n\t/**\n\t * Water Level Multiplier\n\t * Sets the multiplier for the water height in the level, by default the water is at height 100.\n\t *\n\t * @id 2137090158\n\t * @constraints Range: [0 to 2]\n\t * @default 1\n\t */\n\tPortal_WaterLevelMultiplier: number;\n\n\t/**\n\t * Beaufort Scale Multiplier\n\t * Sets the water beaufort scale, higher values map to storm weather.\n\t *\n\t * @id 3503231021\n\t * @constraints Range: [0 to 12]\n\t * @default 1\n\t */\n\tPortal_WaterBeaufortScaleMultiplier: number;\n\n\t/**\n\t * Wave Amplitude Multiplier\n\t * Controls the amplitude of the waves, higher values map to bigger waves.\n\t *\n\t * @id 860826065\n\t * @constraints Range: [0 to 4]\n\t * @default 1\n\t */\n\tPortal_WaterWaveAmplitudeMultiplier: number;\n\n\t/**\n\t * Aircraft Carrier Variation\n\t * Sets the Aircraft Carrier variation for the map Tsuru Reef.\n\t *\n\t * @id 3778597997\n\t * @constraints Allowed Values: 0, 1, 2\n\t * @value 0 None\n\t * @value 1 Conquest\n\t * @value 2 Carrier Strike\n\t * @default 0\n\t */\n\tPortal_Isolated_AircraftCarrierType: AircraftCarrierType;\n\n\t/**\n\t * Tank Key Reward\n\t * Sets if vehicle keys can be given out as mission rewards.\n\t *\n\t * @id 2137373306\n\t */\n\tReward_TankKey_Mutator: boolean;\n\n\t/**\n\t * Disable Vehicle Keycards\n\t * Controls if missions can reward players with vehicle keycards and from appearing in loot.\n\t *\n\t * @id 2760789921\n\t */\n\tResource_Vehicle_Keycard_Loot: boolean;\n\n\t/**\n\t * Vehicle Trailers\n\t * Sets if vehicle trailers spawn on the map, when disabled they won't appear.\n\t *\n\t * @id 4131197692\n\t */\n\tGranite_BR_VehicleTrailersEnabled: boolean;\n\n\t/**\n\t * Lower Threshold Startup Timer\n\t * Sets the time delay for the match to start once the lower player threshold is reached, a grace timer of two seconds will be added to this value.\n\t *\n\t * @id 3865840349\n\t * @constraints Range: [0 to 120]\n\t * @default 60\n\t */\n\tGranite_FillServer_LongTime: number;\n\n\t/**\n\t * Higher Threshold Startup Timer\n\t * Sets the time delay for the match to start once the higher player threshold is reached, a grace timer of two seconds will be added to this value.\n\t *\n\t * @id 385425395\n\t * @constraints Range: [0 to 20]\n\t * @default 10\n\t */\n\tGranite_FillServer_ShortTime: number;\n\n\t/**\n\t * Unlimited Underwater Breathing\n\t * Toggles if the soldier can get killed by drowning.\n\t *\n\t * @id 2455687785\n\t */\n\tPortal_EnableUnlimitedUnderwater: boolean;\n\n\t/**\n\t * Underwater Breath Time\n\t * Sets the amount of time the soldier can breath underwater before they start drowning.\n\t *\n\t * @id 604359646\n\t * @constraints Range: [0 to 40]\n\t * @default 12\n\t */\n\tSwimming_UnderwaterBreathTime: number;\n\n\t/**\n\t * Disable MAS 148 Glaive\n\t * Sets if the MAS 148 Glaive is disabled from appearing in loot.\n\t *\n\t * @id 2543012355\n\t */\n\tGadget_Javelin: boolean;\n\n\t/**\n\t * Objective Capture Time\n\t * The number of seconds it takes to capture an objective.\n\t *\n\t * @id 2149172584\n\t * @constraints Range: [5 to 30]\n\t * @default 10\n\t */\n\tKOTH_fCaptureTime: number;\n\n\t/**\n\t * Target Score\n\t * Sets the maximum score for the round.\n\t *\n\t * @id 1358416571\n\t * @constraints Range: [150 to 1000]\n\t * @default 250\n\t */\n\tKOTH_iTargetScore: number;\n\n\t/**\n\t * Game Time\n\t * Sets the maximum time (in minutes) for the round.\n\t *\n\t * @id 2652356176\n\t * @constraints Range: [8 to 60]\n\t * @default 10\n\t */\n\tKOTH_fRoundTime: number;\n\n\t/**\n\t * Players Required to Start Lobby Timer.\n\t * The minimum number of players required to start the lobby countdown timer.\n\t *\n\t * @id 2451013796\n\t * @constraints Range: [4 to 16]\n\t * @default 4\n\t */\n\tKOTH_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t *\n\t *\n\t * @id 2881162613\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_MaxBackfillAICount_KOTH: number;\n\n\t/**\n\t * Objective Capture Time\n\t * The number of seconds it takes to capture an objective.\n\t *\n\t * @id 3785210787\n\t * @constraints Range: [5 to 30]\n\t * @default 10\n\t */\n\tDOM_fCaptureTime: number;\n\n\t/**\n\t * Target Score\n\t * Sets the maximum score for the round.\n\t *\n\t * @id 4028138858\n\t * @constraints Range: [150 to 1000]\n\t * @default 200\n\t */\n\tDOM_fScoreTarget: number;\n\n\t/**\n\t * Game Time\n\t * Sets the maximum time (in minutes) for the round.\n\t *\n\t * @id 791506982\n\t * @constraints Range: [10 to 60]\n\t * @default 15\n\t */\n\tDOM_fRoundtime: number;\n\n\t/**\n\t * Players Required to Start Lobby Timer.\n\t * The minimum number of players required to start the lobby countdown timer.\n\t *\n\t * @id 3894574769\n\t * @constraints Range: [4 to 16]\n\t * @default 4\n\t */\n\tDOM_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t *\n\t *\n\t * @id 1371524249\n\t * @constraints Range: [12 to 12]\n\t * @default 12\n\t */\n\tSpawnBalancing_MaxBackfillAICount_Domination: number;\n\n\t/**\n\t * Objective Capture Time\n\t * The number of seconds it takes to capture an objective.\n\t *\n\t * @id 16734930\n\t * @constraints Range: [5 to 30]\n\t * @default 10\n\t */\n\tCS_fCaptureTime: number;\n\n\t/**\n\t * Game Time\n\t * Sets the maximum time (in minutes) for the round.\n\t *\n\t * @id 4028066941\n\t * @constraints Range: [20 to 120]\n\t * @default 25\n\t */\n\tCS_iModeTime: number;\n\n\t/**\n\t * Players Required to Start Lobby Timer.\n\t * The minimum number of players required to start the lobby countdown timer.\n\t *\n\t * @id 41034410\n\t * @constraints Range: [4 to 64]\n\t * @default 4\n\t */\n\tCS_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * GraniteBR_DisableTimeSlicedWideCustomizationInitializations\n\t *\n\t * @id 564454852\n\t */\n\tDisableTimeSlicedWideCustomizationInitializations: boolean;\n\n\t/**\n\t * Enable Boundary Fog\n\t * Enable out-of-bounds fog, will hide the areas outside of the active play space on the map\n\t *\n\t * @id 1157466661\n\t */\n\tbPortal_EnableOOBFog: boolean;\n\n\t/**\n\t * Enable Hotzones\n\t * Controls if the map has high value areas, these areas contain improved loot.\n\t *\n\t * @id 3981709921\n\t */\n\tGraniteBR_HotZonesEnabled: boolean;\n\n\t/**\n\t * Loot Reveal\n\t * Controls if loot is revealed on initial landings and respawns.\n\t *\n\t * @id 3664824081\n\t */\n\tGraniteBR_LootRevealOnSpawn_Enabled: boolean;\n};\n","import type { AssetRestrictions } from \"./asset-restrictions/index.ts\";\nimport type { Mutators } from \"./mutators/index.ts\";\n\nexport * from \"./asset-restrictions/index.ts\";\nexport * from \"./mutators/index.ts\";\n\n/**\n * Represents a value that can either apply globally or per team.\n * - Global: a single scalar (e.g., `true`, `5`, `1.2`)\n * - Per team: an array of `[teamIndex, value]` tuples\n */\nexport type PerTeam<T> = T | [number, T][];\n\nexport enum AttachmentType {\n\tSpatialData = 1,\n\tTypeScript = 2,\n\tStrings = 4,\n}\n\n/**\n * Represents a map resource within the game or editor.\n */\nexport type MapType = {\n\t/**\n\t * Unique identifier for the map.\n\t */\n\tid: string;\n\n\t/**\n\t * Spatial attachment data containing map metadata, versioning,\n\t * and processing information.\n\t */\n\tspatialAttachment: {\n\t\t/**\n\t\t * Unique identifier for the spatial attachment.\n\t\t */\n\t\tid: string;\n\n\t\t/**\n\t\t * Original filename of the attachment.\n\t\t */\n\t\tfilename: string;\n\n\t\t/**\n\t\t * Additional metadata describing the attachment\n\t\t */\n\t\tmetadata: string;\n\n\t\t/**\n\t\t * Version string representing the attachment's iteration or schema version.\n\t\t */\n\t\tversion: string;\n\n\t\t/**\n\t\t * Whether the attachment is processable\n\t\t */\n\t\tisProcessable: boolean;\n\n\t\t/**\n\t\t * Numeric code describing the attachment's current processing status.\n\t\t */\n\t\tprocessingStatus: number;\n\n\t\t/**\n\t\t * Raw data associated with the attachment.\n\t\t * May include both original and compiled forms.\n\t\t */\n\t\tattachmentData: {\n\t\t\t/**\n\t\t\t * This is encoded in base64\n\t\t\t */\n\t\t\toriginal: string;\n\n\t\t\t/**\n\t\t\t * This is encoded in base64\n\t\t\t */\n\t\t\tcompiled: string;\n\t\t};\n\n\t\t/**\n\t\t * Type of attachment\n\t\t */\n\t\tattachmentType: AttachmentType;\n\n\t\t/**\n\t\t * Any errors encountered during processing or validation.\n\t\t */\n\t\terrors: unknown[];\n\t};\n};\n\n/**\n * Represents the workspace structure for a mod or custom experience.\n */\nexport type Workspace = {\n\tmod: {\n\t\t/**\n\t\t * Describes block-based scripting data (e.g., visual logic definitions).\n\t\t */\n\t\tblocks: {\n\t\t\t/**\n\t\t\t * Version number of the block language schema (e.g., Blockly or internal DSL version).\n\t\t\t */\n\t\t\tlanguageVersion: number;\n\n\t\t\t/**\n\t\t\t * Array of block definitions representing visual scripting logic.\n\t\t\t */\n\t\t\tblocks: unknown[];\n\t\t};\n\n\t\t/**\n\t\t * List of variables defined within the workspace.\n\t\t */\n\t\tvariables: {\n\t\t\t/**\n\t\t\t * Human-readable name of the variable.\n\t\t\t */\n\t\t\tname: string;\n\n\t\t\t/**\n\t\t\t * Unique identifier of the variable.\n\t\t\t */\n\t\t\tid: string;\n\n\t\t\t/**\n\t\t\t * Variable type or data category (e.g., \"Global\").\n\t\t\t */\n\t\t\ttype: string;\n\t\t}[];\n\t};\n};\n\n/**\n * Describes the configuration of a single team in the game.\n * Each entry represents a team index and its composition limits.\n */\nexport type TeamComposition = [\n\t/**\n\t * The team index (e.g., 0–3 depending on the number of teams).\n\t */\n\tnumber,\n\t{\n\t\t/**\n\t\t * Maximum number of human players allowed on this team.\n\t\t */\n\t\thumanCapacity: number;\n\n\t\t/**\n\t\t * Maximum number of AI bots allowed on this team.\n\t\t */\n\t\taiCapacity?: number;\n\n\t\t/**\n\t\t * Type of AI assigned to this team.\n\t\t * Unknown what any other value than 1 means. If you are aware, please create an issue\n\t\t */\n\t\taiType?: 0 | 1;\n\t},\n];\n\n/**\n * Represents a collection of attachments associated with a map or project.\n * Each attachment can include original and compiled data, metadata,\n * and information about its processing status.\n */\nexport type Attachment = {\n\t/**\n\t * Unique identifier for this attachment.\n\t */\n\tid: string;\n\n\t/**\n\t * Version string or numeric revision of the attachment.\n\t */\n\tversion: string;\n\n\t/**\n\t * Name of the file represented by this attachment.\n\t */\n\tfilename: string;\n\n\t/**\n\t * Indicates whether this attachment can be processed (compiled or validated).\n\t */\n\tisProcessable: boolean;\n\n\t/**\n\t * Numeric code describing the current processing status of the attachment.\n\t */\n\tprocessingStatus: number;\n\n\t/**\n\t * Container for raw and compiled forms of the attachment data.\n\t */\n\tattachmentData: {\n\t\t/**\n\t\t * Base64-encoded JSON string containing the original (unprocessed) data.\n\t\t */\n\t\toriginal: string;\n\n\t\t/**\n\t\t * Base64-encoded JSON string containing the compiled or processed version.\n\t\t */\n\t\tcompiled: string;\n\t};\n\n\t/**\n\t * Numeric or string identifier describing the type of attachment.\n\t * For example, `1` may represent a map attachment.\n\t */\n\tattachmentType: AttachmentType;\n\n\t/**\n\t * Arbitrary metadata string associated with this attachment.\n\t * May contain additional parameters (e.g., \"mapIdx=5\").\n\t */\n\tmetadata?: string;\n\n\t/**\n\t * Any errors encountered while processing or validating this attachment.\n\t */\n\terrors: unknown[];\n};\n\n/**\n * Represents the configuration structure for a BF6 mod project.\n * This defines all high-level metadata, gameplay modifiers, asset restrictions,\n * and references to related attachments or workspace details.\n */\nexport type ConfigType = {\n\t/**\n\t * Optional set of mutator overrides or customizations.\n\t * Each key corresponds to a mutator category or setting that modifies gameplay rules.\n\t */\n\tmutators?: Partial<Mutators>;\n\n\t/**\n\t * Optional restrictions applied to in-game assets.\n\t * Used to limit or enable specific weapons, vehicles, or classes.\n\t */\n\tassetRestrictions?: Partial<AssetRestrictions>;\n\n\t/**\n\t * Display name of the mod project or configuration.\n\t */\n\tname: string;\n\n\t/**\n\t * Brief description of the mod, shown in the mod browser or editor.\n\t */\n\tdescription: string;\n\n\t/**\n\t * Optional list of maps included in this configuration’s rotation.\n\t * Each entry defines a playable map and its associated parameters.\n\t */\n\tmapRotation?: MapType[];\n\n\t/**\n\t * Optional workspace configuration defining project metadata,\n\t * environment paths, and editor state for the mod.\n\t */\n\tworkspace?: Workspace;\n\n\t/**\n\t * Defines team composition for this configuration.\n\t * IMPORTANT! Note that each teamComposition MUST be 1 greater than the team ID.\n\t */\n\tteamComposition?: TeamComposition[];\n\n\t/**\n\t * Specifies the game mode type this configuration belongs to.\n\t * Usually \"ModBuilderCustom\" for user-created modes.\n\t */\n\tgameMode?: \"ModBuilderCustom\";\n\n\t/**\n\t * Array of attachment objects containing spatial or file data\n\t * such as blueprints, scene files, or custom resource definitions.\n\t */\n\tattachments?: Attachment[];\n};\n","// export * from './store';\n\nexport function Concat(s1: string, s2: string) {\n return s1 + s2;\n}\n\nexport function And(...rest: boolean[]): boolean {\n for (let i = 0; i < rest.length; i++) {\n const cond = rest[i];\n if (!cond) return false;\n }\n return true;\n}\n\ntype ConditionFunction = () => boolean;\n\nexport function AndFn(...rest: ConditionFunction[]): boolean {\n for (let i = 0; i < rest.length; i++) {\n const condFn = rest[i];\n if (!condFn()) return false;\n }\n return true;\n}\n\nexport function getPlayerId(player: mod.Player): number {\n return mod.GetObjId(player);\n}\n\nexport function getTeamId(team: mod.Team): number {\n return mod.GetObjId(team);\n}\n\nexport function ConvertArray(array: mod.Array): any[] {\n let v = [];\n let n = mod.CountOf(array);\n for (let i = 0; i < n; i++) {\n let currentElement = mod.ValueInArray(array, i);\n v.push(currentElement);\n }\n return v;\n}\n\nexport function FilteredArray(array: mod.Array, cond: (currentElement: any) => boolean): mod.Array {\n const arr = ConvertArray(array);\n let v = mod.EmptyArray();\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentElement = arr[i];\n if (cond(currentElement)) v = mod.AppendToArray(v, currentElement);\n }\n return v;\n}\n\nexport function IndexOfFirstTrue(array: mod.Array, cond: (element: any, arg: any) => boolean, arg: any = null): number {\n const arr = ConvertArray(array);\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentArrayElement = arr[i];\n if (cond(currentArrayElement, arg)) return i;\n }\n return -1;\n}\n\nexport function IfThenElse<T>(condition: boolean, ifTrue: () => T, ifFalse: () => T) {\n if (condition) return ifTrue();\n else return ifFalse();\n}\n\nexport function IsTrueForAll(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\n const arr = ConvertArray(array);\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentArrayElement = arr[i];\n if (!condition(currentArrayElement, arg)) return false;\n }\n return true;\n}\n\nexport function IsTrueForAny(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\n const arr = ConvertArray(array);\n let n = arr.length;\n for (let i = 0; i < n; i++) {\n let currentArrayElement = arr[i];\n if (condition(currentArrayElement, arg)) return true;\n }\n return false;\n}\n\nexport function SortedArray(array: any[], compare: (a: any, b: any) => number) {\n let v1 = array.slice();\n v1.sort(compare);\n let v2 = [];\n for (let e of v1) v2.push(e);\n return v2;\n}\n\nexport function Equals(a: any, b: any) {\n if (a == null || b == null) debugger;\n return mod.Equals(a, b);\n}\n\n// Waits for a provided number of seconds or if the provided condition evaluates to true during that interval.\nexport async function WaitUntil(delay: number, cond: () => boolean) {\n // rush hack. this will likely wait too long and other problems.\n const interval = 0.2; // seconds\n const checks = Math.ceil(delay / interval);\n for (let t = 0; t < checks; t++) {\n if (cond()) break;\n await mod.Wait(interval);\n }\n}\n\nexport class ConditionState {\n lastState: boolean;\n\n constructor() {\n this.lastState = false;\n }\n\n update(newState: boolean): boolean {\n // if the new state is false then reset last state and don't trigger action\n if (!newState) {\n this.lastState = false;\n return false;\n }\n // if last state was already true then don't trigger\n if (this.lastState) return false;\n // if the state just transitioned to true then trigger\n this.lastState = true;\n return true;\n }\n}\n\nexport class SimpleConditionState {\n update(newState: boolean): boolean {\n // no edge detection\n return newState;\n }\n}\n\nclass Conditions {\n constructor() {\n this.conditionStates = [];\n }\n\n conditionStates: ConditionState[];\n\n getConditionState(n: number): ConditionState {\n while (n >= this.conditionStates.length) {\n this.conditionStates.push(new ConditionState());\n }\n return this.conditionStates[n];\n }\n}\n\nlet playerConditions: Conditions[] = [];\nlet teamConditions: Conditions[] = [];\nlet capturePointConditions: Conditions[] = [];\nlet mcomConditions: Conditions[] = [];\nlet vehicleConditions: Conditions[] = [];\nlet hqConditions: Conditions[] = [];\nlet sectorConditions: Conditions[] = [];\nlet vehicleSpawnerConditions: Conditions[] = [];\n\nlet globalConditions: Conditions = new Conditions();\nlet simpleCondition: SimpleConditionState = new SimpleConditionState();\n\nfunction getObjectCondition(id: number, objectConditions: Conditions[], n: number) {\n while (id >= objectConditions.length) {\n objectConditions.push(new Conditions());\n }\n let conditions = objectConditions[id];\n return conditions.getConditionState(n);\n}\n\nexport function getPlayerCondition(obj: mod.Player, n: number) {\n let id = getPlayerId(obj);\n while (id >= playerConditions.length) {\n playerConditions.push(new Conditions());\n }\n let conditions = playerConditions[id];\n return conditions.getConditionState(n);\n}\n\nexport function getTeamCondition(team: mod.Team, n: number) {\n let id = getTeamId(team);\n while (id >= teamConditions.length) {\n teamConditions.push(new Conditions());\n }\n let conditions = teamConditions[id];\n return conditions.getConditionState(n);\n}\n\nexport function getCapturePointCondition(obj: mod.CapturePoint, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, capturePointConditions, n);\n}\n\nexport function getMCOMCondition(obj: mod.MCOM, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, mcomConditions, n);\n}\n\nexport function getVehicleCondition(obj: mod.Vehicle, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, vehicleConditions, n);\n}\n\nexport function getHQCondition(obj: mod.HQ, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, hqConditions, n);\n}\n\nexport function getSectorCondition(obj: mod.Sector, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, sectorConditions, n);\n}\n\nexport function getVehicleSpawnerCondition(obj: mod.VehicleSpawner, n: number) {\n let id = mod.GetObjId(obj);\n return getObjectCondition(id, vehicleSpawnerConditions, n);\n}\n\nexport function getGlobalCondition(n: number) {\n return globalConditions.getConditionState(n);\n}\n\nexport function getSimpleCondition() {\n return simpleCondition;\n}\n\nexport function getPlayersInTeam(teamObj: mod.Team) {\n const team = mod.GetObjId(teamObj);\n const allPlayers = mod.AllPlayers();\n const n = mod.CountOf(allPlayers);\n let teamMembers = [];\n\n for (let i = 0; i < n; i++) {\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\n if (mod.GetObjId(mod.GetTeam(player)) == team) {\n teamMembers.push(player);\n }\n }\n return teamMembers;\n}\n\n//-----------------------------------------------------------------------------------------------//\n//-----------------------------------------------------------------------------------------------//\n//-----------------------------------------------------------------------------------------------//\n//-----------------------------------------------------------------------------------------------//\n// Helper functions to create UI from a JSON object tree:\n//-----------------------------------------------------------------------------------------------//\n\ntype UIVector = mod.Vector | number[];\n\ninterface UIParams {\n name: string;\n type: string;\n position: any;\n size: any;\n anchor: mod.UIAnchor;\n parent: mod.UIWidget;\n visible: boolean;\n textLabel: string;\n textColor: UIVector;\n textAlpha: number;\n textSize: number;\n textAnchor: mod.UIAnchor;\n padding: number;\n bgColor: UIVector;\n bgAlpha: number;\n bgFill: mod.UIBgFill;\n imageType: mod.UIImageType;\n imageColor: UIVector;\n imageAlpha: number;\n teamId?: mod.Team;\n playerId?: mod.Player;\n children?: any[];\n buttonEnabled: boolean;\n buttonColorBase: UIVector;\n buttonAlphaBase: number;\n buttonColorDisabled: UIVector;\n buttonAlphaDisabled: number;\n buttonColorPressed: UIVector;\n buttonAlphaPressed: number;\n buttonColorHover: UIVector;\n buttonAlphaHover: number;\n buttonColorFocused: UIVector;\n buttonAlphaFocused: number;\n}\n\nfunction __asModVector(param: number[] | mod.Vector) {\n if (Array.isArray(param)) return mod.CreateVector(param[0], param[1], param.length == 2 ? 0 : param[2]);\n else return param;\n}\n\nfunction __asModMessage(param: string | mod.Message) {\n if (typeof param === 'string') return mod.Message(param);\n return param;\n}\n\nfunction __fillInDefaultArgs(params: UIParams) {\n if (!params.hasOwnProperty('name')) params.name = '';\n if (!params.hasOwnProperty('position')) params.position = mod.CreateVector(0, 0, 0);\n if (!params.hasOwnProperty('size')) params.size = mod.CreateVector(100, 100, 0);\n if (!params.hasOwnProperty('anchor')) params.anchor = mod.UIAnchor.TopLeft;\n if (!params.hasOwnProperty('parent')) params.parent = mod.GetUIRoot();\n if (!params.hasOwnProperty('visible')) params.visible = true;\n if (!params.hasOwnProperty('padding')) params.padding = params.type == 'Container' ? 0 : 8;\n if (!params.hasOwnProperty('bgColor')) params.bgColor = mod.CreateVector(0.25, 0.25, 0.25);\n if (!params.hasOwnProperty('bgAlpha')) params.bgAlpha = 0.5;\n if (!params.hasOwnProperty('bgFill')) params.bgFill = mod.UIBgFill.Solid;\n}\n\nfunction __setNameAndGetWidget(uniqueName: any, params: any) {\n let widget = mod.FindUIWidgetWithName(uniqueName) as mod.UIWidget;\n mod.SetUIWidgetName(widget, params.name);\n return widget;\n}\n\nconst __cUniqueName = '----uniquename----';\n\nfunction __addUIContainer(params: UIParams) {\n __fillInDefaultArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIContainer(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n restrict\n );\n } else {\n mod.AddUIContainer(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill\n );\n }\n let widget = __setNameAndGetWidget(__cUniqueName, params);\n if (params.children) {\n params.children.forEach((childParams: any) => {\n childParams.parent = widget;\n __addUIWidget(childParams);\n });\n }\n return widget;\n}\n\nfunction __fillInDefaultTextArgs(params: UIParams) {\n if (!params.hasOwnProperty('textLabel')) params.textLabel = '';\n if (!params.hasOwnProperty('textSize')) params.textSize = 0;\n if (!params.hasOwnProperty('textColor')) params.textColor = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('textAlpha')) params.textAlpha = 1;\n if (!params.hasOwnProperty('textAnchor')) params.textAnchor = mod.UIAnchor.CenterLeft;\n}\n\nfunction __addUIText(params: UIParams) {\n __fillInDefaultArgs(params);\n __fillInDefaultTextArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIText(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n __asModMessage(params.textLabel),\n params.textSize,\n __asModVector(params.textColor),\n params.textAlpha,\n params.textAnchor,\n restrict\n );\n } else {\n mod.AddUIText(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n __asModMessage(params.textLabel),\n params.textSize,\n __asModVector(params.textColor),\n params.textAlpha,\n params.textAnchor\n );\n }\n return __setNameAndGetWidget(__cUniqueName, params);\n}\n\nfunction __fillInDefaultImageArgs(params: any) {\n if (!params.hasOwnProperty('imageType')) params.imageType = mod.UIImageType.None;\n if (!params.hasOwnProperty('imageColor')) params.imageColor = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('imageAlpha')) params.imageAlpha = 1;\n}\n\nfunction __addUIImage(params: UIParams) {\n __fillInDefaultArgs(params);\n __fillInDefaultImageArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIImage(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.imageType,\n __asModVector(params.imageColor),\n params.imageAlpha,\n restrict\n );\n } else {\n mod.AddUIImage(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.imageType,\n __asModVector(params.imageColor),\n params.imageAlpha\n );\n }\n return __setNameAndGetWidget(__cUniqueName, params);\n}\n\nfunction __fillInDefaultArg(params: any, argName: any, defaultValue: any) {\n if (!params.hasOwnProperty(argName)) params[argName] = defaultValue;\n}\n\nfunction __fillInDefaultButtonArgs(params: any) {\n if (!params.hasOwnProperty('buttonEnabled')) params.buttonEnabled = true;\n if (!params.hasOwnProperty('buttonColorBase')) params.buttonColorBase = mod.CreateVector(0.7, 0.7, 0.7);\n if (!params.hasOwnProperty('buttonAlphaBase')) params.buttonAlphaBase = 1;\n if (!params.hasOwnProperty('buttonColorDisabled')) params.buttonColorDisabled = mod.CreateVector(0.2, 0.2, 0.2);\n if (!params.hasOwnProperty('buttonAlphaDisabled')) params.buttonAlphaDisabled = 0.5;\n if (!params.hasOwnProperty('buttonColorPressed')) params.buttonColorPressed = mod.CreateVector(0.25, 0.25, 0.25);\n if (!params.hasOwnProperty('buttonAlphaPressed')) params.buttonAlphaPressed = 1;\n if (!params.hasOwnProperty('buttonColorHover')) params.buttonColorHover = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('buttonAlphaHover')) params.buttonAlphaHover = 1;\n if (!params.hasOwnProperty('buttonColorFocused')) params.buttonColorFocused = mod.CreateVector(1, 1, 1);\n if (!params.hasOwnProperty('buttonAlphaFocused')) params.buttonAlphaFocused = 1;\n}\n\nfunction __addUIButton(params: UIParams) {\n __fillInDefaultArgs(params);\n __fillInDefaultButtonArgs(params);\n let restrict = params.teamId ?? params.playerId;\n if (restrict) {\n mod.AddUIButton(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.buttonEnabled,\n __asModVector(params.buttonColorBase),\n params.buttonAlphaBase,\n __asModVector(params.buttonColorDisabled),\n params.buttonAlphaDisabled,\n __asModVector(params.buttonColorPressed),\n params.buttonAlphaPressed,\n __asModVector(params.buttonColorHover),\n params.buttonAlphaHover,\n __asModVector(params.buttonColorFocused),\n params.buttonAlphaFocused,\n restrict\n );\n } else {\n mod.AddUIButton(\n __cUniqueName,\n __asModVector(params.position),\n __asModVector(params.size),\n params.anchor,\n params.parent,\n params.visible,\n params.padding,\n __asModVector(params.bgColor),\n params.bgAlpha,\n params.bgFill,\n params.buttonEnabled,\n __asModVector(params.buttonColorBase),\n params.buttonAlphaBase,\n __asModVector(params.buttonColorDisabled),\n params.buttonAlphaDisabled,\n __asModVector(params.buttonColorPressed),\n params.buttonAlphaPressed,\n __asModVector(params.buttonColorHover),\n params.buttonAlphaHover,\n __asModVector(params.buttonColorFocused),\n params.buttonAlphaFocused\n );\n }\n return __setNameAndGetWidget(__cUniqueName, params);\n}\n\nfunction __addUIWidget(params: UIParams) {\n if (params == null) return undefined;\n if (params.type == 'Container') return __addUIContainer(params);\n else if (params.type == 'Text') return __addUIText(params);\n else if (params.type == 'Image') return __addUIImage(params);\n else if (params.type == 'Button') return __addUIButton(params);\n return undefined;\n}\n\nexport function ParseUI(...params: any[]) {\n let widget: mod.UIWidget | undefined;\n for (let a = 0; a < params.length; a++) {\n widget = __addUIWidget(params[a] as UIParams);\n }\n return widget;\n}\n\nexport function DisplayCustomNotificationMessage(msg: mod.Message, custom: mod.CustomNotificationSlots, duration: number, target?: mod.Player | mod.Team) {\n const CreateHeader = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(50, 250 + slot * (40 + 5), 0),\n mod.CreateVector(250, 60, 0),\n mod.UIAnchor.TopRight,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n msg,\n 30,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center,\n targetPlayer\n );\n if (duration > 0) {\n await mod.Wait(duration);\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\n }\n };\n const CreateSubText = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(85, 270 + slot * (40 + 3), 0),\n mod.CreateVector(125, 40, 0),\n mod.UIAnchor.TopRight,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n msg,\n 20,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center,\n targetPlayer\n );\n if (duration > 0) {\n await mod.Wait(duration);\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\n }\n };\n const createNotificationFunction = custom < 1 ? CreateHeader : CreateSubText;\n\n if (target) {\n // if target is player, fill message in their slot\n if (mod.IsType(target, mod.Types.Player)) {\n const widgetId = custom + String(target);\n createNotificationFunction(widgetId, msg, target as mod.Player, custom);\n }\n // if target is team, fill message in slot for all players on team\n else if (mod.IsType(target, mod.Types.Team)) {\n const teamMates = getPlayersInTeam(target as mod.Team);\n teamMates.forEach((player) => {\n const widgetId = custom + String(player);\n createNotificationFunction(widgetId, msg, player, custom);\n });\n }\n } else {\n const allPlayers = mod.AllPlayers();\n const n = mod.CountOf(allPlayers);\n for (let i = 0; i < n; i++) {\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\n const widgetId = custom + String(player);\n createNotificationFunction(widgetId, msg, player, custom);\n }\n }\n}\n\nexport function ShowEventGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\n //TODO: restore these once DisplayGameModeMessage is fixed\n // if (target) {\n // mod.DisplayGameModeMessage(event, target as mod.Player );\n // } else{\n // mod.DisplayGameModeMessage(event);\n // }\n\n const MakeShiftDisplayGameModeMessage = async (message: mod.Message, target?: mod.Player | mod.Team) => {\n const widgetId = 'GameModeMessage';\n if (target) {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(0, 0, 0),\n mod.CreateVector(2500, 80, 0),\n mod.UIAnchor.TopCenter,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n message,\n 30,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center,\n target as mod.Player\n );\n } else {\n mod.AddUIText(\n widgetId,\n mod.CreateVector(0, 0, 0),\n mod.CreateVector(2500, 80, 0),\n mod.UIAnchor.TopCenter,\n mod.GetUIRoot(),\n true,\n 8,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIBgFill.Blur,\n message,\n 30,\n mod.CreateVector(1, 1, 1),\n 1,\n mod.UIAnchor.Center\n );\n }\n\n await mod.Wait(6);\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\n };\n\n if (target) {\n MakeShiftDisplayGameModeMessage(event, target as mod.Player);\n } else {\n MakeShiftDisplayGameModeMessage(event);\n }\n}\n\nexport function ShowHighlightedGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\n if (target) {\n mod.DisplayHighlightedWorldLogMessage(event, target as mod.Player);\n } else {\n mod.DisplayHighlightedWorldLogMessage(event);\n }\n}\n\nexport function ShowNotificationMessage(msg: mod.Message, target?: mod.Player | mod.Team) {\n if (target) {\n mod.DisplayNotificationMessage(msg, target as mod.Player);\n } else {\n mod.DisplayNotificationMessage(msg);\n }\n}\n\nexport function ClearAllCustomNotificationMessages(target: mod.Player) {\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.HeaderText, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText1, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText2, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText3, target);\n } catch {}\n try {\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText4, target);\n } catch {}\n}\n\nexport function ClearCustomNotificationMessage(custom: mod.CustomNotificationSlots, target?: mod.Player | mod.Team) {\n try {\n if (target) {\n // if target is player, just delete message in their slot\n if (mod.IsType(target, mod.Types.Player)) {\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(target as mod.Player)));\n }\n // if target is team, delete message in slot for all players on team\n else if (mod.IsType(target, mod.Types.Team)) {\n const teamMembers = getPlayersInTeam(target as mod.Team);\n for (let i = 0; i < teamMembers.length; i++) {\n let player = teamMembers[i];\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\n }\n }\n } else {\n // if no target, delete for all players\n const allPlayers = mod.AllPlayers();\n const n = mod.CountOf(allPlayers);\n for (let i = 0; i < n; i++) {\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\n }\n }\n } catch {\n console.error('Could not clear custom message for specified target(s)');\n }\n}\n"],"mappings":"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"}
|
package/dist/std/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
declare namespace message_d_exports {
|
|
2
2
|
export { MakeMessage };
|
|
3
3
|
}
|
|
4
|
-
declare function MakeMessage(message: string, ...args: (string | number | mod.Player)[]): mod.Message;
|
|
4
|
+
export declare function MakeMessage(message: string, ...args: (string | number | mod.Player)[]): mod.Message;
|
|
5
5
|
declare namespace countdown_d_exports {
|
|
6
6
|
export { CountdownUI, bf6Strings };
|
|
7
7
|
}
|
|
8
|
-
declare class CountdownUI {
|
|
8
|
+
export declare class CountdownUI {
|
|
9
9
|
#private;
|
|
10
10
|
headerWidget: mod.UIWidget | undefined;
|
|
11
11
|
textWidget: mod.UIWidget | undefined;
|
|
@@ -15,7 +15,7 @@ declare class CountdownUI {
|
|
|
15
15
|
update(text: string, countdowntime: number): void;
|
|
16
16
|
close(delayclose?: number): Promise<void>;
|
|
17
17
|
}
|
|
18
|
-
declare const bf6Strings: {
|
|
18
|
+
export declare const bf6Strings: {
|
|
19
19
|
__sdk__CountdownUI: string;
|
|
20
20
|
};
|
|
21
21
|
declare namespace index_d_exports {
|
|
@@ -31,5 +31,5 @@ declare const _default: {
|
|
|
31
31
|
ui: typeof index_d_exports;
|
|
32
32
|
};
|
|
33
33
|
//#endregion
|
|
34
|
-
export {
|
|
34
|
+
export { _default as default };
|
|
35
35
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/std/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
3
2
|
//#region src/std/message.ts
|
|
4
|
-
var message_exports = /* @__PURE__ */
|
|
3
|
+
var message_exports = /* @__PURE__ */ __exportAll({ MakeMessage: () => MakeMessage });
|
|
5
4
|
function MakeMessage(message, ...args) {
|
|
6
5
|
switch (args.length) {
|
|
7
6
|
case 0: return mod.Message(message);
|
|
@@ -11,7 +10,6 @@ function MakeMessage(message, ...args) {
|
|
|
11
10
|
default: throw new Error("Invalid number of arguments");
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
|
-
|
|
15
13
|
//#endregion
|
|
16
14
|
//#region src/modlib/index.ts
|
|
17
15
|
var ConditionState = class {
|
|
@@ -28,6 +26,11 @@ var ConditionState = class {
|
|
|
28
26
|
return true;
|
|
29
27
|
}
|
|
30
28
|
};
|
|
29
|
+
var SimpleConditionState = class {
|
|
30
|
+
update(newState) {
|
|
31
|
+
return newState;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
31
34
|
var Conditions = class {
|
|
32
35
|
constructor() {
|
|
33
36
|
this.conditionStates = [];
|
|
@@ -37,7 +40,8 @@ var Conditions = class {
|
|
|
37
40
|
return this.conditionStates[n];
|
|
38
41
|
}
|
|
39
42
|
};
|
|
40
|
-
|
|
43
|
+
new Conditions();
|
|
44
|
+
new SimpleConditionState();
|
|
41
45
|
function __asModVector(param) {
|
|
42
46
|
if (Array.isArray(param)) return mod.CreateVector(param[0], param[1], param.length == 2 ? 0 : param[2]);
|
|
43
47
|
else return param;
|
|
@@ -137,10 +141,9 @@ function ParseUI(...params) {
|
|
|
137
141
|
for (let a = 0; a < params.length; a++) widget = __addUIWidget(params[a]);
|
|
138
142
|
return widget;
|
|
139
143
|
}
|
|
140
|
-
|
|
141
144
|
//#endregion
|
|
142
145
|
//#region src/std/ui/countdown.ts
|
|
143
|
-
var countdown_exports = /* @__PURE__ */
|
|
146
|
+
var countdown_exports = /* @__PURE__ */ __exportAll({
|
|
144
147
|
CountdownUI: () => CountdownUI,
|
|
145
148
|
bf6Strings: () => bf6Strings
|
|
146
149
|
});
|
|
@@ -225,23 +228,21 @@ var CountdownUI = class CountdownUI {
|
|
|
225
228
|
}
|
|
226
229
|
};
|
|
227
230
|
const bf6Strings = { __sdk__CountdownUI: "{}" };
|
|
228
|
-
|
|
229
231
|
//#endregion
|
|
230
232
|
//#region src/std/ui/index.ts
|
|
231
|
-
var ui_exports = /* @__PURE__ */
|
|
233
|
+
var ui_exports = /* @__PURE__ */ __exportAll({
|
|
232
234
|
CountdownUI: () => CountdownUI,
|
|
233
235
|
bf6Strings: () => bf6Strings,
|
|
234
236
|
default: () => ui_default
|
|
235
237
|
});
|
|
236
238
|
var ui_default = { countdown: countdown_exports };
|
|
237
|
-
|
|
238
239
|
//#endregion
|
|
239
240
|
//#region src/std/index.ts
|
|
240
241
|
var std_default = {
|
|
241
242
|
message: message_exports,
|
|
242
243
|
ui: ui_exports
|
|
243
244
|
};
|
|
244
|
-
|
|
245
245
|
//#endregion
|
|
246
246
|
export { CountdownUI, MakeMessage, bf6Strings, std_default as default };
|
|
247
|
+
|
|
247
248
|
//# sourceMappingURL=index.js.map
|