Upload files
This commit is contained in:
@@ -357,16 +357,27 @@ Turf and target are separate in case you want to teleport some distance from a t
|
||||
if(M.ckey == key)
|
||||
return M
|
||||
|
||||
//Returns the atom sitting on the turf.
|
||||
//For example, using this on a disk, which is in a bag, on a mob, will return the mob because it's on the turf.
|
||||
//Optional arg 'type' to stop once it reaches a specific type instead of a turf.
|
||||
/proc/get_atom_on_turf(atom/movable/M, stop_type)
|
||||
var/atom/loc = M
|
||||
while(loc && loc.loc && !isturf(loc.loc))
|
||||
loc = loc.loc
|
||||
if(stop_type && istype(loc, stop_type))
|
||||
/**
|
||||
* Returns the top-most atom sitting on the turf.
|
||||
* For example, using this on a disk, which is in a bag, on a mob,
|
||||
* will return the mob because it's on the turf.
|
||||
*
|
||||
* Arguments
|
||||
* * something_in_turf - a movable within the turf, somewhere.
|
||||
* * stop_type - optional - stops looking if stop_type is found in the turf, returning that type (if found).
|
||||
**/
|
||||
/proc/get_atom_on_turf(atom/movable/something_in_turf, stop_type)
|
||||
if(!istype(something_in_turf))
|
||||
CRASH("get_atom_on_turf was not passed an /atom/movable! Got [isnull(something_in_turf) ? "null":"type: [something_in_turf.type]"]")
|
||||
|
||||
var/atom/movable/topmost_thing = something_in_turf
|
||||
|
||||
while(topmost_thing?.loc && !isturf(topmost_thing.loc))
|
||||
topmost_thing = topmost_thing.loc
|
||||
if(stop_type && istype(topmost_thing, stop_type))
|
||||
break
|
||||
return loc
|
||||
|
||||
return topmost_thing
|
||||
|
||||
//Returns a list of all locations the target is within.
|
||||
/proc/get_nested_locs(atom/movable/M, include_turf = FALSE)
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT)
|
||||
|
||||
// Translate any existing messages upwards, apply exponential decay factors to timers
|
||||
message_loc = get_atom_on_turf(target)
|
||||
message_loc = isturf(target) ? target : get_atom_on_turf(target)
|
||||
if (owned_by.seen_messages)
|
||||
var/idx = 1
|
||||
var/combined_height = approx_lines
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/atom/movable/movable_source = src
|
||||
bound_width = movable_source.bound_width
|
||||
|
||||
var/image/balloon_alert = image(loc = get_atom_on_turf(src), layer = ABOVE_MOB_LAYER)
|
||||
var/image/balloon_alert = image(loc = isturf(src) ? src : get_atom_on_turf(src), layer = ABOVE_MOB_LAYER)
|
||||
balloon_alert.plane = BALLOON_CHAT_PLANE
|
||||
balloon_alert.alpha = 0
|
||||
balloon_alert.appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
|
||||
|
||||
Reference in New Issue
Block a user