diff --git a/code/__defines/dcs/helpers.dm b/code/__defines/dcs/helpers.dm index 0716d1cb4d..70092d117b 100644 --- a/code/__defines/dcs/helpers.dm +++ b/code/__defines/dcs/helpers.dm @@ -2,7 +2,7 @@ /// The datum hosting the signal is automaticaly added as the first argument /// Returns a bitfield gathered from all registered procs /// Arguments given here are packaged in a list and given to _SendSignal -#define SEND_SIGNAL(target, sigtype, arguments...) ( !target.comp_lookup || !target.comp_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(target, ##arguments)) ) +#define SEND_SIGNAL(target, sigtype, arguments...) ( !target._listen_lookup || !target._listen_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(target, ##arguments)) ) #define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) ) diff --git a/code/_macros.dm b/code/_macros.dm index 1da62c64e1..05f1180d80 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -166,6 +166,7 @@ Get the ultimate area of `A`, similarly to [get_turf]. #define SPAN_WARNING(X) SPAN("warning", X) #define SPAN_DANGER(X) SPAN("danger", X) #define SPAN_RED(X) SPAN("red", X) +#define SPAN_BLUE(X) SPAN("blue", X) #define SPAN_GREEN(X) SPAN("green", X) #define SPAN_GREEN_BOLD(X) SPAN("green_bold", X) #define SPAN_ALERT(X) SPAN("alert", X) diff --git a/code/_onclick/hud/action.dm b/code/_onclick/hud/action.dm index fccfde73ec..efd8e7c348 100644 --- a/code/_onclick/hud/action.dm +++ b/code/_onclick/hud/action.dm @@ -72,7 +72,7 @@ /datum/action/proc/Deactivate() return -/datum/action/Process() +/datum/action/proc/Process() return /datum/action/proc/CheckRemoval(mob/living/user) // TRUE if action is no longer valid for this mob and should be removed diff --git a/code/controllers/mc/globals.dm b/code/controllers/mc/globals.dm index 29995ca5f6..f785ee5823 100644 --- a/code/controllers/mc/globals.dm +++ b/code/controllers/mc/globals.dm @@ -14,23 +14,11 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) var/datum/controller/exclude_these = new gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) - qdel(exclude_these) + QDEL_IN(exclude_these, 0) //signal logging isn't ready - var/global_vars = vars.len - gvars_datum_in_built_vars.len - var/global_procs = length(typesof(/datum/controller/global_vars/proc)) + log_world("[vars.len - gvars_datum_in_built_vars.len] global variables") - report_progress("[global_vars] global variables") - report_progress("[global_procs] global init procs") - - try - if(global_vars == global_procs) - Initialize() - else - crash_with("Expected [global_vars] global init procs, were [global_procs].") - catch(var/exception/e) - to_world_log("Vars to be initialized: [json_encode((vars - gvars_datum_in_built_vars))]") - to_world_log("Procs used to initialize: [json_encode(typesof(/datum/controller/global_vars/proc))]") - throw e + Initialize() /datum/controller/global_vars/Destroy(force) // This is done to prevent an exploit where admins can get around protected vars @@ -44,9 +32,18 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) /datum/controller/global_vars/Initialize() gvars_datum_init_order = list() gvars_datum_protected_varlist = list(NAMEOF(src, gvars_datum_protected_varlist) = TRUE) - - for(var/I in typesof(/datum/controller/global_vars/proc)) + var/list/global_procs = typesof(/datum/controller/global_vars/proc) + var/expected_len = vars.len - gvars_datum_in_built_vars.len + if(global_procs.len != expected_len) + warning("Unable to detect all global initialization procs! Expected [expected_len] got [global_procs.len]!") + if(global_procs.len) + var/list/expected_global_procs = vars - gvars_datum_in_built_vars + for(var/I in global_procs) + expected_global_procs -= replacetext("[I]", "InitGlobal", "") + log_world("Missing procs: [expected_global_procs.Join(", ")]") + for(var/I in global_procs) var/start_tick = world.time call(src, I)() - if(world.time - start_tick) - warning("[I] slept during initialization!") + var/end_tick = world.time + if(end_tick - start_tick) + warning("Global [replacetext("[I]", "InitGlobal", "")] slept during initialization!") diff --git a/code/controllers/subsystem/dcs.dm b/code/controllers/subsystem/dcs.dm index b1e6e55654..9356948d51 100644 --- a/code/controllers/subsystem/dcs.dm +++ b/code/controllers/subsystem/dcs.dm @@ -6,7 +6,7 @@ PROCESSING_SUBSYSTEM_DEF(dcs) var/list/elements_by_type = list() /datum/controller/subsystem/processing/dcs/Recover() - comp_lookup = SSdcs.comp_lookup + _listen_lookup = SSdcs._listen_lookup /datum/controller/subsystem/processing/dcs/proc/GetElement(list/arguments) var/datum/element/eletype = arguments[1] diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index c11efa6167..cc2fe54f22 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -174,13 +174,13 @@ /datum/proc/RegisterSignal(datum/target, sig_type_or_types, proctype, override = FALSE) if(QDELETED(src) || QDELETED(target)) return - var/list/procs = signal_procs + var/list/procs = (_signal_procs ||= list()) if(!procs) - signal_procs = procs = list() + _signal_procs = procs = list() var/list/target_procs = procs[target] || (procs[target] = list()) - var/list/lookup = target.comp_lookup + var/list/lookup = target._listen_lookup if(!lookup) - target.comp_lookup = lookup = list() + target._listen_lookup = lookup = list() for(var/sig_type in (islist(sig_type_or_types) ? sig_type_or_types : list(sig_type_or_types))) if(!override && target_procs[sig_type]) @@ -210,37 +210,37 @@ * * sig_typeor_types Signal string key or list of signal keys to stop listening to specifically */ /datum/proc/UnregisterSignal(datum/target, sig_type_or_types) - var/list/lookup = target.comp_lookup - if(!signal_procs || !signal_procs[target] || !lookup) + var/list/lookup = target._listen_lookup + if(!_signal_procs || !_signal_procs[target] || !lookup) return if(!islist(sig_type_or_types)) sig_type_or_types = list(sig_type_or_types) for(var/sig in sig_type_or_types) - if(!signal_procs[target][sig]) + if(!_signal_procs[target][sig]) continue switch(length_char(lookup[sig])) if(2) lookup[sig] = (lookup[sig]-src)[1] if(1) - stack_trace("[target] ([target.type]) somehow has single length list inside comp_lookup") + stack_trace("[target] ([target.type]) somehow has single length list inside _listen_lookup") if(src in lookup[sig]) lookup -= sig if(!length_char(lookup)) - target.comp_lookup = null + target._listen_lookup = null break if(0) if(lookup[sig] != src) continue lookup -= sig if(!length_char(lookup)) - target.comp_lookup = null + target._listen_lookup = null break else lookup[sig] -= src - signal_procs[target] -= sig_type_or_types - if(!signal_procs[target].len) - signal_procs -= target + _signal_procs[target] -= sig_type_or_types + if(!_signal_procs[target].len) + _signal_procs -= target /** * Called on a component when a component of the same type was added to the same parent @@ -304,13 +304,13 @@ * Use the [SEND_SIGNAL] define instead */ /datum/proc/_SendSignal(sigtype, list/arguments) - var/target = comp_lookup[sigtype] + var/target = _listen_lookup[sigtype] if(!length_char(target)) var/datum/listening_datum = target - return NONE | CallAsync(listening_datum, listening_datum.signal_procs[src][sigtype], arguments) + return NONE | CallAsync(listening_datum, listening_datum._signal_procs[src][sigtype], arguments) . = NONE for(var/datum/listening_datum as anything in target) - . |= CallAsync(listening_datum, listening_datum.signal_procs[src][sigtype], arguments) + . |= CallAsync(listening_datum, listening_datum._signal_procs[src][sigtype], arguments) // The type arg is casted so initial works, you shouldn't be passing a real instance into this /** diff --git a/code/datums/datum.dm b/code/datums/datum.dm index ae5af9d0e5..39c6116da3 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -36,9 +36,9 @@ * * Lazy associated list in the structure of `signal:registree/list of registrees` */ - var/list/comp_lookup - /// Lazy associated list in the structure of `signals:proctype` that are run when the datum receives that signal - var/list/list/datum/callback/signal_procs + var/list/_listen_lookup + /// Lazy associated list in the structure of `target -> list(signal -> proctype)` that are run when the datum receives that signal + var/list/list/_signal_procs /// Datum level flags var/datum_flags = NONE @@ -125,12 +125,8 @@ //END: ECS SHIT return QDEL_HINT_QUEUE -/datum/proc/Process() - set waitfor = 0 - return PROCESS_KILL - /datum/proc/clear_signal_refs() - var/list/lookup = comp_lookup + var/list/lookup = _listen_lookup if(lookup) for(var/sig in lookup) var/list/comps = lookup[sig] @@ -140,10 +136,10 @@ else var/datum/component/comp = comps comp.UnregisterSignal(src, sig) - comp_lookup = lookup = null + _listen_lookup = lookup = null - for(var/target in signal_procs) - UnregisterSignal(target, signal_procs[target]) + for(var/target in _signal_procs) + UnregisterSignal(target, _signal_procs[target]) #ifdef DATUMVAR_DEBUGGING_MODE /datum/proc/save_vars() diff --git a/code/game/mob/living/carbon/human/death.dm b/code/game/mob/living/carbon/human/death.dm index 938fbb3c24..89fa5e9802 100644 --- a/code/game/mob/living/carbon/human/death.dm +++ b/code/game/mob/living/carbon/human/death.dm @@ -441,8 +441,9 @@ . = ..(gibbed)//,species.death_message) if (!gibbed) handle_organs() // Handle the following only after we call the parent to get all the proper stat values and etcetra. - handle_piss() - handle_shit() + if (map.civilizations) + handle_piss() + handle_shit() if (species.death_sound) playsound(loc, species.death_sound, 80, TRUE, TRUE) handle_hud_list() diff --git a/code/game/mob/new_player/new_player.dm b/code/game/mob/new_player/new_player.dm index 1387750312..fbf356a61e 100644 --- a/code/game/mob/new_player/new_player.dm +++ b/code/game/mob/new_player/new_player.dm @@ -522,68 +522,52 @@ var/global/redirect_all_players = null return TRUE if (href_list["SelectedJob"]) - if (map.ID == MAP_CAMPAIGN || map.ID == MAP_ROTSTADT) - if (map.ID == MAP_CAMPAIGN && !findtext(href_list["SelectedJob"], "Private") && !findtext(href_list["SelectedJob"], "Machinegunner") && !findtext(href_list["SelectedJob"], "Des. Marksman")) + if (map.ID == MAP_CAMPAIGN) + if (!findtext(href_list["SelectedJob"], "Private") && !findtext(href_list["SelectedJob"], "Machinegunner") && !findtext(href_list["SelectedJob"], "Des. Marksman")) if ((input(src, "This is a specialist role. You should have decided with your faction on which roles you should pick. If you haven't done so, its probably better if you join as a Private instead. Are you sure you want to join in as a [href_list["SelectedJob"]]?") in list("Yes", "No")) == "No") return if(findtext(href_list["SelectedJob"],"BAF")) var/obj/map_metadata/campaign/MC = map - var/obj/map_metadata/rotstadt/MR = map if(findtext(href_list["SelectedJob"],"Squad 1")) if (findtext(href_list["SelectedJob"],"Sniper")) MC.squad_jobs_blue["Squad 1"]["Sniper"]-- - MR.squad_jobs_blue["Squad 1"]["Sniper"]-- if (findtext(href_list["SelectedJob"],"Machinegunner")) MC.squad_jobs_blue["Squad 1"]["Machinegunner"]-- - MR.squad_jobs_blue["Squad 1"]["Machinegunner"]-- if (findtext(href_list["SelectedJob"],"Des. Marksman")) MC.squad_jobs_blue["Squad 1"]["Des. Marksman"]-- - MR.squad_jobs_blue["Squad 1"]["Des. Marksman"]-- else if(findtext(href_list["SelectedJob"],"Squad 2")) if (findtext(href_list["SelectedJob"],"Sniper")) MC.squad_jobs_blue["Squad 2"]["Sniper"]-- - MR.squad_jobs_blue["Squad 2"]["Sniper"]-- if (findtext(href_list["SelectedJob"],"Machinegunner")) MC.squad_jobs_blue["Squad 2"]["Machinegunner"]-- - MR.squad_jobs_blue["Squad 2"]["Machinegunner"]-- if (findtext(href_list["SelectedJob"],"Des. Marksman")) MC.squad_jobs_blue["Squad 2"]["Des. Marksman"]-- - MR.squad_jobs_blue["Squad 2"]["Des. Marksman"]-- else if(findtext(href_list["SelectedJob"],"Squad 3")) if (findtext(href_list["SelectedJob"],"Sniper")) MC.squad_jobs_blue["Squad 3"]["Sniper"]-- - MR.squad_jobs_blue["Squad 3"]["Sniper"]-- if (findtext(href_list["SelectedJob"],"Machinegunner")) MC.squad_jobs_blue["Squad 3"]["Machinegunner"]-- - MR.squad_jobs_blue["Squad 3"]["Machinegunner"]-- if (findtext(href_list["SelectedJob"],"Des. Marksman")) MC.squad_jobs_blue["Squad 3"]["Des. Marksman"]-- - MR.squad_jobs_blue["Squad 3"]["Des. Marksman"]-- else if(findtext(href_list["SelectedJob"],"BAF Doctor")) MC.squad_jobs_blue["none"]["Doctor"]-- - MR.squad_jobs_blue["none"]["Doctor"]-- else if(findtext(href_list["SelectedJob"],"BAF Officer")) MC.squad_jobs_blue["none"]["Officer"]-- - MR.squad_jobs_blue["none"]["Officer"]-- else if(findtext(href_list["SelectedJob"],"BAF Commander")) MC.squad_jobs_blue["none"]["Commander"]-- - MR.squad_jobs_blue["none"]["Commander"]-- + else if(findtext(href_list["SelectedJob"],"BAF Recon")) MC.squad_jobs_blue["Recon"]["Sniper"]-- - MR.squad_jobs_blue["Recon"]["Sniper"]-- else if(findtext(href_list["SelectedJob"],"BAF Anti-Tank")) MC.squad_jobs_blue["AT"]["Anti-Tank"]-- - MR.squad_jobs_blue["AT"]["Anti-Tank"]-- else if(findtext(href_list["SelectedJob"],"BAF Armored Crew")) MC.squad_jobs_blue["Armored"]["Crew"]-- - MR.squad_jobs_blue["Armored"]["Crew"]-- else if(findtext(href_list["SelectedJob"],"BAF Engineer")) MC.squad_jobs_blue["Engineer"]["Engineer"]-- - MR.squad_jobs_blue["Engineer"]["Engineer"]-- AttemptLateSpawn(href_list["SelectedJob"]) return @@ -594,18 +578,24 @@ var/global/redirect_all_players = null MC.squad_jobs_red["Squad 1"]["Sniper"]-- if (findtext(href_list["SelectedJob"],"Machinegunner")) MC.squad_jobs_red["Squad 1"]["Machinegunner"]-- + if (findtext(href_list["SelectedJob"],"Des. Marksman")) + MC.squad_jobs_red["Squad 1"]["Des. Marksman"]-- else if(findtext(href_list["SelectedJob"],"Squad 2")) if (findtext(href_list["SelectedJob"],"Sniper")) MC.squad_jobs_red["Squad 2"]["Sniper"]-- if (findtext(href_list["SelectedJob"],"Machinegunner")) MC.squad_jobs_red["Squad 2"]["Machinegunner"]-- + if (findtext(href_list["SelectedJob"],"Des. Marksman")) + MC.squad_jobs_red["Squad 2"]["Des. Marksman"]-- else if(findtext(href_list["SelectedJob"],"Squad 3")) if (findtext(href_list["SelectedJob"],"Sniper")) MC.squad_jobs_red["Squad 3"]["Sniper"]-- if (findtext(href_list["SelectedJob"],"Machinegunner")) MC.squad_jobs_red["Squad 3"]["Machinegunner"]-- + if (findtext(href_list["SelectedJob"],"Des. Marksman")) + MC.squad_jobs_red["Squad 3"]["Des. Marksman"]-- else if(findtext(href_list["SelectedJob"],"RDF Doctor")) MC.squad_jobs_red["none"]["Doctor"]-- @@ -626,6 +616,55 @@ var/global/redirect_all_players = null AttemptLateSpawn(href_list["SelectedJob"]) return + if(map.ID == MAP_ROTSTADT) + if(findtext(href_list["SelectedJob"],"BAF")) + var/obj/map_metadata/rotstadt/MR = map + if(findtext(href_list["SelectedJob"],"Squad 1")) + if (findtext(href_list["SelectedJob"],"Sniper")) + MR.squad_jobs_blue["Squad 1"]["Sniper"]-- + if (findtext(href_list["SelectedJob"],"Machinegunner")) + MR.squad_jobs_blue["Squad 1"]["Machinegunner"]-- + if (findtext(href_list["SelectedJob"],"Des. Marksman")) + MR.squad_jobs_blue["Squad 1"]["Des. Marksman"]-- + + else if(findtext(href_list["SelectedJob"],"Squad 2")) + if (findtext(href_list["SelectedJob"],"Sniper")) + MR.squad_jobs_blue["Squad 2"]["Sniper"]-- + if (findtext(href_list["SelectedJob"],"Machinegunner")) + MR.squad_jobs_blue["Squad 2"]["Machinegunner"]-- + if (findtext(href_list["SelectedJob"],"Des. Marksman")) + MR.squad_jobs_blue["Squad 2"]["Des. Marksman"]-- + + else if(findtext(href_list["SelectedJob"],"Squad 3")) + if (findtext(href_list["SelectedJob"],"Sniper")) + MR.squad_jobs_blue["Squad 3"]["Sniper"]-- + if (findtext(href_list["SelectedJob"],"Machinegunner")) + MR.squad_jobs_blue["Squad 3"]["Machinegunner"]-- + if (findtext(href_list["SelectedJob"],"Des. Marksman")) + MR.squad_jobs_blue["Squad 3"]["Des. Marksman"]-- + + else if(findtext(href_list["SelectedJob"],"BAF Doctor")) + MR.squad_jobs_blue["none"]["Doctor"]-- + + else if(findtext(href_list["SelectedJob"],"BAF Officer")) + MR.squad_jobs_blue["none"]["Officer"]-- + else if(findtext(href_list["SelectedJob"],"BAF Commander")) + MR.squad_jobs_blue["none"]["Commander"]-- + else if(findtext(href_list["SelectedJob"],"BAF Recon")) + MR.squad_jobs_blue["Recon"]["Sniper"]-- + else if(findtext(href_list["SelectedJob"],"BAF Anti-Tank")) + MR.squad_jobs_blue["AT"]["Anti-Tank"]-- + else if(findtext(href_list["SelectedJob"],"BAF Armored Crew")) + MR.squad_jobs_blue["Armored"]["Crew"]-- + else if(findtext(href_list["SelectedJob"],"BAF Engineer")) + MR.squad_jobs_blue["Engineer"]["Engineer"]-- + AttemptLateSpawn(href_list["SelectedJob"]) + return + + else if (findtext(href_list["SelectedJob"],"RDF")) + AttemptLateSpawn(href_list["SelectedJob"]) + return + if(href_list["SelectedJob"] == "Company Member") AttemptLateSpawn(href_list["SelectedJob"]) return diff --git a/code/game/mob/observer/ghost/ghost.dm b/code/game/mob/observer/ghost/ghost.dm index da5919b394..c48af422b2 100644 --- a/code/game/mob/observer/ghost/ghost.dm +++ b/code/game/mob/observer/ghost/ghost.dm @@ -375,8 +375,8 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images /mob/observer/ghost/verb/follow_bluefaction(input in getfitmobs(BLUEFACTION)+"Cancel") set category = "Ghost" - set name = "Follow a Bluefaction" - set desc = "Follow and haunt a living Bluefaction." + set name = "Follow a Blugoslavian" + set desc = "Follow and haunt a living Blugoslavian." if (input != "Cancel") var/list/mobs = getfitmobs(BLUEFACTION) if (mobs[input]) @@ -384,8 +384,8 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images /mob/observer/ghost/verb/follow_redfaction(input in getfitmobs(REDFACTION)+"Cancel") set category = "Ghost" - set name = "Follow a Redfaction" - set desc = "Follow and haunt a living Redfaction." + set name = "Follow a Redmenian" + set desc = "Follow and haunt a living Redmenian." if (input != "Cancel") var/list/mobs = getfitmobs(REDFACTION) if (mobs[input]) diff --git a/code/game/objects/items/weapons/mines.dm b/code/game/objects/items/weapons/mines.dm index 8da0a7d123..c6da08e2a8 100644 --- a/code/game/objects/items/weapons/mines.dm +++ b/code/game/objects/items/weapons/mines.dm @@ -37,9 +37,12 @@ layer = TURF_LAYER + 0.01 icon_state = "mine_armed" user.drop_item() - if (map.ID == MAP_CAMPAIGN && istype(src, (/obj/item/mine/at))) + if (map.ID == MAP_CAMPAIGN) var/obj/map_metadata/campaign/CM = map - CM.at_mines_placed++ + if (istype(src, (/obj/item/mine/at))) + CM.at_mines_placed++ + else + CM.ap_mines_placed++ return //Disarming @@ -70,9 +73,12 @@ anchored = FALSE icon_state = "mine" layer = initial(layer) - if (map.ID == MAP_CAMPAIGN && istype(src, (/obj/item/mine/at))) + if (map.ID == MAP_CAMPAIGN) var/obj/map_metadata/campaign/CM = map - CM.at_mines_placed-- + if (istype(src, (/obj/item/mine/at))) + CM.at_mines_placed-- + else + CM.ap_mines_placed-- return else Bumped(user) @@ -94,9 +100,12 @@ anchored = FALSE icon_state = "mine" layer = initial(layer) - if (map.ID == MAP_CAMPAIGN && istype(src, (/obj/item/mine/at))) + if (map.ID == MAP_CAMPAIGN) var/obj/map_metadata/campaign/CM = map - CM.at_mines_placed-- + if (istype(src, (/obj/item/mine/at))) + CM.at_mines_placed-- + else + CM.ap_mines_placed-- return else Bumped(user) diff --git a/code/game/objects/map_metadata/campaign.dm b/code/game/objects/map_metadata/campaign.dm index ab6024ce13..d6967f1113 100644 --- a/code/game/objects/map_metadata/campaign.dm +++ b/code/game/objects/map_metadata/campaign.dm @@ -8,6 +8,7 @@ no_winner = "The battle is going on." victory_time = 60 MINUTES grace_wall_timer = 20 MINUTES + can_spawn_on_base_capture = FALSE faction_organization = list( REDFACTION, BLUEFACTION) @@ -19,7 +20,7 @@ age = "2024" ordinal_age = 8 faction_distribution_coeffs = list(REDFACTION = 0.5, BLUEFACTION = 0.5) - battle_name = "battle of Dewsbury Village" + battle_name = "battle of the Tanburr defensive line" mission_start_message = "20 minutes until the battle begins." faction1 = REDFACTION faction2 = BLUEFACTION @@ -61,13 +62,17 @@ "none" = list("Commander" = 1, "Officer" = 3, "Doctor" = 2), ) var/list/capturable_equipment = list( - /obj/structure/cannon/mortar, /obj/structure/cannon/modern, /obj/structure/cannon/rocket, - /obj/item/weapon/gun/projectile/automatic/stationary, + /obj/structure/cannon/rocket/loaded, + /obj/structure/cannon/rocket/old, + /obj/structure/cannon/mortar, + /obj/structure/cannon/mortar/foldable/generic, + /obj/item/weapon/gun/projectile/automatic/stationary/pkm, ) var/list/captured_equipment_red = list() var/list/captured_equipment_blue = list() + var/ap_mines_placed = 0 var/at_mines_placed = 0 /obj/map_metadata/campaign/New() @@ -114,15 +119,15 @@ /obj/map_metadata/campaign/short_win_time(faction) if (!(alive_n_of_side(faction1)) || !(alive_n_of_side(faction2))) - return 1 MINUTES + return 2 MINUTES else - return 3 MINUTES + return 5 MINUTES /obj/map_metadata/campaign/long_win_time(faction) if (!(alive_n_of_side(faction1)) || !(alive_n_of_side(faction2))) return 2 MINUTES else - return 5 MINUTES + return 7 MINUTES /obj/map_metadata/campaign/proc/civ_collector() var/ctb = 0 @@ -390,24 +395,26 @@ var/no_loop_ca = FALSE if (world.time >= victory_time) if (win_condition_spam_check) return FALSE - get_faction1_captured_equipment() - get_faction2_captured_equipment() ticker.finished = TRUE - var/message = "The Redmenians are victorious [battle_name ? "in the [battle_name]" : "the battle"]! The Blugoslavians halted the attack!" - world << SPAN_NOTICE("[message]") - world << "Civilians Killed: Blugoslavia [civilians_killed["Blugoslavia"]], Redmenia [civilians_killed["Redmenia"]]" + var/message = SPAN_BLUE("The Blugoslavians are victorious [battle_name ? "in the [battle_name]" : "the battle"]! The Redmenians halted the attack!") + to_chat(world, SPAN_NOTICE("[message]")) + + to_chat(world, "Civilians Killed: Blugoslavia [civilians_killed["Blugoslavia"]], Redmenia [civilians_killed["Redmenia"]]") + + after_round_checks() show_global_battle_report(null) win_condition_spam_check = TRUE return FALSE if ((current_winner && current_loser && world.time > next_win) && no_loop_ca == FALSE) - get_faction1_captured_equipment() - get_faction2_captured_equipment() ticker.finished = TRUE var/message = "The [battle_name ? battle_name : "battle"] has ended in a stalemate!" if (current_winner && current_loser) - message = "The Blugoslavians are victorious [battle_name ? "in the [battle_name]" : "the battle"]!" - world << SPAN_NOTICE("[message]") - world << "Civilians Killed: Blugoslavia [civilians_killed["Blugoslavia"]], Redmenia [civilians_killed["Redmenia"]]" + message = SPAN_RED("The Redmenians are victorious [battle_name ? "in the [battle_name]" : "the battle"]!") + to_chat(world, SPAN_NOTICE("[message]")) + + to_chat(world, "Civilians Killed: Blugoslavia [civilians_killed["Blugoslavia"]], Redmenia [civilians_killed["Redmenia"]]") + + after_round_checks() show_global_battle_report(null) win_condition_spam_check = TRUE no_loop_ca = TRUE @@ -416,8 +423,8 @@ var/no_loop_ca = FALSE else if (win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[2]]), roundend_condition_sides[1], roundend_condition_sides[2], 1.33, TRUE)) if (!win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[1]]), roundend_condition_sides[2], roundend_condition_sides[1], 1.33)) if (last_win_condition != win_condition.hash) - current_win_condition = "The Blugoslavians have captured the objective! They will win in {time} minutes." - next_win = world.time + short_win_time(BLUEFACTION) + current_win_condition = "The Redmenians have captured the objective! They will win in {time} minutes." + next_win = world.time + short_win_time(REDFACTION) announce_current_win_condition() current_winner = roundend_condition_def2army(roundend_condition_sides[1][1]) current_loser = roundend_condition_def2army(roundend_condition_sides[2][1]) @@ -425,8 +432,8 @@ var/no_loop_ca = FALSE else if (win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[2]]), roundend_condition_sides[1], roundend_condition_sides[2], 1.01, TRUE)) if (!win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[1]]), roundend_condition_sides[2], roundend_condition_sides[1], 1.01)) if (last_win_condition != win_condition.hash) - current_win_condition = "The Blugoslavians have captured the objective! They will win in {time} minutes." - next_win = world.time + short_win_time(BLUEFACTION) + current_win_condition = "The Redmenians have captured the objective! They will win in {time} minutes." + next_win = world.time + short_win_time(REDFACTION) announce_current_win_condition() current_winner = roundend_condition_def2army(roundend_condition_sides[1][1]) current_loser = roundend_condition_def2army(roundend_condition_sides[2][1]) @@ -434,8 +441,8 @@ var/no_loop_ca = FALSE else if (win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[1]]), roundend_condition_sides[2], roundend_condition_sides[1], 1.33, TRUE)) if (!win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[2]]), roundend_condition_sides[1], roundend_condition_sides[2], 1.33)) if (last_win_condition != win_condition.hash) - current_win_condition = "The Blugoslavians have captured the objective! They will win in {time} minutes." - next_win = world.time + short_win_time(BLUEFACTION) + current_win_condition = "The Redmenians have captured the objective! They will win in {time} minutes." + next_win = world.time + short_win_time(REDFACTION) announce_current_win_condition() current_winner = roundend_condition_def2army(roundend_condition_sides[2][1]) current_loser = roundend_condition_def2army(roundend_condition_sides[1][1]) @@ -443,14 +450,14 @@ var/no_loop_ca = FALSE else if (win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[1]]), roundend_condition_sides[2], roundend_condition_sides[1], 1.01, TRUE)) if (!win_condition.check(typesof(roundend_condition_sides[roundend_condition_sides[2]]), roundend_condition_sides[1], roundend_condition_sides[2], 1.01)) if (last_win_condition != win_condition.hash) - current_win_condition = "The Blugoslavians have captured the objective! They will win in {time} minutes." - next_win = world.time + short_win_time(BLUEFACTION) + current_win_condition = "The Redmenians have captured the objective! They will win in {time} minutes." + next_win = world.time + short_win_time(REDFACTION) announce_current_win_condition() current_winner = roundend_condition_def2army(roundend_condition_sides[2][1]) current_loser = roundend_condition_def2army(roundend_condition_sides[1][1]) else if (current_win_condition != no_winner && current_winner && current_loser) - world << "The Redmenians have recaptured control over the objective!" + world << "The Blugoslavians have retaken control over the objective!" current_winner = null current_loser = null next_win = -1 @@ -530,14 +537,32 @@ var/no_loop_ca = FALSE icon_state = "blue3" /obj/map_metadata/campaign/proc/get_faction1_captured_equipment() - for(var/obj/item/I in get_area_all_atoms(/area/caribbean/captured_equipment/faction1)) - if(capturable_equipment.Find(I)) + for(var/obj/I in get_area_all_atoms(/area/caribbean/captured_equipment/faction1)) + if(locate(I) in capturable_equipment) captured_equipment_red += I.name + to_chat(world, "Captured equipment Redmenia:") + if(captured_equipment_red.len) + to_chat(world, "[jointext(captured_equipment_red,"\n")]") + else + to_chat(world, "No equipment was captured.") /obj/map_metadata/campaign/proc/get_faction2_captured_equipment() - for(var/obj/item/I in get_area_all_atoms(/area/caribbean/captured_equipment/faction2)) - if(capturable_equipment.Find(I)) + for(var/obj/I in get_area_all_atoms(/area/caribbean/captured_equipment/faction2)) + if(locate(I) in capturable_equipment) captured_equipment_blue += I.name + to_chat(world, "Captured equipment Blugoslavia:") + if(captured_equipment_blue.len) + to_chat(world, "[jointext(captured_equipment_blue,"\n")]") + else + to_chat(world, "No equipment was captured.") + + +/obj/map_metadata/campaign/proc/after_round_checks() + spawn(5 SECONDS) + to_chat(world, "AP mines placed: [ap_mines_placed]") + to_chat(world, "AT mines placed: [at_mines_placed]") + get_faction1_captured_equipment() + get_faction2_captured_equipment() ///////////Map Specific Objects/////////// /obj/structure/altar/heads diff --git a/code/game/objects/structures/wild.dm b/code/game/objects/structures/wild.dm index f51ae565a0..a858685449 100644 --- a/code/game/objects/structures/wild.dm +++ b/code/game/objects/structures/wild.dm @@ -150,7 +150,7 @@ var/list/seed_list_jungle /obj/structure/wild/attackby(obj/item/W as obj, mob/user as mob) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - if (istype(W,/obj/item/weapon/material/hatchet) ||istype(W,/obj/item/weapon/material/boarding_axe) || istype(W,/obj/item/weapon/material/machete) || istype(W,/obj/item/weapon/material/machete1) || istype(W,/obj/item/weapon/material/twohanded/fireaxe) || istype(W,/obj/item/weapon/material/sword/kukri) || istype(W,/obj/item/weapon/material/sword/bolo) || istype(W,/obj/item/weapon/material/thrown/tomahawk) || istype(W,/obj/item/weapon/material/thrown/throwing_axe)) + if (istype(W,/obj/item/weapon/material/hatchet) || istype(W,/obj/item/weapon/material/boarding_axe) || istype(W,/obj/item/weapon/material/machete) || istype(W,/obj/item/weapon/material/machete1) || istype(W,/obj/item/weapon/material/twohanded/fireaxe) || istype(W,/obj/item/weapon/material/sword/kukri) || istype(W,/obj/item/weapon/material/sword/bolo) || istype(W,/obj/item/weapon/material/thrown/tomahawk) || istype(W,/obj/item/weapon/material/thrown/throwing_axe) || istype(W, /obj/item/weapon/material/shovel/trench/foldable/etool)) var/obj/item/weapon/material/HT = W user.visible_message(SPAN_DANGER("[user] begins to chop down \the [src]!"), SPAN_DANGER("You begin to chop down \the [src]!")) playsound(get_turf(src), 'sound/effects/wood_cutting.ogg', 100) @@ -158,7 +158,7 @@ var/list/seed_list_jungle if (do_after(user, 30*HT.chopping_speed, user.loc)) health = 0 try_destroy() - HT.health = HT.health - 0.25 + HT.health -= 0.25 if (HT.health <=0) HT.shatter() if (istype(user, /mob/living/human)) diff --git a/code/modules/1713/apparel_campaign.dm b/code/modules/1713/apparel_campaign.dm index 664933e142..5d953a9b18 100644 --- a/code/modules/1713/apparel_campaign.dm +++ b/code/modules/1713/apparel_campaign.dm @@ -13,30 +13,32 @@ ///////////////////// Pouches /////////////////////// -/obj/item/weapon/storage/belt/smallpouches/red +///////////// BLUE + +/obj/item/weapon/storage/belt/smallpouches/blue icon_state = "smallpouches_green" item_state = "smallpouches_green" -/obj/item/weapon/storage/belt/smallpouches/red/full +/obj/item/weapon/storage/belt/smallpouches/blue/full New() ..() new /obj/item/clothing/mask/gas/swat_new(src) new /obj/item/stack/medical/bruise_pack/gauze(src) - new /obj/item/ammo_magazine/hk(src) + new /obj/item/ammo_magazine/ak47(src) new /obj/item/weapon/attachment/bayonet(src) -/obj/item/weapon/storage/belt/smallpouches/red/white +/obj/item/weapon/storage/belt/smallpouches/blue/white icon_state = "smallpouches_white" item_state = "smallpouches_white" -/obj/item/weapon/storage/belt/smallpouches/red/white/full +/obj/item/weapon/storage/belt/smallpouches/blue/white/full New() ..() new /obj/item/clothing/mask/gas/swat_new(src) new /obj/item/stack/medical/bruise_pack/gauze(src) - new /obj/item/ammo_magazine/hk(src) + new /obj/item/ammo_magazine/ak47(src) new /obj/item/weapon/attachment/bayonet(src) -/obj/item/weapon/storage/belt/smallpouches/red/recon +/obj/item/weapon/storage/belt/smallpouches/blue/recon New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -44,7 +46,7 @@ new /obj/item/ammo_magazine/mosin(src) new /obj/item/ammo_magazine/mosin(src) -/obj/item/weapon/storage/belt/smallpouches/red/white/recon +/obj/item/weapon/storage/belt/smallpouches/blue/white/recon New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -52,7 +54,7 @@ new /obj/item/ammo_magazine/mosin(src) new /obj/item/ammo_magazine/mosin(src) -/obj/item/weapon/storage/belt/smallpouches/red/marksman +/obj/item/weapon/storage/belt/smallpouches/blue/marksman New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -60,7 +62,7 @@ new /obj/item/ammo_magazine/svd(src) new /obj/item/ammo_magazine/svd(src) -/obj/item/weapon/storage/belt/smallpouches/red/white/marksman +/obj/item/weapon/storage/belt/smallpouches/blue/white/marksman New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -68,51 +70,52 @@ new /obj/item/ammo_magazine/svd(src) new /obj/item/ammo_magazine/svd(src) +/obj/item/weapon/storage/belt/largepouches/blue + icon_state = "largepouches_green" + item_state = "largepouches_green" -/obj/item/weapon/storage/belt/largepouches/red - icon_state = "largepouches" - item_state = "largepouches" - -/obj/item/weapon/storage/belt/largepouches/red/mg +/obj/item/weapon/storage/belt/largepouches/blue/mg New() ..() new /obj/item/ammo_magazine/dp(src) new /obj/item/ammo_magazine/dp(src) -/obj/item/weapon/storage/belt/largepouches/red/white +/obj/item/weapon/storage/belt/largepouches/blue/white icon_state = "largepouches_white" item_state = "largepouches_white" -/obj/item/weapon/storage/belt/largepouches/red/white/mg +/obj/item/weapon/storage/belt/largepouches/blue/white/mg New() ..() new /obj/item/ammo_magazine/dp(src) new /obj/item/ammo_magazine/dp(src) -/obj/item/weapon/storage/belt/smallpouches/blue +///////////// RED + +/obj/item/weapon/storage/belt/smallpouches/red icon_state = "smallpouches_green" item_state = "smallpouches_green" -/obj/item/weapon/storage/belt/smallpouches/blue/full +/obj/item/weapon/storage/belt/smallpouches/red/full New() ..() new /obj/item/clothing/mask/gas/swat_new(src) new /obj/item/stack/medical/bruise_pack/gauze(src) - new /obj/item/ammo_magazine/ak47(src) + new /obj/item/ammo_magazine/hk(src) new /obj/item/weapon/attachment/bayonet(src) -/obj/item/weapon/storage/belt/smallpouches/blue/white +/obj/item/weapon/storage/belt/smallpouches/red/white icon_state = "smallpouches_white" item_state = "smallpouches_white" -/obj/item/weapon/storage/belt/smallpouches/blue/white/full +/obj/item/weapon/storage/belt/smallpouches/red/white/full New() ..() new /obj/item/clothing/mask/gas/swat_new(src) new /obj/item/stack/medical/bruise_pack/gauze(src) - new /obj/item/ammo_magazine/ak47(src) + new /obj/item/ammo_magazine/hk(src) new /obj/item/weapon/attachment/bayonet(src) -/obj/item/weapon/storage/belt/smallpouches/blue/recon +/obj/item/weapon/storage/belt/smallpouches/red/recon New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -120,7 +123,7 @@ new /obj/item/ammo_magazine/mosin(src) new /obj/item/ammo_magazine/mosin(src) -/obj/item/weapon/storage/belt/smallpouches/blue/white/recon +/obj/item/weapon/storage/belt/smallpouches/red/white/recon New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -128,7 +131,7 @@ new /obj/item/ammo_magazine/mosin(src) new /obj/item/ammo_magazine/mosin(src) -/obj/item/weapon/storage/belt/smallpouches/blue/marksman +/obj/item/weapon/storage/belt/smallpouches/red/marksman New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -136,7 +139,7 @@ new /obj/item/ammo_magazine/svd(src) new /obj/item/ammo_magazine/svd(src) -/obj/item/weapon/storage/belt/smallpouches/blue/white/marksman +/obj/item/weapon/storage/belt/smallpouches/red/white/marksman New() ..() new /obj/item/clothing/mask/gas/swat_new(src) @@ -144,21 +147,22 @@ new /obj/item/ammo_magazine/svd(src) new /obj/item/ammo_magazine/svd(src) -/obj/item/weapon/storage/belt/largepouches/blue - icon_state = "largepouches" - item_state = "largepouches" -/obj/item/weapon/storage/belt/largepouches/blue/mg +/obj/item/weapon/storage/belt/largepouches/red + icon_state = "largepouches_green" + item_state = "largepouches_green" + +/obj/item/weapon/storage/belt/largepouches/red/mg New() ..() new /obj/item/ammo_magazine/dp(src) new /obj/item/ammo_magazine/dp(src) -/obj/item/weapon/storage/belt/largepouches/blue/white +/obj/item/weapon/storage/belt/largepouches/red/white icon_state = "largepouches_white" item_state = "largepouches_white" -/obj/item/weapon/storage/belt/largepouches/blue/white/mg +/obj/item/weapon/storage/belt/largepouches/red/white/mg New() ..() new /obj/item/ammo_magazine/dp(src) @@ -167,12 +171,14 @@ ///////////////////// Webbings /////////////////////// +///////////// BLUE + /obj/item/clothing/accessory/storage/webbing/green_webbing/blue name = "Blugoslavian green chest webbing" desc = "A green chest-level webbing, with three medium sized pouches." slots = 3 - icon_state = "green_webbing" - item_state = "green_webbing" + icon_state = "russian_vest" + item_state = "russian_vest" /obj/item/clothing/accessory/storage/webbing/green_webbing/blue/mosin New() @@ -217,6 +223,9 @@ for (var/i=1, i<= 3, i++) new /obj/item/ammo_magazine/emptymagazine/rifle/ak47/filled(hold) + +///////////// RED + /obj/item/clothing/accessory/storage/webbing/green_webbing/red name = "Redmenian green chest webbing" desc = "A green chest-level webbing, with three medium sized pouches." diff --git a/code/modules/1713/apparel_modern.dm b/code/modules/1713/apparel_modern.dm index ae42221601..3208f49470 100644 --- a/code/modules/1713/apparel_modern.dm +++ b/code/modules/1713/apparel_modern.dm @@ -502,7 +502,7 @@ /obj/item/clothing/accessory/armor/coldwar/plates/b5/n34/medical name = "N34-BM body armor" - desc = "A blugoslavian armor used by medics and doctors alike, comes with a white medical cross on the back." + desc = "A Blugoslavian armor used by medics and doctors alike, comes with a white medical cross on the back." icon_state = "n34bmm" item_state = "n34bmm" worn_state = "n34bmm" diff --git a/code/modules/1713/barbwire.dm b/code/modules/1713/barbwire.dm index 85d9b1547b..5709194fa1 100644 --- a/code/modules/1713/barbwire.dm +++ b/code/modules/1713/barbwire.dm @@ -95,7 +95,7 @@ qdel(src) return - else if (istype(W, /obj/item/weapon/material/kitchen/utensil/knife) || istype(W, /obj/item/weapon/attachment/bayonet) || istype(W, /obj/item/weapon/material/hatchet)) + else if (istype(W, /obj/item/weapon/material/kitchen/utensil/knife) || istype(W, /obj/item/weapon/attachment/bayonet) || istype(W, /obj/item/weapon/material/hatchet) || istype(W, /obj/item/weapon/material/shovel/trench/foldable/etool)) if (anchored) user.visible_message(SPAN_NOTICE("\The [user] starts to hack through \the [src] with \the [W].")) if (!do_after(user,120)) @@ -110,7 +110,7 @@ if (ishuman(user)) var/mob/living/human/H = user var/obj/item/organ/external/affecting = null - if (istype(H.l_hand, /obj/item/weapon/material/kitchen/utensil/knife) || istype(H.l_hand, /obj/item/weapon/attachment/bayonet) || istype(H.l_hand, /obj/item/weapon/material/hatchet)) + if (istype(H.l_hand, /obj/item/weapon/material/kitchen/utensil/knife) || istype(H.l_hand, /obj/item/weapon/attachment/bayonet) || istype(H.l_hand, /obj/item/weapon/material/hatchet) || istype(H.l_hand, /obj/item/weapon/material/shovel/trench/foldable/etool)) affecting = H.get_organ("l_hand") else affecting = H.get_organ("r_hand") diff --git a/code/modules/1713/beekeeping.dm b/code/modules/1713/beekeeping.dm index 64580fcba0..d62bbb43e0 100644 --- a/code/modules/1713/beekeeping.dm +++ b/code/modules/1713/beekeeping.dm @@ -13,6 +13,14 @@ var/frames = 0 var/maxFrames = 5 +/obj/structure/beehive/New() + ..() + processing_objects += src + +/obj/structure/beehive/Del() + processing_objects -= src + ..() + /obj/structure/beehive/update_icon() overlays.Cut() icon_state = "beehive" @@ -144,9 +152,7 @@ to_chat(user, SPAN_NOTICE("You take all filled honeycombs out.")) return -/obj/structure/beehive/Process() // All processes seem to be a lie - spawn(30) - visible_message(SPAN_NOTICE("DEBUG: Process is working.")) +/obj/structure/beehive/process() // All processes seem to be a lie if(closed && !smoked && bee_count) pollinate_flowers() update_icon() diff --git a/code/modules/1713/jobs/campaign/bluefaction.dm b/code/modules/1713/jobs/campaign/bluefaction.dm index 2bed1ca87b..d62a94dc7e 100644 --- a/code/modules/1713/jobs/campaign/bluefaction.dm +++ b/code/modules/1713/jobs/campaign/bluefaction.dm @@ -39,7 +39,7 @@ title = "BAF Squad 1 Private" squad = 1 rank_abbreviation = "1-Pvt" -/datum/job/civilian/bluefaction/s1/corpsman +/datum/job/bluefaction/s1/corpsman title = "BAF Squad 1 Corpsman" is_medic = TRUE squad = 1 @@ -140,7 +140,7 @@ var/area/A = get_area(get_turf(H)) //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //clothes H.equip_to_slot_or_del(new /obj/item/clothing/under/us_uni/us_tigerstripes(H), slot_w_uniform) @@ -323,7 +323,7 @@ if(is_squad_leader) map.faction2_squad_leaders[squad] = H //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //armor and clothes if (findtext(title, "Marine")) H.equip_to_slot_or_del(new /obj/item/clothing/under/us_uni(H), slot_w_uniform) @@ -401,7 +401,7 @@ if (!H) return FALSE H.nationality = "Blugoslavia" //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //clothes H.equip_to_slot_or_del(new /obj/item/clothing/under/blugoslavia/standard(H), slot_w_uniform) diff --git a/code/modules/1713/jobs/campaign/redfaction.dm b/code/modules/1713/jobs/campaign/redfaction.dm index 3e891ecc48..a186d1a80d 100644 --- a/code/modules/1713/jobs/campaign/redfaction.dm +++ b/code/modules/1713/jobs/campaign/redfaction.dm @@ -139,7 +139,7 @@ var/area/A = get_area(get_turf(H)) //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //clothes H.equip_to_slot_or_del(new /obj/item/clothing/under/redmenia/standard/modern(H), slot_w_uniform) @@ -324,7 +324,7 @@ if(is_squad_leader) map.faction1_squad_leaders[squad] = H //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //armor and clothes if (findtext(title, "Marine")) H.equip_to_slot_or_del(new /obj/item/clothing/under/russian(H), slot_w_uniform) @@ -445,7 +445,7 @@ H.squad = squad H.nationality = "Redmenia" //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //clothes var/rand_uni = rand(1,2) switch (rand_uni) @@ -493,7 +493,7 @@ if(is_squad_leader) map.faction1_squad_leaders[squad] = H //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //clothes H.equip_to_slot_or_del(new /obj/item/clothing/under/us_uni/us_camo_woodland(H), slot_w_uniform) //armor @@ -543,7 +543,7 @@ if (!H) return FALSE H.nationality = "Redmenia" //shoes - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) //clothes H.equip_to_slot_or_del(new /obj/item/clothing/under/redmenia/standard/modern(H), slot_w_uniform) diff --git a/code/modules/1713/machinery/vehicles.dm b/code/modules/1713/machinery/vehicles.dm index 9faed648cb..6cf7720a64 100644 --- a/code/modules/1713/machinery/vehicles.dm +++ b/code/modules/1713/machinery/vehicles.dm @@ -1030,50 +1030,35 @@ opacity = FALSE density = FALSE +/obj/item/tank_system/New() + ..() + processing_objects += src + +/obj/item/tank_system/Del() + processing_objects -= src + ..() + /obj/item/tank_system/ecms name = "ECMS" desc = "An Electromagnetic Counter-Mine System." - New() - ..() - spawn(5) - explode_mines() - -/obj/item/tank_system/ecms/proc/explode_mines() - if (src) - for (var/obj/item/mine/M in range(5, src)) - if (M.anchored) - M.trigger(src) - for (var/mob/O in viewers(7, get_turf(src))) - to_chat(O, SPAN_DANGER("\The [src] explodes the [M]!")) - sleep(6 SECONDS) - explode_mines() - else return + +/obj/item/tank_system/ecms/process() + for (var/obj/item/mine/M in range(5, src)) + if (M.anchored) + M.trigger(src) + for (var/mob/O in viewers(7, get_turf(src))) + to_chat(O, SPAN_DANGER("\The [src] explodes the [M]!")) /obj/item/tank_system/aps name = "Active Protection System" desc = "A hard-kill active protection system for defense against Rocket-Propelled Grenades and Anti-Tank Guided Missiles." - var/uses = 12 - New() - ..() - spawn(5) - explode_missiles() - -/obj/item/tank_system/aps/proc/explode_missiles() - if (src) - if (uses > 0) - for (var/obj/item/projectile/shell/missile/M in range(6, src)) - if (M) - M.initiate(get_turf(M)) - --uses - for (var/mob/O in viewers(7, get_turf(src))) - to_chat(O, SPAN_DANGER("\The [src] explodes the rocket!")) - sleep(1 SECONDS) - explode_missiles() - else return - -/obj/item/tank_system/aps/examine(mob/user) - ..() - to_chat(user, SPAN_NOTICE("It has [uses] uses left.")) + +/obj/item/tank_system/aps/process() + for (var/obj/item/projectile/shell/missile/M in range(6, src)) + if (M) + M.initiate(get_turf(M)) + for (var/mob/O in viewers(7, get_turf(src))) + to_chat(O, SPAN_DANGER("\The [src] explodes the rocket!")) /obj/item/tank_system/aps/ironfist name = "Iron Fist APS" \ No newline at end of file diff --git a/code/modules/1713/roundstart_etc.dm b/code/modules/1713/roundstart_etc.dm index 640434e29a..9cf0235c4f 100644 --- a/code/modules/1713/roundstart_etc.dm +++ b/code/modules/1713/roundstart_etc.dm @@ -21,7 +21,7 @@ var/GRACE_PERIOD_LENGTH = 7 if (MAP_FOOTBALL_CAMPAIGN) time_of_day = "Midday" if (MAP_CAMPAIGN) - time_of_day = "Morning" + time_of_day = "Night" if (MAP_DRUG_BUST) time_of_day = "Night" update_lighting(time_of_day, null, FALSE) diff --git a/code/modules/1713/tools.dm b/code/modules/1713/tools.dm index 07f428d377..766c9c21f3 100644 --- a/code/modules/1713/tools.dm +++ b/code/modules/1713/tools.dm @@ -191,9 +191,10 @@ /obj/item/weapon/material/shovel/trench/foldable/etool name = "foldable entrenching tool" - desc = "A foldable shovel used specifically for digging and moving dirt." + desc = "A foldable shovel used for digging dirt and moving dirt. It can be also as a improvised hatchet." icon_state = "etool" usespeed = 0.8 + chopping_speed = 3.1 path = /obj/item/weapon/foldable_shovel/trench/etool /obj/item/weapon/material/shovel/trench/foldable/secondary_attack_self(mob/living/human/user) diff --git a/code/processes/nanoui.dm b/code/processes/nanoui.dm index a7549f87ef..952ecec733 100644 --- a/code/processes/nanoui.dm +++ b/code/processes/nanoui.dm @@ -12,7 +12,7 @@ try // runtime prevention if (NUI.state && NUI.user) - NUI.Process() + NUI.process() catch(var/exception/e) catchException(e, NUI) else diff --git a/icons/obj/cannon.dmi b/icons/obj/cannon.dmi index a96cc7ad3a..e6481aa657 100644 Binary files a/icons/obj/cannon.dmi and b/icons/obj/cannon.dmi differ