Jump to content

[DEV] Dungeon Finder


Recommended Posts

  • Replies 288
  • Created
  • Last Reply

Top Posters In This Topic

how could it, as the entire design depending on achievements is just a hack, because no better idea was at hand?

You are not right, DF require large part of implementation before invovle any synchronisation with achievement class.

For now iam implementing the core of the mod.

In the last stage only i will take a look at :

- How see how many boss killed in the instence,

- If Instence is finished or not.

- If any achievement are related to LFG.

So tell "the entire design depending on achievements" is not correct.

sorry for my question, but is it any chance this patch will get to "under review" patches zone for getting into master?

Absolutly not at this point :)

Link to comment
Share on other sites

There's one restriction thing with the teleport: You can't use it in combat.

Also are you going to implement the event queues? Some events that happen every year (or the pre-cataclysm one) have special entries. For example, a lvl 80 can see in Halloween

- Specific Dungeons

- Headless Horseman

- Random Lich King Dungeon

- Random Lich King Heroic Dungeon

Or in the precataclysm events

- Specific Dungeons

- Kal'ju Gahz'rilla

- Prince Sarsarun

- Random Lich King Dungeon

- Random Lich King Heroic Dungeon

Kal'ju Gahz'rilla and Prince Sarsarun are removed after some time the elemental invasion happened.

Perhaps it's a good idea to add some field in the database with the event related to it and only show it when the event is active.

Also in all events with "special boss" you can go to some NPC and the NPC have some gossip option, if you click it, the Dungeon Finder opens in the special boss option.

And I don't know if it's a bug in official servers or some feature, but if you do a lot of randoms in one day you can end doing the same dungeon again in the same day so you end with two saves of the same dungeon.

If you have some question you can ask or perhaps look here: http://www.wowpedia.org/Dungeon_Finder (Note: Rewards are updated to 4.0.x)

Link to comment
Share on other sites

For now i am implementing DF with 2 priority :

- Stability.

- Minimal mod to the core.

For these kind of event i have see in DBC something like "World event" entry but i don't know how it realy work and if the core is ready for that. I will keep your remark on my mind and make you answear when i have more information.

Link to comment
Share on other sites

Hi, i have some question about Official DF for my implementation.

1) Do the official one create only classic group composition like 1Tank, 1 Heal, 3 dps? For ex, 2tank, 1 heal, 2 dps or 1 tank 2 heal and 2 dps, can sometimes be a viable group?

2) When the group is created and all member teleported, if someone quit the group for error and reinvited just after, do he still gain the reward for LFG group in the end of the dungeon?

3) The teleport out/in option is aviable anytime without cooldown?

4) Actualy i choosed to keep the player in the queue if it will be logoff for a short laps of time. (<5 min) How it work on official?

5) Suppose already existed group, if leader do LFG inscription all member recieve Role proposal. If someone refuse is the inscription canceled or other member will enter in the queue without the member who refuse is role?

Thanks for advance :)

1) Only classic group: 1Tank, 1 Heal, 3 dps

2) This interesting... If you logaut or disconnect - you don't leave party so you can gain the reward. If you leave party - you should use LFG again

3) I don't remember any cooldown for this...

4) If you not found group yet and disconnect - you should use LFG again. If disconnect when you in dungeon - nothing/ Just login again and you will be in instance.

5) If I understand you correct: if somebody leave group when you already in instance LFG work again while not found somebody who can role and if found new member join to you group at the point were you stop (not need start dungeon again). So in instance can be 2-3-4 members of party if somebody leave group.

Sorry for English - this sentences is to difficult for me...

Link to comment
Share on other sites

Hi, i have some question about Official DF for my implementation.

1) Do the official one create only classic group composition like 1Tank, 1 Heal, 3 dps? For ex, 2tank, 1 heal, 2 dps or 1 tank 2 heal and 2 dps, can sometimes be a viable group?

