diff --git a/baystation12.dme b/baystation12.dme index 0775de87e57..88cc8eac53e 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -990,6 +990,7 @@ #include "code\modules\antag_contest\contest_helpers.dm" #include "code\modules\antag_contest\contest_objective.dm" #include "code\modules\antag_contest\contest_verbs.dm" +#include "code\modules\antag_contest\sol_items.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" #include "code\modules\assembly\helpers.dm" diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 82858a19d42..9c7ed17b2a6 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -1,7 +1,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) /datum/job/captain - title = "Captain" + title = "Sol Officer" flag = CAPTAIN department = "Command" head_position = 1 @@ -9,7 +9,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) faction = "Station" total_positions = 1 spawn_positions = 1 - supervisors = "company officials and Corporate Regulations" + supervisors = "the Sol Alliance and Admiral Michael Frost" selection_color = "#ccccff" idtype = /obj/item/weapon/card/id/gold req_admin_notify = 1 @@ -29,20 +29,19 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_cap(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/duffel/cap(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/captain(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/dress/officer(H), slot_w_uniform) if(H.age>49) - // Since we can have something other than the default uniform at this + // Since we can have something other than the default uniform at this // point, check if we can actually attach the medal var/obj/item/clothing/uniform = H.w_uniform var/obj/item/clothing/accessory/medal/gold/captain/medal = new() - if(uniform && uniform.can_attach_accessory(medal)) uniform.attach_accessory(null, medal) else qdel(medal) H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/head/dress/officer(H), slot_head) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) if(H.backbag == 1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand) @@ -50,7 +49,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) - H.implant_loyalty(H) + H.implant_loyalty_sol(H) return 1 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 472c6bf856e..b5e3df4625f 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -263,18 +263,19 @@ //var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds. /datum/job/lawyer - title = "Internal Affairs Agent" + title = "Alliance Representative" flag = LAWYER department = "Civilian" department_flag = CIVILIAN faction = "Station" total_positions = 2 spawn_positions = 2 - supervisors = "company officials and Corporate Regulations" + supervisors = "the Sol Alliance and Admiral Michael Frost" selection_color = "#dddddd" economic_modifier = 7 access = list(access_lawyer, access_sec_doors, access_maint_tunnels, access_heads) minimal_access = list(access_lawyer, access_sec_doors, access_heads) + alt_titles = list("NanoTrasen Internal Affairs Agent") equip(var/mob/living/carbon/human/H) @@ -291,8 +292,16 @@ H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses) H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) - - H.implant_loyalty(H) + + if (H.mind.role_alt_title) + switch(H.mind.role_alt_title) + if("Alliance Representative") + H.equip_to_slot_or_del(new /obj/item/weapon/melee/telebaton(H), slot_in_backpack) //remove those when the event is over + H.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/colt(H), slot_in_backpack) //remove those when the event is over + H.implant_loyalty_sol(H) + if("NanoTrasen Internal Affairs Agent") + H.implant_loyalty(H) + return 1 diff --git a/code/modules/antag_contest/contest_helpers.dm b/code/modules/antag_contest/contest_helpers.dm index 53235d77b50..3bef7a99c5d 100644 --- a/code/modules/antag_contest/contest_helpers.dm +++ b/code/modules/antag_contest/contest_helpers.dm @@ -42,3 +42,14 @@ antag_contest_side = ANTI_SYNTH else antag_contest_side = 0 + + +/mob/living/carbon/human/proc/implant_loyalty_sol(mob/living/carbon/human/M, override = FALSE) // Won't override by default. + + var/obj/item/weapon/implant/loyalty/sol/L = new/obj/item/weapon/implant/loyalty/sol(M) + L.imp_in = M + L.implanted = 1 + var/obj/item/organ/external/affected = M.organs_by_name["head"] + affected.implants += L + L.part = affected + L.implanted(src) \ No newline at end of file diff --git a/code/modules/antag_contest/sol_items.dm b/code/modules/antag_contest/sol_items.dm new file mode 100644 index 00000000000..304ff05aae8 --- /dev/null +++ b/code/modules/antag_contest/sol_items.dm @@ -0,0 +1,291 @@ +/* + * Sol Alliance military related items + */ + + +/obj/item/weapon/implant/loyalty/sol + name = "loyalty implant" + desc = "Makes you loyal to the Sol Alliance, or to a certain individual." + +/obj/item/weapon/implant/loyalty/sol/implanted(mob/M) + if(!istype(M, /mob/living/carbon/human)) return 0 + var/mob/living/carbon/human/H = M + var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role) + if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE)) + H.visible_message("[H] seems to resist the implant!", "You feel the tendrils of the Sol Alliance try to invade your mind!") + return 0 + else + clear_antag_roles(H.mind, 1) + H << "You feel a surge of loyalty towards Admiral Michael Frost." + return 1 + + +//sol uniforms + +/obj/item/clothing/under/rank/fatigues //regular sol navy combat fatigues + name = "sol navy fatigues" + desc = "Military looking uniform issued to Sol Alliance navy, to be used while in the field." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "sol_uniform" + item_state = "sol_uniform" + contained_sprite = 1 + armor = list(melee = 10, bullet = 10, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0) + +/obj/item/clothing/under/rank/fatigues/marine //regular sol navy marine fatigues + name = "sol marine fatigues" + desc = "Military looking uniform issued to Sol Alliance marines, to be used while in the field." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "marine_fatigue" + item_state = "marine_fatigue" + contained_sprite = 1 + +/obj/item/clothing/under/rank/service //navy personnel service unniform + name = "sol navy service uniform" + desc = "Military looking service uniform issued to Sol Alliance navy members." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "whiteservice" + item_state = "whiteservice" + contained_sprite = 1 + +/obj/item/clothing/under/rank/service/marine //sol marine service unniform + name = "sol marine service uniform" + desc = "Military looking service uniform issued to Sol Alliance marines." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "tanutility" + item_state = "tanutility" + contained_sprite = 1 + +/obj/item/clothing/under/rank/dress //navy personnel dress unniform + name = "sol navy dress uniform" + desc = "A fancy military looking dress uniform issued to Sol Alliance navy members." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "sailor" + item_state = "sailor" + contained_sprite = 1 + +/obj/item/clothing/under/rank/dress/marine //sol marine dress unniform + name = "sol marine dress uniform" + desc = "A fancy military looking dress uniform issued to Sol Alliance marine." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "mahreendress" + item_state = "mahreendress" + contained_sprite = 1 + +/obj/item/clothing/under/rank/dress/officer //sol marine officer dress unniform + name = "sol navy officer dress uniform" + desc = "A fancy military looking dress uniform issued to Sol Alliance navy officers." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "dress" + item_state = "dress" + contained_sprite = 1 + +/obj/item/clothing/under/rank/dress/admiral //admiral uniform + name = "sol navy admiral uniform" + desc = "A fancy military dress uniform issued to a higher member of the Sol Alliance navy." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "admiral_uniform" + item_state = "admiral_uniform" + contained_sprite = 1 + +//hats + +/obj/item/clothing/head/navy + name = "sol navy utility cover" + desc = "An eight pointed cover issued to Sol Alliance navy members as part of their field uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "greyutility" + item_state = "greyutility" + contained_sprite = 1 + armor = list(melee = 10, bullet = 10, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0) + +/obj/item/clothing/head/navy/marine + name = "sol marine utility cover" + desc = "An eight pointed cover issued to Sol Alliance marines as part of their field uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "greenutility" + item_state = "greenutility" + contained_sprite = 1 + +/obj/item/clothing/head/navy/garrison + name = "sol marine garrison cap" + desc = "A green garrison cap issued to Sol Alliance marines." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "greengarrisoncap" + item_state = "greengarrisoncap" + contained_sprite = 1 + +/obj/item/clothing/head/dress + name = "sol navy dress cap" + desc = "A white cap issued as part of the Sol Alliance navy dress uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "whitepeakcap" + item_state = "whitepeakcap" + contained_sprite = 1 + +/obj/item/clothing/head/dress/marine + name = "sol marine dress cap" + desc = "A green cap issued as part of the Sol Alliance marine dress uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "whitewheelcap" + item_state = "whitewheelcap" + contained_sprite = 1 + +/obj/item/clothing/head/dress/officer + name = "sol navy officer dress cap" + desc = "A white cap issued as part of the Sol Alliance navy officers dress uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "whitepeakcap" + item_state = "whitepeakcap" + contained_sprite = 1 + +/obj/item/clothing/head/dress/admiral + name = "sol navy admiral dress cap" + desc = "A fancy looking cap issued to a higher member of the Sol Alliance navy." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "admiral_cap" + item_state = "admiral_cap" + contained_sprite = 1 + +//ceremonial swords + +/obj/item/weapon/melee/ceremonial_sword + name = "sol officer ceremonial sword" + desc = "A ceremonial sword issued to Sol navy officers as part of their dress uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "officersword" + item_state = "officersword" + contained_sprite = 1 + flags = CONDUCT + slot_flags = SLOT_BELT + force = 15 + throwforce = 5 + w_class = 4 + sharp = 1 + edge = 1 + can_embed = 0 + origin_tech = list(TECH_COMBAT = 4) + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + hitsound = 'sound/weapons/bladeslice.ogg' + +/obj/item/weapon/melee/ceremonial_sword/marine + name = "sol marine ceremonial sword" + desc = "A ceremonial sword issued to Sol marine officers as part of their dress uniform." + icon = 'icons/obj/sol_uniform.dmi' + icon_state = "marineofficersword" + item_state = "marineofficersword" + contained_sprite = 1 + +//closet uniform + +/obj/structure/closet/sol + name = "sol navy uniform closet" + desc = "It's a storage unit for Sol Alliance navy uniforms." + icon_state = "syndicate1" + icon_closed = "syndicate1" + icon_opened = "syndicate1open" + +/obj/structure/closet/sol/navy/New() + ..() + new /obj/item/clothing/under/rank/fatigues(src) + new /obj/item/clothing/under/rank/fatigues(src) + new /obj/item/clothing/under/rank/fatigues(src) + new /obj/item/clothing/under/rank/service(src) + new /obj/item/clothing/under/rank/service(src) + new /obj/item/clothing/under/rank/service(src) + new /obj/item/clothing/head/navy(src) + new /obj/item/clothing/head/navy(src) + new /obj/item/clothing/head/navy(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/shoes/jackboots(src) + +/obj/structure/closet/sol/marine + name = "sol marines uniform closet" + desc = "It's a storage unit for Sol Alliance marine uniforms." + +/obj/structure/closet/sol/marine/New() + ..() + new /obj/item/clothing/under/rank/fatigues/marine(src) + new /obj/item/clothing/under/rank/fatigues/marine(src) + new /obj/item/clothing/under/rank/fatigues/marine(src) + new /obj/item/clothing/under/rank/service/marine(src) + new /obj/item/clothing/under/rank/service/marine(src) + new /obj/item/clothing/under/rank/service/marine(src) + new /obj/item/clothing/head/navy/marine(src) + new /obj/item/clothing/head/navy/marine(src) + new /obj/item/clothing/head/navy/garrison(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/shoes/jackboots(src) + +/obj/structure/closet/sol/navy_dress + name = "sol navy dress uniform closet" + desc = "It's a storage unit for Sol Alliance navy dress uniforms." + +/obj/structure/closet/sol/marine/New() + ..() + new /obj/item/clothing/under/rank/dress(src) + new /obj/item/clothing/under/rank/dress(src) + new /obj/item/clothing/under/rank/dress(src) + new /obj/item/clothing/head/dress(src) + new /obj/item/clothing/head/dress(src) + new /obj/item/clothing/head/dress(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/gloves/white(src) + new /obj/item/clothing/gloves/white(src) + new /obj/item/clothing/gloves/white(src) + +/obj/structure/closet/sol/marine_dress + name = "sol marine dress uniform closet" + desc = "It's a storage unit for Sol Alliance marine dress uniforms." + +/obj/structure/closet/sol/marine/New() + ..() + new /obj/item/clothing/under/rank/dress/marine(src) + new /obj/item/clothing/under/rank/dress/marine(src) + new /obj/item/clothing/under/rank/dress/marine(src) + new /obj/item/clothing/head/dress/marine(src) + new /obj/item/clothing/head/dress/marine(src) + new /obj/item/clothing/head/dress/marine(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/gloves/white(src) + new /obj/item/clothing/gloves/white(src) + new /obj/item/clothing/gloves/white(src) + +/obj/structure/closet/secure_closet/soll_officer + name = "soll alliance officer locker" + req_access = list(access_captain) + icon_state = "capsecure1" + icon_closed = "capsecure" + icon_locked = "capsecure1" + icon_opened = "capsecureopen" + icon_broken = "capsecurebroken" + icon_off = "capsecureoff" + +/obj/structure/closet/secure_closet/soll_officer/New() + ..() + if(prob(50)) + new /obj/item/weapon/storage/backpack/captain(src) + else + new /obj/item/weapon/storage/backpack/satchel_cap(src) + new /obj/item/clothing/under/rank/dress/officer(src) + new /obj/item/clothing/head/dress/officer(src) + new /obj/item/clothing/suit/storage/vest(src) + new /obj/item/weapon/cartridge/captain(src) + new /obj/item/clothing/head/helmet(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/device/radio/headset/heads/captain(src) + new /obj/item/clothing/gloves/white(src) + new /obj/item/weapon/gun/energy/pistol(src) + new /obj/item/device/flash(src) + new /obj/item/weapon/melee/telebaton(src) + new /obj/item/weapon/melee/ceremonial_sword(src) + new /obj/item/clothing/under/rank/fatigues(src) + new /obj/item/clothing/under/rank/service(src) + new /obj/item/clothing/shoes/jackboots(src) + new /obj/item/clothing/accessory/holster/armpit(src) + return diff --git a/icons/obj/sol_uniform.dmi b/icons/obj/sol_uniform.dmi new file mode 100644 index 00000000000..0ea97c488b2 Binary files /dev/null and b/icons/obj/sol_uniform.dmi differ diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index b622d0d4583..59ff1526446 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3392,7 +3392,7 @@ "bnl" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid{name = "cooled mainframe floor"; temperature = 278},/area/turret_protected/ai) "bnm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/bluegrid{name = "cooled mainframe floor"; temperature = 278},/area/turret_protected/ai) "bnn" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/modular_computer/console/preset/engineering,/turf/simulated/floor/bluegrid{name = "cooled mainframe floor"; temperature = 278},/area/turret_protected/ai) -"bno" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Captain's Intercom"; pixel_x = -27; pixel_y = -3},/obj/structure/closet/secure_closet/captains,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bno" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Captain's Intercom"; pixel_x = -27; pixel_y = -3},/obj/structure/closet/secure_closet/soll_officer,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bnp" = (/obj/machinery/modular_computer/console/preset/command,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bnq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two) "bnr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/effect/floor_decal/corner/blue{tag = "icon-corner_white (WEST)"; icon_state = "corner_white"; dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_two)