Dugy / Legend_of_the_Invincibles

An add-on campaign for the Battle for Wesnoth game
GNU General Public License v3.0
40 stars 22 forks source link

Soul Eater Duplicating preserved liches #774

Open nerffrog opened 5 months ago

nerffrog commented 5 months ago

LotI1-Lilith Turn 20.gz Move Lethalia to 24,8 and kill the archer. Then move her into the archer's location (23,8) Make Efraim kill the 22,7 fighter, you will get a soul eater screen for L. Choose anything, a new Lethalia has appeared on 24,8. I suspect this has to do with the change that makes soul eater work at the end of a fight.

Dugy commented 5 months ago

Sorry for having forgotten about this. I think I have fixed this as part of #783, if it's still there, please respond.

white-haired-uncle commented 5 months ago

Ran into this again. Was able to test the fix and it worked, however it reintroduces:

20240506 09:58:28 info deprecation: wesnoth.get_unit has been deprecated indefinitely.;  (Note: You should use wesnoth.units.get instead in new code)
20240506 09:58:28 debug scripting/lua: 'Warning:
  wesnoth.get_unit has been deprecated indefinitely.;  (Note: You should use wesnoth.units.get instead in new code) 
stack traceback:
    lua/core/_initial.lua:59: in field 'get_unit'
    ~add-ons/Legend_of_the_Invincibles/lua/main.lua:310: in local 'cmd'
    lua/wml-utils.lua:145: in field 'handle_event_commands'
    lua/wml-flow.lua:19: in local 'cmd'
    lua/wml-utils.lua:145: in field 'handle_event_commands'
    lua/wml-flow.lua:5: in function <lua/wml-flow.lua:4>
    [C]: in ?'
20240506 09:58:28 error engine: failed to auto-store $second_unit at (6,12)
Dugy commented 5 months ago

I have fixed that. This error doesn't show on 1.18, so I sometimes forget that I shouldn't use the wesnoth.get_unit() function.

white-haired-uncle commented 5 months ago

I think this is what broke whirlwind. #762

<                   local after_events = wesnoth.get_unit(uth_cfg.id)
---
>                   local after_events = wesnoth.units.find_on_map({ id = uth_cfg.id })[0]

How about

local after_events = wesnoth.units.get(uth_cfg.id)

seems to work for me

white-haired-uncle commented 5 months ago

(untested, but perhaps you meant [1], not [0])?

Dugy commented 5 months ago

Yeah, I changed it to wesnoth.units.get() and it no longer keeps the enemy alive.