Giter Site home page Giter Site logo

groupie's People

Contributors

bombardier200 avatar gogo1951 avatar raegen avatar road-block avatar sabrevalkyrn avatar tannershmoog avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

groupie's Issues

The Auto-Response Messaging Tool

When you see a Friend or a Guildie post to Guild or LFG, we'll have the option to auto-respond with your current spec and gear stats when a group they post matches what you're after.

Should turn itself off if you are:

In a group.
In a battle ground or arena queue.

Changes to Recommended Level Range

image

Sorry... the wires were shit here.

Needs to have a default value, can't start empty.

Values should be:

Recommended Dungeon Level Range

Default Suggested Levels
+1 - I've Done This Before
+2 - I've Got Enchanted Heirlooms
+3 - I'm Playing a Healer

Note, the bonus here would only apply to the lower-end of the dungeon level requirements. So like if the range was 13-19, someone who set +3 would start seeing messages for the dungeon show up once they hit 10, but they would still cap out at 19.

Add Warcraft Logs Link to Right Click Character Menu

Ensure we Properly Filter out Guild Recruitment Messages

So... this "bug" happens when a guild spams saying, "We do 37 X, Y, Z Raids every week!"

If we can RegEx guild recruitment patterns and tuck those away in the "Other Groups" or just say any time there's more than 1 dungeon it gets stuck in the "Other Groups" bin... that'd be good. Hate seeing 1 message clutter up the list like this.

image

Groupie Team Member Message in Player Tooltips

Taking an idea from a past project.

image

Gogo1951/GogoWatch#11

I think we ended up doing this by UnitID, not name. It had a lag with just name as we had to do a few lookups per mouseover.

image

Message should say:

{rt3} Groupie : Team Member

Ideally it'd be great if we could customize the message per person. So like "Team Member" or "Special Thanks" sort of thing.

I'll dig up a list of characters when we're ready to do this. Need to include everyone who has helped, on all their alts. Takes a bit ot get it assembled.

Spec & Roles

image

Missing 2nd option for Frost DKs.

Values should default, not empty on load.

Frost DKs and Feral Druids have 2 options, just default them both to Melee DPS.

Change Label to:

Role for Spec 1 : Frost

Role for Spec 2 : Blood

Good to hide Spec 2 if they haven't purchased dual spec, or set any talent points yet. Classes seem to have a "default" spec, that's fine for Spec 1. Once a user sets ability points it'll re-adjust, just make sure you fire the check on load of the game AND load of the Options window.

Support for "Quests" Tab

