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