ID:2925542
 
BYOND Version:515
Operating System:Windows 10 Home
Web Browser:Firefox 126.0
Applies to:Dream Maker
Status: Test case needed

A compile-ready test project that can reproduce this issue reliably is required. You can help us out by editing your report or providing a link to the zipped source for your test case.
Descriptive Problem Summary:
bound_width and bound_height are not kept account of properly when the atom is either moved , has its loc set , or when the map_x and map_Y bounds are increased

Numbered Steps to Reproduce Problem:
1)Make an atom , change its bound width to 2x world.icon_size
2)Either increase world.maxx and try to check if the turfs to the right contain it(which they won't) , or move the object to another location (either with move or .loc = ) which also won't update its bounds

Code Snippet (if applicable) to Reproduce Problem:
world.maxx = world.maxy = world.maxz = 1
var/obj/o = new/obj()
o.bound_height = o.bound_width = 64
o.loc = locate(1,1,1)
world.maxx = world.maxy = 2
world.log << "Unmoved:"
for(var/turf/t in world)
world.log << "([t.x],[t.y],[t.z]) [(o in t) ? "good" : "bugged"]"
world.log << "Moved:"
o.loc = null
sleep(world.tick_lag)
o.loc = locate(1,1,1)
for(var/turf/t in world)
world.log << "([t.x],[t.y],[t.z]) [(o in t) ? "good" : "bugged"]"


Expected Results:
The newly created turfs or the ones near the new location containing the atom in their contents list as expected

Actual Results:
The new turfs or the ones near the new location do not contain the atom , only the one to which it is moved

Does the problem occur:
Every time on any BYOND version.

When does the problem NOT occur?


Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)

Workarounds:
Reset atom bounds and set them back to the increased values to force a update.


Bump
Do you have a demo project for this, just so I'm sure we're on the same page?
In response to Lummox JR
Demo project is the code snippet below , changing the (o in t) statement to (o.locs in t) results in expected behaviour.

Seems the issue is with object in turf statement.

world.maxx = world.maxy = world.maxz = 1
var/obj/o = new/obj()
o.bound_height = o.bound_width = 64
o.loc = locate(1,1,1)
world.maxx = world.maxy = 2
world.log << "Unmoved:"
for(var/turf/t in world)
world.log << "([t.x],[t.y],[t.z]) [(o in t) ? "good" : "bugged"]"
world.log << "Moved:"
o.loc = null
sleep(world.tick_lag)
o.loc = locate(1,1,1)
for(var/turf/t in world)
world.log << "([t.x],[t.y],[t.z]) [(o in t) ? "good" : "bugged"]"

I said project, not snippet. I want to be 100% sure we're on the same page. I need a zip with source for a project that shows this, preferably with verbs that can reset the conditions on the fly.
Spevacus changed status to 'Test case needed'