diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 9e8b1aaeac83..5d0702a0763a 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -125,7 +125,7 @@
back = /obj/item/storage/backpack
ears = /obj/item/radio/headset/inteq/alt
l_pocket = /obj/item/pinpointer/nuke/syndicate
- id = /obj/item/card/id/syndicate/inteq
+ id = /obj/item/card/id/inteq
belt = /obj/item/gun/ballistic/automatic/pistol
backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\
/obj/item/kitchen/knife/combat/survival)
@@ -138,7 +138,7 @@
/datum/outfit/inteq/leader
name = "InteQ Leader - Basic"
- id = /obj/item/card/id/syndicate/inteq/nuke_leader
+ id = /obj/item/card/id/inteq/nuke_leader
gloves = /obj/item/clothing/gloves/krav_maga/combatglovesplus
r_hand = /obj/item/nuclear_challenge
command_radio = TRUE
@@ -197,7 +197,7 @@
mask = /obj/item/clothing/mask/gas/sechailer
suit = /obj/item/clothing/suit/space/syndicate/inteq
head = /obj/item/clothing/head/helmet/space/syndicate/inteq
- id = /obj/item/card/id/syndicate/inteq
+ id = /obj/item/card/id/inteq
r_pocket = /obj/item/tank/internals/emergency_oxygen/engi/syndi
internals_slot = ITEM_SLOT_RPOCKET
belt = /obj/item/storage/belt/military/inteq
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 47418e51ca43..05819c686613 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -763,7 +763,7 @@ DEFINE_BITFIELD(turret_flags, list(
/obj/machinery/porta_turret/syndicate/assess_perp(mob/living/carbon/human/perp)
var/obj/item/card/id/target_card = perp.get_idcard(FALSE)
if(target_card && (ACCESS_SYNDICATE in target_card?.access) && istype(target_card, /obj/item/card/id/syndicate))
- if(istype(target_card, /obj/item/card/id/syndicate/inteq) || istype(target_card, /obj/item/card/id/syndicate/inteq/anyone) || istype(target_card, /obj/item/card/id/syndicate/inteq/nuke_leader))
+ if(istype(target_card, /obj/item/card/id/inteq) || istype(target_card, /obj/item/card/id/inteq/anyone) || istype(target_card, /obj/item/card/id/inteq/nuke_leader))
return 10 //no InteQ allowed!
else
return 0
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index ef3a99ad898a..4a21f3c2d23f 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -586,24 +586,6 @@
assignment = "Trader"
access = list(ACCESS_SYNDICATE)
-/obj/item/card/id/syndicate/inteq
- name = "Mercenary Card"
- icon_state = "inteq"
- assignment = "Mercenary"
- access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ)
-
-/obj/item/card/id/syndicate/inteq/anyone
- name = "Vanguard Mercenary Card"
- icon_state = "inteq"
- assignment = "Vanguard Mercenary"
- access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ, ACCESS_INTEQ_LEADER)
-
-/obj/item/card/id/syndicate/inteq/nuke_leader
- name = "Nuclear Vanguard Mercenary Card"
- icon_state = "inteq"
- assignment = "Vanguard Mercenary"
- access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ, ACCESS_INTEQ_LEADER)
-
/obj/item/card/id/captains_spare
name = "captain's spare ID"
desc = "The spare ID of the High Lord himself."
diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm
index 869c36557c17..56b73cd1c298 100644
--- a/code/modules/jobs/access.dm
+++ b/code/modules/jobs/access.dm
@@ -386,7 +386,7 @@
return "scrambled"
if (istype(src, /obj/item/card/id/syndicate))
return "syndicate"
- if (istype(src, /obj/item/card/id/syndicate/inteq))
+ if (istype(src, /obj/item/card/id/inteq))
return "inteq"
if (istype(src, /obj/item/card/id/nri))
return "nri"
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
index 4ef5fea9423c..9fc6f4dacd07 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm
@@ -253,7 +253,7 @@
default_storage = /obj/item/inteq/uplink/radio
initial_language_holder = /datum/language_holder/synthetic
faction = list(ROLE_INTEQ)
- access_card = /obj/item/card/id/syndicate/inteq/anyone
+ access_card = /obj/item/card/id/inteq/anyone
radio = /obj/item/radio/borg/inteq
laws = \
"1. Слава ИнтеКью! Оперативник ИнтеКью является твоим Мастером. Оперативником ИнтеКью является активировавший тебя Агент.\n"+\
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index 352348b1daa2..4a646f60e9bd 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ
diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi
index f4c2dbb6ea51..0e2cd58e6e83 100644
Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ
diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi
index ed72cdf3422a..5329d0c71e28 100644
Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ
diff --git a/modular_bluemoon/Ren/Code/cloth.dm b/modular_bluemoon/Ren/Code/cloth.dm
index 3539eed426e9..b1668fe23123 100644
--- a/modular_bluemoon/Ren/Code/cloth.dm
+++ b/modular_bluemoon/Ren/Code/cloth.dm
@@ -559,7 +559,7 @@
path = /obj/item/clothing/underwear/socks/socks_line
///Аутфиты
-/obj/item/card/id/syndicate/inteq_fake
+/obj/item/card/id/inteq_fake
name = "InteQ Vanguard ID card"
id_type_name = "InteQ ID card"
desc = "An ID straight from the InteQ."
@@ -577,7 +577,7 @@
head = /obj/item/clothing/head/helmet/swat/inteq
mask = /obj/item/clothing/mask/balaclava/breath/inteq
r_pocket = /obj/item/tank/internals/emergency_oxygen/double
- id = /obj/item/card/id/syndicate/inteq_fake
+ id = /obj/item/card/id/inteq_fake
/obj/effect/mob_spawn/human/corpse/inteq_dead
name = "InteQ Operative"
diff --git a/modular_bluemoon/SmiLeY/code/modules/client/loadout/ac_clothing.dm b/modular_bluemoon/SmiLeY/code/modules/client/loadout/ac_clothing.dm
index 75e1643bd132..e543099e5eac 100644
--- a/modular_bluemoon/SmiLeY/code/modules/client/loadout/ac_clothing.dm
+++ b/modular_bluemoon/SmiLeY/code/modules/client/loadout/ac_clothing.dm
@@ -28,21 +28,21 @@
name = "AC Beret"
path = /obj/item/clothing/head/beret/sec/ac
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
/datum/gear/head/ac_cap
name = "AC Cap"
path = /obj/item/clothing/head/soft/sec/ac
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
/datum/gear/head/ac_officercap
name = "AC Officer Cap"
path = /obj/item/clothing/head/warden/ac
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
+ restricted_desc = "Head of Security, Warden, Blueshield."
restricted_roles = list("Head of Security", "Warden", "Blueshield")
// КОСТЮМЫ //
@@ -60,7 +60,7 @@
name = "AC Armored Coat"
path = /obj/item/clothing/suit/armor/hos/ac
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
+ restricted_desc = "Head of Security, Warden, Blueshield."
restricted_roles = list("Head of Security", "Warden", "Blueshield")
// УНИФОРМА //
@@ -100,33 +100,33 @@
name = "AC Tanktop Uniform"
path = /obj/item/clothing/under/rank/security/officer/ac
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
/datum/gear/uniform/ac_combatuni
name = "AC Combat Uniform"
path = /obj/item/clothing/under/rank/security/officer/ac/ac_combatuni
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
/datum/gear/uniform/ac_combatski
name = "AC Combat Skirt"
path = /obj/item/clothing/under/rank/security/officer/ac/ac_combatski
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
/datum/gear/uniform/ac_cassuit
name = "AC Casual Uniform"
path = /obj/item/clothing/under/rank/security/officer/ac/ac_cassuit
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
/datum/gear/uniform/ac_casski
name = "AC Casual Skirt"
path = /obj/item/clothing/under/rank/security/officer/ac/ac_casski
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
- restricted_desc = "Security"
- restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Blueshield")
+ restricted_desc = "Head of Security, Warden, Detective, Security Officer, Brig Physician, Peacekeeper, Blueshield."
+ restricted_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "Peacekeeper", "Blueshield")
diff --git a/modular_bluemoon/SmiLeY/hecu/icons/inteq_cards.dm b/modular_bluemoon/SmiLeY/hecu/icons/inteq_cards.dm
new file mode 100644
index 000000000000..d1e1b11ff39b
--- /dev/null
+++ b/modular_bluemoon/SmiLeY/hecu/icons/inteq_cards.dm
@@ -0,0 +1,120 @@
+/obj/item/card/id/inteq/one_access_copy
+ name = "Civilian Mercenary Card"
+ uses = 1
+
+/obj/item/card/id/inteq
+ name = "Mercenary Card"
+ icon_state = "inteq"
+ assignment = "Mercenary"
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ)
+
+/obj/item/card/id/inteq/anyone
+ name = "Vanguard Mercenary Card"
+ icon_state = "inteq"
+ assignment = "Vanguard Mercenary"
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ, ACCESS_INTEQ_LEADER)
+
+/obj/item/card/id/inteq/nuke_leader
+ name = "Nuclear Vanguard Mercenary Card"
+ icon_state = "inteq"
+ assignment = "Vanguard Mercenary"
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ, ACCESS_INTEQ_LEADER)
+
+/obj/item/card/id/inteq
+ name = "Agent Card"
+ icon_state = "inteq"
+ assignment = "Mercenary"
+ access = list(ACCESS_MAINT_TUNNELS, ACCESS_INTEQ)
+ var/anyone = FALSE //Can anyone forge the ID or just InteQ?
+ var/forged = FALSE //have we set a custom name and job assignment, or will we use what we're given when we chameleon change?
+ var/uses = 10 // Даём гражданской Синди-Карте одно использование вместо десяти.
+
+/obj/item/card/id/inteq/advanced
+ name = "Agent Card"
+ icon_state = "card_black"
+
+/obj/item/card/id/inteq/Initialize(mapload)
+ . = ..()
+ var/datum/action/item_action/chameleon/change/chameleon_action = new(src)
+ chameleon_action.chameleon_type = /obj/item/card/id
+ chameleon_action.chameleon_name = "ID Card"
+ chameleon_action.initialize_disguises()
+ if(!anyone)
+ AddComponent(/datum/component/identification/syndicate, ID_COMPONENT_DEL_ON_IDENTIFY, ID_COMPONENT_EFFECT_NO_ACTIONS, NONE) //no deconstructive analyzer usage.
+
+/obj/item/card/id/inteq/afterattack(obj/item/O, mob/user, proximity)
+ if(!proximity)
+ return
+ if(istype(O, /obj/item/card/id) && !uses)
+ to_chat(usr, "Микросканеры устройства издают отрицательное жужжание при попытке использовать их ещё раз.")
+ playsound(src, 'sound/effects/light_flicker.ogg', 100, 1)
+ return
+ if(istype(O, /obj/item/card/id))
+ var/obj/item/card/id/I = O
+ src.access |= I.access
+ uses = max(uses - 1, 0)
+ to_chat(usr, "Микросканеры устройства активизируются при проведении ею по Идентификационной Карте и копируют её доступ.")
+ playsound(src, 'sound/effects/light_flicker.ogg', 100, 1)
+
+/obj/item/card/id/inteq/attack_self(mob/user)
+ if(isliving(user) && user.mind)
+ var/first_use = registered_name ? FALSE : TRUE
+ if(!(user.mind.special_role || anyone)) //Unless anyone is allowed, only syndies can use the card, to stop metagaming.
+ if(first_use) //If a non-syndie is the first to forge an unassigned agent ID, then anyone can forge it.
+ anyone = TRUE
+ else
+ return ..()
+
+ var/popup_input
+ if(bank_support == ID_FREE_BANK_ACCOUNT)
+ popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset", "Change Account ID")
+ else
+ popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset")
+ if(!user.canUseTopic(src, BE_CLOSE, FALSE))
+ return
+ if(popup_input == "Forge/Reset" && !forged)
+ var/input_name = stripped_input(user, "What name would you like to put on this card? Leave blank to randomise.", "Agent card name", registered_name ? registered_name : (ishuman(user) ? user.real_name : user.name), MAX_NAME_LEN)
+ input_name = reject_bad_name(input_name)
+ if(!input_name)
+ // Invalid/blank names give a randomly generated one.
+ if(user.gender == MALE)
+ input_name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
+ else if(user.gender == FEMALE)
+ input_name = "[pick(GLOB.first_names_female)] [pick(GLOB.last_names)]"
+ else
+ input_name = "[pick(GLOB.first_names)] [pick(GLOB.last_names)]"
+
+ var/target_occupation = stripped_input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", assignment ? assignment : "Assistant", MAX_MESSAGE_LEN)
+ if(!target_occupation)
+ return
+ registered_name = input_name
+ assignment = target_occupation
+ update_label()
+ forged = TRUE
+ to_chat(user, "You successfully forge the ID card.")
+ log_game("[key_name(user)] has forged \the [initial(name)] with name \"[registered_name]\" and occupation \"[assignment]\".")
+
+ // First time use automatically sets the account id to the user.
+ if (first_use && !registered_account)
+ if(ishuman(user))
+ var/mob/living/carbon/human/accountowner = user
+
+ for(var/bank_account in SSeconomy.bank_accounts)
+ var/datum/bank_account/account = bank_account
+ if(account.account_id == accountowner.account_id)
+ account.bank_cards += src
+ registered_account = account
+ to_chat(user, "Your account number has been automatically assigned.")
+ return
+ else if (popup_input == "Forge/Reset" && forged)
+ registered_name = initial(registered_name)
+ assignment = initial(assignment)
+ log_game("[key_name(user)] has reset \the [initial(name)] named \"[src]\" to default.")
+ update_label()
+ forged = FALSE
+ to_chat(user, "You successfully reset the ID card.")
+ return
+ else if (popup_input == "Change Account ID")
+ set_new_account(user)
+ return
+ return ..()
diff --git a/modular_bluemoon/code/game/objects/items/plushes.dm b/modular_bluemoon/code/game/objects/items/plushes.dm
index 5d592710f79d..dde225f8a2b0 100644
--- a/modular_bluemoon/code/game/objects/items/plushes.dm
+++ b/modular_bluemoon/code/game/objects/items/plushes.dm
@@ -24,3 +24,19 @@
icon_state = "ada"
item_state = "ada"
squeak_override = list('modular_citadel/sound/voice/nya.ogg' = 1)
+
+/obj/item/toy/plush/jay
+ name = "Jay Plushie"
+ desc = "Плюшевая игрушка фиолетовой ящерки."
+ icon = 'modular_bluemoon/icons/obj/toys/plushes.dmi'
+ icon_state = "jay"
+ item_state = "jay"
+ squeak_override = list('modular_citadel/sound/voice/nya.ogg' = 1)
+
+/obj/item/toy/plush/kiirava
+ name = "Kiirava Plushie"
+ desc = "Плюшевая игрушка зеленоватой ящерки."
+ icon = 'modular_bluemoon/icons/obj/toys/plushes.dmi'
+ icon_state = "kiirava"
+ item_state = "kiirava"
+ squeak_override = list('modular_citadel/sound/voice/nya.ogg' = 1)
diff --git a/modular_bluemoon/icons/mob/inhands/items/plushes_lefthand.dmi b/modular_bluemoon/icons/mob/inhands/items/plushes_lefthand.dmi
index 01fa1e7a2ed0..8aebbcd551a6 100644
Binary files a/modular_bluemoon/icons/mob/inhands/items/plushes_lefthand.dmi and b/modular_bluemoon/icons/mob/inhands/items/plushes_lefthand.dmi differ
diff --git a/modular_bluemoon/icons/mob/inhands/items/plushes_righthand.dmi b/modular_bluemoon/icons/mob/inhands/items/plushes_righthand.dmi
index 99dd1d01044f..f8bff8928ce8 100644
Binary files a/modular_bluemoon/icons/mob/inhands/items/plushes_righthand.dmi and b/modular_bluemoon/icons/mob/inhands/items/plushes_righthand.dmi differ
diff --git a/modular_bluemoon/icons/obj/toys/plushes.dmi b/modular_bluemoon/icons/obj/toys/plushes.dmi
index 4340c80faeaf..d0c3eea676f1 100644
Binary files a/modular_bluemoon/icons/obj/toys/plushes.dmi and b/modular_bluemoon/icons/obj/toys/plushes.dmi differ
diff --git a/modular_bluemoon/kovac_shitcode/code/modules/antagonists/raiders.dm b/modular_bluemoon/kovac_shitcode/code/modules/antagonists/raiders.dm
index 37f624ced85c..479d8f3987fa 100644
--- a/modular_bluemoon/kovac_shitcode/code/modules/antagonists/raiders.dm
+++ b/modular_bluemoon/kovac_shitcode/code/modules/antagonists/raiders.dm
@@ -139,7 +139,7 @@
uniform = /obj/item/clothing/under/inteq
shoes = /obj/item/clothing/shoes/combat
ears = /obj/item/radio/headset/inteq/alt
- id = /obj/item/card/id/syndicate/inteq
+ id = /obj/item/card/id/inteq
var/command_radio = FALSE
@@ -147,7 +147,7 @@
/datum/outfit/inteq_raider/vanguard
name = "InteQ Vanguard"
- id = /obj/item/card/id/syndicate/inteq/anyone
+ id = /obj/item/card/id/inteq/anyone
suit = /obj/item/clothing/suit/armor/inteq/vanguard
head = /obj/item/clothing/head/HoS/inteq_vanguard
l_pocket = /obj/item/clothing/gloves/krav_maga/combatglovesplus
diff --git a/tgstation.dme b/tgstation.dme
index f2dd0cf54f3a..ea4d6fc439dc 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -4435,6 +4435,7 @@
#include "modular_bluemoon\SmiLeY\code\terror_spiders\widow.dm"
#include "modular_bluemoon\SmiLeY\hecu\code\hecu_helmet.dm"
#include "modular_bluemoon\SmiLeY\hecu\code\hecu_suit.dm"
+#include "modular_bluemoon\SmiLeY\hecu\icons\inteq_cards.dm"
#include "modular_bluemoon\SmiLeY\inteq_ghostrole\cybersun_tech.dm"
#include "modular_bluemoon\SmiLeY\inteq_ghostrole\forgottenship.dm"
#include "modular_bluemoon\SmiLeY\mapping\access_helpers.dm"