diff --git a/code/modules/loadout/loadout_items.dm b/code/modules/loadout/loadout_items.dm index bd70d6d266a..de4ce9965f0 100644 --- a/code/modules/loadout/loadout_items.dm +++ b/code/modules/loadout/loadout_items.dm @@ -347,6 +347,7 @@ GLOBAL_LIST_INIT(all_loadout_categories, init_loadout_categories()) formatted_item["reskins"] = get_reskin_options() formatted_item["icon"] = ui_icon formatted_item["icon_state"] = ui_icon_state + formatted_item["ckey_whitelist"] = ckeywhitelist // BUBBER EDIT ADDITION: Filter ckey-locked items return formatted_item diff --git a/code/modules/loadout/loadout_menu.dm b/code/modules/loadout/loadout_menu.dm index 6abf35c2aec..728898e7132 100644 --- a/code/modules/loadout/loadout_menu.dm +++ b/code/modules/loadout/loadout_menu.dm @@ -113,6 +113,7 @@ /datum/preference_middleware/loadout/get_ui_static_data(mob/user) var/list/data = list() data["loadout_preview_view"] = preferences.character_preview_view.assigned_map + data["ckey"] = user.ckey // BUBBER EDIT ADDITION: Filter ckey-locked items return data /datum/preference_middleware/loadout/get_constant_data() diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/ItemDisplay.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/ItemDisplay.tsx index 89bb54fbd07..c947eb63377 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/ItemDisplay.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/ItemDisplay.tsx @@ -132,7 +132,7 @@ export function ItemListDisplay(props: ListProps) { data.character_preferences.misc.loadout_lists[ data.character_preferences.misc.loadout_index ]; // BUBBER EDIT CHANGE: Multiple loadout presets: Original: data.character_preferences.misc; - const itemGroups = sortByGroup(props.items); + const itemGroups = sortByGroup(FilterItemList(props.items)); // BUBBER EDIT CHANGE: Filter ckey-locked items - ORIGINAL: const itemGroups = sortByGroup(props.items); return ( @@ -169,6 +169,20 @@ export function ItemListDisplay(props: ListProps) { ); } +// BUBBER EDIT ADDITION BEGIN: Filter ckey-locked items +const FilterItemList = (items: LoadoutItem[]) => { + const { data } = useBackend(); + const ckey = data.ckey; + + return items.filter((item: LoadoutItem) => { + if (item.ckey_whitelist && item.ckey_whitelist.indexOf(ckey) === -1) { + return false; + } + return true; + }); +}; +// BUBBER EDIT ADDITION END: Filter ckey-locked items + type TabProps = { category: LoadoutCategory | undefined; }; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/base.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/base.ts index b60b98eb0bc..160ecc47bfb 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/base.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/loadout/base.ts @@ -38,6 +38,7 @@ export type LoadoutItem = { buttons: LoadoutButton[]; reskins: ReskinOption[] | null; information: LoadoutTooltip[]; + ckey_whitelist: string[] | null; // BUBBER EDIT ADDITION: Filter ckey-locked items }; // Category of items in the loadout diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts index 490b3f80adf..1349b813bd2 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/types.ts @@ -236,6 +236,7 @@ export type PreferencesMenuData = { quirks_balance: number; positive_quirk_count: number; species_restricted_jobs?: string[]; + ckey: string; // SKYRAT EDIT END keybindings: Record;