Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamic Difficulty Map #2374

Open
gyullo opened this issue Jul 23, 2011 · 43 comments
Open

Dynamic Difficulty Map #2374

gyullo opened this issue Jul 23, 2011 · 43 comments

Comments

@gyullo
Copy link
Contributor

gyullo commented Jul 23, 2011

I test this function and its not working, first i enter normal and try to change to heroic (i met the requeriments) but didnt change, so i go out, and reset the raid, then i enter again in normal mode, kill marrowgar, go out change to heroic (same size) and enter aain and marrowgar was there.

10 and 10H should be only one raid, the same happen to 25 and 25H. So when you kill one boss in Normal you cant do it in heroic after that. Even trash too, when one is dead in 10N then is dead 10H. ICC is just 2 raids, 10 and 25; the difficulty just chenge the bosses or mini bosses, and the loot.

The reset of both mode (n and h) should be at the same time (this is working good)

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@Jildor
Copy link
Contributor

Jildor commented Jul 23, 2011

Confirm

@Betaman2k
Copy link

u must clear first 10 normal, then u can used 10 H modus, the same 25 first normal cleared then 25 H ( kill all bosses cleared the instance )

@Ric101
Copy link
Contributor

Ric101 commented Jul 23, 2011

Confirmed, totaly
IDs should be shared, between Normal and Heroic for Raids, you can do EITHER Normal or Heroic

Furthermore, you should even be able to change the mode inside the instance for Raids such as ICC

@Liudvikask1
Copy link

Can you please show the source of this info ?

@Ric101
Copy link
Contributor

Ric101 commented Jul 24, 2011

http://wow-ladies.livejournal.com/14259851.html

But theres even information about this on old "Blue" posts

@gyullo
Copy link
Contributor Author

gyullo commented Aug 1, 2011

Quote:
DifficultyEdit Difficulty sectionEdit

Icecrown Citadel will be home of the updated instance difficulty setting which can be changed on a boss per boss basis. It will be able to be switched at any time during a raid without leaving and reentering the instance.

Some restrictions on when you cannot change it will be in place. Such as, you cannot change the difficulty in combat or during certain scripted events. To enable it you will have first have to have defeated the Lich King on normal mode, and heroic mode will not affect trash in any way and will only change the bosses.[1]

Source:
http://www.wowwiki.com/Icecrown_Citadel_%28instance%29

Or just read the 3.3 patch note

@xpzz
Copy link

xpzz commented Aug 5, 2011

the question is... all raids that have normal and heroic mode.. share this cooldown, but icc not...

@FlyerDragon
Copy link

Any news? Really important now that we have the Lich King!

@Ryukickass
Copy link

Also aren't players suppose to be able to get in 10/25 cif the leader has the achievement because that doesn't work either. It would be nice to get it working since players that get killed by val'kyr don't get the achievement and can't go hc.

ghost pushed a commit to rebirth-core/Rebirth---WoW that referenced this issue Feb 14, 2012
@devilcoredev
Copy link
Contributor

Confirm, does someone have a fix for this bug?

@ultimatexemnas
Copy link

any news?

@Star-lion
Copy link
Contributor

this isnt actually a bug its a nyi feature

@timothy003
Copy link

@Kandera Heroic difficulties using separate instances is a bug, though.

@Star-lion
Copy link
Contributor

no in icc having heroic/normal in the same instance is a feature that we dont have implemented yet

@timothy003
Copy link

Okay.

@ChristophWeigert
Copy link

Wasn't the shared ID a feature of Cataclysm and not WOTLK?

http://us.battle.net/wow/en/game/patch-notes/4-0-1

"Icecrown Citadel and Ruby Sanctum now use the new Flexible Raid Lock system"

@Aokromes
Copy link
Member

It was also 3.3.5a feature from normal to heroic mode.

@ChristophWeigert
Copy link

Ok thx @Aokromes.