2) When the group is created and all member teleported, if someone quit the group for error and reinvited just after, do he still gain the reward for LFG group in the end of the dungeon?

3) The teleport out/in option is aviable anytime without cooldown?

4) Actualy i choosed to keep the player in the queue if it will be logoff for a short laps of time. (<5 min) How it work on official?

5) Suppose already existed group, if leader do LFG inscription all member recieve Role proposal. If someone refuse is the inscription canceled or other member will enter in the queue without the member who refuse is role?

6) about teleportation, if member quit an LFG group and new one is added for replacement. After the teleportation this new member will be at the entrence of instence or near the group? Same question with member of the party do get out/ get in teleportation.

7) Specialy about group composition and teleport cooldown. Iam surprised about the possiblity to get out / get in from dungeon without restriction.

Thanks for advance :)

1) Tank, Healer, Dps x 3 is the unique combination

2) No, he doesn't get any reward nor have rol assigned as it haven't been added to group by LFG System

3) No cooldown

4) If it's client logout then its removed from queue. If it's disconnect by some error i don't know what happens.

5) If someone refuses to select a role, the rolecheck is aborted.

Note: If leaves the party before selecting a role then it's just removed from rolecheck. Also, if someone joins the party while group is queued, the player is prompted to select a role (None of this features in the "Note" is coded in my implementation)

6) Teleported to group (farthest member from final boss). If you use the eye you get teleported to entrance.

7) Offy have a cooldown if you leave LFG group. I didn't added to my implementation because i had some errors.

Link to comment
Share on other sites

I just found something interesting. When first ready check fails because some players are afk or leaves, second one is sent as "silent" - Enter Dungeon/Leave queue does not pop up, you have to click on eye-icon at minimap.

So i tried few things and found this: In SMSG_LFG_PROPOSAL_UPDATE, group id is sent. Client expect something special or on offi the group is destroyed after failed ready check, but you have to generate new group id. I wish I'd have some sniffs about this :/

Link to comment
Share on other sites

Also are you going to implement the event queues? Some events that happen every year (or the pre-cataclysm one) have special entries. For example, a lvl 80 can see in Halloween

- Specific Dungeons

- Headless Horseman

- Random Lich King Dungeon

- Random Lich King Heroic Dungeon

Or in the precataclysm events

- Specific Dungeons

- Kal'ju Gahz'rilla

- Prince Sarsarun

- Random Lich King Dungeon

- Random Lich King Heroic Dungeon

So i can make the choice of the world event. But has it linked with some event i must know where to check if event it stated or not.

New question :

- When player is teleported when group is formed, if he use get/out he will be teleported at this original location. But what happen if he use normal entrence of instence to get out?

Sorry for all of my questions :)

I hope i have something to show you in the middle or end of next week :P

I think iam near than 40% of implementation but the basis are working.

- Handle queue Join/Leave

- Handle all dungeon operations and selection.

- Handle all proposal feature.

- New group is formed and teleported.

I work on

- Detect group change and action must be done.

Still need to do :

- Handle party whant to join queue.

- Do all check before accepting player in the queue.

- Do all check to remove player under some condition.

- Detect end of dungeon.

- Detect Dungeon Boss lives.

- Work on reward.

- Implement kick vote.

and probably some other stuff that iam sure you will tell me ;)

Greetings

Link to comment
Share on other sites

New question :

- When player is teleported when group is formed, if he use get/out he will be teleported at this original location. But what happen if he use normal entrence of instence to get out?

He will be teleported to the original location, not the dungeon entrance.

Yep it should work similar to battleground join ports.

Link to comment
Share on other sites

There's one restriction thing with the teleport: You can't use it in combat.

Also are you going to implement the event queues? Some events that happen every year (or the pre-cataclysm one) have special entries. For example, a lvl 80 can see in Halloween

- Specific Dungeons

- Headless Horseman

- Random Lich King Dungeon

- Random Lich King Heroic Dungeon

