From 755a36d801e29a3c517e9c7abbf4ef6b016b026a Mon Sep 17 00:00:00 2001 From: Jordan <77755681+Jordyrat@users.noreply.github.com> Date: Sat, 31 Aug 2024 21:50:16 +0100 Subject: Feature: Reverse Party Transfer (#1712) Co-authored-by: BuildTools Co-authored-by: Cal Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../java/at/hannibal2/skyhanni/data/PartyAPI.kt | 48 +++++++++++++--------- 1 file changed, 29 insertions(+), 19 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/data') diff --git a/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt index f06619169..2ee30c27e 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/PartyAPI.kt @@ -21,68 +21,69 @@ object PartyAPI { private val patternGroup = RepoPattern.group("data.party") private val youJoinedPartyPattern by patternGroup.pattern( "you.joined", - "§eYou have joined (?.*)'s? §eparty!" + "§eYou have joined (?.*)'s? §eparty!", ) private val othersJoinedPartyPattern by patternGroup.pattern( "others.joined", - "(?.*) §ejoined the party\\." + "(?.*) §ejoined the party\\.", ) private val othersInThePartyPattern by patternGroup.pattern( "others.inparty", - "§eYou'll be partying with: (?.*)" + "§eYou'll be partying with: (?.*)", ) private val otherLeftPattern by patternGroup.pattern( "others.left", - "(?.*) §ehas left the party\\." + "(?.*) §ehas left the party\\.", ) private val otherKickedPattern by patternGroup.pattern( "others.kicked", - "(?.*) §ehas been removed from the party\\." + "(?.*) §ehas been removed from the party\\.", ) private val otherOfflineKickedPattern by patternGroup.pattern( "others.offline", - "§eKicked (?.*) because they were offline\\." + "§eKicked (?.*) because they were offline\\.", ) private val otherDisconnectedPattern by patternGroup.pattern( "others.disconnect", - "(?.*) §ewas removed from your party because they disconnected\\." + "(?.*) §ewas removed from your party because they disconnected\\.", ) private val transferOnLeavePattern by patternGroup.pattern( "others.transfer.leave", - "The party was transferred to (?.*) because (?.*) left" + "The party was transferred to (?.*) because (?.*) left", ) - private val transferVoluntaryPattern by patternGroup.pattern( + val transferVoluntaryPattern by patternGroup.pattern( "others.transfer.voluntary", - "The party was transferred to (?.*) by .*" + "The party was transferred to (?.*) by (?.*)", ) private val disbandedPattern by patternGroup.pattern( "others.disband", - ".* §ehas disbanded the party!" + ".* §ehas disbanded the party!", ) private val kickedPattern by patternGroup.pattern( "you.kicked", - "§eYou have been kicked from the party by .* §e" + "§eYou have been kicked from the party by .* §e", ) private val partyMembersStartPattern by patternGroup.pattern( "members.start", - "§6Party Members \\(\\d+\\)" + "§6Party Members \\(\\d+\\)", ) private val partyMemberListPattern by patternGroup.pattern( "members.list.withkind", - "Party (?Leader|Moderators|Members): (?.*)" + "Party (?Leader|Moderators|Members): (?.*)", ) private val kuudraFinderJoinPattern by patternGroup.pattern( "kuudrafinder.join", - "§dParty Finder §f> (?.*?) §ejoined the group! \\(§[a-fA-F0-9]+Combat Level \\d+§e\\)" + "§dParty Finder §f> (?.*?) §ejoined the group! \\(§[a-fA-F0-9]+Combat Level \\d+§e\\)", ) private val dungeonFinderJoinPattern by patternGroup.pattern( "dungeonfinder.join", - "§dParty Finder §f> (?.*?) §ejoined the dungeon group! \\(§[a-fA-F0-9].* Level \\d+§[a-fA-F0-9]\\)" + "§dParty Finder §f> (?.*?) §ejoined the dungeon group! \\(§[a-fA-F0-9].* Level \\d+§[a-fA-F0-9]\\)", ) val partyMembers = mutableListOf() var partyLeader: String? = null + var prevPartyLeader: String? = null fun listMembers() { val size = partyMembers.size @@ -145,15 +146,15 @@ object PartyAPI { // one member got removed otherLeftPattern.matchMatcher(message) { val name = group("name").cleanPlayerName() - partyMembers.remove(name) + removeWithLeader(name) } otherKickedPattern.matchMatcher(message) { val name = group("name").cleanPlayerName() - partyMembers.remove(name) + removeWithLeader(name) } otherOfflineKickedPattern.matchMatcher(message) { val name = group("name").cleanPlayerName() - partyMembers.remove(name) + removeWithLeader(name) } otherDisconnectedPattern.matchMatcher(message) { val name = group("name").cleanPlayerName() @@ -166,6 +167,7 @@ object PartyAPI { } transferVoluntaryPattern.matchMatcher(message.removeColor()) { partyLeader = group("newowner").cleanPlayerName() + prevPartyLeader = group("name").cleanPlayerName() } // party disbanded @@ -201,6 +203,13 @@ object PartyAPI { } } + private fun removeWithLeader(name: String) { + partyMembers.remove(name) + if (name == prevPartyLeader) { + prevPartyLeader = null + } + } + private fun addPlayer(playerName: String) { if (partyMembers.contains(playerName)) return if (playerName == LorenzUtils.getPlayerName()) return @@ -210,5 +219,6 @@ object PartyAPI { private fun partyLeft() { partyMembers.clear() partyLeader = null + prevPartyLeader = null } } -- cgit