Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Creature Isle Pathing
#3
I may have found a potential fix but I need some help.

After having a dig into the Creature Isle Mac files, I found the following function: Living::MoveToPos((void))
Here's the IDB code for that function in CI:

Code:
seg000:000509D0 # Living::MoveToPos((void))
seg000:000509D0                 .globl .MoveToPos__6LivingFv
seg000:000509D0 .MoveToPos__6LivingFv:                  # CODE XREF: Animal::MoveToPos((void))+C↓p
seg000:000509D0                                         # 00194574↓p ...
seg000:000509D0                 mflr      r0
seg000:000509D4                 stw       r31, -4(sp)
seg000:000509D8                 stw       r30, -8(sp)
seg000:000509DC                 mr        r30, r3
seg000:000509E0                 stw       r0, 8(sp)
seg000:000509E4                 stwu      sp, -0x40(sp)
seg000:000509E8                 lbz       r0, 0x24(r3)
seg000:000509EC                 extrwi.   r0, r0, 1,26
seg000:000509F0                 beq       loc_509FC
seg000:000509F4                 li        r3, 0
seg000:000509F8                 b         loc_50A28
seg000:000509FC # ---------------------------------------------------------------------------
seg000:000509FC
seg000:000509FC loc_509FC:                              # CODE XREF: Living::MoveToPos((void))+20↑j
seg000:000509FC                 bl        .MoveTo__13MobileWallHugFv # MobileWallHug::MoveTo((void))
seg000:00050A00                 mr        r31, r3
seg000:00050A04                 cmpwi     r31, 0xA
seg000:00050A08                 bne       loc_50A24
seg000:00050A0C                 mr        r3, r30
seg000:00050A10                 lbz       r4, 0x8D(r30)
seg000:00050A14                 lwz       r12, 0(r30)
seg000:00050A18                 lwz       r12, 0x950(r12)
seg000:00050A1C                 bl        sub_63ABE0
seg000:00050A20                 lwz       rtoc, 0x14(sp)
seg000:00050A24
seg000:00050A24 loc_50A24:                              # CODE XREF: Living::MoveToPos((void))+38↑j
seg000:00050A24                 mr        r3, r31
seg000:00050A28
seg000:00050A28 loc_50A28:                              # CODE XREF: Living::MoveToPos((void))+28↑j
seg000:00050A28                 lwz       r0, 0x48(sp)
seg000:00050A2C                 addi      sp, sp, 0x40
seg000:00050A30                 mtlr      r0
seg000:00050A34                 lwz       r31, -4(sp)
seg000:00050A38                 lwz       r30, -8(sp)
seg000:00050A3C                 blr
seg000:00050A3C # End of function Living::MoveToPos((void))

After some debugging in game and forcing villagers to use many other variations of MoveToPos, it seems that each variation inherits from the code above. Even animals don't ignore altitude. I even tried forcing villagers to use the football variation of MoveToPos, but it still checked for altitude.

If the MobileWallHug::MoveTo((void)) function can be skipped, this may avoid checking altitude and make the villager just go to the position instead, which is what we want.
The only problem is, I'm struggling to find this function within the Creature Isle .exe equivalent. Even finding it within the more documented Black & White .idb is pretty tough. Any ideas how I could find this function in CreatureIsle.exe?

This pathing issue ruins playthroughs of Creature Isle, particularly my mod as it uses the Creature Isle engine as a base. Would really appreciate some help with this!
Reply


Messages In This Thread
Creature Isle Pathing - by Shane - 09-09-2020, 01:44
RE: Creature Isle Pathing - by Lant - 09-09-2020, 22:40
RE: Creature Isle Pathing - by Shane - 10-16-2020, 16:27
RE: Creature Isle Pathing - by Lant - 10-17-2020, 10:58
RE: Creature Isle Pathing - by Shane - 10-17-2020, 11:46
RE: Creature Isle Pathing - by Lant - 10-17-2020, 12:58
RE: Creature Isle Pathing - by Shane - 10-17-2020, 15:42
RE: Creature Isle Pathing - by Lant - 10-18-2020, 23:03
RE: Creature Isle Pathing - by Shane - 10-19-2020, 11:01

Forum Jump:


Users browsing this thread: 2 Guest(s)