{rt4} LFM [[70] Grulloc Has Two Skulls (10995)][[70] Maggoc's Treasure Chest (10996)][[70] Even Gronn Have Standards (10997)] - Need Heals and 1 DPS

We can look for Questie Links and classify those as "Quests" and make a tab for them.

Nice if this data stayed a little longer... often you'll be questing and you'll post and it'd nice nice if these slow-fill groups hung around a bit longer on the board. 10 minutes maybe.

Project Brief

Hey mate, there's a popular add-on called LFGBB, and I'm looking to extend it.

LFGBB summarizes text from an in-game looking for group channel, and creates an organized list of people looking for dungeon groups.

The LFGBB add-on is not being well maintained, but is permissively licensed. So we can likely use it as a starting point.

I'd like to extend LFGBB to include some auto-messaging capabilities. So when a group shows up from someone you know, and that you're interested in, you'd automatically shoot a message to the group's creator, "Hey I'm a Tank, and I'd like to do Dungeon XYZ."

Then, to close the loop, I want to have a little tool that gives them a summarized response dashboard (similar to what LFGBB does for the LFG channel, but just for private message you receive while building a group) that the group-maker can use to quickly review those who are interested and invite people to the group. On larger servers, the auto-responses would likely pile up fast, but even if they get 100 messages the dashboard will keep it clean. And... a nice touch, when a group is full I'd like the add-on to automatically send people, "Thanks anyway..." messages.

Please note that this project is for Classic WoW, specifically Classic Wrath. The APIs will work differently than retail, or even Classic TBC. If it works in Classic TBC it'll likely work in Classic Wrath; but a few features will be Wrath-only, specifically anything to do with Achievements.

So there are a few parts to this...

  1. #2

  2. #7

  3. #17

  4. Groupie In-Game UI; Preference for Ace Framework

  5. #15

  6. #14

  7. #13

  8. #12

  9. #11

  10. #19

  11. #10

  12. #3

  13. #9

There are two add-ons that I think are worth looking in to for inspiration, LFGBB, and Enchanter (which does automatic messages). Here are a few relevant links for context.

https://www.curseforge.com/wow/addons/lfg-group-finder-bulletin-board-tbc

https://www.curseforge.com/wow/addons/enchanter

Get Up to Speed

Some add-ons to review.

GogoLoot

https://github.com/Gogo1951/GogoLoot

Look at the UI components of Ace I want to use this for UI of Groupie.

LFG BB

The add-on we're replacing. Lots of stuff here can probably be used for inspiration. It's permissively licensed, we'll credit them where applicable.

https://www.curseforge.com/wow/addons/lfg-group-finder-bulletin-board-tbc

Enchanter

A tool that does auto-messages. Good to take a look at the code.

https://www.curseforge.com/wow/addons/enchanter

WoW API

https://wowwiki-archive.fandom.com/wiki/API_GetAchievementLink

https://wowwiki-archive.fandom.com/wiki/API_GetSavedInstanceInfo

https://wowwiki-archive.fandom.com/wiki/API_GetInventorySlotInfo

https://wowwiki-archive.fandom.com/wiki/API_GetItemInfo

Linking Achievements for 5-man Dungeons Group Responses

  • Need to create a list of prioritized achievements by dungeon.

Feedback welcome, but for 5-man, it'd just follow this pattern.

If someone was looking for a Violet Hold group, Groupie would link the best achievement that person had completed.

  1. BEST - All the Heroic Dungeons + Hard Modes - https://www.wowhead.com/wotlk/achievement=2136/glory-of-the-hero
  2. All the Heroic Dungeons - https://www.wowhead.com/wotlk/achievement=1289/northrend-dungeon-hero
  3. Heroic Dungeon - https://www.wowhead.com/wotlk/achievement=494/heroic-the-violet-hold
  4. All the Basic Dungeons - https://www.wowhead.com/wotlk/achievement=1288/northrend-dungeonmaster
  5. Basic Dungeon - https://www.wowhead.com/wotlk/achievement=483/the-violet-hold

After-Party Feature

As a WoW Classic Player, far too often we group with people we like but don't make an effort to connect with them.

image

Notes & Acceptance Criteria

  • Windows shows as soon as you leave a group that killed a dungeon boss or raid boss.

  • Shows on party or raid.

  • If you hit "Add to Friends" and have "Send Message..." enabled:

"{rt4} Groupie : I added you as a friend! Cheers!”

  • Needs to use class color for the names.

  • Also needs the option to "Enable After Party" in the Character-specific settings.

  • Any friend added should be added to the "Groupie Global Friends List" not the in-game Friend List. #20

  • Also need a "Delete" button on the Global Friends List, for "Groupie Friends" -- can't delete character friends or guildies since we import those on load.

Design File

Foundation for Global Friends List Feature

Groupie makes heavy use of "friends" and "guildies" for the auto-response tool to work.

The in-game friends list is limited to 100 names, and it's character-specific. The in-game ignore list is also limited to 100 names.

We need a global friend (and ideally global ignore list) so that all your friends and enemies are known to you no matter what character you are on.

Not trying to sync the friends' list... instead we'll read from it, and populate a Groupie friends' list that is shared between all toons on your account.

There are too many issues with the list only supporting 100 friends, and rather than deal with that we'll just have Groupie consume whatever friends are on a list at load, and then update the Groupie list whenever someone is added or removed.

Here are a few places to start. I just want to create a global friends list for an account.

Thoughts on MVP workflow.

  1. On Load Read and Store a Copy of the Character's Friends List
  2. On Load Read and Store a Copy of the Character's Ignore List
  3. On Load Read and Store a Copy of the Character's Guild List
  4. Check for Changes on all 3 Lists
  5. Merge All Friends Lists and Guild Lists to form Global Friends List
  6. Merge All Ignore Lists to form Global Ignore List
  7. Need a UI that Allows People to See And Edit Lists, but a Note Saying It'll Just Get Overwritten if They Don't Edit the Source... this part gets a bit messy, I'll mock something up.

In this situation, if you had 2 toons in a guild, and you left the guild on one of them, you would still see the Guildies on your Global Friends List.

Likewise, if you had 2 toons in a guild and you left the guild, you would still see the Guildies on your Global Friends List until you logged in with a toon that was in that guild so the tool could properly update.

So like... your Groupie Friends List might say... if you've got a lot of toons and a lot of guilds, it'll be quite long.

Groupie Global Friend's List

Name Class Level Groupie Auto Note Your Note Action
Aevala Priest 80 Friend : Fathom Gud Priest
Beth Priest 80 Guild : Guild XYZ, Friend: Fathom
Gogohunter Hunter 80 Friend : Fathom, Notaevala *Multiple Notes
Gogomage Mage 1 Friend : Notaevala
Gogopaladin Paladin 80 Groupie Global Friend Remove
Sally Warlock 80 Guild : Guild XYZ

Groupie Global Ignore List

Name Groupie Auto Note Your Note
Cunthunter Ignore : Fathom Shitfuck bad DPS hunter
Cuntmage Ignore : Notaevala Rude shit ass face
Cuntpaladin Ignore : Fathom, Not Aevala *Multiple Notes

Lastly, when you are in a group with someone, it should silently push an update... "Hey here are all my atls..." along with a note so you know why random toons were added to your friends or ignore lists.

Not MVP...

The ability to sync your toons with your friends automatically behind the scenes; so on my side in a Tooltip it'd say, "Fathom" on all your toons, and any time you posted a LFG message I could auto respond, "Hey bud, let's go!" It'll need to be something we can turn off, and I'll work up UI for it when we're ready.

And at some point I want Ignore notes to maybe show up in tooltips for your friends. So you group with someone, sync your ignore list, and presto that note now shows up in their tooltips: "Gogo : This fuck ninja'd from me in SWP." Future idea just brainstorming a bit.

Block users on the Global Ignore List... need a way to filter them from showing up in messages and in chat. Global Ignore list addon does this, we can look at their logic.

Hide Target Markers

image

I assume we can't show the symbols? So let's just hide these, we can just delete any target marker from the post. Aww, I love them but it looks bad to have them as text.

The Listening and Categorization Engine

This is the part that listens to /4 and guild channels and converts "LFM BRD..." to a Blackrock Depths Group in the list, and knows if you are the right level and if you're saved to that dungeon / raid already.

Hopefully we can re-use some of the LFGBB logic, but they wrote the tool before Heroic Dungeons were a thing, so they sort of bolt a lot of stuff together. No concept of "Group Types" like GDKP, or SR, or Ticket Run... no concept of 10/25-man Raids, or achievements, etc. So like we can look at their base logic, but it's going to take a good amount of tweaks to get the data clean enough for all the categorization we know about today.

Check out #12 & #13 before getting started.

I've started a document for instance data. Likely will need Instance IDs so we can match them to achievements.

I don't quite know where to put this... just a random note. I want the data that the add-on captures from /g or /lfg to remain in the add-on when you switch characters. The settings will be character-specific, but the groups captures will stay until they expire. So if you switch from one toon to another, you don't start with a blank slate... you start with the data that made you want to switch toons in the first place... but with your current toon's level range, and other filters applied.

And just to be clear, the goal should be to capture and classify every message from the channels (LFG / Guild) but only show messages that match the right filter settings. That way if a user changes toons, or changes their settings, we can still show groups that they have saved... by default we'll save groups for 2 minutes, but allow users to extend that up to 5 in the options.

Groupie | Global Options Tab

Groupie - Global Options@2x

Notes & Acceptance Criteria

As mentioned in #2

I don't quite know where to put this... just a random note. I want the data that the add-on captures from /g or /lfg to remain in the add-on when you switch characters. The settings will be character-specific, but the groups captures will stay until they expire. So if you switch from one toon to another, you don't start with a blank slate... you start with the data that made you want to switch toons in the first place... but with your current toon's level range, and other filters applied.

Design Files

Tasks

  • Build Global Options Tab
  • Build Group Data Storage & Expiration System
  • Allow Users to Change Text

Anti-Spammer Feature

Future Option...

When a Groupie detects someone has posted the same message too quickly to the same channel, everyone with Groupie who had the "anti-spammer" option turned on would respond to the spammer.

Message 1 - maid total will proclaim dependence freighter housing

Message 2 - effort way intensify liberty calculation economist pool

Message 3 - {rt3} Groupie : Getting spammed doesn't feel very good, does it? Knock it off! Don't post the same message to the same channel more than once every 30 seconds.

Randomly pick 4-8 words and send them as the first 2 messages, the send a Groupie message telling the person how to avoid getting spammed.

I just used this (https://randomwordgenerator.com/), but it wouldn't be hard to do something like this with a simple word list, wouldn't even have to be all that long.

Came from a conversation:

https://discord.com/channels/909277299260670032/909277299810107405/1012064184877457438

I kind of love the idea, but I think it's solved by the bulletin board more than this. But man... I hate it when people post the same message 3-4 times in a row. When everyone does this, that's when chat becomes totally unusable.

Fake Message Prevention Feature

To sanity check messages, we can add a time-stamp in seconds to every message someone sends, and then check it on the receiver side to ensure it was a message generated by Groupie. This will prevent fake messages where users spoof their item-level or achievement links.

"Groupie {rt3} : Tank LFG! Level 80 Blood Death Knight in 234 item-level gear. English-speaking Player. 86400 [Relevant Achievement Link]"

"Groupie {rt3} : Tank LFG! Level 80 Blood Death Knight in 234 item-level gear. English-Speaking Player. 00034 [Relevant Achievement Link]"

Raw time-stamps in seconds (that seems shortest) may work, but open to other suggestions. Maybe do some light hash type thing on the 5-digit number so it's not totally apparent it's a time-stamp.

This wouldn't be totally spoof-proof, but it would stop most of the annoying people.

All we'd have to do is could cross check the seconds counter against the time stamp on the message (give it 2 seconds forgiveness) and then if we spot an issue with someone faking an achievement we can auto respond, ""Groupie {rt3} : Fake news!"

I remember how annoying the fake links were in Wrath. It would be good to take a step to prevent them if we can.

Sort Current Spec vs Other Spec

Once we can safely send the current spec, we'll need to update the message (and remove option to send 2nd Spec from Right Click Menu and Bulletin Board Window). We'll just send details on the current spec and current gear equipped.

/w Person "{rt3} Groupie : {Current Role} LFG! Level {Level} {Current Spec} {Class} wearing {Average Item level} item-level gear. Other Spec is {Other Spec} ({Other Role}). {Locale}-speaking Player."

/w Person "{rt3} Groupie : Tank LFG! Level 80 Blood Death Knight wearing 193 item-level gear. Other Spec is Frost (Melee DPS). English-speaking Player."

Need a Conflicted Add-on Warning

We're going to have conflicts with the Global Ignore Lists, maybe Badboy (hopefully not!), likely LFG BB... need to start making that list and giving a warning when people have multiple conflicting add-ons installed.

Right-click Menu Charactert Summary Messaging Tool

Role   Gear Summary Message Tool@2x

Notes & Acceptance Criteria

Needs to be able to summarize spec, and gear.

Let's just leave it to "Current Spec" for now. Just one option for MVP, the spec you're in and the gear you're in when you hit the button.

MVP Output:

/w Person "{rt4} Groupie : {Role} LFG! Level {Level} {Spec} {Class} wearing {Average Item level} average item-level gear. {Locale} Speaking Player."

/w Person "{rt4} Groupie : Tank LFG! Level 80 Blood Death Knight wearing 234 average item-level gear. English-Speaking Player."

We won't have an options UI for setting role yet, so fine to set it with a slash-command for now.

/groupie role Tank
/groupie role Healer
/groupie role Melee DPS
/groupie role Ranged DPS

Design Files

Tasks

  • TODO: get num talents spent to determine spec
  • TODO: allow players to set role for each spec in options
  • TODO: send relevant achievment if available - will be covered in #18
  • TODO: sum 2 handed ilvl twice

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.