diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm
index ffb5627c6f..42ba4c7b47 100644
--- a/code/datums/helper_datums/getrev.dm
+++ b/code/datums/helper_datums/getrev.dm
@@ -73,9 +73,9 @@
return ""
. = header ? "The following pull requests are currently test merged:
" : ""
for(var/line in testmerge)
- var/cm = testmerge[line]["commit"]
var/details
if(world.RunningService())
+ var/cm = testmerge[line]["commit"]
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["author"]) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 7)))
else if(has_pr_details) //tgs2 support
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["user"]["login"])
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 143d60be91..b55383a38d 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -106,10 +106,9 @@
name = "Fireball"
spell_type = /obj/effect/proc_holder/spell/aimed/fireball
-/*
/datum/spellbook_entry/rod_form
name = "Rod Form"
- spell_type = /obj/effect/proc_holder/spell/targeted/rod_form */
+ spell_type = /obj/effect/proc_holder/spell/targeted/rod_form
/datum/spellbook_entry/magicm
name = "Magic Missile"
diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm
index 2b46d82df1..5c5fc93e6b 100644
--- a/code/modules/events/immovable_rod.dm
+++ b/code/modules/events/immovable_rod.dm
@@ -21,8 +21,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
/datum/round_event/immovable_rod/start()
var/startside = pick(GLOB.cardinal)
- var/turf/startT = spaceDebrisStartLoc(startside, ZLEVEL_STATION)
- var/turf/endT = spaceDebrisFinishLoc(startside, ZLEVEL_STATION)
+ var/turf/startT = spaceDebrisStartLoc(startside, ZLEVEL_STATION)
+ var/turf/endT = spaceDebrisFinishLoc(startside, ZLEVEL_STATION)
new /obj/effect/immovablerod(startT, endT)
/obj/effect/immovablerod
@@ -82,13 +82,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
if(clong.density)
clong.ex_act(2)
- else if(ismob(clong))
- if(ishuman(clong))
- var/mob/living/carbon/human/H = clong
- H.visible_message("[H.name] is penetrated by an immovable rod!" , "The rod penetrates you!" , "You hear a CLANG!")
- H.adjustBruteLoss(160)
- if(clong.density || prob(10))
- clong.ex_act(2)
+ else if(isliving(clong))
+ penetrate(clong)
else if(istype(clong, type))
var/obj/effect/immovablerod/other = clong
visible_message("[src] collides with [other]!\
@@ -98,3 +93,11 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
smoke.start()
qdel(src)
qdel(other)
+
+/obj/effect/immovablerod/proc/penetrate(mob/living/L)
+ L.visible_message("[L] is penetrated by an immovable rod!" , "The rod penetrates you!" , "You hear a CLANG!")
+ if(ishuman(L))
+ var/mob/living/carbon/human/H = L
+ H.adjustBruteLoss(160)
+ if(L && (L.density || prob(10)))
+ L.ex_act(2)
diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm
index e0588acf2b..2aa2031bbe 100644
--- a/code/modules/mapping/map_template.dm
+++ b/code/modules/mapping/map_template.dm
@@ -71,12 +71,12 @@
if(!bounds)
return
- //initialize things that are normally initialized after map load
- initTemplateBounds(bounds)
-
if(!SSmapping.loading_ruins) //Will be done manually during mapping ss init
repopulate_sorted_areas()
+ //initialize things that are normally initialized after map load
+ initTemplateBounds(bounds)
+
log_game("[name] loaded at at [T.x],[T.y],[T.z]")
return TRUE
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index fb77197c62..dfe2acd252 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -42,6 +42,9 @@
/datum/computer_file/program/card_mod/New()
..()
change_position_cooldown = config.id_console_jobslot_delay
+ addtimer(CALLBACK(src, .proc/SetConfigCooldown), 0)
+
+/datum/computer_file/program/card_mod/proc/SetConfigCooldown()
/datum/computer_file/program/card_mod/event_idremoved(background, slot)
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 277b3b8ede..e02935aa87 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -284,7 +284,7 @@
/obj/machinery/chem_dispenser/constructable/RefreshParts()
var/time = 0
var/i
-+ for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
+ for(var/obj/item/weapon/stock_parts/cell/P in component_parts)
cell = P
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
time += M.rating
diff --git a/code/modules/spells/spell_types/rod_form.dm b/code/modules/spells/spell_types/rod_form.dm
index a3754e6a7d..8fc3f34fc4 100644
--- a/code/modules/spells/spell_types/rod_form.dm
+++ b/code/modules/spells/spell_types/rod_form.dm
@@ -17,6 +17,7 @@
var/obj/effect/immovablerod/wizard/W = new(start, get_ranged_target_turf(M, M.dir, (15 + spell_level * 3)))
W.wizard = M
W.max_distance += spell_level * 3 //You travel farther when you upgrade the spell
+ W.damage_bonus += spell_level * 20 //You do more damage when you upgrade the spell
W.start_turf = start
M.forceMove(W)
M.notransform = 1
@@ -26,6 +27,7 @@
/obj/effect/immovablerod/wizard
var/max_distance = 13
+ var/damage_bonus = 0
var/mob/living/wizard
var/turf/start_turf
notify = FALSE
@@ -41,3 +43,7 @@
wizard.notransform = 0
wizard.forceMove(get_turf(src))
return ..()
+
+/obj/effect/immovablerod/wizard/penetrate(mob/living/L)
+ L.visible_message("[L] is penetrated by an immovable rod!" , "The rod penetrates you!" , "You hear a CLANG!")
+ L.adjustBruteLoss(70 + damage_bonus)