aeon0 / botty

D2R Pixel Bot
MIT License
531 stars 377 forks source link

Sorceress telekinesis results in bad starting position when entering Pindle #951

Closed Ezro closed 2 years ago

Ezro commented 2 years ago

Is it really a Bug report? If you have questions regarding setup or feature information/requests, please consider asking in the Discord channel: https://discord.gg/Jf3J8cuXWg. The Github issues section is for bug reports only.

Botty Version What version of botty are you running? Are you using a pre-compiled release? Which one. Are you using the latest master branch? On which commit?

Describe the bug When sorc enters the A5_PORTAL

To Reproduce Steps to reproduce the behavior:

  1. Configure blizz_sorc to run Pindle with telekinesis
  2. blizz_sorc starting offset is wrong causing the sorc to teleport into the wall

Expected behavior Sorceress enters the A5_PORTAL without using telekinesis

Screenshots / Video Using telekinesis Without telekinesis

aliig commented 2 years ago

I can't recreate this issue on master. I'm not using blizzsorc here but I'm using lightsorc, but don't think it should make a difference.

My custom.ini:

; Supported runs: Trav, Pindle, Eld, Shenk, Nihlatak
[sorceress]
frozen_armor=a
energy_shield=
thunder_storm=s
telekinesis=w
static_field=e

[light_sorc]
; chain_lightning must be bound to left skill (hotkey optional as it shouldnt change)
chain_lightning=d
; lightning must be right skill, hotkey required
lightning=q

https://user-images.githubusercontent.com/9866239/175977795-833797a0-8928-40de-aa50-1a44d7a7249e.mp4

In pindle.py telekinesis is set to False so it shouldn't be using tk on the red portal. Think this was implemented to avoid this issue.

    def approach(self, start_loc: Location) -> bool | Location:
        # Go through Red Portal in A5
        Logger.info("Run Pindle")
        loc = self._town_manager.go_to_act(5, start_loc)
        if not loc:
            return False
        if not self._pather.traverse_nodes((loc, Location.A5_NIHLATHAK_PORTAL), self._char):
            return False
        wait(0.5, 0.6)
        found_loading_screen_func = lambda: loading.wait_for_loading_screen(2.0)
        if not self._char.select_by_template("A5_RED_PORTAL", found_loading_screen_func, telekinesis=False):
            return False
        return Location.A5_PINDLE_START

Let me know if there's something I'm missing.

Also, for future issues if you'd specify what version you're running or what branch you're using when you run into the issue with that'd be helpful. (It's in the start of the issues template.) Thanks!

Ezro commented 2 years ago

Good call. This was introduced in my PR due to missing the "or not telekinesis" line; I've reverted the logic back in the PR and will close this ticket