@bf6mods/sdk 1.1.0 → 1.2.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 +20445 -15595
- package/dist/index.js +333 -604
- package/dist/index.js.map +1 -1
- package/dist/std/chunk-Bp6m_JJh.js +13 -0
- package/dist/std/index.d.ts +26 -33
- package/dist/std/index.js +207 -391
- package/dist/std/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/index.ts","../src/modlib/index.ts"],"sourcesContent":["/**\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}\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\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\n/**\n * Describes all configurable mutators for the game.\n */\nexport type Mutators = {\n\t/**\n\t * Whether AI is allowed to go prone per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isProneAllowed], ...]`\n\t */\n\tAI_ProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Maximum number of players allowed per team or globally.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, maxPlayers], ...]`\n\t */\n\tMaxPlayerCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Maximum number of AI allowed per team or globally.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, maxAI], ...]`\n\t */\n\tAiMaxCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Determines the global AI spawn behavior.\n\t * Possible values depend on the internal AI spawn type enumeration.\n\t * If global: `SpawnType`\n\t * If per team: `[[teamIndex, SpawnType], ...]`\n\t */\n\tAiSpawnType: AiSpawnType;\n\n\t/**\n\t * Multiplies damage taken from falling. Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tFallDamageHeightMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Defines the \"Man Down\" experience type per team or globally.\n\t * If global: `ManDownExperienceType`\n\t * If per team: `[[teamIndex, ManDownExperienceType], ...]`\n\t */\n\tManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * Whether sprint-strafing is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSprintStrafeAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * The total number of teams supported in this game mode.\n\t */\n\tMaxTeamCount: number;\n\n\t/**\n\t * Whether passengers are allowed in vehicles.\n\t */\n\tVehicle_AllowPassengers: boolean;\n\n\t/**\n\t * Whether AI are allowed to occupy passenger seats in vehicles.\n\t */\n\tAI_Vehicle_AllowAiInPassengerSeats: boolean;\n\n\t/**\n\t * Whether friendly identification (friend/foe visibility)\n\t * is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tFriendlyIdentificationAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether squad revive is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSquadReviveAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether aim assist snap zoom is enabled globally.\n\t */\n\tAimAssistSnapZoomEnabled: boolean;\n\n\t/**\n\t * Whether prone is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether vehicle health regeneration is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tVehicleHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether infinite weapon magazines are enabled per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isEnabled], ...]`\n\t */\n\tInfiniteWeaponMagazines_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether sprinting is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether soldier health regeneration is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether stationary emplacements (e.g. turrets) are allowed globally.\n\t */\n\tStationaryEmplacementsAllowed: boolean;\n\n\t/**\n\t * Whether sliding is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSlideAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether the compass is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tCompassAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether the minimap is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tMinimapAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Defines ping behavior per team or globally.\n\t * Likely corresponds to an internal ping mode enumeration.\n\t * If global: `PingBehavior`\n\t * If per team: `[[teamIndex, PingBehavior], ...]`\n\t */\n\tPingBehavior_PerTeam: PerTeam<PingBehavior>;\n\n\t/**\n\t * Whether the HUD (Heads-Up Display) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tHUDAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies the soldier's maximum health.\n\t * Values lower than 1.0 reduce health, while values greater than 1.0 increase health.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the soldier respawn delay time.\n\t * Values lower than 1.0 shorten respawn time, while values greater than 1.0 increase it.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the maximum vehicle health.\n\t * Values lower than 1.0 reduce health, while values greater than 1.0 increase health.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the speed of all projectiles globally.\n\t * Values lower than 1.0 slow down projectiles, while values greater than 1.0 speed them up.\n\t */\n\tProjectileSpeedMultiplier: number;\n\n\t/**\n\t * Multiplies bodyshot damage per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tBodyshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies headshot damage per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tHeadshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies damage dealt to vehicles per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the rate at which vehicles regenerate health per team or globally.\n\t * Values lower than 1.0 slow regeneration, while values greater than 1.0 speed it up.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the soldier health regeneration rate per team or globally.\n\t * Values lower than 1.0 slow regeneration, while values greater than 1.0 speed it up.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Defines the scoreboard type globally.\n\t * Corresponds to an internal scoreboard display mode enumeration.\n\t */\n\tScoreboardType: ScoreboardType;\n\n\t/**\n\t * Defines the \"Man Down\" experience type for AI per team or globally.\n\t * If global: `ManDownExperienceType`\n\t * If per team: `[[teamIndex, ManDownExperienceType], ...]`\n\t */\n\tAI_ManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * Multiplies AI soldier movement speed per team or globally.\n\t * Values lower than 1.0 reduce speed, while values greater than 1.0 increase speed.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether AI sprinting is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_SprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether AI are allowed to exit vehicles per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_ExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether infinite weapon ammunition is enabled per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isEnabled], ...]`\n\t */\n\tInfiniteWeaponAmmo_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether AI soldier health regeneration is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_SoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies AI soldier maximum health per team or globally.\n\t * Values lower than 1.0 reduce health, while values greater than 1.0 increase health.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies AI soldier health regeneration rate per team or globally.\n\t * Values lower than 1.0 slow regeneration, while values greater than 1.0 speed it up.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies AI damage dealt per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_DamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether aim assist slowdown is enabled globally.\n\t */\n\tAimAssistSlowdownEnabled: boolean;\n\n\t/**\n\t * Multiplies soldier movement speed per team or globally.\n\t * Values lower than 1.0 reduce speed, while values greater than 1.0 increase speed.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether crosshairs (reticles) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tCrosshairsAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies AI vehicle damage dealt per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_VehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether AI are allowed to spawn on foot per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_OnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Defines the AI squad spawn mode per team or globally.\n\t * Corresponds to an internal AI squad spawn behavior enumeration.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, mode], ...]`\n\t */\n\tAI_SquadSpawnMode_PerTeam: SquadSpawnType;\n\n\t/**\n\t * Multiplies AI soldier respawn delay time per team or globally.\n\t * Values lower than 1.0 shorten respawn time, while values greater than 1.0 increase it.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether friendly fire damage reflection is enabled globally.\n\t */\n\tFriendlyFireDamageReflectionEnabled: boolean;\n\n\t/**\n\t * Defines the current mod builder game mode globally.\n\t * Corresponds to an internal game mode enumeration.\n\t */\n\tModBuilder_GameMode: ModBuilderGameMode;\n\n\t/**\n\t * Multiplies the radius of the aim assist snap capsule globally.\n\t * Values lower than 1.0 reduce radius, while values greater than 1.0 increase radius.\n\t */\n\tAimAssistSnapCapsuleRadiusMultiplier: number;\n\n\t/**\n\t * Maximum number of team kills before friendly fire damage reflection activates.\n\t */\n\tFriendlyFireDamageReflectionMaxTeamKills: number;\n\n\t/**\n\t * Defines the total game time for the Portal experience in minutes.\n\t * Max of 60 minutes\n\t */\n\tfPortalExperienceGameTime: number;\n\n\t/**\n\t * Defines the maximum squad size per team or globally.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, squadSize], ...]`\n\t */\n\tSquadSize_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether third-person vehicle camera views are disabled globally.\n\t */\n\tDisableVehicle3p: boolean;\n\n\t/**\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\tReloadWholeWeaponMagazines: boolean;\n\n\t/**\n\t * Controls the degree of feedback given to the player via audio or visual cues.\n\t */\n\tbPortalRestrictedGameFeedback: boolean;\n\n\t/**\n\t * Whether health bars are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tHealthBarAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether damage numbers (floating hit indicators) are hidden per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isHidden], ...]`\n\t */\n\tHideDamageNumbers_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether hit indicators are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tHitIndicatorAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether HUD inventory auto-hide is enabled per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isEnabled], ...]`\n\t */\n\tHUDInventoryAutoHide_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether reduced friendly world icons are used globally.\n\t */\n\tUseReducedFriendlyWorldIcon: boolean;\n\n\t/**\n\t * Whether capture point scaling is allowed globally.\n\t */\n\tCapturePointScaleAllowed: boolean;\n\n\t/**\n\t * Whether the kill feed (kill log) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tKillFeedAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether the squad list UI element is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSquadListAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether voice-over (VO) communication is restricted globally.\n\t */\n\tbRestrictCommunicationVO: boolean;\n\n\t/**\n\t * Whether UI-based communication (pings, menus, etc.) is restricted globally.\n\t */\n\tbRestrictCommunicationUI: boolean;\n\n\t/**\n\t * Whether player spotting is allowed globally.\n\t */\n\tSpottingAllowed: boolean;\n\n\t/**\n\t * Controls whether AI can navigate the map, turning it off will decrease loading times.\n\t */\n\tPortal_GenerateNavMesh: boolean;\n\n\t/**\n\t * Defines the game mode start timer for spawn balancing, in seconds.\n\t * Note: This is a best guess and is undocumneted currently, if you notice it is something else\n\t * please create an issue\n\t */\n\tSpawnBalancing_GamemodeStartTimer: number;\n\n\t/**\n\t * Defines the player count ratio used for spawn balancing calculations.\n\t * Typically a value between 0.0 and 1.0.\n\t * Note: This is a best guess and is undocumneted currently, if you notice it is something else\n\t * please create an issue\n\t */\n\tSpawnBalancing_GamemodePlayerCountRatio: number;\n\n\t/**\n\t * Defines the faction ID per team or globally.\n\t * If global: `FactionID`\n\t * If per team: `[[teamIndex, FactionID], ...]`\n\t */\n\tFactionID_PerTeam: PerTeam<FactionID>;\n\n\t/**\n\t * Whether class-locked weapon loadouts are enabled globally.\n\t */\n\tEnableClassLockedWeaponLoadouts: boolean;\n\n\t/**\n\t * Whether on-foot spawning is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tOnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether exiting vehicles is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies the vehicle spawn delay per team or globally.\n\t * Values lower than 1.0 shorten delay, while values greater than 1.0 increase it.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleSpawnDelayMultiplier_PerTeam: PerTeam<number>;\n};\n\n/**\n * Describes all configurable asset restrictions for the game.\n * Each restriction can either apply globally (single value)\n * or per team (as an array of [teamIndex, value] pairs).\n */\nexport type AssetRestrictions = {\n\t/**\n\t * Whether the Assault class is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAssaultClass: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Support class is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSupportClass: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Recon class is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tReconClass: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Engineer class is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tEngineerClass: PerTeam<boolean>;\n\n\t/**\n\t * Whether the HK417A2 weapon (U_HK417A2) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_HK417A2: PerTeam<boolean>;\n\n\t/**\n\t * Whether the ARAD MR weapon (U_ARADMR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_ARADMR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the AK-205 weapon (U_AK205) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_AK205: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M4A1 weapon (U_M4A1) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M4A1: PerTeam<boolean>;\n\n\t/**\n\t * Whether the QBZ-192 weapon (U_QBZ192) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_QBZ192: PerTeam<boolean>;\n\n\t/**\n\t * Whether the XM7 weapon (U_XM7) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_XM7: PerTeam<boolean>;\n\n\t/**\n\t * Whether the SIG553R weapon (U_SIG553R) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SIG553R: PerTeam<boolean>;\n\n\t/**\n\t * Whether the 590A1 shotgun (U_590A1) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_590A1: PerTeam<boolean>;\n\n\t/**\n\t * Whether the 185-KSK weapon (U_185KSK) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_185KSK: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M1014 shotgun (U_M1014) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M1014: PerTeam<boolean>;\n\n\t/**\n\t * Whether the stationary M2 machine gun emplacement (U_VEH_Stationary_M2MG) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Stationary_M2MG: PerTeam<boolean>;\n\n\t/**\n\t * Whether the stationary GDF-009 emplacement (U_VEH_Stationary_GDF009) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Stationary_GDF009: PerTeam<boolean>;\n\n\t/**\n\t * Whether the stationary BGM-71 TOW launcher (U_VEH_Stationary_BGM71TOW) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Stationary_BGM71TOW: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Stinger launcher (U_Stinger) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Stinger: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M320 Smoke launcher (U_M320Smoke) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M320Smoke: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M320 Thermobaric launcher (U_M320Thermobaric) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M320Thermobaric: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Drill GL launcher (U_DrillGL) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_DrillGL: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M320 HE launcher (U_M320HE) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M320HE: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Airburst Incendiary weapon (U_AirburstIncendiary) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_AirburstIncendiary: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M39 EMR weapon (U_M39EMR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M39EMR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the SVDM sniper rifle (U_SVDM) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SVDM: PerTeam<boolean>;\n\n\t/**\n\t * Whether the SVCh sniper rifle (U_SVCh) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SVCh: PerTeam<boolean>;\n\n\t/**\n\t * Whether the 6P67 assault rifle (U_6P67) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_6P67: PerTeam<boolean>;\n\n\t/**\n\t * Whether the G36 assault rifle (U_G36) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_G36: PerTeam<boolean>;\n\n\t/**\n\t * Whether the HK433 assault rifle (U_HK433) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_HK433: PerTeam<boolean>;\n\n\t/**\n\t * Whether the G3A4 battle rifle (U_G3A4) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_G3A4: PerTeam<boolean>;\n\n\t/**\n\t * Whether the L85A3 assault rifle (U_L85A3) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_L85A3: PerTeam<boolean>;\n\n\t/**\n\t * Whether the ACE 32 assault rifle (U_ACE32) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_ACE32: PerTeam<boolean>;\n\n\t/**\n\t * Whether the SCAR-L assault rifle (U_SCARL) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SCARL: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Tavor 7 battle rifle (U_Tavor7) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Tavor7: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Ultimax light machine gun (U_Ultimax) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Ultimax: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Minimi light machine gun (U_Minimi) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Minimi: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M27 IAR weapon (U_M27IAR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M27IAR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M250 light machine gun (U_M250) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M250: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M240L machine gun (U_M240L) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M240L: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MG4K light machine gun (U_MG4K) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MG4K: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M60E6 light machine gun (U_M60E6) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M60E6: PerTeam<boolean>;\n\n\t/**\n\t * Whether the RPKM light machine gun (U_RPKM) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_RPKM: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M18 pistol (U_M18) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M18: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Five-Seven pistol (U_FiveSeven) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_FiveSeven: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Raging Hunter revolver (U_RagingHunter) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_RagingHunter: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M45A1 pistol (U_M45A1) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M45A1: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M2010 ESR sniper rifle (U_M2010ESR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M2010ESR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the SV-98M sniper rifle (U_SV98M) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SV98M: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MRAD sniper rifle (U_MRAD) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MRAD: PerTeam<boolean>;\n\n\t/**\n\t * Whether the P90 submachine gun (U_P90) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_P90: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MPX submachine gun (U_MPX) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MPX: PerTeam<boolean>;\n\n\t/**\n\t * Whether the UMP-40 submachine gun (U_UMP40) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_UMP40: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Vector submachine gun (U_Vector) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Vector: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MP5 MLI submachine gun (U_MP5MLI) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MP5MLI: PerTeam<boolean>;\n\n\t/**\n\t * Whether the APDW (Advanced Personal Defense Weapon) (U_APDW) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_APDW: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MP7A2 submachine gun (U_MP7A2) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MP7A2: PerTeam<boolean>;\n\n\t/**\n\t * Whether the APC10 submachine gun (U_APC10) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_APC10: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Cheetah tank (U_VEH_Tank_Cheetah) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Tank_Cheetah: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Flyer 60 vehicle (U_OB_VEH_Car_Flyer60_Base) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_OB_VEH_Car_Flyer60_Base: PerTeam<boolean>;\n\n\t/**\n\t * Whether the CV90 tank (U_VEH_Tank_CV90) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Tank_CV90: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M1 Abrams tank (U_VEH_Tank_Abrams) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Tank_Abrams: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Gepard anti-air tank (U_VEH_Tank_Gepard) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Tank_Gepard: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Bradley infantry fighting vehicle (U_VEH_Tank_Bradley) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Tank_Bradley: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Leopard main battle tank (U_VEH_Tank_Leopard) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Tank_Leopard: PerTeam<boolean>;\n\n\t/**\n\t * Whether ground transport vehicles (Portal_WebApp_GroundTransport) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_GroundTransport: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Eurocopter helicopter (U_VEH_Helicopter_Eurocopter) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Helicopter_Eurocopter: PerTeam<boolean>;\n\n\t/**\n\t * Whether the SU-57 fighter jet (U_VEH_Airplane_SU57) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Airplane_SU57: PerTeam<boolean>;\n\n\t/**\n\t * Whether the F-16 fighter jet (U_VEH_Airplane_F16) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Airplane_F16: PerTeam<boolean>;\n\n\t/**\n\t * Whether the AH-64E Apache attack helicopter (U_VEH_Helicopter_AH64E) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Helicopter_AH64E: PerTeam<boolean>;\n\n\t/**\n\t * Whether the UH-60 transport helicopter (U_VEH_Helicopter_UH60) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Helicopter_UH60: PerTeam<boolean>;\n\n\t/**\n\t * Whether the F-22 Raptor fighter jet (U_VEH_Airplane_F22) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Airplane_F22: PerTeam<boolean>;\n\n\t/**\n\t * Whether the JAS 39 Gripen fighter jet (U_VEH_Airplane_JAS39) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_VEH_Airplane_JAS39: PerTeam<boolean>;\n\n\t/**\n\t * Whether the repair tool (U_RepairTool) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_RepairTool: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Adrenaline Shot gadget (U_AdrenalineShot) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_AdrenalineShot: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Spawn Beacon gadget (U_SpawnBeacon) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SpawnBeacon: PerTeam<boolean>;\n\n\t/**\n\t * Whether the T-UGS motion sensor (U_TUGS) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_TUGS: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Deployable Cover gadget (U_DeployableCover) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_DeployableCover: PerTeam<boolean>;\n\n\t/**\n\t * Whether the EIDOS detection device (U_EIDOS) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_EIDOS: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Deployable Mortar (U_DeployableMortar) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_DeployableMortar: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Supply Crate gadget (U_Gadget_SupplyCrate) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Gadget_SupplyCrate: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Drone gadget (U_Drone) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Drone: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Sniper Decoy gadget (U_SniperDecoy) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_SniperDecoy: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MP-APS active protection system (U_MPAPS) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MPAPS: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Deployable Ladder (U_Ladder) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Ladder: PerTeam<boolean>;\n\n\t/**\n\t * Whether the EOD Bot gadget (U_EODBot) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_EODBot: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Vehicle Supply Crate gadget (U_Gadget_VehicleSupplyCrate) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Gadget_VehicleSupplyCrate: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Anti-Tank Mine gadget (U_Gadget_ATMine) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Gadget_ATMine: PerTeam<boolean>;\n\n\t/**\n\t * Whether the C4 explosive (U_C4) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_C4: PerTeam<boolean>;\n\n\t/**\n\t * Whether the PTKM-1R smart mine (U_PTKM1R) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_PTKM1R: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M4 SLAM explosive (U_M4SLAM) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M4SLAM: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M18 Claymore (U_M18Claymore) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M18Claymore: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Javelin launcher (U_Javelin) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Javelin: PerTeam<boolean>;\n\n\t/**\n\t * Whether the RPG-7 V2 launcher (U_RPG7V2) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_RPG7V2: PerTeam<boolean>;\n\n\t/**\n\t * Whether the AT4 launcher (U_AT4) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_AT4: PerTeam<boolean>;\n\n\t/**\n\t * Whether the MBT LAW (rocket) (U_MBTLAW) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MBTLAW: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Combat Knife melee weapon (U_Melee_CombatKnife) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Melee_CombatKnife: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Sledgehammer melee weapon (U_Melee_Sledgehammer) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Melee_Sledgehammer: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Geko Knife melee weapon (U_Melee_GekoKnife) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Melee_GekoKnife: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Tracer Dart gadget (U_TracerDart) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_TracerDart: PerTeam<boolean>;\n\n\t/**\n\t * Whether the M26 Mass (Dragonbreath) round (U_M26MassDragonbreath) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_M26MassDragonbreath: PerTeam<boolean>;\n\n\t/**\n\t * Whether the PLD device (U_PLD) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_PLD: PerTeam<boolean>;\n\n\t/**\n\t * Whether defibrillators equipped (U_Defibrillators_Equipped) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Defibrillators_Equipped: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Supply Pouch weapon/gadget (U_WEP_SupplyPouch) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_WEP_SupplyPouch: PerTeam<boolean>;\n\n\t/**\n\t * Whether incendiary grenades (U_Grenade_IncendiaryGrenade) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_Grenade_IncendiaryGrenade: PerTeam<boolean>;\n\n\t/**\n\t * Whether frag grenades (U_WEP_FragGrenade) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_WEP_FragGrenade: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Proximity Sensor gadget (U_GAD_Proximity) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_GAD_Proximity: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Anti-Tank Grenade (U_AntiTankGrenade) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_AntiTankGrenade: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Throwing Knife (U_WEP_ThrowingKnife) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_WEP_ThrowingKnife: PerTeam<boolean>;\n\n\t/**\n\t * Whether Flashbang grenades (U_WEP_Flashbang) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_WEP_Flashbang: PerTeam<boolean>;\n\n\t/**\n\t * Whether Concussion grenades (U_WEP_ConcussionGrenade) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_WEP_ConcussionGrenade: PerTeam<boolean>;\n\n\t/**\n\t * Whether Mini V40 grenades (U_MiniV40) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tU_MiniV40: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal carbine weapon category (Portal_WebApp_Carbine) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Carbine: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal shotgun weapon category (Portal_WebApp_SG) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_SG: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal stationary weapon category (Portal_WebApp_Stationary) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Stationary: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal grenade launcher weapon category (Portal_WebApp_GrenadeLauncher) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_GrenadeLauncher: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal designated marksman rifle (DMR) weapon category (Portal_WebApp_DMR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_DMR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal assault rifle weapon category (Portal_WebApp_AR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_AR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal machine gun weapon category (Portal_WebApp_MG) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_MG: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal pistol weapon category (Portal_WebApp_Pistol) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Pistol: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal sniper rifle weapon category (Portal_WebApp_SR) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_SR: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal PDW (personal defense weapon) category (Portal_WebApp_PDW) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_PDW: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal ground combat vehicle category (Portal_WebApp_GroundCombat) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_GroundCombat: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal air combat vehicle category (Portal_WebApp_AirCombat) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_AirCombat: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal class gadget category (Portal_WebApp_ClassGadget) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_ClassGadget: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal deployable gadget category (Portal_WebApp_Deployable) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Deployable: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal explosive gadget category (Portal_WebApp_Explosive) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Explosive: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal launcher weapon category (Portal_WebApp_Launcher) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Launcher: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal melee weapon category (Portal_WebApp_Melee) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Melee: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal miscellaneous gadget category (Portal_WebApp_Gadget_Misc) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Gadget_Misc: PerTeam<boolean>;\n\n\t/**\n\t * Whether the Portal throwable category (Portal_WebApp_Throwable) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tPortal_WebApp_Throwable: PerTeam<boolean>;\n};\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';\r\n\r\nexport function Concat(s1: string, s2: string) {\r\n return s1 + s2;\r\n}\r\n\r\nexport function And(...rest: boolean[]): boolean {\r\n for (let i = 0; i < rest.length; i++) {\r\n const cond = rest[i];\r\n if (!cond) return false;\r\n }\r\n return true;\r\n}\r\n\r\ntype ConditionFunction = () => boolean;\r\n\r\nexport function AndFn(...rest: ConditionFunction[]): boolean {\r\n for (let i = 0; i < rest.length; i++) {\r\n const condFn = rest[i];\r\n if (!condFn()) return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function getPlayerId(player: mod.Player): number {\r\n return mod.GetObjId(player);\r\n}\r\n\r\nexport function getTeamId(team: mod.Team): number {\r\n return mod.GetObjId(team);\r\n}\r\n\r\nexport function ConvertArray(array: mod.Array): any[] {\r\n let v = [];\r\n let n = mod.CountOf(array);\r\n for (let i = 0; i < n; i++) {\r\n let currentElement = mod.ValueInArray(array, i);\r\n v.push(currentElement);\r\n }\r\n return v;\r\n}\r\n\r\nexport function FilteredArray(array: mod.Array, cond: (currentElement: any) => boolean): mod.Array {\r\n const arr = ConvertArray(array);\r\n let v = mod.EmptyArray();\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentElement = arr[i];\r\n if (cond(currentElement)) mod.AppendToArray(v, currentElement);\r\n }\r\n return v;\r\n}\r\n\r\nexport function IndexOfFirstTrue(array: mod.Array, cond: (element: any, arg: any) => boolean, arg: any = null): number {\r\n const arr = ConvertArray(array);\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentArrayElement = arr[i];\r\n if (cond(currentArrayElement, arg)) return i;\r\n }\r\n return -1;\r\n}\r\n\r\nexport function IfThenElse<T>(condition: boolean, ifTrue: () => T, ifFalse: () => T) {\r\n if (condition) return ifTrue();\r\n else return ifFalse();\r\n}\r\n\r\nexport function IsTrueForAll(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\r\n const arr = ConvertArray(array);\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentArrayElement = arr[i];\r\n if (!condition(currentArrayElement, arg)) return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport function IsTrueForAny(array: mod.Array, condition: (element: any, arg: any) => boolean, arg: any = null) {\r\n const arr = ConvertArray(array);\r\n let n = arr.length;\r\n for (let i = 0; i < n; i++) {\r\n let currentArrayElement = arr[i];\r\n if (condition(currentArrayElement, arg)) return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function SortedArray(array: any[], compare: (a: any, b: any) => number) {\r\n let v1 = array.slice();\r\n v1.sort(compare);\r\n let v2 = [];\r\n for (let e of v1) v2.push(e);\r\n return v2;\r\n}\r\n\r\nexport function Equals(a: any, b: any) {\r\n if (a == null || b == null) debugger;\r\n return mod.Equals(a, b);\r\n}\r\n\r\nexport async function WaitUntil(delay: number, cond: () => boolean) {\r\n // complete rush hack. this will likely wait way too long and other problems.\r\n let deltaCount = 10;\r\n let deltaWait = delay / deltaCount;\r\n for (let t = 0; t < deltaCount; t++) {\r\n if (!cond()) break;\r\n await mod.Wait(deltaWait);\r\n }\r\n}\r\n\r\nexport class ConditionState {\r\n lastState: boolean;\r\n\r\n constructor() {\r\n this.lastState = false;\r\n }\r\n\r\n update(newState: boolean): boolean {\r\n // if the new state is false then reset last state and don't trigger action\r\n if (!newState) {\r\n this.lastState = false;\r\n return false;\r\n }\r\n // if last state was already true then don't trigger\r\n if (this.lastState) return false;\r\n // if the state just transitioned to true then trigger\r\n this.lastState = true;\r\n return true;\r\n }\r\n}\r\n\r\nclass Conditions {\r\n constructor() {\r\n this.conditionStates = [];\r\n }\r\n\r\n conditionStates: ConditionState[];\r\n\r\n getConditionState(n: number): ConditionState {\r\n while (n >= this.conditionStates.length) {\r\n this.conditionStates.push(new ConditionState());\r\n }\r\n return this.conditionStates[n];\r\n }\r\n}\r\n\r\nlet playerConditions: Conditions[] = [];\r\nlet teamConditions: Conditions[] = [];\r\nlet capturePointConditions: Conditions[] = [];\r\nlet mcomConditions: Conditions[] = [];\r\nlet vehicleConditions: Conditions[] = [];\r\nlet globalConditions: Conditions = new Conditions();\r\n\r\nfunction getObjectCondition(id: number, objectConditions: Conditions[], n: number) {\r\n while (id >= objectConditions.length) {\r\n objectConditions.push(new Conditions());\r\n }\r\n let conditions = objectConditions[id];\r\n return conditions.getConditionState(n);\r\n}\r\n\r\nexport function getPlayerCondition(obj: mod.Player, n: number) {\r\n let id = getPlayerId(obj);\r\n while (id >= playerConditions.length) {\r\n playerConditions.push(new Conditions());\r\n }\r\n let conditions = playerConditions[id];\r\n return conditions.getConditionState(n);\r\n}\r\n\r\nexport function getTeamCondition(team: mod.Team, n: number) {\r\n let id = getTeamId(team);\r\n while (id >= teamConditions.length) {\r\n teamConditions.push(new Conditions());\r\n }\r\n let conditions = teamConditions[id];\r\n return conditions.getConditionState(n);\r\n}\r\n\r\nexport function getCapturePointCondition(obj: mod.CapturePoint, n: number) {\r\n let id = mod.GetObjId(obj);\r\n return getObjectCondition(id, capturePointConditions, n);\r\n}\r\n\r\nexport function getMCOMCondition(obj: mod.MCOM, n: number) {\r\n let id = mod.GetObjId(obj);\r\n return getObjectCondition(id, mcomConditions, n);\r\n}\r\n\r\nexport function getVehicleCondition(obj: mod.Vehicle, n: number) {\r\n let id = mod.GetObjId(obj);\r\n return getObjectCondition(id, vehicleConditions, n);\r\n}\r\n\r\nexport function getGlobalCondition(n: number) {\r\n return globalConditions.getConditionState(n);\r\n}\r\n\r\nexport function getPlayersInTeam(team: mod.Team) {\r\n const allPlayers = mod.AllPlayers();\r\n const n = mod.CountOf(allPlayers);\r\n let teamMembers = [];\r\n\r\n for (let i = 0; i < n; i++) {\r\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\r\n if (mod.GetTeam(player) == team) {\r\n teamMembers.push(player);\r\n }\r\n }\r\n return teamMembers;\r\n}\r\n\r\n//-----------------------------------------------------------------------------------------------//\r\n//-----------------------------------------------------------------------------------------------//\r\n//-----------------------------------------------------------------------------------------------//\r\n//-----------------------------------------------------------------------------------------------//\r\n// Helper functions to create UI from a JSON object tree:\r\n//-----------------------------------------------------------------------------------------------//\r\n\r\ntype UIVector = mod.Vector | number[];\r\n\r\ninterface UIParams {\r\n name: string;\r\n type: string;\r\n position: any;\r\n size: any;\r\n anchor: mod.UIAnchor;\r\n parent: mod.UIWidget;\r\n visible: boolean;\r\n textLabel: string;\r\n textColor: UIVector;\r\n textAlpha: number;\r\n textSize: number;\r\n textAnchor: mod.UIAnchor;\r\n padding: number;\r\n bgColor: UIVector;\r\n bgAlpha: number;\r\n bgFill: mod.UIBgFill;\r\n imageType: mod.UIImageType;\r\n imageColor: UIVector;\r\n imageAlpha: number;\r\n teamId?: mod.Team;\r\n playerId?: mod.Player;\r\n children?: any[];\r\n buttonEnabled: boolean;\r\n buttonColorBase: UIVector;\r\n buttonAlphaBase: number;\r\n buttonColorDisabled: UIVector;\r\n buttonAlphaDisabled: number;\r\n buttonColorPressed: UIVector;\r\n buttonAlphaPressed: number;\r\n buttonColorHover: UIVector;\r\n buttonAlphaHover: number;\r\n buttonColorFocused: UIVector;\r\n buttonAlphaFocused: number;\r\n}\r\n\r\nfunction __asModVector(param: number[] | mod.Vector) {\r\n if (Array.isArray(param)) return mod.CreateVector(param[0], param[1], param.length == 2 ? 0 : param[2]);\r\n else return param;\r\n}\r\n\r\nfunction __asModMessage(param: string | mod.Message) {\r\n if (typeof param === 'string') return mod.Message(param);\r\n return param;\r\n}\r\n\r\nfunction __fillInDefaultArgs(params: UIParams) {\r\n if (!params.hasOwnProperty('name')) params.name = '';\r\n if (!params.hasOwnProperty('position')) params.position = mod.CreateVector(0, 0, 0);\r\n if (!params.hasOwnProperty('size')) params.size = mod.CreateVector(100, 100, 0);\r\n if (!params.hasOwnProperty('anchor')) params.anchor = mod.UIAnchor.TopLeft;\r\n if (!params.hasOwnProperty('parent')) params.parent = mod.GetUIRoot();\r\n if (!params.hasOwnProperty('visible')) params.visible = true;\r\n if (!params.hasOwnProperty('padding')) params.padding = params.type == 'Container' ? 0 : 8;\r\n if (!params.hasOwnProperty('bgColor')) params.bgColor = mod.CreateVector(0.25, 0.25, 0.25);\r\n if (!params.hasOwnProperty('bgAlpha')) params.bgAlpha = 0.5;\r\n if (!params.hasOwnProperty('bgFill')) params.bgFill = mod.UIBgFill.Solid;\r\n}\r\n\r\nfunction __setNameAndGetWidget(uniqueName: any, params: any) {\r\n let widget = mod.FindUIWidgetWithName(uniqueName) as mod.UIWidget;\r\n mod.SetUIWidgetName(widget, params.name);\r\n return widget;\r\n}\r\n\r\nconst __cUniqueName = '----uniquename----';\r\n\r\nfunction __addUIContainer(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIContainer(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIContainer(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill\r\n );\r\n }\r\n let widget = __setNameAndGetWidget(__cUniqueName, params);\r\n if (params.children) {\r\n params.children.forEach((childParams: any) => {\r\n childParams.parent = widget;\r\n __addUIWidget(childParams);\r\n });\r\n }\r\n return widget;\r\n}\r\n\r\nfunction __fillInDefaultTextArgs(params: UIParams) {\r\n if (!params.hasOwnProperty('textLabel')) params.textLabel = '';\r\n if (!params.hasOwnProperty('textSize')) params.textSize = 0;\r\n if (!params.hasOwnProperty('textColor')) params.textColor = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('textAlpha')) params.textAlpha = 1;\r\n if (!params.hasOwnProperty('textAnchor')) params.textAnchor = mod.UIAnchor.CenterLeft;\r\n}\r\n\r\nfunction __addUIText(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n __fillInDefaultTextArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIText(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n __asModMessage(params.textLabel),\r\n params.textSize,\r\n __asModVector(params.textColor),\r\n params.textAlpha,\r\n params.textAnchor,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIText(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n __asModMessage(params.textLabel),\r\n params.textSize,\r\n __asModVector(params.textColor),\r\n params.textAlpha,\r\n params.textAnchor\r\n );\r\n }\r\n return __setNameAndGetWidget(__cUniqueName, params);\r\n}\r\n\r\nfunction __fillInDefaultImageArgs(params: any) {\r\n if (!params.hasOwnProperty('imageType')) params.imageType = mod.UIImageType.None;\r\n if (!params.hasOwnProperty('imageColor')) params.imageColor = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('imageAlpha')) params.imageAlpha = 1;\r\n}\r\n\r\nfunction __addUIImage(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n __fillInDefaultImageArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIImage(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.imageType,\r\n __asModVector(params.imageColor),\r\n params.imageAlpha,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIImage(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.imageType,\r\n __asModVector(params.imageColor),\r\n params.imageAlpha\r\n );\r\n }\r\n return __setNameAndGetWidget(__cUniqueName, params);\r\n}\r\n\r\nfunction __fillInDefaultArg(params: any, argName: any, defaultValue: any) {\r\n if (!params.hasOwnProperty(argName)) params[argName] = defaultValue;\r\n}\r\n\r\nfunction __fillInDefaultButtonArgs(params: any) {\r\n if (!params.hasOwnProperty('buttonEnabled')) params.buttonEnabled = true;\r\n if (!params.hasOwnProperty('buttonColorBase')) params.buttonColorBase = mod.CreateVector(0.7, 0.7, 0.7);\r\n if (!params.hasOwnProperty('buttonAlphaBase')) params.buttonAlphaBase = 1;\r\n if (!params.hasOwnProperty('buttonColorDisabled')) params.buttonColorDisabled = mod.CreateVector(0.2, 0.2, 0.2);\r\n if (!params.hasOwnProperty('buttonAlphaDisabled')) params.buttonAlphaDisabled = 0.5;\r\n if (!params.hasOwnProperty('buttonColorPressed')) params.buttonColorPressed = mod.CreateVector(0.25, 0.25, 0.25);\r\n if (!params.hasOwnProperty('buttonAlphaPressed')) params.buttonAlphaPressed = 1;\r\n if (!params.hasOwnProperty('buttonColorHover')) params.buttonColorHover = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('buttonAlphaHover')) params.buttonAlphaHover = 1;\r\n if (!params.hasOwnProperty('buttonColorFocused')) params.buttonColorFocused = mod.CreateVector(1, 1, 1);\r\n if (!params.hasOwnProperty('buttonAlphaFocused')) params.buttonAlphaFocused = 1;\r\n}\r\n\r\nfunction __addUIButton(params: UIParams) {\r\n __fillInDefaultArgs(params);\r\n __fillInDefaultButtonArgs(params);\r\n let restrict = params.teamId ?? params.playerId;\r\n if (restrict) {\r\n mod.AddUIButton(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.buttonEnabled,\r\n __asModVector(params.buttonColorBase),\r\n params.buttonAlphaBase,\r\n __asModVector(params.buttonColorDisabled),\r\n params.buttonAlphaDisabled,\r\n __asModVector(params.buttonColorPressed),\r\n params.buttonAlphaPressed,\r\n __asModVector(params.buttonColorHover),\r\n params.buttonAlphaHover,\r\n __asModVector(params.buttonColorFocused),\r\n params.buttonAlphaFocused,\r\n restrict\r\n );\r\n } else {\r\n mod.AddUIButton(\r\n __cUniqueName,\r\n __asModVector(params.position),\r\n __asModVector(params.size),\r\n params.anchor,\r\n params.parent,\r\n params.visible,\r\n params.padding,\r\n __asModVector(params.bgColor),\r\n params.bgAlpha,\r\n params.bgFill,\r\n params.buttonEnabled,\r\n __asModVector(params.buttonColorBase),\r\n params.buttonAlphaBase,\r\n __asModVector(params.buttonColorDisabled),\r\n params.buttonAlphaDisabled,\r\n __asModVector(params.buttonColorPressed),\r\n params.buttonAlphaPressed,\r\n __asModVector(params.buttonColorHover),\r\n params.buttonAlphaHover,\r\n __asModVector(params.buttonColorFocused),\r\n params.buttonAlphaFocused\r\n );\r\n }\r\n return __setNameAndGetWidget(__cUniqueName, params);\r\n}\r\n\r\nfunction __addUIWidget(params: UIParams) {\r\n if (params == null) return undefined;\r\n if (params.type == 'Container') return __addUIContainer(params);\r\n else if (params.type == 'Text') return __addUIText(params);\r\n else if (params.type == 'Image') return __addUIImage(params);\r\n else if (params.type == 'Button') return __addUIButton(params);\r\n return undefined;\r\n}\r\n\r\nexport function ParseUI(...params: any[]) {\r\n let widget: mod.UIWidget | undefined;\r\n for (let a = 0; a < params.length; a++) {\r\n widget = __addUIWidget(params[a] as UIParams);\r\n }\r\n return widget;\r\n}\r\n\r\nexport function DisplayCustomNotificationMessage(msg: mod.Message, custom: mod.CustomNotificationSlots, duration: number, target?: mod.Player | mod.Team) {\r\n const CreateHeader = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(50, 250 + slot * (40 + 5), 0),\r\n mod.CreateVector(250, 60, 0),\r\n mod.UIAnchor.TopRight,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n msg,\r\n 30,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center,\r\n targetPlayer\r\n );\r\n if (duration > 0) {\r\n await mod.Wait(duration);\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\r\n }\r\n };\r\n const CreateSubText = async (widgetId: string, msg: mod.Message, targetPlayer: mod.Player, slot: number) => {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(85, 270 + slot * (40 + 3), 0),\r\n mod.CreateVector(125, 40, 0),\r\n mod.UIAnchor.TopRight,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n msg,\r\n 20,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center,\r\n targetPlayer\r\n );\r\n if (duration > 0) {\r\n await mod.Wait(duration);\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\r\n }\r\n };\r\n const createNotificationFunction = custom < 1 ? CreateHeader : CreateSubText;\r\n\r\n if (target) {\r\n // if target is player, fill message in their slot\r\n if (mod.IsType(target, mod.Types.Player)) {\r\n const widgetId = custom + String(target);\r\n createNotificationFunction(widgetId, msg, target as mod.Player, custom);\r\n }\r\n // if target is team, fill message in slot for all players on team\r\n else if (mod.IsType(target, mod.Types.Team)) {\r\n const teamMates = getPlayersInTeam(target as mod.Team);\r\n teamMates.forEach((player) => {\r\n const widgetId = custom + String(player);\r\n createNotificationFunction(widgetId, msg, player, custom);\r\n });\r\n }\r\n } else {\r\n const allPlayers = mod.AllPlayers();\r\n const n = mod.CountOf(allPlayers);\r\n for (let i = 0; i < n; i++) {\r\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\r\n const widgetId = custom + String(player);\r\n createNotificationFunction(widgetId, msg, player, custom);\r\n }\r\n }\r\n}\r\n\r\nexport function ShowEventGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\r\n //TODO: restore these once DisplayGameModeMessage is fixed\r\n // if (target) {\r\n // mod.DisplayGameModeMessage(event, target as mod.Player );\r\n // } else{\r\n // mod.DisplayGameModeMessage(event);\r\n // }\r\n\r\n const MakeShiftDisplayGameModeMessage = async (message: mod.Message, target?: mod.Player | mod.Team) => {\r\n const widgetId = 'GameModeMessage';\r\n if (target) {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(0, 0, 0),\r\n mod.CreateVector(2500, 80, 0),\r\n mod.UIAnchor.TopCenter,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n message,\r\n 30,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center,\r\n target as mod.Player\r\n );\r\n } else {\r\n mod.AddUIText(\r\n widgetId,\r\n mod.CreateVector(0, 0, 0),\r\n mod.CreateVector(2500, 80, 0),\r\n mod.UIAnchor.TopCenter,\r\n mod.GetUIRoot(),\r\n true,\r\n 8,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIBgFill.Blur,\r\n message,\r\n 30,\r\n mod.CreateVector(1, 1, 1),\r\n 1,\r\n mod.UIAnchor.Center\r\n );\r\n }\r\n\r\n await mod.Wait(6);\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(widgetId));\r\n };\r\n\r\n if (target) {\r\n MakeShiftDisplayGameModeMessage(event, target as mod.Player);\r\n } else {\r\n MakeShiftDisplayGameModeMessage(event);\r\n }\r\n}\r\n\r\nexport function ShowHighlightedGameModeMessage(event: mod.Message, target?: mod.Player | mod.Team) {\r\n if (target) {\r\n mod.DisplayHighlightedWorldLogMessage(event, target as mod.Player);\r\n } else {\r\n mod.DisplayHighlightedWorldLogMessage(event);\r\n }\r\n}\r\n\r\nexport function ShowNotificationMessage(msg: mod.Message, target?: mod.Player | mod.Team) {\r\n if (target) {\r\n mod.DisplayNotificationMessage(msg, target as mod.Player);\r\n } else {\r\n mod.DisplayNotificationMessage(msg);\r\n }\r\n}\r\n\r\nexport function ClearAllCustomNotificationMessages(target: mod.Player) {\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.HeaderText, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText1, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText2, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText3, target);\r\n } catch {}\r\n try {\r\n ClearCustomNotificationMessage(mod.CustomNotificationSlots.MessageText4, target);\r\n } catch {}\r\n}\r\n\r\nexport function ClearCustomNotificationMessage(custom: mod.CustomNotificationSlots, target?: mod.Player | mod.Team) {\r\n try {\r\n if (target) {\r\n // if target is player, just delete message in their slot\r\n if (mod.IsType(target, mod.Types.Player)) {\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(target as mod.Player)));\r\n }\r\n // if target is team, delete message in slot for all players on team\r\n else if (mod.IsType(target, mod.Types.Team)) {\r\n const teamMembers = getPlayersInTeam(target as mod.Team);\r\n for (let i = 0; i < teamMembers.length; i++) {\r\n let player = teamMembers[i];\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\r\n }\r\n }\r\n } else {\r\n // if no target, delete for all players\r\n const allPlayers = mod.AllPlayers();\r\n const n = mod.CountOf(allPlayers);\r\n for (let i = 0; i < n; i++) {\r\n let player = mod.ValueInArray(allPlayers, i) as mod.Player;\r\n mod.DeleteUIWidget(mod.FindUIWidgetWithName(custom + String(player)));\r\n }\r\n }\r\n } catch {\r\n console.error('Could not clear custom message for specified target(s)');\r\n }\r\n}\r\n"],"mappings":"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","names":["ManDownExperienceType","AiSpawnType","SquadSpawnType","ScoreboardType","PingBehavior","ModBuilderGameMode","FactionID","AttachmentType","msg","target"]}
|
|
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\tUndocumneted = 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\n/**\n * Describes all configurable mutators for the game.\n */\nexport type Mutators = {\n\t/**\n\t * Whether AI is allowed to go prone per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isProneAllowed], ...]`\n\t */\n\tAI_ProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Maximum number of players allowed per team or globally.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, maxPlayers], ...]`\n\t */\n\tMaxPlayerCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Maximum number of AI allowed per team or globally.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, maxAI], ...]`\n\t */\n\tAiMaxCount_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Determines the global AI spawn behavior.\n\t * Possible values depend on the internal AI spawn type enumeration.\n\t * If global: `SpawnType`\n\t * If per team: `[[teamIndex, SpawnType], ...]`\n\t */\n\tAiSpawnType: AiSpawnType;\n\n\t/**\n\t * Multiplies damage taken from falling. Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tFallDamageHeightMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Defines the \"Man Down\" experience type per team or globally.\n\t * If global: `ManDownExperienceType`\n\t * If per team: `[[teamIndex, ManDownExperienceType], ...]`\n\t */\n\tManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * Whether sprint-strafing is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSprintStrafeAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * The total number of teams supported in this game mode.\n\t */\n\tMaxTeamCount: number;\n\n\t/**\n\t * Whether passengers are allowed in vehicles.\n\t */\n\tVehicle_AllowPassengers: boolean;\n\n\t/**\n\t * Whether AI are allowed to occupy passenger seats in vehicles.\n\t */\n\tAI_Vehicle_AllowAiInPassengerSeats: boolean;\n\n\t/**\n\t * Whether friendly identification (friend/foe visibility)\n\t * is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tFriendlyIdentificationAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether squad revive is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSquadReviveAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether aim assist snap zoom is enabled globally.\n\t */\n\tAimAssistSnapZoomEnabled: boolean;\n\n\t/**\n\t * Whether prone is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tProneAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether vehicle health regeneration is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tVehicleHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether infinite weapon magazines are enabled per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isEnabled], ...]`\n\t */\n\tInfiniteWeaponMagazines_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether sprinting is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether soldier health regeneration is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether stationary emplacements (e.g. turrets) are allowed globally.\n\t */\n\tStationaryEmplacementsAllowed: boolean;\n\n\t/**\n\t * Whether sliding is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSlideAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether the compass is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tCompassAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether the minimap is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tMinimapAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Defines ping behavior per team or globally.\n\t * Likely corresponds to an internal ping mode enumeration.\n\t * If global: `PingBehavior`\n\t * If per team: `[[teamIndex, PingBehavior], ...]`\n\t */\n\tPingBehavior_PerTeam: PerTeam<PingBehavior>;\n\n\t/**\n\t * Whether the HUD (Heads-Up Display) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tHUDAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies the soldier's maximum health.\n\t * Values lower than 1.0 reduce health, while values greater than 1.0 increase health.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the soldier respawn delay time.\n\t * Values lower than 1.0 shorten respawn time, while values greater than 1.0 increase it.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the maximum vehicle health.\n\t * Values lower than 1.0 reduce health, while values greater than 1.0 increase health.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the speed of all projectiles globally.\n\t * Values lower than 1.0 slow down projectiles, while values greater than 1.0 speed them up.\n\t */\n\tProjectileSpeedMultiplier: number;\n\n\t/**\n\t * Multiplies bodyshot damage per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tBodyshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies headshot damage per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tHeadshotMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies damage dealt to vehicles per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the rate at which vehicles regenerate health per team or globally.\n\t * Values lower than 1.0 slow regeneration, while values greater than 1.0 speed it up.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies the soldier health regeneration rate per team or globally.\n\t * Values lower than 1.0 slow regeneration, while values greater than 1.0 speed it up.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Defines the scoreboard type globally.\n\t * Corresponds to an internal scoreboard display mode enumeration.\n\t */\n\tScoreboardType: ScoreboardType;\n\n\t/**\n\t * Defines the \"Man Down\" experience type for AI per team or globally.\n\t * If global: `ManDownExperienceType`\n\t * If per team: `[[teamIndex, ManDownExperienceType], ...]`\n\t */\n\tAI_ManDownExperienceType_PerTeam: PerTeam<ManDownExperienceType>;\n\n\t/**\n\t * Multiplies AI soldier movement speed per team or globally.\n\t * Values lower than 1.0 reduce speed, while values greater than 1.0 increase speed.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether AI sprinting is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_SprintAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether AI are allowed to exit vehicles per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_ExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether infinite weapon ammunition is enabled per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isEnabled], ...]`\n\t */\n\tInfiniteWeaponAmmo_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether AI soldier health regeneration is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_SoldierHealthRegenAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies AI soldier maximum health per team or globally.\n\t * Values lower than 1.0 reduce health, while values greater than 1.0 increase health.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierMaxHealthMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies AI soldier health regeneration rate per team or globally.\n\t * Values lower than 1.0 slow regeneration, while values greater than 1.0 speed it up.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierRegenRateMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Multiplies AI damage dealt per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_DamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether aim assist slowdown is enabled globally.\n\t */\n\tAimAssistSlowdownEnabled: boolean;\n\n\t/**\n\t * Multiplies soldier movement speed per team or globally.\n\t * Values lower than 1.0 reduce speed, while values greater than 1.0 increase speed.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tSoldierMovementSpeedMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether crosshairs (reticles) are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tCrosshairsAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies AI vehicle damage dealt per team or globally.\n\t * Values lower than 1.0 reduce damage, while values greater than 1.0 increase damage.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_VehicleDamageMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether AI are allowed to spawn on foot per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tAI_OnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Defines the AI squad spawn mode per team or globally.\n\t * Corresponds to an internal AI squad spawn behavior enumeration.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, mode], ...]`\n\t */\n\tAI_SquadSpawnMode_PerTeam: PerTeam<SquadSpawnType>;\n\n\t/**\n\t * Defines the squad spawn mode per team or globally.\n\t * Corresponds to an internal squad spawn behavior enumeration.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, mode], ...]`\n\t */\n\tSquadSpawnMode_PerTeam: PerTeam<SquadSpawnType>;\n\n\t/**\n\t * Multiplies AI soldier respawn delay time per team or globally.\n\t * Values lower than 1.0 shorten respawn time, while values greater than 1.0 increase it.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tAI_SoldierRespawnDelayMultiplier_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether friendly fire damage reflection is enabled globally.\n\t */\n\tFriendlyFireDamageReflectionEnabled: boolean;\n\n\t/**\n\t * Defines the current mod builder game mode globally.\n\t * Corresponds to an internal game mode enumeration.\n\t */\n\tModBuilder_GameMode: ModBuilderGameMode;\n\n\t/**\n\t * Multiplies the radius of the aim assist snap capsule globally.\n\t * Values lower than 1.0 reduce radius, while values greater than 1.0 increase radius.\n\t */\n\tAimAssistSnapCapsuleRadiusMultiplier: number;\n\n\t/**\n\t * Maximum number of team kills before friendly fire damage reflection activates.\n\t */\n\tFriendlyFireDamageReflectionMaxTeamKills: number;\n\n\t/**\n\t * Defines the total game time for the Portal experience in minutes.\n\t * Max of 60 minutes\n\t */\n\tfPortalExperienceGameTime: number;\n\n\t/**\n\t * Defines the maximum squad size per team or globally.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, squadSize], ...]`\n\t */\n\tSquadSize_PerTeam: PerTeam<number>;\n\n\t/**\n\t * Whether third-person vehicle camera views are disabled globally.\n\t */\n\tDisableVehicle3p: boolean;\n\n\t/**\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\tReloadWholeWeaponMagazines: boolean;\n\n\t/**\n\t * Controls the degree of feedback given to the player via audio or visual cues.\n\t */\n\tbPortalRestrictedGameFeedback: boolean;\n\n\t/**\n\t * Whether health bars are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tHealthBarAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether damage numbers (floating hit indicators) are hidden per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isHidden], ...]`\n\t */\n\tHideDamageNumbers_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether hit indicators are allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tHitIndicatorAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether HUD inventory auto-hide is enabled per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isEnabled], ...]`\n\t */\n\tHUDInventoryAutoHide_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether reduced friendly world icons are used globally.\n\t */\n\tUseReducedFriendlyWorldIcon: boolean;\n\n\t/**\n\t * Whether capture point scaling is allowed globally.\n\t */\n\tCapturePointScaleAllowed: boolean;\n\n\t/**\n\t * Whether the kill feed (kill log) is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tKillFeedAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether the squad list UI element is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tSquadListAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether voice-over (VO) communication is restricted globally.\n\t */\n\tbRestrictCommunicationVO: boolean;\n\n\t/**\n\t * Whether UI-based communication (pings, menus, etc.) is restricted globally.\n\t */\n\tbRestrictCommunicationUI: boolean;\n\n\t/**\n\t * Whether player spotting is allowed globally.\n\t */\n\tSpottingAllowed: boolean;\n\n\t/**\n\t * Controls whether AI can navigate the map, turning it off will decrease loading times.\n\t */\n\tPortal_GenerateNavMesh: boolean;\n\n\t/**\n\t * Defines the game mode start timer for spawn balancing, in seconds.\n\t * Note: This is a best guess and is undocumneted currently, if you notice it is something else\n\t * please create an issue\n\t */\n\tSpawnBalancing_GamemodeStartTimer: number;\n\n\t/**\n\t * Defines the player count ratio used for spawn balancing calculations.\n\t * Typically a value between 0.0 and 1.0.\n\t * Note: This is a best guess and is undocumneted currently, if you notice it is something else\n\t * please create an issue\n\t */\n\tSpawnBalancing_GamemodePlayerCountRatio: number;\n\n\t/**\n\t * Specifies the lobby player count threshold used to start a match in Conquest (CQ) game modes.\n\t * The timer will begin counting down once this player count is reached.\n\t * Note: This is a best guess and is undocumented currently; if you notice it behaves differently,\n\t * please create an issue.\n\t */\n\tCQ_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * Specifies the lobby player count threshold used to start a match in Breakthrough (BT) game modes.\n\t * The timer will begin counting down once this player count is reached.\n\t * Note: This is a best guess and is undocumented currently; if you notice it behaves differently,\n\t * please create an issue.\n\t */\n\tBT_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * Specifies the lobby player count threshold used to start a match in Rush game modes.\n\t * The timer will begin counting down once this player count is reached.\n\t * Note: This is a best guess and is undocumented currently; if you notice it behaves differently,\n\t * please create an issue.\n\t */\n\tRush_iLobbyPlayerCountStartTimer: number;\n\n\t/**\n\t * Defines the faction ID per team or globally.\n\t * If global: `FactionID`\n\t * If per team: `[[teamIndex, FactionID], ...]`\n\t */\n\tFactionID_PerTeam: PerTeam<FactionID>;\n\n\t/**\n\t * Whether class-locked weapon loadouts are enabled globally.\n\t */\n\tEnableClassLockedWeaponLoadouts: boolean;\n\n\t/**\n\t * Whether on-foot spawning is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tOnFootSpawnAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Whether exiting vehicles is allowed per team or globally.\n\t * If global: `true | false`\n\t * If per team: `[[teamIndex, isAllowed], ...]`\n\t */\n\tExitVehiclesAllowed_PerTeam: PerTeam<boolean>;\n\n\t/**\n\t * Multiplies the vehicle spawn delay per team or globally.\n\t * Values lower than 1.0 shorten delay, while values greater than 1.0 increase it.\n\t * If global: `number`\n\t * If per team: `[[teamIndex, multiplier], ...]`\n\t */\n\tVehicleSpawnDelayMultiplier_PerTeam: PerTeam<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)) 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\nexport async function WaitUntil(delay: number, cond: () => boolean) {\n // complete rush hack. this will likely wait way too long and other problems.\n let deltaCount = 10;\n let deltaWait = delay / deltaCount;\n for (let t = 0; t < deltaCount; t++) {\n if (!cond()) break;\n await mod.Wait(deltaWait);\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(team: mod.Team) {\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.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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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (all) => {
|
|
4
|
+
let target = {};
|
|
5
|
+
for (var name in all) __defProp(target, name, {
|
|
6
|
+
get: all[name],
|
|
7
|
+
enumerable: true
|
|
8
|
+
});
|
|
9
|
+
return target;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { __export as t };
|
package/dist/std/index.d.ts
CHANGED
|
@@ -1,45 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
import { t as __export } from "./chunk-Bp6m_JJh.js";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
declare namespace
|
|
5
|
-
export {
|
|
3
|
+
//#region src/std/message.d.ts
|
|
4
|
+
declare namespace message_d_exports {
|
|
5
|
+
export { MakeMessage };
|
|
6
|
+
}
|
|
7
|
+
declare function MakeMessage(message: string, ...args: (string | number | mod.Player)[]): mod.Message;
|
|
8
|
+
declare namespace countdown_d_exports {
|
|
9
|
+
export { CountdownUI, bf6Strings };
|
|
6
10
|
}
|
|
7
|
-
|
|
8
11
|
declare class CountdownUI {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
#private;
|
|
13
|
+
headerWidget: mod.UIWidget | undefined;
|
|
14
|
+
textWidget: mod.UIWidget | undefined;
|
|
15
|
+
constructor(playerId: mod.Player);
|
|
16
|
+
delete(): void;
|
|
17
|
+
open(text: string, countdowntime: number): void;
|
|
18
|
+
update(text: string, countdowntime: number): void;
|
|
19
|
+
close(delayclose?: number): Promise<void>;
|
|
17
20
|
}
|
|
18
21
|
declare const bf6Strings: {
|
|
19
|
-
|
|
22
|
+
__sdk__CountdownUI: string;
|
|
20
23
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
declare const countdown_CountdownUI: typeof CountdownUI;
|
|
24
|
-
declare const countdown_bf6Strings: typeof bf6Strings;
|
|
25
|
-
declare namespace countdown {
|
|
26
|
-
export { countdown_CountdownUI as CountdownUI, countdown_bf6Strings as bf6Strings };
|
|
24
|
+
declare namespace index_d_exports {
|
|
25
|
+
export { CountdownUI, bf6Strings, _default$1 as default };
|
|
27
26
|
}
|
|
28
|
-
|
|
29
27
|
declare const _default$1: {
|
|
30
|
-
|
|
28
|
+
countdown: typeof countdown_d_exports;
|
|
31
29
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
declare const ui_CountdownUI: typeof CountdownUI;
|
|
35
|
-
declare const ui_bf6Strings: typeof bf6Strings;
|
|
36
|
-
declare namespace ui {
|
|
37
|
-
export { ui_CountdownUI as CountdownUI, ui_bf6Strings as bf6Strings, _default$1 as default };
|
|
38
|
-
}
|
|
39
|
-
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/std/index.d.ts
|
|
40
32
|
declare const _default: {
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
message: typeof message_d_exports;
|
|
34
|
+
ui: typeof index_d_exports;
|
|
43
35
|
};
|
|
44
|
-
|
|
36
|
+
//#endregion
|
|
45
37
|
export { CountdownUI, MakeMessage, bf6Strings, _default as default };
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|