User:SlyCooperReloadCoded: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
No edit summary
No edit summary
Line 4: Line 4:


"Collision" address on the addresses sheet isn't quite collision, the term "binding" fits it better. Instead of setting it to 0, set certain characters in the value to 0 - sometimes nothing will happen, sometimes the object will lose collision, and sometimes the object will lose its "rigid" behavior and can be pushed around by touching it - the entirety of Arpeggio's blimp can be tossed around, for example. This also removes the object's need for a map reload to change coordinates - it'll update live - then setting that value back to its default will lock it in place again. If you do this to the entire map's struct, large parts of the map model will gain physics, letting you throw mountains around, but most of the time everything but entities will disappear due to being mass-proxied away due to all the entities touching it.
"Collision" address on the addresses sheet isn't quite collision, the term "binding" fits it better. Instead of setting it to 0, set certain characters in the value to 0 - sometimes nothing will happen, sometimes the object will lose collision, and sometimes the object will lose its "rigid" behavior and can be pushed around by touching it - the entirety of Arpeggio's blimp can be tossed around, for example. This also removes the object's need for a map reload to change coordinates - it'll update live - then setting that value back to its default will lock it in place again. If you do this to the entire map's struct, large parts of the map model will gain physics, letting you throw mountains around, but most of the time everything but entities will disappear due to being mass-proxied away due to all the entities touching it.

Map objects that have their transform component updating automatically (i.e. tilting building on a tree in Ep3 hub, Ep5 hub patrol boat, Ep7 water wheels, etc) have an "is being touched" float like entities do - unmoving ones don't, the only excepting being the map model itself. Visibility will be nearby, and -0x2C from that is the start of the struct. This is the easiest way to find the start of their struct. All map objects do generally work with entity offsets like +0xD4 for Render Priority or +0x12C for Opacity. Doing an entity swap with an object in the fk$x list and an object not in the fk$x list will always crash, whether it was done with the ID method or the pointer method.

If you search for the address that marks the start of a moving map object's struct, you'll also find it in some other lists. Some values in that list near the struct start address value control some kind of animation set thing - changing them will make them and some nearby objects to move erratically before crashing the game. I once swapped some values belonging to the turret tower and the tilty tree building in Ep3 hub, and both started swinging around wildly before the game crashed. Interestingly, the elephant satellite's dish started rotating super fast as well, even though it was on a 100% complete save file... could static things be reanimated somehow?