diff --git a/code/__HELPERS/path.dm b/code/__HELPERS/path.dm
index 22de777928c..f0a5ce9cfb3 100644
--- a/code/__HELPERS/path.dm
+++ b/code/__HELPERS/path.dm
@@ -143,8 +143,8 @@
if(!start || !end)
stack_trace("Invalid A* start or destination")
return
- if(start.z != end.z || start == end ) //no pathfinding between z levels
- return
+ // if(start.z != end.z || start == end ) //no pathfinding between z levels
+ // return //NSV13 we DO want pathfinding between z levels.
if(max_distance && (max_distance < get_dist(start, end))) //if start turf is farther than max_distance from end turf, no need to do anything
return
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 660d16aa0dd..587ff87f1e0 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -441,6 +441,7 @@
opacity = FALSE
var/ini_dir
+
/obj/machinery/door/firedoor/border_only/Initialize(mapload, loc, set_dir)
. = ..()
if(set_dir)
@@ -528,23 +529,18 @@
leaving.Bump(src)
return COMPONENT_ATOM_BLOCK_EXIT
-//NSV13 - knpcs can into firelock
-/obj/machinery/door/firedoor/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller)
- if(istype(caller) && (caller.pass_flags & pass_flags_self))
- return TRUE
- if(!density)
- return TRUE
- if(welded)
+//NSV13 - npcs can into firelock
+/obj/machinery/door/firedoor/border_only/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller)
+ if((welded || (machine_stat & NOPOWER)) && (dir == to_dir))
+ message_admins("[src]([ADMIN_FLW(src)]) returned false astarpass with dir [dir], weld [welded] and machine stat [machine_state]")
return FALSE
- if(!hasPower())
- return isknpc(caller)
return TRUE
/obj/machinery/door/firedoor/border_only/CanAtmosPass(turf/T)
if(get_dir(loc, T) == dir)
return !density
else
- return 1
+ return TRUE
//NSV13 end
/obj/machinery/door/firedoor/heavy
diff --git a/code/game/points_of_interest.dm b/code/game/points_of_interest.dm
index 5f901631191..18f8b858901 100644
--- a/code/game/points_of_interest.dm
+++ b/code/game/points_of_interest.dm
@@ -5,7 +5,7 @@
var/list/pois = list()
for(var/mob/M in mobs)
if(skip_mindless && (!M.mind && !M.ckey))
- if(!isbot(M) && !iscameramob(M) && !ismegafauna(M))
+ if(!isbot(M) && !iscameramob(M) && !ismegafauna(M) && !isknpc(M)) //NSV13 add KNPCs
continue
if(M.client && M.client.holder && M.client.holder.fakekey) //stealthmins
continue
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 061b5bf68d5..b6381e31b42 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -310,9 +310,9 @@
if(InCritical())
msg += "[t_He] [t_is] barely conscious.\n"
if(getorgan(/obj/item/organ/brain))
- if(ai_controller?.ai_status == AI_STATUS_ON)
+ if(ai_controller?.ai_status == AI_STATUS_ON || isknpc(src)) //NSV13 added KNPCs
msg += "[t_He] do[t_es]n't appear to be [t_him]self.\n"
- if(!key)
+ else if(!key)
msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely.\n"
else if(!client)
msg += "[t_He] [t_has] a blank, absent-minded stare and appears completely unresponsive to anything. [t_He] may snap out of it soon.\n"
diff --git a/nsv13/code/modules/overmap/knpc.dm b/nsv13/code/modules/overmap/knpc.dm
index 8c655df0ca5..595c5418a27 100644
--- a/nsv13/code/modules/overmap/knpc.dm
+++ b/nsv13/code/modules/overmap/knpc.dm
@@ -26,8 +26,8 @@ GLOBAL_LIST_EMPTY(knpcs)
/mob/living/carbon/human/ai_boarder
faction = list("Neutral")
- var/move_delay = 4 //How quickly do the boys travel?
- var/action_delay = 6 //How long we delay between actions
+ var/move_delay = 6 //How quickly do the boys travel?
+ var/action_delay = 10 //How long we delay between actions
var/knpc_traits = KNPC_IS_DODGER | KNPC_IS_MERCIFUL | KNPC_IS_AREA_SPECIFIC
var/difficulty_override = FALSE //Whether to ignore overmap difficulty or not
var/list/outfit = list (
@@ -158,7 +158,7 @@ GLOBAL_LIST_EMPTY(knpcs)
break //If at least one firedoor in our way is welded shut, welp!
blocking_firelock.open() //Open one firelock per tile per try.
break
- for(var/obj/machinery/door/firedoor/blocking_firelock in this_turf)
+ for(var/obj/machinery/door/firedoor/blocking_firelock as() in this_turf)
if(!((blocking_firelock.flags_1 & ON_BORDER_1) && (blocking_firelock.dir in dir_to_cardinal_dirs(get_dir(this_turf, next_turf))))) //Here, only firelocks on the border matter since fulltile firelocks let you exit.
continue
if(!blocking_firelock.density || blocking_firelock.operating)
@@ -172,7 +172,12 @@ GLOBAL_LIST_EMPTY(knpcs)
continue
H.forceMove(next_turf)
H.visible_message("[H] climbs onto [possible_barrier]!")
+ var/obj/item/dropped_it
+ if(H.get_active_held_item())
+ dropped_it = H.get_active_held_item()
H.Stun(2 SECONDS) //Table.
+ if(dropped_it) //Don't forget to pick up your stuff
+ H.put_in_hands(dropped_it, forced=TRUE)
if(get_turf(H) == path[1])
increment_path()
return TRUE
@@ -255,6 +260,7 @@ GLOBAL_LIST_EMPTY(knpcs)
if(length(path))
next_path_step()
else //They should always be pathing somewhere...
+ next_path_step()
dest = null
tries = 0
path = list()
diff --git a/nsv13/code/modules/overmap/shieldgen.dm b/nsv13/code/modules/overmap/shieldgen.dm
index 55376675734..6db73ebbb77 100644
--- a/nsv13/code/modules/overmap/shieldgen.dm
+++ b/nsv13/code/modules/overmap/shieldgen.dm
@@ -204,6 +204,8 @@
var/obj/structure/cable/cable = null //Connected cable
var/mutable_appearance/c_screen
+/obj/machinery/shield_generator/update_icon()
+ cut_overlays()
/obj/machinery/shield_generator/proc/absorb_hit(obj/item/projectile/proj)
var/damage = proj.damage
diff --git a/nsv13/code/modules/squads/squad_items.dm b/nsv13/code/modules/squads/squad_items.dm
index 86b58a3d305..a96e2f315e3 100644
--- a/nsv13/code/modules/squads/squad_items.dm
+++ b/nsv13/code/modules/squads/squad_items.dm
@@ -406,7 +406,8 @@
. = ..()
if(torn)
return
- inflate(get_turf(target), user)
+ if(in_range(target, user))
+ inflate(get_turf(target), user)
/obj/item/inflatable/proc/inflate(turf/target, mob/user)
playsound(loc, 'sound/items/zip.ogg', 75, 1)