Forum > Miscellaneous
[QUESTION:Wrath] New Dungeon Difficulty
<< < (3/5) > >>
Grymskvll:
Holy shit, all the above DOES work, I just made the mistake of thinking that the server would spawn the Epic versions of creatures if there are Epic entries in world.creature_template, which is NOT the case! But the world.creature_template IS needed for automatically spawning the right version. What I did was enter an Epic instance, used ".npc add [NORMAL world.creature_template entry]", and the server automatically grabs the Epic version (referenced in "difficulty_entry_3" of the normal version of the creature_template).
What's the sane way to copy over all monster spawns from a normal dungeon? From what I understand, they're stored in world.creature
Grymskvll:
--- Quote from: "Grymskvll" ---What's the sane way to copy over all monster spawns from a normal dungeon? From what I understand, they're stored in world.creature --- End quote ---
In world.creature, the spawnMask column determines which difficulties a creature will spawn on. So if you want to make every creature in a Map spawn for every difficulty, you can just set the spawnMask to 15 ("Spawned in all versions of maps").
To set this spawnMask for all creatures in a specific map, you can use this mysql statement (AT YOUR OWN RISK):
--- Code: ---UPDATE world.creature SET spawnMask=15 WHERE map=[map ID]; --- End code ---
Replace [map ID] with the map you want to change. You still need to add Epic difficulty entries for each creature_template in the dungeon. Otherwise it uses the heroic or normal version as fallback.
As far as I know, that leaves just two imperfections: -the dungeon portal becomes invisible when you set difficulty to to Epic. If anyone has an idea how the game picks its instance portal models, please let me know -the little dungeon difficulty indicator when you're inside a dungeon (in the top-right, next to the minimap) just displays "0". Odds are there's no blp for an Epic difficulty (like the skull flag for Heroic), so you probably need to do some interface modding, which wouldn't be an issue since you need to use an AIO script to make the difficulty selection menu work anyway. I'm a little dismayed that I couldn't even get the indicator to show "5", though, even with a modified client-side MapDifficulty.dbc -game objects don't seem to be spawning, gotta figure out how that stuff works (like the web door in Azjol-Nerub)
Nupper:
--- Quote from: "Grymskvll" --- --- Quote from: "Grymskvll" ---What's the sane way to copy over all monster spawns from a normal dungeon? From what I understand, they're stored in world.creature --- End quote ---
In world.creature, the spawnMask column determines which difficulties a creature will spawn on. So if you want to make every creature in a Map spawn for every difficulty, you can just set the spawnMask to 15 ("Spawned in all versions of maps").
To set this spawnMask for all creatures in a specific map, you can use this mysql statement (AT YOUR OWN RISK):
--- Code: ---UPDATE world.creature SET spawnMask=15 WHERE map=[map ID]; --- End code ---
Replace [map ID] with the map you want to change. You still need to add Epic difficulty entries for each creature_template in the dungeon. Otherwise it uses the heroic or normal version as fallback.
As far as I know, that leaves just two imperfections: -the dungeon portal becomes invisible when you set difficulty to to Epic. If anyone has an idea how the game picks its instance portal models, please let me know -the little dungeon difficulty indicator when you're inside a dungeon (in the top-right, next to the minimap) just displays "0". Odds are there's no blp for an Epic difficulty (like the skull flag for Heroic), so you probably need to do some interface modding, which wouldn't be an issue since you need to use an AIO script to make the difficulty selection menu work anyway. I'm a little dismayed that I couldn't even get the indicator to show "5", though, even with a modified client-side MapDifficulty.dbc -game objects don't seem to be spawning, gotta figure out how that stuff works (like the web door in Azjol-Nerub) --- End quote --- I am sure over time theses issues can be resolved :)
Grymskvll:
To fix gameobjects, you need to set the spawnMask just like we did with creatures:
--- Code: ---UPDATE world.gameobject SET spawnMask=15 WHERE map=[map ID];
--- End code ---
For some reason, the maxplayers and difficultystring values in MapDifficulty.dbc don't get checked for newly created rows, and I can't figure out why. I'm guessing there's something missing in Map.dbc or something. I made a hacky workaround by hooking GetInstanceInfo(). It'll work for 5 man Epic dungeons.
Also I kind of completely neglected Epic raids. Unfortunately, Epic raids would need some more in-depth modding, since in world.creature_template, difficulty_entry_# only goes up to 3, meaning you can have up to 4 difficulty versions including the base. All 4 of these versions are already used by raids for N10, N25, H10 and H25. It could be as simple as adding more columns to the table, I don't know. Other than that you'd need to add another Eluna method (SetRaidDifficulty), get some AIO communication akin to the one I wrote for SetDungeonDifficulty, and add some extra conditions in the hooked GetInstanceInfo() to check for raid and difficulty so that maxplayers and difficultystring returned by it are correct, maybe mess with some core constants, add the necessary client strings, mess with the minimap indicator (more on that below).
Also, for some reason MiniMapInstanceDifficulty_OnEvent can't be overwritten in an AIO script properly. The modified version will just exist side by side with the original, and events will call the original instead of our modified version. That's not a huge problem, since you can just supply a modified Minimap.lua (where the function resides) in a custom patch, which would be necessary if you want Epic difficulty to have a different minimap indicator blp anyway. Speaking of which, I made an Epic difficulty instance banner, it's included in the patch below, along with a modified Minimap.lua
Preview (new epic banner on the right):
Looking at the banner now, I probably should've reduced the emblem's alpha a tiny bit. Oh well! The attached file also contains the Photoshop document for that image, as well as an updated AIO script.
So right now the issues are: -invisible instance portal when you select Epic dungeon difficulty (no idea how this works) -no Epic raid support -hacky GetInstanceInfo() mod instead of properly loading maxplayers and the difficultystring from MapDifficulty.dbc
Mirror: https://a.fluntcaps.me/nywray.zip
Nupper:
--- Quote from: "Grymskvll" ---To fix gameobjects, you need to set the spawnMask just like we did with creatures:
--- Code: ---SELECT * FROM world.gameobject WHERE map=[map ID];
--- End code ---
For some reason, the maxplayers and difficultystring values in MapDifficulty.dbc don't get checked for newly created rows, and I can't figure out why. I'm guessing there's something missing in Map.dbc or something. I made a hacky workaround by hooking GetInstanceInfo(). It'll work for 5 man Epic dungeons.
Also I kind of completely neglected Epic raids. Unfortunately, Epic raids would need some more in-depth modding, since in world.creature_template, difficulty_entry_# only goes up to 3, meaning you can have up to 4 difficulty versions including the base. All 4 of these versions are already used by raids for N10, N25, H10 and H25. It could be as simple as adding more columns to the table, I don't know. Other than that you'd need to add another Eluna method (SetRaidDifficulty), get some AIO communication akin to the one I wrote for SetDungeonDifficulty, and add some extra conditions in the hooked GetInstanceInfo() to check for raid and difficulty so that maxplayers and difficultystring returned by it are correct, maybe mess with some core constants, add the necessary client strings, mess with the minimap indicator (more on that below).
Also, for some reason MiniMapInstanceDifficulty_OnEvent can't be overwritten in an AIO script properly. The modified version will just exist side by side with the original, and events will call the original instead of our modified version. That's not a huge problem, since you can just supply a modified Minimap.lua (where the function resides) in a custom patch, which would be necessary if you want Epic difficulty to have a different minimap indicator blp anyway. Speaking of which, I made an Epic difficulty instance banner, it's included in the patch below, along with a modified Minimap.lua
Preview (new epic banner on the right):
Looking at the banner now, I probably should've reduced the emblem's alpha a tiny bit. Oh well! The attached file also contains the Photoshop document for that image, as well as an updated AIO script.
So right now the issues are: -invisible instance portal when you select Epic dungeon difficulty (no idea how this works) -no Epic raid support -hacky GetInstanceInfo() mod instead of properly loading maxplayers and the difficultystring from MapDifficulty.dbc
Mirror: https://a.fluntcaps.me/nywray.zip --- End quote ---
Gameobject_Template
--- Code: ---GAMEOBJECT_TYPE_DUNGEONDIFFICULTY = 31
data0: mapID (From Map.dbc) data1: difficulty
0 5 man normal, 10 man normal 1 5 man heroic, 25 normal 2 5 Man Epic (Possibily), 10 man heroic 3 25 man heroic --- End code ---
Navigation
[0] Message Index
[#] Next page
[*] Previous page
|