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)
|
if(M.ckey == key)
|
||||||
return M
|
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.
|
* Returns the top-most atom sitting on the turf.
|
||||||
//Optional arg 'type' to stop once it reaches a specific type instead of a turf.
|
* For example, using this on a disk, which is in a bag, on a mob,
|
||||||
/proc/get_atom_on_turf(atom/movable/M, stop_type)
|
* will return the mob because it's on the turf.
|
||||||
var/atom/loc = M
|
*
|
||||||
while(loc && loc.loc && !isturf(loc.loc))
|
* Arguments
|
||||||
loc = loc.loc
|
* * something_in_turf - a movable within the turf, somewhere.
|
||||||
if(stop_type && istype(loc, stop_type))
|
* * 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
|
break
|
||||||
return loc
|
|
||||||
|
return topmost_thing
|
||||||
|
|
||||||
//Returns a list of all locations the target is within.
|
//Returns a list of all locations the target is within.
|
||||||
/proc/get_nested_locs(atom/movable/M, include_turf = FALSE)
|
/proc/get_nested_locs(atom/movable/M, include_turf = FALSE)
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT)
|
approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT)
|
||||||
|
|
||||||
// Translate any existing messages upwards, apply exponential decay factors to timers
|
// 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)
|
if (owned_by.seen_messages)
|
||||||
var/idx = 1
|
var/idx = 1
|
||||||
var/combined_height = approx_lines
|
var/combined_height = approx_lines
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
var/atom/movable/movable_source = src
|
var/atom/movable/movable_source = src
|
||||||
bound_width = movable_source.bound_width
|
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.plane = BALLOON_CHAT_PLANE
|
||||||
balloon_alert.alpha = 0
|
balloon_alert.alpha = 0
|
||||||
balloon_alert.appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
|
balloon_alert.appearance_flags = RESET_ALPHA|RESET_COLOR|RESET_TRANSFORM
|
||||||
|
|||||||
Reference in New Issue
Block a user