diff --git a/code/__DEFINES/xeno_ai.dm b/code/__DEFINES/xeno_ai.dm index 9095f56ad9..d7cbe1bf22 100644 --- a/code/__DEFINES/xeno_ai.dm +++ b/code/__DEFINES/xeno_ai.dm @@ -13,6 +13,7 @@ #define FIRE_PENALTY 25 #define SENTRY_PENALTY 25 #define VEHICLE_PENALTY 25 +#define LOCKED_DOOR_PENALTY 25 #define WINDOW_FRAME_PENALTY 25 #define BARRICADE_PENALTY 50 #define WALL_PENALTY 100 diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index d3cb19c40e..886799be34 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -119,6 +119,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/request_start() if(current_state == GAME_STATE_PREGAME) time_left = 0 + delay_start = FALSE // Killswitch if hanging or interrupted if(SSnightmare.stat != NIGHTMARE_STATUS_DONE) diff --git a/code/game/jobs/job/antag/xeno/queen.dm b/code/game/jobs/job/antag/xeno/queen.dm index 5702f9b1a6..62425e38b8 100644 --- a/code/game/jobs/job/antag/xeno/queen.dm +++ b/code/game/jobs/job/antag/xeno/queen.dm @@ -17,9 +17,3 @@ to_chat(new_queen, "Your job is to spread the hive.") to_chat(new_queen, "You should start by building a hive core.") to_chat(new_queen, "Talk in Hivemind using ; (e.g. ';Hello my children!')") - -AddTimelock(/datum/job/antag/xenos/queen, list( - JOB_XENO_ROLES = 10 HOURS, - JOB_DRONE_ROLES = 5 HOURS, - JOB_T3_ROLES = 3 HOURS, -)) diff --git a/code/game/jobs/job/civilians/other/liaison.dm b/code/game/jobs/job/civilians/other/liaison.dm index cbbb871249..d34c5fd6bc 100644 --- a/code/game/jobs/job/civilians/other/liaison.dm +++ b/code/game/jobs/job/civilians/other/liaison.dm @@ -22,7 +22,3 @@ name = JOB_CORPORATE_LIAISON icon_state = "cl_spawn" job = /datum/job/civilian/liaison - -AddTimelock(/datum/job/civilian/liaison, list( - JOB_HUMAN_ROLES = 10 HOURS, -)) diff --git a/code/game/jobs/job/civilians/other/reporter.dm b/code/game/jobs/job/civilians/other/reporter.dm index c681768f93..d3883f4742 100644 --- a/code/game/jobs/job/civilians/other/reporter.dm +++ b/code/game/jobs/job/civilians/other/reporter.dm @@ -33,7 +33,3 @@ This could be the story of the sector! 'Brave Marines responding to dangerous di /obj/effect/landmark/start/reporter name = JOB_COMBAT_REPORTER job = /datum/job/civilian/reporter - -AddTimelock(/datum/job/civilian/reporter, list( - JOB_HUMAN_ROLES = 10 HOURS, -)) diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index 07598483b8..685ca3d968 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -139,12 +139,6 @@ SSticker.mode.survivors_by_type_amounts[preferred_variant] += 1 -AddTimelock(/datum/job/civilian/survivor, list( - JOB_SQUAD_ROLES = 5 HOURS, - JOB_ENGINEER_ROLES = 5 HOURS, - JOB_MEDIC_ROLES = 5 HOURS -)) - /datum/job/civilian/survivor/synth title = JOB_SYNTH_SURVIVOR selection_class = "job_synth" diff --git a/code/game/jobs/job/civilians/support/cmo.dm b/code/game/jobs/job/civilians/support/cmo.dm index 835f16f7d8..930c1eb492 100644 --- a/code/game/jobs/job/civilians/support/cmo.dm +++ b/code/game/jobs/job/civilians/support/cmo.dm @@ -8,10 +8,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/cmo entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." -AddTimelock(/datum/job/civilian/professor, list( - JOB_MEDIC_ROLES = 10 HOURS -)) - /obj/effect/landmark/start/professor name = JOB_CMO icon_state = "cmo_spawn" diff --git a/code/game/jobs/job/civilians/support/doctor.dm b/code/game/jobs/job/civilians/support/doctor.dm index ff1b2146be..7c05985b23 100644 --- a/code/game/jobs/job/civilians/support/doctor.dm +++ b/code/game/jobs/job/civilians/support/doctor.dm @@ -51,10 +51,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/civilian/doctor, list( - JOB_MEDIC_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/doctor name = JOB_DOCTOR icon_state = "doc_spawn" diff --git a/code/game/jobs/job/civilians/support/nurse.dm b/code/game/jobs/job/civilians/support/nurse.dm index 8912011298..1848dd9d93 100644 --- a/code/game/jobs/job/civilians/support/nurse.dm +++ b/code/game/jobs/job/civilians/support/nurse.dm @@ -12,7 +12,3 @@ name = JOB_NURSE icon_state = "nur_spawn" job = /datum/job/civilian/nurse - -AddTimelock(/datum/job/civilian/nurse, list( - JOB_HUMAN_ROLES = 1 HOURS -)) diff --git a/code/game/jobs/job/civilians/support/researcher.dm b/code/game/jobs/job/civilians/support/researcher.dm index 21163f2795..cd875cf550 100644 --- a/code/game/jobs/job/civilians/support/researcher.dm +++ b/code/game/jobs/job/civilians/support/researcher.dm @@ -27,10 +27,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/civilian/researcher, list( - JOB_MEDIC_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/researcher name = JOB_RESEARCHER icon_state = "res_spawn" diff --git a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm index 5f62930003..8adc20786a 100644 --- a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm +++ b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm @@ -7,13 +7,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/auxiliary_officer entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." -AddTimelock(/datum/job/command/auxiliary_officer, list( - JOB_SQUAD_ROLES = 5 HOURS, - JOB_REQUISITION_ROLES = 5 HOURS, - JOB_ENGINEER_ROLES = 5 HOURS, - JOB_AUXILIARY_ROLES = 5 HOURS, -)) - /obj/effect/landmark/start/auxiliary_officer name = JOB_AUXILIARY_OFFICER job = /datum/job/command/auxiliary_officer diff --git a/code/game/jobs/job/command/auxiliary/crew_chief.dm b/code/game/jobs/job/command/auxiliary/crew_chief.dm index 0770bcd60f..9c2f7522b8 100644 --- a/code/game/jobs/job/command/auxiliary/crew_chief.dm +++ b/code/game/jobs/job/command/auxiliary/crew_chief.dm @@ -9,10 +9,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/dcc entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." -AddTimelock(/datum/job/command/crew_chief, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/crew_chief name = JOB_DROPSHIP_CREW_CHIEF icon_state = "dcc_spawn" diff --git a/code/game/jobs/job/command/auxiliary/intel.dm b/code/game/jobs/job/command/auxiliary/intel.dm index 9905bc9d37..b216d40dff 100644 --- a/code/game/jobs/job/command/auxiliary/intel.dm +++ b/code/game/jobs/job/command/auxiliary/intel.dm @@ -23,10 +23,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/command/intel, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/intel name = JOB_INTEL icon_state = "io_spawn" diff --git a/code/game/jobs/job/command/auxiliary/pilot.dm b/code/game/jobs/job/command/auxiliary/pilot.dm index 1a7a7c21d5..f03ef877d9 100644 --- a/code/game/jobs/job/command/auxiliary/pilot.dm +++ b/code/game/jobs/job/command/auxiliary/pilot.dm @@ -9,11 +9,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/po entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." -// Dropship Roles is both PO and DCC combined to not force people to backtrack -AddTimelock(/datum/job/command/pilot, list( - JOB_DROPSHIP_ROLES = 2 HOURS -)) - /obj/effect/landmark/start/pilot name = JOB_PILOT icon_state = "po_spawn" diff --git a/code/game/jobs/job/command/auxiliary/senior.dm b/code/game/jobs/job/command/auxiliary/senior.dm index 014db9569b..308279199e 100644 --- a/code/game/jobs/job/command/auxiliary/senior.dm +++ b/code/game/jobs/job/command/auxiliary/senior.dm @@ -27,16 +27,6 @@ return filtered_job_options -AddTimelock(/datum/job/command/senior, list( - JOB_SQUAD_ROLES = 15 HOURS, - - JOB_ENGINEER_ROLES = 10 HOURS, - JOB_POLICE_ROLES = 10 HOURS, - JOB_MEDIC_ROLES = 10 HOURS, - - JOB_COMMAND_ROLES = 5 HOURS, -)) - /obj/effect/landmark/start/senior name = JOB_SEA icon_state = "sea_spawn" diff --git a/code/game/jobs/job/command/cic/executive.dm b/code/game/jobs/job/command/cic/executive.dm index f717a03e12..0407215829 100644 --- a/code/game/jobs/job/command/cic/executive.dm +++ b/code/game/jobs/job/command/cic/executive.dm @@ -17,10 +17,6 @@ SIGNAL_HANDLER GLOB.marine_leaders -= JOB_XO -AddTimelock(/datum/job/command/executive, list( - JOB_COMMAND_ROLES = 5 HOURS, -)) - /obj/effect/landmark/start/executive name = JOB_XO icon_state = "xo_spawn" diff --git a/code/game/jobs/job/command/cic/staffofficer.dm b/code/game/jobs/job/command/cic/staffofficer.dm index 8e4e7c0cfa..c9c1cf7d8a 100644 --- a/code/game/jobs/job/command/cic/staffofficer.dm +++ b/code/game/jobs/job/command/cic/staffofficer.dm @@ -39,9 +39,8 @@ else gear_preset = initial(gear_preset) -AddTimelock(/datum/job/command/bridge, list( - JOB_SQUAD_LEADER = 1 HOURS, - JOB_HUMAN_ROLES = 15 HOURS +OverrideTimelock(/datum/job/command/bridge, list( + JOB_SQUAD_ROLES = 1 HOURS )) /obj/effect/landmark/start/bridge diff --git a/code/game/jobs/job/command/police/chief_police.dm b/code/game/jobs/job/command/police/chief_police.dm index 63e6d8023f..3cec89ee64 100644 --- a/code/game/jobs/job/command/police/chief_police.dm +++ b/code/game/jobs/job/command/police/chief_police.dm @@ -6,11 +6,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/cmp entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" -AddTimelock(/datum/job/command/warrant, list( - JOB_POLICE_ROLES = 15 HOURS, - JOB_COMMAND_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/warrant name = JOB_CHIEF_POLICE icon_state = "cmp_spawn" diff --git a/code/game/jobs/job/command/police/police.dm b/code/game/jobs/job/command/police/police.dm index e05bc2e962..95eaf7c1b9 100644 --- a/code/game/jobs/job/command/police/police.dm +++ b/code/game/jobs/job/command/police/police.dm @@ -25,10 +25,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/command/police, list( - JOB_SQUAD_ROLES = 10 HOURS -)) - /obj/effect/landmark/start/police name = JOB_POLICE icon_state = "mp_spawn" diff --git a/code/game/jobs/job/command/police/warden.dm b/code/game/jobs/job/command/police/warden.dm index d2775e1975..50e1a36ce8 100644 --- a/code/game/jobs/job/command/police/warden.dm +++ b/code/game/jobs/job/command/police/warden.dm @@ -7,10 +7,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/warden entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." -AddTimelock(/datum/job/command/warden, list( - JOB_POLICE_ROLES = 10 HOURS -)) - /obj/effect/landmark/start/warden name = JOB_WARDEN icon_state = "wmp_spawn" diff --git a/code/game/jobs/job/logistics/cargo/chief_req.dm b/code/game/jobs/job/logistics/cargo/chief_req.dm index 5d5123e687..6fbf6b8864 100644 --- a/code/game/jobs/job/logistics/cargo/chief_req.dm +++ b/code/game/jobs/job/logistics/cargo/chief_req.dm @@ -5,10 +5,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/qm entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." -AddTimelock(/datum/job/logistics/requisition, list( - JOB_REQUISITION_ROLES = 10 HOURS, -)) - /obj/effect/landmark/start/requisition name = JOB_CHIEF_REQUISITION icon_state = "ro_spawn" diff --git a/code/game/jobs/job/logistics/engi/chief_engineer.dm b/code/game/jobs/job/logistics/engi/chief_engineer.dm index b6aa23f9c4..a9a18165d9 100644 --- a/code/game/jobs/job/logistics/engi/chief_engineer.dm +++ b/code/game/jobs/job/logistics/engi/chief_engineer.dm @@ -5,10 +5,6 @@ gear_preset = /datum/equipment_preset/uscm_ship/chief_engineer entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." -AddTimelock(/datum/job/logistics/engineering, list( - JOB_ENGINEER_ROLES = 10 HOURS, -)) - /obj/effect/landmark/start/engineering name = JOB_CHIEF_ENGINEER icon_state = "ce_spawn" diff --git a/code/game/jobs/job/logistics/engi/ordnance_tech.dm b/code/game/jobs/job/logistics/engi/ordnance_tech.dm index 43a8a7122a..df55013cda 100644 --- a/code/game/jobs/job/logistics/engi/ordnance_tech.dm +++ b/code/game/jobs/job/logistics/engi/ordnance_tech.dm @@ -26,10 +26,6 @@ total_positions_so_far = positions return positions -AddTimelock(/datum/job/logistics/otech, list( - JOB_ENGINEER_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/otech name = JOB_ORDNANCE_TECH icon_state = "ot_spawn" diff --git a/code/game/jobs/job/marine/squad/engineer.dm b/code/game/jobs/job/marine/squad/engineer.dm index 1910248a61..5b93e5f6cf 100644 --- a/code/game/jobs/job/marine/squad/engineer.dm +++ b/code/game/jobs/job/marine/squad/engineer.dm @@ -32,10 +32,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/engineer -AddTimelock(/datum/job/marine/engineer, list( - JOB_SQUAD_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/marine/engineer name = JOB_SQUAD_ENGI icon_state = "engi_spawn" diff --git a/code/game/jobs/job/marine/squad/leader.dm b/code/game/jobs/job/marine/squad/leader.dm index ebb0cd25a9..e856164f87 100644 --- a/code/game/jobs/job/marine/squad/leader.dm +++ b/code/game/jobs/job/marine/squad/leader.dm @@ -25,8 +25,8 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/sl -AddTimelock(/datum/job/marine/leader, list( - JOB_SQUAD_ROLES = 10 HOURS +OverrideTimelock(/datum/job/marine/leader, list( + JOB_SQUAD_ROLES = 1 HOURS )) /obj/effect/landmark/start/marine/leader diff --git a/code/game/jobs/job/marine/squad/medic.dm b/code/game/jobs/job/marine/squad/medic.dm index 02b438c048..5c379c1121 100644 --- a/code/game/jobs/job/marine/squad/medic.dm +++ b/code/game/jobs/job/marine/squad/medic.dm @@ -45,11 +45,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/medic -AddTimelock(/datum/job/marine/medic, list( - JOB_MEDIC_ROLES = 1 HOURS, - JOB_SQUAD_ROLES = 1 HOURS -)) - /obj/effect/landmark/start/marine/medic name = JOB_SQUAD_MEDIC icon_state = "medic_spawn" diff --git a/code/game/jobs/job/marine/squad/smartgunner.dm b/code/game/jobs/job/marine/squad/smartgunner.dm index 6c27f5ec27..861d5fd905 100644 --- a/code/game/jobs/job/marine/squad/smartgunner.dm +++ b/code/game/jobs/job/marine/squad/smartgunner.dm @@ -41,10 +41,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/sg -AddTimelock(/datum/job/marine/smartgunner, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/marine/smartgunner name = JOB_SQUAD_SMARTGUN icon_state = "smartgunner_spawn" diff --git a/code/game/jobs/job/marine/squad/specialist.dm b/code/game/jobs/job/marine/squad/specialist.dm index e69241cdc7..3e4d0600c2 100644 --- a/code/game/jobs/job/marine/squad/specialist.dm +++ b/code/game/jobs/job/marine/squad/specialist.dm @@ -29,10 +29,6 @@ flags_startup_parameters = ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/wo/marine/spec -AddTimelock(/datum/job/marine/specialist, list( - JOB_SQUAD_ROLES = 5 HOURS -)) - /obj/effect/landmark/start/marine/spec name = JOB_SQUAD_SPECIALIST icon_state = "spec_spawn" diff --git a/code/game/jobs/job/marine/squad/tl.dm b/code/game/jobs/job/marine/squad/tl.dm index be876dc0b3..d074dfd182 100644 --- a/code/game/jobs/job/marine/squad/tl.dm +++ b/code/game/jobs/job/marine/squad/tl.dm @@ -16,10 +16,6 @@ . = ..() spawning_human.important_radio_channels += JTAC_FREQ -AddTimelock(/datum/job/marine/tl, list( - JOB_SQUAD_ROLES = 8 HOURS -)) - /obj/effect/landmark/start/marine/tl name = JOB_SQUAD_TEAM_LEADER icon_state = "tl_spawn" diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index cda3da5e2e..568c36e2c5 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -410,10 +410,6 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li var/willing = null //We don't want to allow people to be forced into despawning. var/mob/living/M = G.grabbed_thing - if(M.stat == DEAD) //This mob is dead - to_chat(user, SPAN_WARNING("[src] immediately rejects [M]. \He passed away!")) - return - if(isxeno(M)) to_chat(user, SPAN_WARNING("There is no way [src] will accept [M]!")) return diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index da904f255c..4c9b7beb21 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -72,6 +72,13 @@ /obj/structure/machinery/door/poddoor/shutters/finish_close() operating = FALSE +/obj/structure/machinery/door/poddoor/shutters/attack_alien(mob/living/carbon/xenomorph/M) + if(density && !operating) + INVOKE_ASYNC(src, PROC_REF(pry_open), M) + return XENO_ATTACK_ACTION + else + . = ..(M) + /obj/structure/machinery/door/poddoor/shutters/almayer icon = 'icons/obj/structures/doors/blastdoors_shutters.dmi' openspeed = 4 //shorter open animation. @@ -101,13 +108,6 @@ /obj/structure/machinery/door/poddoor/shutters/almayer/containment unacidable = TRUE -/obj/structure/machinery/door/poddoor/shutters/almayer/containment/attack_alien(mob/living/carbon/xenomorph/M) - if(isqueen(M) && density && !operating) - INVOKE_ASYNC(src, PROC_REF(pry_open), M) - return XENO_ATTACK_ACTION - else - . = ..(M) - /obj/structure/machinery/door/poddoor/shutters/almayer/containment/pry_open(mob/living/carbon/xenomorph/X, time = 4 SECONDS) . = ..() if(. && !(stat & BROKEN)) diff --git a/code/game/objects/items/reagent_containers/food/drinks.dm b/code/game/objects/items/reagent_containers/food/drinks.dm index 9f88990e53..a0d0f06be1 100644 --- a/code/game/objects/items/reagent_containers/food/drinks.dm +++ b/code/game/objects/items/reagent_containers/food/drinks.dm @@ -353,7 +353,7 @@ /obj/item/reagent_container/food/drinks/flask/canteen name = "canteen" - desc = "You take a sip from your trusty USCM canteen..." + desc = "A ruggedized metal alloy flask. Can hold a good amount of water... Or other liquids." icon_state = "canteen" volume = 60 center_of_mass = "x=17;y=8" @@ -362,6 +362,12 @@ . = ..() reagents.add_reagent("water", 60) +/obj/item/reagent_container/food/drinks/flask/canteen/empty + +/obj/item/reagent_container/food/drinks/flask/canteen/empty/Initialize() + . = ..() + reagents.clear_reagents() + /obj/item/reagent_container/food/drinks/flask/detflask name = "brown leather flask" desc = "A flask with a leather band around the sides, often seen filled with whiskey and carried by rugged, gritty detectives." diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 04e765dec5..2c17f447f1 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -1696,6 +1696,39 @@ new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) +#define MAXIMUM_MAGAZINE_COUNT 2 + +/obj/item/storage/belt/gun/smartgunner/garrow + name = "\improper M802 pattern smartgunner sidearm rig" + desc = "The M802 is a limited-issue mark of USCM load-bearing equipment, designed to carry a limited quantity of smartgun and pistol ammunition, along with a sidearm." + + //Keep a track of how many magazines are inside the belt. + var/magazines = 0 + +/obj/item/storage/belt/gun/smartgunner/garrow/can_be_inserted(obj/item/item, mob/user, stop_messages = FALSE) + . = ..() + if(magazines >= MAXIMUM_MAGAZINE_COUNT && istype(item, /obj/item/ammo_magazine/smartgun)) + if(!stop_messages) + to_chat(usr, SPAN_WARNING("[src] can't hold any more drums.")) + return FALSE + +/obj/item/storage/belt/gun/smartgunner/garrow/handle_item_insertion(obj/item/item, prevent_warning = FALSE, mob/user) + . = ..() + if(istype(item, /obj/item/ammo_magazine/smartgun)) + magazines++ + +/obj/item/storage/belt/gun/smartgunner/garrow/remove_from_storage(obj/item/item as obj, atom/new_location) + . = ..() + if(istype(item, /obj/item/ammo_magazine/smartgun)) + magazines-- + +//If a magazine disintegrates due to acid or something else while in the belt, remove it from the count. +/obj/item/storage/belt/gun/smartgunner/garrow/on_stored_atom_del(atom/movable/item) + if(istype(item, /obj/item/ammo_magazine/smartgun)) + magazines-- + +#undef MAXIMUM_MAGAZINE_COUNT + /obj/item/storage/belt/gun/smartgunner/pmc name = "\improper M802 pattern 'Dirty' smartgunner sidearm rig" desc = "A modification of the standard M802 load-bearing equipment, designed to carry smartgun ammunition and a sidearm." diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index ae476b0f73..2379837c97 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -139,6 +139,7 @@ new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) new /obj/item/clothing/suit/storage/marine/smartgunner(src) + new /obj/item/storage/belt/gun/smartgunner/garrow(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) @@ -157,6 +158,7 @@ new /obj/item/weapon/gun/smartgun(src) new /obj/item/smartgun_battery(src) new /obj/item/clothing/suit/storage/marine/smartgunner/standard(src) + new /obj/item/storage/belt/gun/smartgunner/garrow(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) new /obj/item/ammo_magazine/smartgun(src) diff --git a/code/game/world.dm b/code/game/world.dm index c23cce5abb..f47840b52c 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -74,7 +74,10 @@ var/list/reboot_sfx = file2list("config/reboot_sfx.txt") initiate_minimap_icons() change_tick_lag(CONFIG_GET(number/ticklag)) - GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 + + // As of byond 515.1637 time2text now treats 0 like it does negative numbers so the hour is wrong + // We could instead use world.timezone but IMO better to not assume lummox will keep time2text in parity with it + GLOB.timezoneOffset = text2num(time2text(10,"hh")) * 36000 Master.Initialize(10, FALSE, TRUE) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4d1f4ba083..704d633424 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -333,6 +333,7 @@ var/list/roundstart_mod_verbs = list( add_verb(src, /client/proc/open_resin_panel) add_verb(src, /client/proc/open_sound_panel) add_verb(src, /client/proc/toggle_join_xeno) + add_verb(src, /client/proc/admin_marine_announcement) add_verb(src, /client/proc/game_master_rename_platoon) add_verb(src, /client/proc/toggle_vehicle_blockers) add_verb(src, /client/proc/toggle_ai_xeno_weeding) diff --git a/code/modules/admin/game_master/extra_buttons/marine_announce.dm b/code/modules/admin/game_master/extra_buttons/marine_announce.dm new file mode 100644 index 0000000000..6a0a903b8a --- /dev/null +++ b/code/modules/admin/game_master/extra_buttons/marine_announce.dm @@ -0,0 +1,16 @@ +/client/proc/admin_marine_announcement() + set name = "Command Announcement" + set category = "Game Master.Extras" + + if(!check_rights(R_ADMIN)) + return + + var/body = tgui_input_text(src, "Enter the body text for the announcement.", title = "Announcement Body", multiline = TRUE, encode = FALSE) + if(!body) + return + var/title = tgui_input_text(src, "Enter the title of the announcement. Leave blank for the default title.", title = "Announcement Title") + if(!title) + title = COMMAND_ANNOUNCE + marine_announcement(body, "[title]") + message_admins("[key_name_admin(src)] has made an admin command announcement.") + log_admin("[key_name_admin(src)] made an admin command announcement: [body]") diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e54d86c7b7..33d77b05c6 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -310,8 +310,7 @@ var/const/MAX_SAVE_SLOTS = 10 dat += "Xenomorph - " if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_COMMANDER) dat += "Commanding Officer - " - if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) - dat += "Synthetic - " + dat += "Synthetic - " if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_PREDATOR) dat += "Yautja - " if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_MENTOR) @@ -495,15 +494,12 @@ var/const/MAX_SAVE_SLOTS = 10 else dat += "You do not have the whitelist for this role." if(MENU_SYNTHETIC) - if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_SYNTHETIC) - dat += "
" - dat += "

