noxworld-dev / opennox

OpenNox main repository.
GNU General Public License v3.0
440 stars 23 forks source link

Problem with Blink (for Player and Hecubah's Litches, possible Hecubah too) during final battle in Wiz's Campaign. #686

Closed FireStormCrow closed 4 months ago

FireStormCrow commented 4 months ago

https://www.youtube.com/watch?v=vKmVYQq_Y2I&t=4703s from 1:18:40. Blink with 1st caster level (only one book) can throw Player on any waypoints, including nonenabled yet ones. Something like this for Hecubah's Litches too, Litches can blink from first stage battle area to second stage.

"Непонятки с личами во время финального боя происходят из-за того что в опенноксе походу поломалось определение блинку уровня кастера. Блинк первого уровня в оригинале перекидывал кастера к ближайшему включенному вэйпоинту, блинк третьего уровня к рандомному включенному вэйпоинту на карте. После того как Гекуба поругается на Джека из-за силовой стенки и отступит, Джек "легально" сможет заиметь только первый уровень блинка и соответственно переместиться им может только сквозь стенку, ближайший вэйпоинт за ней, перед телепортом. А тебя кинуло сильно дальше, и ты пролетел мимо триггера (стоит на выходе из телепорта), который включает личей и Гекубу. Этот триггер еще должен отключать все вэйпоинты кроме тех, что на арене первой фазы боя с Гекубой, но личи блинковались не только на включенные, но и на те, которые были за пределами арены. Тут или блинк так поломался, что цепляет и выключенные вэйпоинты, или поломалась функция их включения/выключения."

angrykirc commented 4 months ago

probably something with https://github.com/noxworld-dev/opennox/blob/a41cc207fcf615dd604d723712c56e582fbe7e91/src/server/waypoint.go#L371 looking into it

angrykirc commented 4 months ago

It seems that the problem is not in the Blink spell itself, but in the code that is dealing with scripts, specifically waypoint groups. I tested it on con11a map in NoxReloaded. If you go into the "closed off" room with Blink spell, the "BlinkLimit" native script is triggered, that in turn disables a specific waypoint group, allowing the player to only blink between 3-4 waypoints. If you save the map after going to that room in NoxReloaded and load that save in OpenNox, everything works as expected. But if you load it in OpenNox, disabling waypoint groups will not work, even if explicitly called via "exec BlinkLimit" command.

angrykirc commented 4 months ago

https://github.com/noxworld-dev/opennox/blob/a41cc207fcf615dd604d723712c56e582fbe7e91/src/server/script_vm_ns_waypoint.go#L83 Changing this line to return true fixes the issue

dennwc commented 4 months ago

Yeah, that's obviously wrong. Thank you for tracking that down!