diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 28255c395ad..5a301b79142 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -27,13 +27,10 @@
var/newlevel = round(charging.percent() * 4.0 / 99)
//to_world("nl: [newlevel]")
- if(chargelevel != newlevel)
-
- cut_overlays()
- add_overlay("ccharger-o[newlevel]")
-
- chargelevel = newlevel
+ cut_overlays()
+ add_overlay("ccharger-o[newlevel]")
+ chargelevel = newlevel
add_overlay(image(charging.icon, charging.icon_state))
add_overlay("ccharger-[charging.connector_type]-on")
@@ -126,10 +123,11 @@
return
if(charging && !charging.fully_charged())
+ var/newlevel = round(charging.percent() * 4.0 / 99)
charging.give(efficiency*CELLRATE)
update_use_power(USE_POWER_ACTIVE)
-
- update_icon()
+ if(chargelevel != newlevel)
+ update_icon()
else
update_use_power(USE_POWER_IDLE)
@@ -137,4 +135,4 @@
var/E = 0
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
E += C.rating
- efficiency = active_power_usage * (1+ (E - 1)*0.5)
\ No newline at end of file
+ efficiency = active_power_usage * (1+ (E - 1)*0.5)
diff --git a/code/modules/ai/ai_holder_combat_unseen.dm b/code/modules/ai/ai_holder_combat_unseen.dm
index 868191a43f5..efbfc1b5f5e 100644
--- a/code/modules/ai/ai_holder_combat_unseen.dm
+++ b/code/modules/ai/ai_holder_combat_unseen.dm
@@ -3,11 +3,11 @@
// Used when a target is out of sight or invisible.
/datum/ai_holder/proc/engage_unseen_enemy()
ai_log("engage_unseen_enemy() : Entering.", AI_LOG_TRACE)
-
+
// Also handled in strategic updates but handling it here allows for more fine resolution timeouts
if((lose_target_time+lose_target_timeout) <= world.time)
return find_target()
-
+
// Lets do some last things before giving up.
if(conserve_ammo || !holder.ICheckRangedAttack(target_last_seen_turf))
// We conserve ammo (or can't shoot) so walk closer
@@ -29,7 +29,7 @@
on_engagement(T)
if(firing_lanes && !test_projectile_safety(T))
step_rand(holder)
- holder.face_atom(T)
+ holder?.face_atom(T)
return ATTACK_FAILED
return ranged_attack(T)
@@ -60,7 +60,7 @@
/obj/structure/stairs/top,
/obj/structure/stairs/bottom
)
-
+
if(intelligence_level >= AI_SMART)
possible_escape_types += /obj/structure/ladder
@@ -69,18 +69,18 @@
continue // Not something they could have escaped through
if(turn(holder.dir, 180) & get_dir(get_turf(holder), get_turf(A)))
continue // Surely, they couldn't have escaped *behind* us!
-
+
if(istype(A, /obj/machinery/door))
var/obj/machinery/door/D = A
if(D.glass) // Surely, they couldn't hide behind a transparent door!
continue
if(D.density && intelligence_level < AI_SMART) // Surely, they couldn't have escaped through a *closed* door
continue
-
+
var/dist = get_dist(holder, A)
if(dist == closest_dist)
closest_escape += A
-
+
else if(dist < closest_dist)
closest_escape.Cut()
closest_escape += A
@@ -89,5 +89,3 @@
if(closest_escape.len)
return pick(closest_escape)
return null
-
-
diff --git a/code/modules/examine/descriptions/guns.dm b/code/modules/examine/descriptions/guns.dm
index ed03580d731..27cbfce607d 100644
--- a/code/modules/examine/descriptions/guns.dm
+++ b/code/modules/examine/descriptions/guns.dm
@@ -18,6 +18,8 @@
else
ammo = projectile_gun.contents[1]
P = ammo.BB
+ if(!P)
+ return "no"
switch(P.damage)
if(0)
return "no"
@@ -57,6 +59,8 @@
else
ammo = projectile_gun.contents[1]
P = ammo.BB
+ if(!P)
+ return "no"
switch(P.armor_penetration)
if(0)
return "cannot pierce armor"
@@ -149,4 +153,4 @@
if(reach > 1)
weapon_stats += "\nIt can attack targets up to [reach] tiles away, and can attack over certain objects."
- return weapon_stats
\ No newline at end of file
+ return weapon_stats
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 9a635e4d967..45126213536 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -140,7 +140,7 @@
if(affecting)
to_chat(target, "\The [fruit]'s thorns pierce your [affecting.name] greedily!")
- target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, "Thorns", sharp = TRUE, edge=has_edge)
+ target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, TRUE, has_edge, "Thorns")
else
to_chat(target, "\The [fruit]'s thorns pierce your flesh greedily!")
target.adjustBruteLoss(damage)
@@ -149,7 +149,7 @@
has_edge = prob(get_trait(TRAIT_POTENCY)/5)
if(affecting)
to_chat(target, "\The [fruit]'s thorns dig deeply into your [affecting.name]!")
- target.apply_damage(damage, BRUTE, target_limb, blocked, "Thorns", sharp = TRUE, edge=has_edge)
+ target.apply_damage(damage, BRUTE, target_limb, blocked, soaked, TRUE, has_edge, "Thorns")
else
to_chat(target, "\The [fruit]'s thorns dig deeply into your flesh!")
target.adjustBruteLoss(damage)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 1429a172a30..ac51e54c261 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -336,6 +336,8 @@
// PERSON BEING HIT: CAN BE DROP PRED, ALLOWS THROW VORE.
// PERSON BEING THROWN: DEVOURABLE, ALLOWS THROW VORE, CAN BE DROP PREY.
if((can_be_drop_pred && throw_vore) && (thrown_mob.devourable && thrown_mob.throw_vore && thrown_mob.can_be_drop_prey)) //Prey thrown into pred.
+ if(!vore_selected)
+ return
vore_selected.nom_mob(thrown_mob) //Eat them!!!
visible_message("[thrown_mob] is thrown right into [src]'s [lowertext(vore_selected.name)]!")
if(thrown_mob.loc != vore_selected)
@@ -346,7 +348,9 @@
// PERSON BEING HIT: CAN BE DROP PREY, ALLOWS THROW VORE, AND IS DEVOURABLE.
// PERSON BEING THROWN: CAN BE DROP PRED, ALLOWS THROW VORE.
- else if((can_be_drop_prey && throw_vore && devourable) && (thrown_mob.can_be_drop_pred && thrown_mob.throw_vore)) //Pred thrown into prey.
+ else if((can_be_drop_prey && throw_vore && devourable) && (thrown_mob.can_be_drop_pred && thrown_mob.throw_vore) && thrown_mob.vore_selected) //Pred thrown into prey.
+ if(!thrown_mob.vore_selected)
+ return
visible_message("[src] suddenly slips inside of [thrown_mob]'s [lowertext(thrown_mob.vore_selected.name)] as [thrown_mob] flies into them!")
thrown_mob.vore_selected.nom_mob(src) //Eat them!!!
if(src.loc != thrown_mob.vore_selected)
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index cad2cff56ff..a80c065b737 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -163,6 +163,8 @@
page--
playsound(src, "pageturn", 50, 1)
if(href_list["remove"])
+ if(!pages.len)
+ return
var/obj/item/weapon/W = pages[page]
usr.put_in_hands(W)
pages.Remove(pages[page])
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 4d8720ed9e7..ed3b3e20ce3 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -237,7 +237,7 @@
cut_overlays()
if(!hose_overlay)
- hose_overlay = new icon(icon, "[icon_state]+hose")
+ hose_overlay = new/icon(icon, "[icon_state]+hose")
if(InputSocket.get_pairing())
add_overlay(hose_overlay)