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"