diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 6a579a37ed4..307ce09d7f1 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -28,11 +28,10 @@ src.throw_impact(A) src.throwing = 0 - spawn( 0 ) - if ((A && yes)) - A.last_bumped = world.time - A.Bumped(src) - return + if ((A && yes)) + A.last_bumped = world.time + A.Bumped(src) + return ..() return diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 385c21f5f3c..53028eaa34e 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -2,181 +2,161 @@ name = "cyborg recharging station" icon = 'icons/obj/objects.dmi' icon_state = "borgcharger0" - density = 1 + density = 0 anchored = 1.0 use_power = 1 idle_power_usage = 5 active_power_usage = 1000 - var/mob/occupant = null + var/mob/living/silicon/robot/occupant = null + var/open = 1 - New() - ..() - build_icon() +/obj/machinery/recharge_station/New() + ..() + build_icon() - process() - if(!(NOPOWER|BROKEN)) - return - - if(src.occupant) - process_occupant() - return 1 - - - allow_drop() - return 0 - - - relaymove(mob/user as mob) - if(user.stat) - return - src.go_out() +/obj/machinery/recharge_station/process() + if(!(NOPOWER|BROKEN)) return - emp_act(severity) - if(stat & (BROKEN|NOPOWER)) - ..(severity) - return - if(occupant) - occupant.emp_act(severity) - go_out() - ..(severity) - - proc - build_icon() - if(NOPOWER|BROKEN) - if(src.occupant) - icon_state = "borgcharger1" - else - icon_state = "borgcharger0" - else - icon_state = "borgcharger0" - + if(src.occupant) process_occupant() - if(src.occupant) - if (istype(occupant, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = occupant - restock_modules() - if(!R.cell) - return - else if(R.cell.charge >= R.cell.maxcharge) - R.cell.charge = R.cell.maxcharge - return - else - R.cell.charge = min(R.cell.charge + 200, R.cell.maxcharge) - return + return 1 - go_out() - if(!( src.occupant )) - return - //for(var/obj/O in src) - // O.loc = src.loc - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.loc = src.loc - src.occupant = null - build_icon() - src.use_power = 1 - return +/obj/machinery/recharge_station/allow_drop() + return 0 + + +/obj/machinery/recharge_station/relaymove(mob/user as mob) + if(user.stat) + return + open() + +/obj/machinery/recharge_station/emp_act(severity) + if(stat & (BROKEN|NOPOWER)) + ..(severity) + return + if(occupant) + occupant.emp_act(severity) + open() + ..(severity) + +/obj/machinery/recharge_station/attack_paw(user as mob) + return attack_hand(user) + +/obj/machinery/recharge_station/attack_ai(user as mob) + return attack_hand(user) + +/obj/machinery/recharge_station/attack_hand(mob/user) + if(..()) return + toggle_open() + add_fingerprint(user) + +/obj/machinery/recharge_station/proc/toggle_open() + if(open) + close() + else + open() + +/obj/machinery/recharge_station/proc/open() + if(occupant) + if (occupant.client) + occupant.client.eye = occupant + occupant.client.perspective = MOB_PERSPECTIVE + occupant.loc = loc + occupant = null + use_power = 1 + open = 1 + density = 0 + build_icon() + +/obj/machinery/recharge_station/proc/close() + for(var/mob/living/silicon/robot/R in loc) + R.stop_pulling() + if(R.client) + R.client.eye = src + R.client.perspective = EYE_PERSPECTIVE + R.loc = src + occupant = R + use_power = 2 + add_fingerprint(R) + break + open = 0 + density = 1 + build_icon() + +/obj/machinery/recharge_station/proc/build_icon() + if(NOPOWER|BROKEN) + if(open) + icon_state = "borgcharger0" + else + if(occupant) + icon_state = "borgcharger1" + else + icon_state = "borgcharger2" + else + icon_state = "borgcharger0" + +/obj/machinery/recharge_station/proc/process_occupant() + if(occupant) restock_modules() - if(src.occupant) - if(istype(occupant, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = occupant - if(R.module && R.module.modules) - var/list/um = R.contents|R.module.modules - // ^ makes sinle list of active (R.contents) and inactive modules (R.module.modules) - for(var/obj/O in um) - // Engineering - if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/rods) || istype(O,/obj/item/weapon/cable_coil)) - if(O:amount < 50) - O:amount += 1 - // Security - if(istype(O,/obj/item/device/flash)) - if(O:broken) - O:broken = 0 - O:times_used = 0 - O:icon_state = "flash" - if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg)) - if(O:power_supply.charge < O:power_supply.maxcharge) - O:power_supply.give(O:charge_cost) - O:update_icon() - else - O:charge_tick = 0 - if(istype(O,/obj/item/weapon/melee/baton)) - var/obj/item/weapon/melee/baton/B = O - if(B.bcell) - B.bcell.charge = B.bcell.maxcharge - //Service - if(istype(O,/obj/item/weapon/reagent_containers/food/condiment/enzyme)) - if(O.reagents.get_reagent_amount("enzyme") < 50) - O.reagents.add_reagent("enzyme", 2) - //Medical - if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot)) - var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O - if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume)) - B.reagents.add_reagent(B.reagent, 2) - //Janitor - if(istype(O, /obj/item/device/lightreplacer)) - var/obj/item/device/lightreplacer/LR = O - LR.Charge(R) - - if(R) - if(R.module) - R.module.respawn_consumable(R) - - //Emagged items for janitor and medical borg - if(R.module.emag) - if(istype(R.module.emag, /obj/item/weapon/reagent_containers/spray)) - var/obj/item/weapon/reagent_containers/spray/S = R.module.emag - if(S.name == "Polyacid spray") - S.reagents.add_reagent("pacid", 2) - else if(S.name == "Lube spray") - S.reagents.add_reagent("lube", 2) - - - verb - move_eject() - set category = "Object" - set src in oview(1) - if (usr.stat != 0) - return - src.go_out() - add_fingerprint(usr) - return - - move_inside() - set category = "Object" - set src in oview(1) - if (usr.stat == 2) - //Whoever had it so that a borg with a dead cell can't enter this thing should be shot. --NEO - return - if (!(istype(usr, /mob/living/silicon/))) - usr << "\blue Only non-organics may enter the recharger!" - return - if (src.occupant) - usr << "\blue The cell is already occupied!" - return - if (!usr:cell) - usr<<"\blue Without a powercell, you can't be recharged." - //Make sure they actually HAVE a cell, now that they can get in while powerless. --NEO - return - usr.stop_pulling() - if(usr && usr.client) - usr.client.perspective = EYE_PERSPECTIVE - usr.client.eye = src - usr.loc = src - src.occupant = usr - /*for(var/obj/O in src) - O.loc = src.loc*/ - src.add_fingerprint(usr) - build_icon() - src.use_power = 2 - return - - + if(occupant.cell) + if(occupant.cell.charge >= occupant.cell.maxcharge) + occupant.cell.charge = occupant.cell.maxcharge + else + occupant.cell.charge = min(occupant.cell.charge + 200, occupant.cell.maxcharge) +/obj/machinery/recharge_station/proc/restock_modules() + if(occupant) + if(occupant.module && occupant.module.modules) + var/list/um = occupant.contents|occupant.module.modules + // ^ makes sinle list of active (occupant.contents) and inactive modules (occupant.module.modules) + for(var/obj/O in um) + // Engineering + if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/rods) || istype(O,/obj/item/weapon/cable_coil)) + if(O:amount < 50) + O:amount += 1 + // Security + if(istype(O,/obj/item/device/flash)) + if(O:broken) + O:broken = 0 + O:times_used = 0 + O:icon_state = "flash" + if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg)) + if(O:power_supply.charge < O:power_supply.maxcharge) + O:power_supply.give(O:charge_cost) + O:update_icon() + else + O:charge_tick = 0 + if(istype(O,/obj/item/weapon/melee/baton)) + var/obj/item/weapon/melee/baton/B = O + if(B.bcell) + B.bcell.charge = B.bcell.maxcharge + //Service + if(istype(O,/obj/item/weapon/reagent_containers/food/condiment/enzyme)) + if(O.reagents.get_reagent_amount("enzyme") < 50) + O.reagents.add_reagent("enzyme", 2) + //Medical + if(istype(O,/obj/item/weapon/reagent_containers/glass/bottle/robot)) + var/obj/item/weapon/reagent_containers/glass/bottle/robot/B = O + if(B.reagent && (B.reagents.get_reagent_amount(B.reagent) < B.volume)) + B.reagents.add_reagent(B.reagent, 2) + //Janitor + if(istype(O, /obj/item/device/lightreplacer)) + var/obj/item/device/lightreplacer/LR = O + LR.Charge(occupant) + if(occupant) + if(occupant.module) + occupant.module.respawn_consumable(occupant) + //Emagged items for janitor and medical borg + if(occupant.module.emag) + if(istype(occupant.module.emag, /obj/item/weapon/reagent_containers/spray)) + var/obj/item/weapon/reagent_containers/spray/S = occupant.module.emag + if(S.name == "Polyacid spray") + S.reagents.add_reagent("pacid", 2) + else if(S.name == "Lube spray") + S.reagents.add_reagent("lube", 2) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 41f1d2ce0a4..4363f796d47 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -16,31 +16,28 @@ //This is fine, works the same as a human /mob/living/carbon/alien/humanoid/Bump(atom/movable/AM as mob|obj, yes) - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - - if (ismob(AM)) - var/mob/tmob = AM - tmob.LAssailant = src - - if (!now_pushing) - now_pushing = 1 - if (!AM.anchored) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + + if (ismob(AM)) + var/mob/tmob = AM + tmob.LAssailant = src + + if (!now_pushing) + now_pushing = 1 + if (!AM.anchored) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null /mob/living/carbon/alien/humanoid/movement_delay() var/tally = 0 @@ -413,4 +410,4 @@ In all, this is a lot like the monkey code. /N "[usr] tries to empty [src]'s pouches.") if(do_mob(usr, src, STRIP_DELAY * 0.5)) u_equip(r_store) - u_equip(l_store) + u_equip(l_store) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 772e1c6dc6a..3b0ceb7a4df 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -24,27 +24,24 @@ //This is fine, works the same as a human /mob/living/carbon/alien/larva/Bump(atom/movable/AM as mob|obj, yes) - - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - tmob.LAssailant = src - - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + tmob.LAssailant = src + + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + step(AM, t) + now_pushing = null + //This needs to be fixed /mob/living/carbon/alien/larva/Stat() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1c0f5343112..c09a43984e1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -79,24 +79,21 @@ tmob.LAssailant = src now_pushing = 0 - spawn(0) - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!now_pushing) - now_pushing = 1 - - if (!AM.anchored) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) return - return + if (!now_pushing) + now_pushing = 1 + + if (!AM.anchored) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = 0 /mob/living/carbon/human/Stat() ..() diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 707692685ed..864ab4f4f73 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -105,71 +105,68 @@ /mob/living/carbon/slime/Bump(atom/movable/AM as mob|obj, yes) - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 + if ((!( yes ) || now_pushing)) + return + now_pushing = 1 - if(isobj(AM)) - if(!client && powerlevel > 0) - var/probab = 10 - switch(powerlevel) - if(1 to 2) probab = 20 - if(3 to 4) probab = 30 - if(5 to 6) probab = 40 - if(7 to 8) probab = 60 - if(9) probab = 70 - if(10) probab = 95 - if(prob(probab)) + if(isobj(AM)) + if(!client && powerlevel > 0) + var/probab = 10 + switch(powerlevel) + if(1 to 2) probab = 20 + if(3 to 4) probab = 30 + if(5 to 6) probab = 40 + if(7 to 8) probab = 60 + if(9) probab = 70 + if(10) probab = 95 + if(prob(probab)) - if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) - if(istype(src, /mob/living/carbon/slime/adult)) - if(nutrition <= 600 && !Atkcool) + if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) + if(istype(src, /mob/living/carbon/slime/adult)) + if(nutrition <= 600 && !Atkcool) + AM.attack_slime(src) + spawn() + Atkcool = 1 + sleep(15) + Atkcool = 0 + else + if(nutrition <= 500 && !Atkcool) + if(prob(5)) AM.attack_slime(src) spawn() Atkcool = 1 sleep(15) Atkcool = 0 - else - if(nutrition <= 500 && !Atkcool) - if(prob(5)) - AM.attack_slime(src) - spawn() - Atkcool = 1 - sleep(15) - Atkcool = 0 - if(ismob(AM)) - var/mob/tmob = AM + if(ismob(AM)) + var/mob/tmob = AM - if(istype(src, /mob/living/carbon/slime/adult)) - if(istype(tmob, /mob/living/carbon/human)) - if(prob(90)) - now_pushing = 0 - return - else - if(istype(tmob, /mob/living/carbon/human)) + if(istype(src, /mob/living/carbon/slime/adult)) + if(istype(tmob, /mob/living/carbon/human)) + if(prob(90)) now_pushing = 0 return + else + if(istype(tmob, /mob/living/carbon/human)) + now_pushing = 0 + return - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) return - return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null /mob/living/carbon/slime/Process_Spacemove() return 2 diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 20ccb8a8dfc..df8e09f4bf2 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -38,35 +38,31 @@ return tally+config.monkey_delay /mob/living/carbon/monkey/Bump(atom/movable/AM as mob|obj, yes) - - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - - tmob.LAssailant = src - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + + tmob.LAssailant = src + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null /mob/living/carbon/monkey/meteorhit(obj/O as obj) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b0955f512af..035d34f57ae 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -296,10 +296,11 @@ t7 = null if ((t7 && (pulling && ((get_dist(src, pulling) <= 1 || pulling.loc == loc) && (client && client.moving))))) var/turf/T = loc + var/turf/P = pulling.loc . = ..() if (pulling && pulling.loc) - if(!( isturf(pulling.loc) )) + if(!isturf(pulling.loc) || pulling.loc != P) stop_pulling() return else @@ -343,7 +344,6 @@ if (istype(location, /turf/simulated)) location.add_blood(M) - step(pulling, get_dir(pulling.loc, T)) M.start_pulling(t) else diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 82657b8bb49..997dcccde37 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -54,10 +54,6 @@ uneq_all() // particularly to ensure sight modes are cleared - if(in_contents_of(/obj/machinery/recharge_station))//exit the recharge station - var/obj/machinery/recharge_station/RC = loc - RC.go_out() - if(blind) blind.layer = 0 sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS see_in_dark = 8 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 39b2f6b27a0..d8a66af4506 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -324,36 +324,29 @@ /mob/living/silicon/robot/Bump(atom/movable/AM as mob|obj, yes) - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - now_pushing = 0 - ..() - if (istype(AM, /obj/machinery/recharge_station)) - var/obj/machinery/recharge_station/F = AM - F.move_inside() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!now_pushing) - now_pushing = 1 - if (!AM.anchored) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return - + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!now_pushing) + now_pushing = 1 + if (!AM.anchored) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null /mob/living/silicon/robot/triggerAlarm(var/class, area/A, var/O, var/alarmsource) if (stat == 2) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 62f3cadb384..2c6feb47232 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -54,34 +54,31 @@ return /mob/living/simple_animal/construct/Bump(atom/movable/AM as mob|obj, yes) - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - - tmob.LAssailant = src - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + + tmob.LAssailant = src + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null /mob/living/simple_animal/construct/attack_animal(mob/living/simple_animal/M as mob) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index d040cdaba3e..808cd42104e 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -363,35 +363,31 @@ sleep(1) /mob/living/simple_animal/corgi/Ian/Bump(atom/movable/AM as mob|obj, yes) - - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - - tmob.LAssailant = src - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + + tmob.LAssailant = src + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null //PC stuff-Sieve /mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index 0b6c2d00cfe..b49c3e9eabc 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -15,35 +15,31 @@ var/colour = "grey" /mob/living/simple_animal/slime/Bump(atom/movable/AM as mob|obj, yes) - - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - - tmob.LAssailant = src - now_pushing = 0 - ..() - if (!istype(AM, /atom/movable) || !istype(AM.loc, /turf)) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window)) - if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null + if ((!( yes ) || now_pushing)) return - return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(!(tmob.status_flags & CANPUSH)) + now_pushing = 0 + return + + tmob.LAssailant = src + now_pushing = 0 + ..() + if (!istype(AM, /atom/movable)) + return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null /mob/living/simple_animal/adultslime name = "pet slime" diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 1204708ac70..294ccbf278f 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