Merge remote-tracking branch 'upstream/dev-freeze' into dev

Conflicts:
	code/__defines/mobs.dm
	code/game/asteroid.dm
	code/modules/mob/living/carbon/human/human.dm
	code/modules/mob/living/silicon/robot/robot_modules.dm
	code/modules/mob/new_player/preferences_setup.dm
	code/modules/recycling/disposal.dm
This commit is contained in:
PsiOmegaDelta
2015-12-13 10:47:33 +01:00
32 changed files with 1706 additions and 1960 deletions

View File

@@ -145,9 +145,15 @@
// mouse drop another mob or self
//
/obj/machinery/disposal/MouseDrop_T(mob/target, mob/user)
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
if(user.stat || !user.canmove || !istype(target))
return
if(isanimal(user) && target != user) return //animals cannot put mobs other than themselves into disposal
if(target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1)
return
//animals cannot put mobs other than themselves into disposal
if(isanimal(user) && target != user)
return
src.add_fingerprint(user)
var/target_loc = target.loc
var/msg
@@ -736,21 +742,25 @@
// expel the held objects into a turf
// called when there is a break in the pipe
//
proc/expel(var/obj/structure/disposalholder/H, var/turf/T, var/direction)
var/turf/target
if(T.density) // dense ouput turf, so stop holder
H.active = 0
H.loc = src
if(!istype(H))
return
// Empty the holder if it is expelled into a dense turf.
// Leaving it intact and sitting in a wall is stupid.
if(T.density)
for(var/atom/movable/AM in H)
AM.loc = T
AM.pipe_eject(0)
qdel(H)
return
if(!T.is_plating() && istype(T,/turf/simulated/floor)) //intact floor, pop the tile
var/turf/simulated/floor/F = T
F.break_tile()
new /obj/item/stack/tile(H) // add to holder so it will be thrown with other stuff
var/turf/target
if(direction) // direction is specified
if(istype(T, /turf/space)) // if ended in space, then range is unlimited
target = get_edge_target_turf(T, direction)