diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index 2f9d6e548f3..4ce23b417d3 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -153,3 +153,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define RELIGION_TOOL_INVOKE (1<<0)
#define RELIGION_TOOL_SACRIFICE (1<<1)
#define RELIGION_TOOL_SECTSELECT (1<<2)
+
+//skillchip flags
+//Skillchip type can be implanted multiple times
+#define SKILLCHIP_ALLOWS_MULTIPLE (1<<0)
diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm
index 1f350c674ca..be5964186c1 100644
--- a/code/modules/library/skill_learning/skillchip.dm
+++ b/code/modules/library/skill_learning/skillchip.dm
@@ -13,7 +13,7 @@
var/skill_name
/// Skill description shown on UI
var/skill_description
- /// FS icon show on UI
+ /// Fontawesome icon show on UI, list of possible icons https://fontawesome.com/icons?d=gallery&m=free
var/skill_icon = "brain"
/// Message shown when implanting the chip
var/implanting_message
@@ -23,6 +23,8 @@
var/removable = TRUE
/// How many skillslots this one takes
var/slot_cost = 1
+ /// Variable for flags
+ var/skillchip_flags = NONE
/// Called after implantation and/or brain entering new body
/obj/item/skillchip/proc/on_apply(mob/living/carbon/user,silent=TRUE)
@@ -49,8 +51,8 @@
//No skill slots left
if(target.used_skillchip_slots + slot_cost > target.max_skillchip_slots)
return FALSE
- //Only one copy of each for now.
- if(locate(type) in target_brain.skillchips)
+ //Only one multiple copies of a type if SKILLCHIP_ALLOWS_MULTIPLE flag is set
+ if(!(skillchip_flags & SKILLCHIP_ALLOWS_MULTIPLE) && (locate(type) in target_brain.skillchips))
return FALSE
return TRUE
@@ -63,8 +65,8 @@
//No skill slots left
if(target.used_skillchip_slots + slot_cost > target.max_skillchip_slots)
return "Complexity limit exceeded."
- //Only one copy of each for now.
- if(locate(type) in target_brain.skillchips)
+ //Only one multiple copies of a type if SKILLCHIP_ALLOWS_MULTIPLE flag is set
+ if(!(skillchip_flags & SKILLCHIP_ALLOWS_MULTIPLE) && (locate(type) in target_brain.skillchips))
return "Duplicate chip detected."
return "Chip ready for implantation."
@@ -96,3 +98,23 @@
skill_icon = "spa"
implanting_message = "Your mind is filled with plant arrangments."
removal_message = "Your can't remember how a hedge looks like anymore."
+
+/obj/item/skillchip/useless_adapter
+ name = "Skillchip adapter"
+ skill_name = "Useless adapter"
+ skill_description = "Allows you to insert another identical skillchip into this adapter, but the adapter also takes a slot ..."
+ skill_icon = "plug"
+ implanting_message = "You can now implant another chip into this adapter, but the adapter also took up an existing slot ..."
+ removal_message = "You no longer have the useless skillchip adapter."
+ skillchip_flags = SKILLCHIP_ALLOWS_MULTIPLE
+ slot_cost = 0
+
+/obj/item/skillchip/useless_adapter/on_apply(mob/living/carbon/user, silent)
+ . = ..()
+ user.max_skillchip_slots++
+ user.used_skillchip_slots++
+
+/obj/item/skillchip/useless_adapter/on_removal(mob/living/carbon/user, silent)
+ user.max_skillchip_slots--
+ user.used_skillchip_slots--
+ return ..()
diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm
index 9f26a9589a9..3480b732026 100644
--- a/code/modules/vending/games.dm
+++ b/code/modules/vending/games.dm
@@ -17,7 +17,8 @@
/obj/item/storage/card_binder = 10,
/obj/item/skillchip/basketweaving=2,
/obj/item/skillchip/bonsai=2,
- /obj/item/skillchip/wine_taster=2)
+ /obj/item/skillchip/wine_taster=2,
+ /obj/item/skillchip/useless_adapter=5)
contraband = list(/obj/item/dice/fudge = 9)
premium = list(/obj/item/melee/skateboard/pro = 3,
/obj/item/melee/skateboard/hoverboard = 1)