Or in the precataclysm events

- Specific Dungeons

- Kal'ju Gahz'rilla

- Prince Sarsarun

- Random Lich King Dungeon

- Random Lich King Heroic Dungeon

well, reding DBC is the easy way to find "what belongs to which category" in here

from LFGDungeonGroup.dbc:

5,"Wrath of the Lich King Heroic"
4,"Wrath of the Lich King Normal"
3,"Burning Crusade Heroic"
2,"Burning Crusade Normal"
1,"Classic Dungeons"
9,"Wrath of the Lich King Raid (25)"
8,"Wrath of the Lich King Raid (10)"
7,"Burning Crusade Raid"
6,"Classic Raid"
11,"World Events"

from LFGDungeons.dbc column 32 links them to one of the above groups, column 33 links a brief desc if event is linked to "World Events"

Link to comment
Share on other sites

Hi thanks for some info but i know these DBC entry.

First i was thinking the Queue manager will be the more complex part. But i realize when group is formed there is so much thing to do... So my approach was wrong.

I finaly decided to keep some part of my queue code but restart analyse for next part.

This force me to postpose any push of code for now.

The next part require some hard modification of the core (group class) i must take attention to the code to keep mangos way coding and avoid as much as possible some hack.

Anyway iam still working on it.

Link to comment
Share on other sites

I had the idea to use the SD2 part where we write an instance-string to be used for DF (finished encounters)

This has the _big_ disadvantage that we would have to change most sd2 instance scripts (though not complicated) - but the advantage that it would be easy to check ;)

But I doubt that NoFantasy as chief sd2 dev will be happy with this idea.

The best way to implement this would be to add an event-based system (killing a boss throws an event) which would solve other problems as well, but unfortunately it seems impossible to find "real" event-ids for most bosses (infact our way sd2 uses SetData calls is similar in concept- but only used within sd2)

Link to comment
Share on other sites

Honestly iam not at this stage.

But if you start this subject, i see there is some possiblility to save on the instence info number of boss killed. Total boss per instence is probably aviable in DBC.

Therefore i need event (when in lfg group) when boss killed with some additionnal information like, groupid, npc entry...

This is probably possible without big big hacking?

Link to comment
Share on other sites

I had the idea to use the SD2 part where we write an instance-string to be used for DF (finished encounters)

This has the _big_ disadvantage that we would have to change most sd2 instance scripts (though not complicated) - but the advantage that it would be easy to check ;)

But I doubt that NoFantasy as chief sd2 dev will be happy with this idea.

The best way to implement this would be to add an event-based system (killing a boss throws an event) which would solve other problems as well, but unfortunately it seems impossible to find "real" event-ids for most bosses (infact our way sd2 uses SetData calls is similar in concept- but only used within sd2)

A new table with end boss id and some method for extra-special encounters where no end boss nor kill credit is used seems best to me right now. You need to store entry coordinates somewhere, too, because "sObjectMgr.GetMapEntranceTrigger(dungeon->map);" cant do anything good for scarlet monastery, since there are three dungeons on one map, or for event bosses.

I can imagine it like when you kill any creature in dungeon, some method in (Lfg)Group class would be called, which would check if creature binds you tu instance (->change group status) and for creature id from that table. You could also search here for entry from DungeonsEncounter.dbc by creature name, which could give like 70% results...

Yes, implemetation of DungeonEncounter.dbc-like way would be great, but again, I cant imagine anything other than new field in creature(_template)_addon table with ID from this dbc and some method for special encounter, which can be called from SD2.

Link to comment
Share on other sites

no, my idea should be basicly working as follows:

DungeonEncounter lists every "important" encounter of any instance.

every encounter (independend from difficulty) has a unique key (map, encounter-position)

In SD2 we store (some) encounters in an array, which is saved to a string like

"v_1 v_2 .. v_n" where each value of v_i represents the state of the encounter (usally 3=finished)