I did some research on wowhead (http://old.wowhead.com/zone=4812/icecrown-citadel)

Just one question (Because I never played on retail), if you choose to kill Professor Putricide on normal mode can you do lich king on heroic mode?

@Shauren
Copy link
Member

Shauren commented Sep 17, 2012

@Giswald no - you must kill them all on heroic to access heroic LK

@dr-j
Copy link
Contributor

dr-j commented Jul 8, 2014

why is this priority low when this is a major bug on tc servers (not the bit about being able to change difficulty setting while in ICC, even though would be nice for this to be fixed), the major issue is that player is only meant to have one id to do icc10 in either n/h, one id to do icc25 in either n/h, one id to do rs10 in either n/h and one id to do rs25 in either n/h

At the moment due to player been able to kill all bosses in both normal and heroic modes (ie ids are not shared,

  • Players get double the number of eof they are meant to get from killing bosses in these instances if they do 10n/10h/25n/25 h
  • Double chance for quest items for sacred and the corrupt each week making sm easier to get
  • More primodial saronite from bosses than should be also making the above quest easier
  • More chances of obtaining shadowfrost shards per week making sm easier to get than should be
  • Twice as many chances to obtain tier tokens from bosses in ICC

@Shauren
Copy link
Member

Shauren commented Jul 8, 2014

@dr-j theoretically this is not a bug but an unimplemented feature - both being able to change difficulty inside and sharing the lockout between n/h is linked to the same flag in Map.dbc

Also, don't just come here and say "oh but this is major for me/users" - in reality it is very minor compared to other stuff (only 2 maps out of ~300? use this)

@dr-j
Copy link
Contributor

dr-j commented Jul 8, 2014

as I said would be nice to be fixed, main reason I commented here was about why tagged as low priority.

@Aokromes
Copy link
Member

Test #12690

@Killyana Killyana changed the title [ICC] Change Between normal and Heroic [ICC] Dynamic Difficulty Map Apr 29, 2015
@Rushor
Copy link
Contributor

Rushor commented Jun 7, 2015

actually this patch works nice for the saved ids

example:

  1. go to 25nh
  2. kill marrowgar
  3. leave instance, change map to 25hc
  4. join instance
    = > result: you will be in 25 nh again

BUT:
IF you change it from HC to NH it's not working and you get a second ID

example:

  1. go to 25 hc
  2. kill marrowgar
  3. leave instance, change map to 25 nh
  4. join instance
    => result: you will create a second id for 25 nh and marrowgar is spawned.

@Rushor
Copy link
Contributor

Rushor commented Jun 7, 2015

kay adding this in addition:

if (mapEntry->IsDynamicDifficultyMap() && player->GetBoundInstance(631, RAID_DIFFICULTY_25MAN_HEROIC) && mapEntry->MapID == 631)
            BindDifficulty = player->GetDifficulty(IsRaid()) == RAID_DIFFICULTY_25MAN_NORMAL ? player->GetDifficulty(IsRaid()) + 2 : player->GetDifficulty(IsRaid());

        if (mapEntry->IsDynamicDifficultyMap() && player->GetBoundInstance(631, RAID_DIFFICULTY_10MAN_HEROIC) && mapEntry->MapID == 631)
            BindDifficulty = player->GetDifficulty(IsRaid()) == RAID_DIFFICULTY_10MAN_NORMAL ? player->GetDifficulty(IsRaid()) + 2 : player->GetDifficulty(IsRaid());

solves the problem for icc

but we still have the issue that we should be able to change between nh and hc during the running id

@mynew4
Copy link

mynew4 commented Apr 18, 2016

SunWellCore FIX it. mapId == 631 or mapId == 724 This can refer to this
https://github.com/callmephil/SunWellCore/search?l=cpp&q=631&utf8=%E2%9C%93

@Shauren
Copy link
Member

Shauren commented Apr 18, 2016

@mynew4 garbage hack, doing it per-mapid is NOT a solution

@Aokromes
Copy link
Member

Anyone can takeover and finish #12690 ?

@Aokromes Aokromes changed the title [ICC] Dynamic Difficulty Map Dynamic Difficulty Map Jun 18, 2016
@Ovahlord
Copy link
Contributor

Ovahlord commented Apr 19, 2018

Need some spiritual input from the mighty TC gods:
Dynamic difficulty seems to be acting like this:

  • Normal and Heroic difficulties share a lock. Killing a boss on normal difficulty kills the boss on heroic as well. By getting a lock for 10man for example you cannot enter 25 player versions of that raid anymore.
    Trying to enter a 25 man raid with a 10 man lock will result in teleporting you to a 10 man version of your current lock.

  • On retail using the switching tool inside the raid it appears that the player gets a lock for his current difficulty but not for heroic YET. Once you switch to the other difficulty you get the lock acceptance popup so you get bound to your other difficulty as well. This means that the blizzard servers use two locks at the same time to track your progression. This is probably also used to determine if players are enligible for the final heroic raid encounter such as the Lich King in ICC heroic or Sinestra in Bastion of Twilight.

So in the end the instance save system only needs to be extended to track and update two locks at the same time and force players into the same instance map once a lock has been created

@Faq
Copy link
Contributor

Faq commented Apr 30, 2020

@xvwyh any information from your side about this? Thnx

@xvwyh
Copy link
Contributor

xvwyh commented Apr 30, 2020

Nope. Don't know how it worked on retail servers, didn't have it implemented on my server either. Mostly because we didn't want to risk lowering the population by essentially halving the number of ICCs people could grind each week. But even if that wasn't a factor, I wouldn't even know where to start.

The only vague anecdote I've heard about dynamic difficulty switching on retail was that everything in the instance remains the same, to the point that even creatures keep their original GUIDs - if you had someone targeted before switching difficulties, you would still have them targeted after switching too. That would mean that Blizzard wasn't recreating instances from scratch but rather updating instances to new entries and stats etc. While some of it can be done on TC, a lot else is unsupported, goes against the core TC principles, or is simply difficult to grasp or find a solution for. Due to scripts being hardcoded it makes it difficult to assess what changes need to be made when switching difficulties. Spawns might be different between difficulties, what do you do with scripts if a trash pack that triggers a script magically gets more members added to it after switching to Heroic even if the previous members were already killed? What if some spawns are completely different between Normal and Heroic and Heroic-mode spawns don't have a creature_respawn record and thus will come to life even tho players have already killed them? What do you do with pools that contain such spawns that differ between modes? What if you change difficulties in the middle of an out-of-combat script with a creature that's only spawned in one difficulty? It wasn't worth the hassle and the risk of breaking stuff that worked just fine previously and nobody complained about.

@Faq
Copy link
Contributor

Faq commented Apr 30, 2020

Yeah, some feature implementation is not worth the effort.

@Ovahlord
Copy link
Contributor

Ovahlord commented May 1, 2020

Uhm, fyi, Shauren already is working on a instance lock rewrite for master branch which I will eventually port back to 4.x which THEN will be easy to backport to 335.

@qwe900
Copy link

qwe900 commented Nov 15, 2021

in 3.3.5 there is no dynamic Raiding in Icecrown, this was added in 4.0.1 TC prepatch !

@Aokromes
Copy link
Member

in 3.3.5 there is no dynamic Raiding in Icecrown, this was added in 4.0.1 TC prepatch !

you are complete mistaked.

@qwe900
Copy link

qwe900 commented Nov 15, 2021

in 3.3.5 there is no dynamic Raiding in Icecrown, this was added in 4.0.1 TC prepatch !

you are complete mistaked.

Nope, 3.3.5 has just shared instance ids in ruby and icecrown. So u have to choose between heroic or nonheroic for both modes(10 or 25man) . The dynamic raid feature for bosses starts in 4.0.1 TC Prepatch

@Aokromes
Copy link
Member

in 3.3.5 there is no dynamic Raiding in Icecrown, this was added in 4.0.1 TC prepatch !

you are complete mistaked.

Nope, 3.3.5 has just shared instance ids in ruby and icecrown. So u have to choose between heroic or nonheroic for both modes(10 or 25man) . The dynamic raid feature for bosses starts in 4.0.1 TC Prepatch

#2374 (comment)

@killerwife
Copy link
Contributor

I have recently implemented this system in cMaNGOS. Here are the commits for anyone willing to copy.

cmangos/mangos-wotlk@ccd719e
cmangos/mangos-wotlk@06d65d0
cmangos/mangos-wotlk@897047f
cmangos/mangos-wotlk@1872b37

@xvwyh
Copy link
Contributor

xvwyh commented Dec 15, 2021

Just iterating through all the creatures in the map and UpdateEntry`ing them all is the most basic implementation of it, but it misses a lot of edge cases. Here's something I can think of from the top of my head:

  • If spawns differ between normal and heroic - it won't be handled.
  • If creatures have some aura applied on them outside of combat, which has different versions between normal and heroic - it won't be handled.
  • If scripts store which difficulty the instance has into a variable upon spawning ("optimization" /s) - it won't be updated. Hopefully nobody did this.
  • What about scripted scenes that are happening outside of combat? Like post-Saurfang scene, Svala's corridor sequence, pre-Sindragosa's gauntlet. Have they been confirmed to not break if UpdateEntry happens right in the middle of them?

I'm not saying that all of these cases exist in ICC and RS. Just wondering if any thought was put into these concerns during implementation.

@Shauren
Copy link
Member

Shauren commented Dec 15, 2021

If scripts store which difficulty the instance has into a variable upon spawning ("optimization" /s) - it won't be updated. Hopefully nobody did this.

You mean the part thats baked into base ScriptedAI?

What about scripted scenes that are happening outside of combat? Like post-Saurfang scene, Svala's corridor sequence, pre-Sindragosa's gauntlet. Have they been confirmed to not break if UpdateEntry happens right in the middle of them?

These must be scripted to block changing difficulty in progress (there is a special value to be sent in packet (RESULT_WORLDSTATE)

@killerwife
Copy link
Contributor

cMaNGOS mostly misses ICC events. I did not add implementation for RESULT_WORLDSTATE as there is nothing to add at this time. (I only added generic map worldstate handling recently)

Spawns in ICC are not meant to differ, only bosses change, trash is the same, as such updating entries should be enough. That being said, adding a script hook is not out of this world. Or also its an option to forcibly respawn them and rebuild the objects fully as with dynguid everything is remade.

This is a wotlk and wotlk only implementation. I did not ascertain the system globally for cata+ as that is out of my knowledge and out of my scope.

@xvwyh
Copy link
Contributor

xvwyh commented Dec 15, 2021

You mean the part thats baked into base ScriptedAI?

That's fortunate, then. Scripts won't have to be modified individually.

@killerwife
Copy link
Contributor

All of those issues sound like an hour on top of any time investment so should be fairly trivial to solve.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests