azerothcore / azerothcore-wotlk

Complete Open Source and Modular solution for MMO
http://www.azerothcore.org
GNU Affero General Public License v3.0
6.42k stars 2.57k forks source link

[Uldaman] Altar of Archaedas can be used after Archaedas is dead, locking players inside #7358

Closed syssneck closed 2 years ago

syssneck commented 3 years ago

What client do you play on?

enUS

Faction

Content Phase:

Current Behaviour

Original report: Chromie issue#1435

Pedestal in Uldaman can be used after kill boss, as a result of which the doors are closed forever and players cannot access the quest room! WoWScrnShot_081521_171251

Expected Blizzlike Behaviour

once one time can be used

Source

No response

Steps to reproduce the problem

use Pedestal kill boss use Pedestal

Extra Notes

No response

AC rev. hash/commit

https://github.com/chromiecraft/azerothcore-wotlk/commit/2d77fe9274005a99f8445b8dac9dd0fcd3faf3c5

Operating system

Ubuntu 20.04

Modules

Customizations

None

Server

ChromieCraft

Confirmed on local AC (da1fd68). After using the Altar of Archaedas after Archaedas' death, both doors close and players can't go back or go to the chest room. Make it so, that the Altar is unusable, after the boss spawned.

Velomania commented 3 years ago

You can also kill the boss Ironaya without opening the door, using your pet (if you got one).

syssneck commented 3 years ago

@Steelcold yes, but that is another issue, see here: https://github.com/azerothcore/azerothcore-wotlk/issues/7465 It has been fixed (not yet live on CC).

Si1ker commented 3 years ago

You can also kill the boss Ironaya without opening the door, using your pet (if you got one).

Yep, I already fixed it in #7902 I don't know why ChromieCraft is taking so long to get such an important fix to the server, that's kind a loot exploit right there.

patou01 commented 3 years ago

It seems this issue is due to the state being wrongly saved. I haven't figured out why yet.

 instance->SetData(DATA_ARCHAEDAS, IN_PROGRESS);
  instance->GetData(DATA_ARCHAEDAS);

doesn't seem to show the same result. ie if I set (line 227 or something like that in uldaman.cpp), it nevers makes it to the actual instance.

Edit: Seems that GetData() defaults to a return 0 and should have been implemented in Uldaman.cpp, instead we're calling a virtual function from ZoneScript. Looking into it to confirm.