Synthetic Settings:

" - dat += "Synthetic Name: [synthetic_name]
" - dat += "Synthetic Type: [synthetic_type]
" - dat += "Synthetic Whitelist Status: [synth_status]
" - dat += "
" - else - dat += "You do not have the whitelist for this role." + dat += "
" + dat += "

Synthetic Settings:

" + dat += "Synthetic Name: [synthetic_name]
" + dat += "Synthetic Type: [synthetic_type]
" + dat += "Synthetic Whitelist Status: [synth_status]
" + dat += "
" if(MENU_YAUTJA) if(RoleAuthority.roles_whitelist[user.ckey] & WHITELIST_PREDATOR) dat += "
" diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index af1f6a03c9..ef8cc16051 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -821,6 +821,10 @@ var/global/list/gear_datums_by_name = list() display_name = "Canteen" path = /obj/item/reagent_container/food/drinks/flask/canteen +/datum/gear/flask/canteen/empty + display_name = "Empty canteen" + path = /obj/item/reagent_container/food/drinks/flask/canteen/empty + /datum/gear/flask/leather display_name = "Leather flask" path = /obj/item/reagent_container/food/drinks/flask/detflask diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 6bdb55e7d7..6c5701c1a3 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -441,6 +441,10 @@ /obj/item/clothing/suit/storage/marine/smartgunner/standard flags_atom = NO_SNOW_TYPE +/obj/item/clothing/suit/storage/marine/smartgunner/black + flags_atom = NO_SNOW_TYPE + icon_state = "8fancy" + /obj/item/clothing/suit/storage/marine/smartgunner/upp name = "\improper UH7-I heavy plated harness" desc = "An experimental set of heavy armor with additional harnesses designed to support QYJ-72-I smartmachinegun. Heavy plates along with harnesses make wearing backpacks extremely uncomfortable and borderline impossible." diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm b/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm index 177cd07433..40e20fc06f 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_ai_interaction.dm @@ -76,21 +76,32 @@ At bare minimum, make sure the relevant checks from parent types gets copied in ///////////////////////////// -// Poddoors/shutters // +// PODDDOORS // ///////////////////////////// /obj/structure/machinery/door/poddoor/xeno_ai_obstacle(mob/living/carbon/xenomorph/X, direction, turf/target) . = ..() if(!.) - return + return INFINITY + + if(unacidable) + return INFINITY if(!(stat & NOPOWER)) - return + return INFINITY + + return DOOR_PENALTY - if(operating) - return + +///////////////////////////// +// SHUTTERS // +///////////////////////////// +/obj/structure/machinery/door/poddoor/shutters/xeno_ai_obstacle(mob/living/carbon/xenomorph/X, direction, turf/target) + . = ..() + if(!.) + return INFINITY if(unacidable) - return + return INFINITY return DOOR_PENALTY @@ -104,7 +115,7 @@ At bare minimum, make sure the relevant checks from parent types gets copied in return if(locked || welded || isElectrified()) - return INFINITY + return LOCKED_DOOR_PENALTY if(isfacehugger(X)) return -1 // We LOVE going under doors! diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 0b14f1db09..0c6da6f973 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -250,7 +250,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/suppressor name = "suppressor" - desc = "A small tube with exhaust ports to expel noise and gas.\n Does not completely silence a weapon, but does make it much quieter and a little more accurate and stable at the cost of slightly reduced damage." + desc = "Small muzzle device that reduces flash and noise with special internal geometry.\n Reduces noise of the shot, increases accuracy and stability, but penalizes damage marginally." icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "suppressor" slot = "muzzle" @@ -278,7 +278,7 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "bayonet" item_state = "combat_knife" - desc = "The standard-issue bayonet of the Colonial Marines. You can slide this knife into your boots, or attach it to the end of a rifle." + desc = "USCMC standard issue combat knife. Can be put into boot holster or affixed to the bayonet lug of a rifle. Can also be used to extract shrapnel..." sharp = IS_SHARP_ITEM_ACCURATE force = MELEE_FORCE_NORMAL throwforce = MELEE_FORCE_NORMAL @@ -375,7 +375,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/extended_barrel name = "extended barrel" - desc = "The lengthened barrel speeds up and stabilizes the bullet, increasing velocity and accuracy." + desc = "Longer barrel reduces unburnt powder, improving muzzle velocity and accuracy." slot = "muzzle" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "ebarrel" @@ -452,7 +452,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/f90_dmr_barrel name = "f90 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "aug_dmr_barrel_a" attach_icon = "aug_dmr_barrel_a" slot = "muzzle" @@ -463,7 +463,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/f90_shotgun_barrel name = "f90 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "aug_mkey_barrel_a" attach_icon = "aug_mkey_barrel_a" slot = "muzzle" @@ -474,7 +474,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/l56a2_smartgun name = "l56a2 barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "magsg_barrel_a" attach_icon = "magsg_barrel_a" slot = "muzzle" @@ -613,8 +613,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/reddot name = "S5 red-dot sight" - desc = "An ARMAT S5 red-dot sight. A zero-magnification optic that offers faster, and more accurate target acquisition." - desc_lore = "An all-weather collimator sight, designated as the AN/PVQ-64 Dot Sight. Equipped with a sunshade to increase clarity in bright conditions and resist weathering. Compact and efficient, a marvel of military design, until you realize that this is actually just an off-the-shelf design that got a military designation slapped on." + desc = "An ARMAT S5 red-dot, type designated as the AN/PVQ-62 Dot Sight. Zero-magnification optic equipped with a sunshade, for better clarity under bright conditions and weather resistance. Unobtrusive and compact, increases wielded accuracy." icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "reddot" attach_icon = "reddot_a" @@ -626,10 +625,13 @@ Defined in conflicts.dm of the #defines folder. accuracy_unwielded_mod = HIT_ACCURACY_MULT_TIER_1 movement_onehanded_acc_penalty_mod = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5 +/obj/item/attachable/reddot/upp + name = "EKP-9-M Red Dot Sight" + desc = "Cutting edge UPP sight with automated reticle correction for a fixed zero point. Increases accuracy significantly." + /obj/item/attachable/reflex name = "S6 reflex sight" - desc = "An ARMAT S6 reflex sight. A zero-magnification alternative to iron sights with a more open optic window when compared to the S5 red-dot. Helps to reduce scatter during automated fire." - desc_lore = "A simple folding reflex sight designated as the AN/PVG-72 Reflex Sight, compatible with most rail systems. Bulky and built to last, it can link with military HUDs for limited point-of-aim calculations." + desc = "An ARMAT S6 reflex sight, type designated as the AN/PVG-72 Reflex. Zero-magnification alternative to irons, decreases scatter during burst fire. Can link with mil-HUDs for a limited CCIP." icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "reflex" attach_icon = "reflex_a" @@ -643,10 +645,13 @@ Defined in conflicts.dm of the #defines folder. burst_scatter_mod = -1 movement_onehanded_acc_penalty_mod = MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5 +/obj/item/attachable/reflex/upp + name = "PK-12 Reflex Sight" + desc = "Reflector type gunsight compatible with most standard issue UPP firearms. Durable but the power supply is notoriously unreliable. Reduces scatter significantly and boosts accuracy slightly." /obj/item/attachable/flashlight name = "rail flashlight" - desc = "A flashlight, for rails, on guns. Can be toggled on and off. A better light source than standard M3 pattern armor lights." + desc = "Railmounted flashlight. Pretty generic. Surprisingly high intensity, as it's a better light source than the suit lamps of most armor systems." icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "flashlight" attach_icon = "flashlight_a" @@ -806,6 +811,10 @@ Defined in conflicts.dm of the #defines folder. to_chat(user, SPAN_NOTICE("Hold on there cowboy, that grip is bolted on. You are unable to modify it.")) return +/obj/item/attachable/flashlight/grip/upp + name = "RK-5A Flashlight Grip" + desc = "Folding grip with an integrated flashlight. Reduces recoil and scatter marginally, boosts accuracy slightly. \nStatistically udentical to the underbarrel flashlight grip." + /obj/item/attachable/flashlight/laser_light_combo //Unique attachment for the VP78 based on the fact it has a Laser-Light Module in AVP2010 name = "VP78 Laser-Light Module" desc = "A Laser-Light module for the VP78 Service Pistol which is currently undergoing limited field testing as part of the USCMs next generation pistol program. All VP78 pistols come equipped with the module." @@ -899,8 +908,7 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "sniperscope" attach_icon = "sniperscope_a" - desc = "An ARMAT S8 telescopic eye piece. Fixed at 4x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." - desc_lore = "An intermediate-power Armat scope designated as the AN/PVQ-31 4x Optic. Fairly basic, but both durable and functional... enough. 780 meters is about as far as one can push the 10x24mm cartridge, really." + desc = "An ARMAT S8 scope, type designation AN/PVQ-31. Fixed 4x zoom, reduces fire rate and increases wield time but increases accuracy while scoped." slot = "rail" aim_speed_mod = SLOWDOWN_ADS_SCOPE //Extra slowdown when wielded wield_delay_mod = WIELD_DELAY_FAST @@ -989,6 +997,10 @@ Defined in conflicts.dm of the #defines folder. #define ZOOM_LEVEL_2X 0 #define ZOOM_LEVEL_4X 1 +/obj/item/attachable/scope/upp + name = "PO-M 4x Optic" + desc = "Old fashioned 4x scope. Sturdy, but a little unergonomic. UPP tradition. Reduces RoF and increases wield time. Major accuracy bonus when scoped." + /obj/item/attachable/scope/variable_zoom name = "S10 variable zoom telescopic scope" desc = "An ARMAT S10 telescopic eye piece. Can be switched between 2x zoom, which allows the user to move while scoped in, and 4x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." @@ -1071,8 +1083,7 @@ Defined in conflicts.dm of the #defines folder. name = "S4 2x telescopic mini-scope" icon_state = "miniscope" attach_icon = "miniscope_a" - desc = "An ARMAT S4 telescoping eye piece. Fixed at a modest 2x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." - desc_lore = "A light-duty optic, designated as the AN/PVQ-45 2x Optic. Suited towards short to medium-range engagements. Users are advised to zero it often, as the first mass-production batch had a tendency to drift in one direction or another with sustained use." + desc = "An ARMAT S4 scope, type designation AN/PVQ-45. 2x magnification optic, increases accuracy while scoped, decreases RoF and increased wield speed. \nZero often, first production batch suffered from drifting under heavy use and some of them might be in circulation still." slot = "rail" zoom_offset = 6 zoom_viewsize = 7 @@ -1095,6 +1106,10 @@ Defined in conflicts.dm of the #defines folder. G.slowdown -= dynamic_aim_slowdown ..() +/obj/item/attachable/scope/mini/upp + name = "1P93 2x Optic" + desc = "Mild update of a 2159 UPP design. Holds zero in all conditions, antiglint grid prevents glare, but the reticle is unfortunately cluttered and busy. Reduces RoF and increases wield time, boosts accuracy while scoped." + /obj/item/attachable/scope/mini/flaregun wield_delay_mod = 0 dynamic_aim_slowdown = SLOWDOWN_ADS_MINISCOPE_DYNAMIC @@ -1116,11 +1131,11 @@ Defined in conflicts.dm of the #defines folder. name = "2x hunting mini-scope" icon_state = "huntingscope" attach_icon = "huntingscope" - desc = "This civilian-grade scope is a common sight on hunting rifles due to its cheap price and great optics. Fixed at a modest 2x zoom. Press the 'use rail attachment' HUD icon or use the verb of the same name to zoom." + desc = "Generic fixed-magnification 2x optic. Common just about everywhere in civil hands, and sometimes used by law enforcement too." /obj/item/attachable/scope/mini/nsg23 name = "W-Y S4 2x advanced telescopic mini-scope" - desc = "An ARMAT S4 telescoping eye piece, custom-tuned by W-Y scientists to be as ergonomic as possible." + desc = "An ARMAT S4 telescoping eye piece, revised by W-Y scientists to be much more ergonomic." icon_state = "miniscope_nsg23" attach_icon = "miniscope_nsg23_a" zoom_offset = 7 @@ -1128,7 +1143,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/scope/mini/xm88 name = "XS-9 targeting relay" - desc = "An ARMAT XS-9 optical interface. Unlike a traditional scope, this rail-mounted device features no telescoping lens. Instead, the firearm's onboard targeting system relays data directly to the optic for the system operator to reference in realtime." + desc = "An ARMAT XS-9 optical interface, type designation XAN/PVG-90. Computer controlled 2x magnification with electronic fire control system, interfacing with the rifle's sensors to provide near perfect shooting accuracy... In theory." icon_state = "boomslang-scope" zoom_offset = 7 dynamic_aim_slowdown = SLOWDOWN_ADS_NONE @@ -1142,8 +1157,7 @@ Defined in conflicts.dm of the #defines folder. name = "B8 Smart-Scope" icon_state = "iffbarrel" attach_icon = "iffbarrel_a" - desc = "An experimental B8 Smart-Scope. Based on the technologies used in the Smart Gun by ARMAT, this sight has integrated IFF systems. It can only attach to the M4RA Battle Rifle and M44 Combat Revolver." - desc_lore = "An experimental fire-control optic capable of linking into compatible IFF systems on certain weapons, designated the XAN/PVG-110 Smart Scope. Currently programmed for usage with the M4RA battle rifle and M44 Combat Revolver, due to their relatively lower rates of fire. Experimental technology developed by Armat, who have assured that all previously reported issues with false-negative IFF recognitions have been solved. Make sure to check the sight after every op, just in case." + desc = "An experimental B8 Smart-Scope, type designation XAN/PVG-110. Limited automated IFF trigger interlock system allows for use with the M44 Combat Revolver and M4RA Battle Rifle. Reduces damage due to the momentary trigger delay." slot = "rail" zoom_offset = 6 zoom_viewsize = 7 @@ -1786,7 +1800,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/xm88 name = "\improper XM88 padded stock" - desc = "A specially made compound polymer stock reinforced with aluminum rods and thick rubber padding to shield the user from recoil. Fitted specifically for the XM88 Heavy Rifle." + desc = "A polymer framed alloy reinforced stock for the XM88 antimateriel rifle. Helps manage recoil." icon_state = "boomslang-stock" wield_delay_mod = WIELD_DELAY_NORMAL hud_offset_mod = 6 @@ -1942,8 +1956,8 @@ Defined in conflicts.dm of the #defines folder. aim_speed_mod = CONFIG_GET(number/slowdown_med) /obj/item/attachable/stock/rifle/collapsible - name = "\improper M41A folding stock" - desc = "The standard back end of any gun starting with \"M41\". Compatible with the M41A series, this stock reduces recoil and improves accuracy, but at a reduction to handling and agility. Also enhances the thwacking of things with the stock-end of the rifle." + name = "\improper M41A extendable stock" + desc = "The M41A's standard polymer extendable stock. When extended, it improves scatter, accuracy, and recoil, but slightly hinders agility." slot = "stock" melee_mod = 5 size_mod = 1 @@ -2185,7 +2199,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel name = "M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_barrel" attach_icon = "m4ra_barrel" slot = "special" @@ -2211,7 +2225,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/m4ra_barrel_custom name = "custom M4RA barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon_state = "m4ra_custom_barrel" attach_icon = "m4ra_custom_barrel" slot = "special" @@ -2242,7 +2256,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/upp_rpg_breech name = "HJRA-12 Breech" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "hjra_breech" attach_icon = "hjra_breech" @@ -2254,7 +2268,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/pkpbarrel name = "QYJ-72 Barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "uppmg_barrel" attach_icon = "uppmg_barrel" @@ -2266,7 +2280,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/pkpstock name = "QYJ-72 Stock" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "uppmg_stock" attach_icon = "uppmg_stock" @@ -2278,7 +2292,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/type88_barrel name = "Type-88 Barrel" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "type88_barrel" attach_icon = "type88_barrel" @@ -2290,7 +2304,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/type73suppressor name = "Type 73 Integrated Suppressor" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' icon_state = "type73_suppressor" attach_icon = "type73_suppressor" @@ -2302,7 +2316,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/type71 name = "Type 71 Stock" - desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + desc = "This isn't supposed to be separated from the gun, how'd this happen?" icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' icon_state = "type71_stock" attach_icon = "type71_stock" @@ -2813,8 +2827,8 @@ Defined in conflicts.dm of the #defines folder. //For the Mk1 /obj/item/attachable/attached_gun/grenade/mk1 - name = "\improper MK1 underslung grenade launcher" - desc = "An older version of the classic underslung grenade launcher. Can store five grenades, and fire them farther, but fires them slower." + name = "\improper PN 30mm underslung grenade launcher" + desc = "Standard pump action underslung grenade launcher. Fits the M41A, four round tube, chambers one." icon_state = "grenade-mk1" attach_icon = "grenade-mk1_a" current_rounds = 0 @@ -3003,7 +3017,7 @@ Defined in conflicts.dm of the #defines folder. name = "\improper U7 underbarrel shotgun" icon_state = "masterkey" attach_icon = "masterkey_a" - desc = "An ARMAT U7 tactical shotgun. Attaches to the underbarrel of most weapons. Only capable of loading up to five buckshot shells. Specialized for breaching into buildings." + desc = "An ARMAT U7 tactical shotgun. Attaches to the underbarrel of most weapons. Only capable of loading up to five buckshot shells. Specialized for breaching into buildings, shorter barrel reduces actual damage." w_class = SIZE_MEDIUM max_rounds = 5 current_rounds = 5 @@ -3050,7 +3064,7 @@ Defined in conflicts.dm of the #defines folder. name = "HME-12 underbarrel extinguisher" icon_state = "extinguisher" attach_icon = "extinguisher_a" - desc = "A Taiho-Technologies HME-12 underbarrel extinguisher. Attaches to the underbarrel of most weapons. Point at flame before applying pressure." + desc = "A Taiho-Technologies HME-12 underbarrel extinguisher, a miniaturization of a complex used by firefighters. Attaches to the underbarrel of most weapons, point at fire to remove fire." w_class = SIZE_MEDIUM slot = "under" flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION|ATTACH_WEAPON|ATTACH_MELEE @@ -3190,6 +3204,10 @@ Defined in conflicts.dm of the #defines folder. accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_3 scatter_unwielded_mod = SCATTER_AMOUNT_TIER_10 +/obj/item/attachable/verticalgrip/upp + name = "RK-5 Vertical Grip" + desc = "Sturdy grip positioned at optimal place offers enhanced stability in rapid fire. Increases weapon size, penalizes one handed fire, improves scatter and accuracy while wielded." + /obj/item/attachable/angledgrip name = "angled grip" desc = "An angled foregrip that improves weapon ergonomics resulting in faster wielding time. \nHowever, it also increases weapon size." @@ -3201,6 +3219,10 @@ Defined in conflicts.dm of the #defines folder. slot = "under" pixel_shift_x = 20 +/obj/item/attachable/angledgrip/upp + name = "RK-9 Angled Grip" + desc = "Ergonomic grip decreases time for shouldering the weapon. Increases weapon size, accelerates wield speed." + /obj/item/attachable/gyro name = "gyroscopic stabilizer" desc = "A set of weights and balances to stabilize the weapon when fired with one hand. Slightly decreases firing speed." @@ -3228,8 +3250,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/lasersight name = "laser sight" - desc = "A laser sight that attaches to the underside of most weapons. Increases accuracy and decreases scatter, especially while one-handed." - desc_lore = "A standard visible-band laser module designated as the AN/PEQ-42 Laser Sight. Can be mounted onto any firearm that has a lower rail large enough to accommodate it." + desc = "Standard issue visible-band underbarrel laser module, type designation AN/PEQ-42. Increases accuracy and decreases scatter, especially while one-handed. Also improves handling on the move." icon = 'icons/obj/items/weapons/guns/attachments/under.dmi' icon_state = "lasersight" attach_icon = "lasersight_a" @@ -3245,6 +3266,14 @@ Defined in conflicts.dm of the #defines folder. scatter_unwielded_mod = -SCATTER_AMOUNT_TIER_9 accuracy_unwielded_mod = HIT_ACCURACY_MULT_TIER_1 +/obj/item/attachable/lasersight/upp + name = "Zvezda Laser Module" + desc = "Visible band 512nm green laser, compatible with NVG and IR. Bears striking resemblance to an old Weyland Yutani offering... Decreases scatter, especially onehanded, slightly boosts accuracy. " + icon = 'icons/obj/items/weapons/guns/attachments/under.dmi' + icon_state = "lasersight_upp" + attach_icon = "lasersight_upp_a" + pixel_shift_x = 15 + pixel_shift_y = 18 /obj/item/attachable/bipod name = "bipod" diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 48918ef2ee..e0f481a7e4 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -1302,17 +1302,24 @@ /obj/item/attachable/flashlight, // Rail /obj/item/attachable/magnetic_harness, /obj/item/attachable/scope, + /obj/item/attachable/scope/upp, /obj/item/attachable/scope/mini, + /obj/item/attachable/scope/mini/upp, /obj/item/attachable/reddot, + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/flashlight/grip, + /obj/item/attachable/flashlight/grip/upp, /obj/item/attachable/lasersight, + /obj/item/attachable/lasersight/upp, /obj/item/attachable/burstfire_assembly, /obj/item/attachable/attached_gun/flamer, /obj/item/attachable/attached_gun/flamer/advanced, @@ -1355,7 +1362,7 @@ random_spawn_chance = 100 random_rail_chance = 70 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, ) random_muzzle_chance = 100 @@ -1364,14 +1371,14 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/rifle/type71/dual random_spawn_chance = 100 random_rail_chance = 70 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, ) random_muzzle_chance = 100 @@ -1380,8 +1387,8 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/lasersight, - /obj/item/attachable/verticalgrip, + /obj/item/attachable/lasersight/upp, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/rifle/type71/sapper @@ -1389,7 +1396,7 @@ random_spawn_chance = 100 random_rail_chance = 80 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, ) @@ -1410,9 +1417,12 @@ /obj/item/attachable/flashlight, // Rail /obj/item/attachable/magnetic_harness, /obj/item/attachable/scope, + /obj/item/attachable/scope/upp, /obj/item/attachable/scope/mini, - /obj/item/attachable/reddot, + /obj/item/attachable/scope/mini/upp, + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, @@ -1431,10 +1441,10 @@ random_spawn_chance = 100 random_rail_chance = 100 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, - /obj/item/attachable/scope/mini, + /obj/item/attachable/scope/mini/upp, ) random_muzzle_chance = 100 random_spawn_muzzle = list( @@ -1454,15 +1464,20 @@ /obj/item/attachable/flashlight, // Rail /obj/item/attachable/magnetic_harness, /obj/item/attachable/scope, + /obj/item/attachable/scope/upp, /obj/item/attachable/scope/mini, + /obj/item/attachable/scope/mini/upp, /obj/item/attachable/reddot, + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/suppressor, // Muzzle /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/burstfire_assembly, ) @@ -1485,7 +1500,7 @@ random_spawn_chance = 100 random_rail_chance = 70 random_spawn_rail = list( - /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, ) random_muzzle_chance = 100 @@ -1494,7 +1509,7 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/rifle/type71/carbine/commando @@ -1509,6 +1524,7 @@ current_mag = /obj/item/ammo_magazine/rifle/type71/ap attachable_allowed = list( /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) random_spawn_chance = 0 random_spawn_rail = list() diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index 9ea6624dc6..a705861f98 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -374,14 +374,18 @@ can cause issues with ammo types getting mixed up during the burst. current_mag = /obj/item/ammo_magazine/internal/shotgun/type23 attachable_allowed = list( /obj/item/attachable/reddot, // Rail + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, /obj/item/attachable/bayonet, // Muzzle /obj/item/attachable/heavy_barrel, /obj/item/attachable/bayonet/upp, /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/flashlight/grip, + /obj/item/attachable/flashlight/grip/upp, /obj/item/attachable/attached_gun/flamer, /obj/item/attachable/attached_gun/flamer/advanced, /obj/item/attachable/attached_gun/extinguisher, @@ -421,7 +425,7 @@ can cause issues with ammo types getting mixed up during the burst. ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/shotgun/type23/breacher/slug @@ -444,7 +448,7 @@ can cause issues with ammo types getting mixed up during the burst. random_under_chance = 100 random_spawn_under = list( /obj/item/attachable/flashlight/grip, - /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, ) /obj/item/weapon/gun/shotgun/type23/dragon @@ -470,10 +474,13 @@ can cause issues with ammo types getting mixed up during the burst. current_mag = /obj/item/ammo_magazine/internal/shotgun/type23/beanbag attachable_allowed = list( /obj/item/attachable/reddot, //Rail + /obj/item/attachable/reddot/upp, /obj/item/attachable/reflex, + /obj/item/attachable/reflex/upp, /obj/item/attachable/flashlight, /obj/item/attachable/magnetic_harness, /obj/item/attachable/verticalgrip, //Underbarrel + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/stock/type23, //Stock ) flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_INTERNAL_MAG diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index 1672df4631..bc0ac3340e 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -474,6 +474,7 @@ /obj/item/attachable/bayonet/upp, //Under, /obj/item/attachable/verticalgrip, + /obj/item/attachable/verticalgrip/upp, /obj/item/attachable/bipod, //Integrated, /obj/item/attachable/type88_barrel, diff --git a/colonialmarines.dme b/colonialmarines.dme index d814088a41..d5e035d6d2 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1405,6 +1405,7 @@ #include "code\modules\admin\game_master\resin_panel.dm" #include "code\modules\admin\game_master\sound_panel.dm" #include "code\modules\admin\game_master\extra_buttons\fire_support_menu.dm" +#include "code\modules\admin\game_master\extra_buttons\marine_announce.dm" #include "code\modules\admin\game_master\extra_buttons\rappel_menu.dm" #include "code\modules\admin\game_master\extra_buttons\rename_platoon.dm" #include "code\modules\admin\game_master\extra_buttons\toggle_ai_xeno_weeding.dm" diff --git a/html/changelogs/archive/2024-08.yml b/html/changelogs/archive/2024-08.yml index 232a1874b3..050c64bd12 100644 --- a/html/changelogs/archive/2024-08.yml +++ b/html/changelogs/archive/2024-08.yml @@ -60,3 +60,19 @@ 2024-08-11: private-tristan: - balance: M56D has been buffed with more damage, accuracy, and firerate. +2024-08-18: + BonniePandora: + - rscadd: Adds a Golden-Arrow specific sub-set of the smartgunners sidearm belt + - rscadd: Adds the above to the corresponding lockers, both on the standard & FORECON + smartgunner ones + Doubleumc: + - rscadd: Added 1 hour squad role timelocks for PltSgt, PltCo + - admin: '"Start Round" can start a delayed round' + nauticall: + - rscadd: Added a quick "Command Announcement" button for Game Masters, available + in the GM tab. + sunofang: + - admin: Spawn menu no longer populates by default, and doesnt cause you to lag. + xDanilcusx: + - bugfix: AI can track through electrified/locked/welded doors + - code_imp: AI now doesn't swipe on poddoors and shutters, opening them instead diff --git a/html/create_object.html b/html/create_object.html index a4c3085a9a..0625ab9e5c 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -37,7 +37,6 @@ var objects = object_paths == null ? new Array() : object_paths.split(";"); document.spawner.filter.focus(); - populateList(objects); function populateList(from_list) { object_list.options.length = 0; diff --git a/icons/mob/humans/onmob/eyes.dmi b/icons/mob/humans/onmob/eyes.dmi index c4d743f61e..9a4fd3bd64 100644 Binary files a/icons/mob/humans/onmob/eyes.dmi and b/icons/mob/humans/onmob/eyes.dmi differ diff --git a/icons/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi index a5e0100844..a316ccf8c4 100644 Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index 016a1cd6c0..2b3b3a091c 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/under.dmi b/icons/obj/items/weapons/guns/attachments/under.dmi index a3691b8cc5..8947ecd174 100644 Binary files a/icons/obj/items/weapons/guns/attachments/under.dmi and b/icons/obj/items/weapons/guns/attachments/under.dmi differ