so, if we would change sd2 to represent (and in order) every encounter of DungeonEncounter.dbc then this instance string would be a valid representation of finished encounter.

The key (mapId, difficulty, position) identifies any encounter - I don't know if there is anymore information needed then.

But well, that is just an idea

Link to comment
Share on other sites

Perhaps no one said that, but you can get the Dungeon Finder price if you kill only the last boss. This happens if you queue and join some group that lost a member in front of the last boss.

Also in official server there's some dungeons that you don't need to kill all boss. Like Ahn'kahet: The Old Kingdom. There the people just kill Elder Nadox, Prince Taldaram and jump to Herald Volazj and the system still rewards with the price.

So i'm really sure the official way is it count if you kill one monster (or that monster gets killed). About special situations like the Halls of Reflection dungeon were you run from Lich King. There's some NPC with ID 38211 (Wrath of the Lich King Credit). That NPC is objective of the quest: Wrath of the Lich King (24500/24802) and the quest itself says "Escape the Lich King", so there's some script that triggers or kill that NPC. Perhaps the dungeon finder in that dungeon looks if you "killed" that NPC.

Link to comment
Share on other sites

And about achievement, how it work actualy? Actualy achievement not work when we kill some specific boss?

If i read wowwiki about this

Achievements
Normal mode

   *  The Oculus 

Heroic mode

   *  Heroic: The Oculus
   *  Experienced Drake Rider
   *  Make It Count
   *  Amber Void
   *  Emerald Void
   *  Ruby Void 

So basicaly we are in the "Work in progress... zone" that's why iam not sure i will implement reward until there is more avancement about this.

Link to comment
Share on other sites

And about achievement, how it work actualy? Actualy achievement not work when we kill some specific boss?

If i read wowwiki about this

Achievements
Normal mode

   *  The Oculus 

Heroic mode

   *  Heroic: The Oculus
   *  Experienced Drake Rider
   *  Make It Count
   *  Amber Void
   *  Emerald Void
   *  Ruby Void 

So basicaly we are in the "Work in progress... zone" that's why iam not sure i will implement reward until there is more avancement about this.

I don't know what triggers the Achievements but I'm going to explain some things about Achievements...

Let's take the example of the "Heroic: Ahn'kahet: The Old Kingdom" achievement (id 492) it have the next criteria:

* Prince Taldaram slain

* Jedoga Shadowseeker slain

* Amanitar slain

* Elder Nadox slain

* Herald Volazj slain

Usually in official server people just kill Elder, Prince, and Herald so the Achievement show up in this way:

* Prince Taldaram slain

* Jedoga Shadowseeker slain

* Amanitar slain

* Elder Nadox slain

* Herald Volazj slain

You do runs and runs there with the dungeon finder, but no one wants to kill those remaining two. Of course you get the Dungeon Finder reward each time you kill Herald Volazj but NOT the Achievement.

One day the Dungeon Finder puts you in a party with people that wants to kill all bosses, and when you kill Amanitar and Jedoga the Achievement pop-ups as complete but NOT the end dungeon reward... because as always, the reward comes with the kill of Herald Volazj

Also if you kill the monster in heroic mode, for some reason it counts both in heroic and normal mode (or it happened when they implemented 3.3.0 patch (don't know if it was a bug or not))

About the Achievements you said they're controlled by some events that probably need to be scripted with SD2 or something.

* Experienced Drake Rider -> The last boss script needs to check what mount you used when you killed him

* Make It Count -> Some check that check if the timer is below 20 minutes, probably script again

* Amber Void -> Again the last boss script needs to check if someone was using Amber drake, if not, give out achievement to all party

* Emerald Void -> Same with Emerald

* Ruby Void -> Same with Ruby

And the "The Oculus " and "Heroic: The Oculus" I don't see any difference with other dungeon achievements. You kill with your hands the monsters (like other dungeons) and the last one is just using the drakes (vehicle system) but the monster is killed as well.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use