diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index b6da46a67c8..9b10029e2ad 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -84,7 +84,8 @@ qdel(src) /obj/machinery/recharge_station/Bumped(var/mob/AM) - move_inside(AM) + if(ismob(AM)) + move_inside(AM) /obj/machinery/recharge_station/AllowDrop() return FALSE diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 71e6d712699..ba7d03d1857 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -156,12 +156,8 @@ //================= else if(prob(33)) - var/list/nearby = oview(10, src) - if(nearby.len) - var/target_atom = pick(nearby) - walk_to(src, target_atom) - if(prob(40)) - visible_message("[src] skitters[pick(" away"," around","")].") + if(random_skitter() && prob(40)) + visible_message("[src] skitters[pick(" away"," around","")].") else if(prob(10)) //ventcrawl! for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src)) @@ -190,6 +186,18 @@ to_chat(S, "You are a spider who is loyal to [S.master_commander], obey [S.master_commander]'s every order and assist [S.master_commander.p_them()] in completing [S.master_commander.p_their()] goals at any cost.") qdel(src) +/obj/structure/spider/spiderling/proc/random_skitter() + var/list/available_turfs = list() + for(var/turf/simulated/S in oview(10, src)) + // no !isspaceturf check needed since /turf/simulated is not a subtype of /turf/space + if(S.density) + continue + available_turfs += S + if(!length(available_turfs)) + return FALSE + walk_to(src, pick(available_turfs)) + return TRUE + /obj/structure/spider/spiderling/decompile_act(obj/item/matter_decompiler/C, mob/user) if(!istype(user, /mob/living/silicon/robot/drone)) user.visible_message("[user] sucks [src] into its decompiler. There's a horrible crunching noise.", \ diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index 691dcd811c0..28e67d9912d 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -35,8 +35,6 @@ /obj/structure/spider/spiderling/terror_spiderling/Bump(obj/O) if(istype(O, /obj/structure/table)) forceMove(O.loc) - else if(istype(O, /obj/machinery/recharge_station)) - qdel(src) . = ..() @@ -160,11 +158,7 @@ if(frustration > 2) entry_vent = null else if(prob(33)) - var/list/nearby = oview(10, src) - if(nearby.len) - var/target_atom = pick(nearby) - if(!istype(get_turf(target_atom),/turf/space)) - walk_to(src, target_atom) + random_skitter() else if(immediate_ventcrawl || prob(ventcrawl_chance)) immediate_ventcrawl = FALSE if(!stillborn && !goto_mother)