From 19e527124979cd70caa3c7604160f4183d3fb37c Mon Sep 17 00:00:00 2001 From: datlo Date: Fri, 7 Dec 2018 11:07:49 +0000 Subject: [PATCH] Added syndicate officer as a job proper --- _maps/map_files/cyberiad/z2.dmm | 2 +- code/_globalvars/mapping.dm | 1 + code/datums/outfits/outfit_admin.dm | 37 +----------- code/game/gamemodes/changeling/changeling.dm | 2 +- code/game/gamemodes/cult/cult.dm | 2 +- code/game/gamemodes/shadowling/shadowling.dm | 2 +- code/game/gamemodes/traitor/traitor.dm | 2 +- code/game/gamemodes/vampire/vampire.dm | 2 +- code/game/jobs/access.dm | 7 ++- code/game/jobs/job/job.dm | 1 + code/game/jobs/job/syndicate.dm | 59 +++++++++++++++++++ code/game/jobs/jobs.dm | 1 + code/game/objects/effects/landmarks.dm | 4 ++ code/game/objects/items/weapons/cards_ids.dm | 4 ++ .../admin/verbs/infiltratorteam_syndicate.dm | 20 ------- code/modules/mob/new_player/new_player.dm | 9 +++ paradise.dme | 1 + 17 files changed, 93 insertions(+), 63 deletions(-) create mode 100644 code/game/jobs/job/syndicate.dm diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 3bf89ac39ef..254b923e7a2 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -715,7 +715,7 @@ "nM" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "nN" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT0"; name = "gravpult"},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "nO" = (/obj/item/radio/intercom/specops{pixel_y = -28},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"nP" = (/obj/structure/chair/comfy/red{icon_state = "comfychair"; dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"nP" = (/obj/structure/chair/comfy/red{icon_state = "comfychair"; dir = 1},/obj/effect/landmark{name = "Syndicate Officer"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "nQ" = (/obj/machinery/door/poddoor{id_tag = "GRAVPULTS"; name = "Gravity Catapults"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "nR" = (/obj/machinery/door/poddoor{id_tag = "GRAVPULTS"; name = "Gravity Catapults"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) "nS" = (/obj/machinery/computer/camera_advanced,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) diff --git a/code/_globalvars/mapping.dm b/code/_globalvars/mapping.dm index 4915b91f3d0..22205dacf91 100644 --- a/code/_globalvars/mapping.dm +++ b/code/_globalvars/mapping.dm @@ -41,6 +41,7 @@ var/list/blobstart = list() var/list/ninjastart = list() var/list/carplist = list() //list of all carp-spawn landmarks var/list/avatarspawn = list() +var/list/syndicateofficer = list() //away missions var/list/awaydestinations = list() //a list of landmarks that the warpgate can take you to diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 2761a8063ee..cf7f1a9d1a3 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -63,7 +63,7 @@ var/obj/item/radio/R = H.l_ear if(istype(R)) R.set_frequency(SYND_FREQ) - + H.faction += "syndicate" /datum/outfit/admin/syndicate_infiltrator name = "Syndicate Infiltrator" @@ -120,41 +120,6 @@ return H.equip_syndicate_commando() -/datum/outfit/admin/syndicate/officer - name = "Syndicate Officer" - - head = /obj/item/clothing/head/beret - mask = /obj/item/clothing/mask/cigarette/cigar/havana - belt = /obj/item/gun/projectile/automatic/pistol/deagle/camo - l_ear = /obj/item/radio/headset/syndicate/alt - l_pocket = /obj/item/pinpointer/advpinpointer - r_pocket = null // stop them getting a radio uplink, they get an implant instead - - backpack_contents = list( - /obj/item/storage/box/engineer = 1, - /obj/item/flashlight = 1, - /obj/item/reagent_containers/food/pill/initropidril = 1, - /obj/item/reagent_containers/food/snacks/syndidonkpocket = 1, - /obj/item/ammo_box/magazine/m50 = 2, - /obj/item/clothing/shoes/magboots/syndie/advance = 1, - /obj/item/lighter/zippo/gonzofist = 1 - ) - implants = list( - /obj/item/implant/dust - ) - id_icon = "commander" - id_access = "Syndicate Operative Leader" - -/datum/outfit/admin/syndicate/officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() - if(visualsOnly) - return - - var/obj/item/implant/uplink/U = new /obj/item/implant/uplink(H) - U.implant(H) - U.hidden_uplink.uses = 500 - - /datum/outfit/admin/syndicate/spy name = "Syndicate Spy" uniform = /obj/item/clothing/under/suit_jacket/really_black diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 6f3f62fc3ba..d3b08100319 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -11,7 +11,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" name = "changeling" config_tag = "changeling" restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer") protected_species = list("Machine") required_players = 15 required_enemies = 1 diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index da7cb876fc5..a2acb097b93 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -39,7 +39,7 @@ var/global/list/all_cults = list() /datum/game_mode/cult name = "cult" config_tag = "cult" - restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Security Pod Pilot", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer") + restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Security Pod Pilot", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer") protected_jobs = list() required_players = 30 required_enemies = 3 diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 317f9e55b80..66293c67613 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -73,7 +73,7 @@ Made by Xhuis required_enemies = 2 recommended_enemies = 2 restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer") /datum/game_mode/shadowling/announce() to_chat(world, "The current game mode is - Shadowling!") diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index c4f39867115..59915a68d11 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -11,7 +11,7 @@ name = "traitor" config_tag = "traitor" restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Internal Affairs Agent", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer") required_players = 0 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index 14ba6fb9dd0..097ef6e2cdd 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -9,7 +9,7 @@ name = "vampire" config_tag = "vampire" restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer") + protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Chaplain", "Brig Physician", "Internal Affairs Agent", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer") protected_species = list("Machine") required_players = 15 required_enemies = 1 diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 22a27a3b94c..f4910a88c95 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -96,6 +96,7 @@ /var/const/access_syndicate = 150//General Syndicate Access /var/const/access_syndicate_leader = 151//Nuke Op Leader Access /var/const/access_vox = 152//Vox Access +/var/const/access_syndicate_command = 153//Admin syndi officer //Trade Stations var/const/access_trade_sol = 160 @@ -234,6 +235,8 @@ var/const/access_trade_sol = 160 return list(access_vox) if("Syndicate Commando") return list(access_syndicate, access_syndicate_leader) + if("Syndicate Officer") + return list(access_syndicate, access_syndicate_leader, access_syndicate_command) /proc/get_all_accesses() return list(access_security, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_court, @@ -253,7 +256,7 @@ var/const/access_trade_sol = 160 return list(access_cent_general, access_cent_living, access_cent_medical, access_cent_security, access_cent_storage, access_cent_shuttles, access_cent_telecomms, access_cent_teleporter, access_cent_specops, access_cent_specops_commander, access_cent_blackops, access_cent_thunder, access_cent_bridge, access_cent_commander) /proc/get_all_syndicate_access() - return list(access_syndicate, access_syndicate_leader, access_vox) + return list(access_syndicate, access_syndicate_leader, access_vox, access_syndicate_command) /proc/get_all_misc_access() return list(access_salvage_captain, access_trade_sol, access_crate_cash, access_away01) @@ -496,6 +499,8 @@ var/const/access_trade_sol = 160 return "Syndicate Operative Leader" if(access_vox) return "Vox" + if(access_syndicate_command) + return "Syndicate Command" /proc/get_all_jobs() var/list/all_jobs = list() diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 92424dd2bcb..1f233a77818 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -56,6 +56,7 @@ var/admin_only = 0 var/spawn_ert = 0 + var/syndicate_command = 0 var/outfit = null diff --git a/code/game/jobs/job/syndicate.dm b/code/game/jobs/job/syndicate.dm new file mode 100644 index 00000000000..803e78779df --- /dev/null +++ b/code/game/jobs/job/syndicate.dm @@ -0,0 +1,59 @@ +/datum/job/syndicateofficer + title = "Syndicate Officer" + flag = SYNDICATE + department_flag = SYNDICATE + total_positions = 5 + spawn_positions = 5 + supervisors = "the admins" + selection_color = "#ff0000" + access = list() + minimal_access = list() + admin_only = 1 + syndicate_command = 1 + outfit = /datum/outfit/job/syndicateofficer + +/datum/job/syndicateofficer/get_access() + return get_syndicate_access(title) + +/datum/outfit/job/syndicateofficer + name = "Syndicate Officer" + jobtype = /datum/job/syndicateofficer + + uniform = /obj/item/clothing/under/syndicate + back = /obj/item/storage/backpack + head = /obj/item/clothing/head/beret + gloves = /obj/item/clothing/gloves/combat + shoes = /obj/item/clothing/shoes/combat + mask = /obj/item/clothing/mask/cigarette/cigar/havana + belt = /obj/item/gun/projectile/automatic/pistol/deagle/camo + l_ear = /obj/item/radio/headset/syndicate/alt/syndteam + l_pocket = /obj/item/pinpointer/advpinpointer + id = /obj/item/card/id/syndicate/command + box = /obj/item/storage/box/engineer + backpack_contents = list( + /obj/item/storage/box/engineer = 1, + /obj/item/flashlight = 1, + /obj/item/reagent_containers/food/pill/initropidril = 1, + /obj/item/reagent_containers/food/snacks/syndidonkpocket = 1, + /obj/item/ammo_box/magazine/m50 = 2, + /obj/item/clothing/shoes/magboots/syndie/advance = 1, + /obj/item/lighter/zippo/gonzofist = 1, + /obj/item/storage/box/matches = 1 + ) + implants = list( + /obj/item/implant/dust + ) + +/datum/outfit/job/syndicateofficer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/implant/uplink/U = new /obj/item/implant/uplink(H) + U.implant(H) + U.hidden_uplink.uses = 500 + H.faction += "syndicate" + var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS] + opshud.join_hud(H.mind.current) + set_antag_hud(H.mind.current, "hudoperative") + H.regenerate_icons() \ No newline at end of file diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index 80cfd953d42..fbb8fa9123d 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -12,6 +12,7 @@ var/const/ATMOSTECH =(1<<7) var/const/AI =(1<<8) var/const/CYBORG =(1<<9) var/const/CENTCOM =(1<<10) +var/const/SYNDICATE =(1<<11) var/const/MEDSCI =(1<<1) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index e164039a76d..7524d4eb234 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -88,6 +88,10 @@ emergencyresponseteamspawn += loc qdel(src) + if("Syndicate Officer") + syndicateofficer += loc + qdel(src) + GLOB.landmarks_list += src return 1 diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 38051dde621..1179c36c5f5 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -319,6 +319,10 @@ name = "agent card" initial_access = list(access_maint_tunnels, access_vox, access_external_airlocks) +/obj/item/card/id/syndicate/command + initial_access = list(access_maint_tunnels, access_syndicate, access_syndicate_leader, access_syndicate_command, access_external_airlocks) + icon_state = "commander" + /obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity) if(!proximity) return diff --git a/code/modules/admin/verbs/infiltratorteam_syndicate.dm b/code/modules/admin/verbs/infiltratorteam_syndicate.dm index 9f57125d021..a11563bf620 100644 --- a/code/modules/admin/verbs/infiltratorteam_syndicate.dm +++ b/code/modules/admin/verbs/infiltratorteam_syndicate.dm @@ -35,9 +35,6 @@ var/global/sent_syndicate_infiltration_team = 0 var/tctext = input(src, "How much TC do you want to give each team member? Suggested: 20-30. They cannot trade TC.") as num var/tcamount = text2num(tctext) tcamount = between(0, tcamount, 1000) - var/spawn_sit_mgmt = 0 - if(alert("Spawn a syndicate mob for you, so you can brief them before they go?",,"Yes","No")=="Yes") - spawn_sit_mgmt = 1 if(sent_syndicate_infiltration_team == 1) if(alert("A Syndicate Infiltration Team has already been sent. Sure you want to send another?",,"Yes","No")=="No") return @@ -114,23 +111,6 @@ var/global/sent_syndicate_infiltration_team = 0 num_spawned++ if(!teamsize) break - if(spawn_sit_mgmt) - for(var/obj/effect/landmark/L in sit_spawns_mgmt) - var/mob/living/carbon/human/syndimgmtmob = create_syndicate_infiltrator(L, 1, 100, 1) - syndimgmtmob.key = key - syndimgmtmob.internal = syndimgmtmob.s_store - syndimgmtmob.update_action_buttons_icon() - syndimgmtmob.faction += "syndicate" - syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses) - syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/suit/space/hardsuit/syndi/elite, slot_wear_suit) - syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite, slot_head) - syndimgmtmob.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate, slot_wear_mask) - var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS] - opshud.join_hud(syndimgmtmob.mind.current) - set_antag_hud(syndimgmtmob.mind.current, "hudoperative") - syndimgmtmob.mind.special_role = "Syndicate Management Consultant" - syndimgmtmob.regenerate_icons() - to_chat(syndimgmtmob, "You have spawned as Syndicate Management. You should brief them on their mission before they go.") message_admins("[key_name_admin(src)] has spawned a Syndicate Infiltration Team.", 1) log_admin("[key_name(src)] used Spawn Syndicate Infiltration Team.") feedback_add_details("admin_verb","SPAWNSIT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 5b3fd873777..6d636f0328e 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -295,6 +295,13 @@ else return 0 +/mob/new_player/proc/IsSyndicateCommand(rank) + var/datum/job/job = job_master.GetJob(rank) + if(job.syndicate_command) + return 1 + else + return 0 + /mob/new_player/proc/AttemptLateSpawn(rank,var/spawning_at) if(src != usr) return 0 @@ -336,6 +343,8 @@ if(IsAdminJob(rank)) if(IsERTSpawnJob(rank)) character.loc = pick(ertdirector) + else if(IsSyndicateCommand(rank)) + character.loc = pick(syndicateofficer) else character.loc = pick(aroomwarp) join_message = "has arrived" diff --git a/paradise.dme b/paradise.dme index 6a09fb215f2..d6fa0f8d048 100644 --- a/paradise.dme +++ b/paradise.dme @@ -561,6 +561,7 @@ #include "code\game\jobs\job\supervisor.dm" #include "code\game\jobs\job\support.dm" #include "code\game\jobs\job\support_chaplain.dm" +#include "code\game\jobs\job\syndicate.dm" #include "code\game\jobs\job_objectives\science.dm" #include "code\game\machinery\adv_med.dm" #include "code\game\machinery\ai_slipper.dm"