[Feature Request] Questing Companions (aka Parties) / Shared Objectives Credit
Formula350 opened this issue ยท 7 comments
This is actually a bit of a 2-part request, but I'll start here...
As I mentioned in response to the one person's Issue regarding some config options you noticed, once upon a time it seemed liked Quests was going to allow for formation of groups or "Parties" as Blackvein was labeling it. I think this was being worked on for quite some time since even in early versions there were options that I had noticed in the Example quests that seemed to indicate party sizes, something we attempted to utilize in our first "boss" quest where they battle a strong NPC. Our goal was a sort of Raid-Boss, not intended to go at it solo. Unfortunately, either due to our own ignorance, or lack of finished code (again this is long before 2.0.0a), it didn't seem to work and when players would complain about getting their asses quite literally kicked, we would indicate that this was meant to have a group of 4 people...
Part 1 would be the full scope of the request, where players can band together to go on certain quests where going off on your own would not be advised unless you've really gotten the necessary gear and skills (both plugin skills and strategic). Features would include:
- Shared credit for objective completion. I feel this is a must-have. Currently the biggest issue we face with our Boss quests is that the credit for the kill is only given to the person who makes the killing strike on the NPC. This is understandable, however it causes new player frustration when a few of them are simultaneously hammering away on the NPC, it dies, and only one player completes it. In addition to that it can be quite annoying for players helping others complete the quest as HealthBar plugin doesn't really work well anymore, sometimes not at all with NPCs, so despite the helper's best efforts they often end up making the final kill which prevents the other player from completing the quest... requiring them to wait 3 mins for it to respawn and repeat the process all over. :\
- A party chat. This would be ideal, but perhaps not fully necessary, such in our case we use mcMMO and it offers it's own fully feature party chat (as well as things like friendly-fire prevention). However, not everyone would perhaps use additional plugins which could offer that benefit, so maybe a long-term goal would be mcMMO-like parties. I'm not sure if it'd be helpful, or possible, but I know that mcMMO has Share XP and Share Loot feature for parties, so perhaps a request to them allowing you to integrate that code into Quests? Or a short-term solution, until your own stand-alone method can be devised, of having mcMMO as a soft-depend in order to provide this?
Part 2 of the request would be, at the very least, adding into Quests the capability that on things like Citizens NPC kills that all players who have participated in it's kill are given credit for it. MAYBE even configurable per-quest to allow for inclusion of how much damage a player needs to inflict before qualifying for participation in the kill. That way people couldn't show up last-minute and finish the quest even though they've literally done nothing. Of course this would also apply to the above.
Again, at the end of the day, some means of tracking all who are engaging the quest's objective NPC I feel would provide players will a far more enjoyable experience, along with giving servers a new option in their creation of quests. :)
Thanks!
-Formula350
So, I couldn't think of a way to include specific players in a quest for sharing. For example, Player A wants to take a quest with Player B and C. How should he add B and C to the quest?
At first I thought Player A could type the names of player B & C, but it would be inconsistent with other quests to add another prompt after "Accept quest? Yes /No" or the GUI. Then I pondered having Player A click on B & C, but what's to stop A from involuntarily enlisting some other players from joining (after all, there wouldn't be anything special, per se, about B & C). Same thing with players in a certain radius of A, what if someone random walked by?
Finally, I started thinking, even if A could select B & C, how would Quests know that B & C consented to being a part of the quest? We'd need a new sub-command just for that, or something like it.
While this would be a very useful feature, it seems like too much hassle - for the player and the plugin - unless it can be done fluidly. Maybe if Quests implements some kind of friends list this could be revisited, but I'll put this on the back shelf for now. Thank you for the suggestion!
I too was thinking about this recently, and my thoughts were perhaps Quests not care if it's an intentional grouping to complete a quest.
For example, on my server lots of players fight one of the "NPC Bosses" (citizens) to complete a quest, a lot of times the people are either also there doing the quest but don't know the others, OR they are just helping out. As previously mentioned this can often result in people that are on the quest doing lots of work, but one of the people helping accidentally getting the final blow.
The idea: Simply track the amount of damage each player inflicts onto the quest target entity. Then when you create a quest that has a Citizen NPC as the kill objective, you can specify what % of damage a player needs to get in a period of time before that damage counter resets (also configurable per-quest). That way anyone who is battling that NPC will be given credit, regardless of who landed the killing blow.
This would also prevent a situation where newbie Player A who is on the quest enlists the help of veteran Player B to kill a boss, but Player A only sits in the corner while Player B does all the work. WIth a configurable percentage, if player A doesn't at least account for 15% of the NPC's received damage, they aren't credited for the kill objective (you'd just need to hook into Citizens API to find what the NPC's health is set to).
As of right now, there are two big things that are preventing Quests from being the perfect plugin for my server, and unfortunately this is one of them. I dunno, I'll look into the Events portion, maybe I can cobble together some sort of method for shared credit.
Last Minute Idea.... What about a simple method of just an objective where you need to get X-amount of hits on an NPC? It's not very accurate, and has tons of 'loop holes', but it'd at least provide a way that all participants CAN get credit. And then I can setup an Event that if you die it resets. Plausible...? <_>
Thanks for all your work either way!
-Form
One way I can think of this being done:
When someone takes a quest with a party allowable something fires and gives them access to a command like /quests party add username
When in reality all this command is doing is checking party size and then running quests force join
It would need to tag somehow who is leader and who is a joiner and somehow partner them together.
Its fairly complex, but its an idea on the function.
To expand on that... if you are able to make a simple party system to "link" players together (hell, hook into mcMMO's party system), then realistically only 2 things (ideally) would need to be done:
First.. Check to make sure the players are within the same vicinity to each other, ideally configurable depending on the quest type since some would be ideal to have a close proximity to defeat cheating, but for a start at least require they be in the same World.
Second... If any "party member" gets the objective kill then it simply checks which party members are there, which are in that "proximity", which are Online, and runs */questadmin nextstage * for all players who fall under "in range" and "Online".
-Form
I agree that shared credit would be a useful feature. Perhaps a quest could have a 'required-players' setting, which divides the credit based on that. However, I am not personally interested in adding a party chat. There are many other plugins which can do this.
As for tracking NPC encounters, I feel it is up to the quest designer to control this. Perhaps an NPC could give a passcode hint or coordinates to a door leading to the fight, so that outsiders can't steal the kill?
Understandable on the party chat, as we already have one thanks to mcMMO.
The sharing of objective credit, which an NPC kill was the basis of the request, isn't an issue of other players intentionally stealing the kill (99% of the time for us). What happens is players helping others do the quest (due to as I mentioned, those quest's original intention was a multi-person quest thus the NPC is strong), but due to there being no exact way for them to know how much health it has left, the people helping often end up making the killing blow. The helpers have long since completed the quest long ago and are only there out of kindness, but unfortunately it's that killing blow which Quests looks for in order to complete the quest.
I admit, we could quite easily make the bosses in question far weaker, preventing other players from even having to help out... however, we sort of try to teach our players that not everything in life is easy and you have to work for the good stuff (ss well as being nice to others). Basically, lowering the difficulty of the objective task would more or less be "hand-holding", which isn't something we encourage really :\ Outside of manually completing the quest for each player every time this happens (which is often due tot he rate of new players joining), which would increase the workload on my 3 Ops, myself included, Is there any other way to accomplish this?
I've never specifically looked into Events too closely, but is it possible to set one up that looks for the player dealing X amount of damage, or making X number of successful attacks on an NPC, which will trigger completion of the quest?
Thanks again,
-Form