From 43bc02ca9e786371fcee96fb737f59fd24fae05a Mon Sep 17 00:00:00 2001 From: Ziggy Date: Fri, 3 Jul 2020 20:57:10 +0200 Subject: [PATCH] If the group leader leaves, the group is notified of who becomes the leader #74 --- .../support/objects/swg/group/GroupObject.java | 3 --- .../services/gameplay/player/group/GroupService.java | 10 ++++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/projectswg/holocore/resources/support/objects/swg/group/GroupObject.java b/src/main/java/com/projectswg/holocore/resources/support/objects/swg/group/GroupObject.java index 538537f64..397fafff2 100644 --- a/src/main/java/com/projectswg/holocore/resources/support/objects/swg/group/GroupObject.java +++ b/src/main/java/com/projectswg/holocore/resources/support/objects/swg/group/GroupObject.java @@ -100,9 +100,6 @@ public class GroupObject extends SWGObject { } public void removeMember(CreatureObject creature) { - if (leader.equals(creature) && size() >= 2) { - setLeader(groupMembers.get(1)); - } removeGroupMembers(creature); calculateLevel(); } diff --git a/src/main/java/com/projectswg/holocore/services/gameplay/player/group/GroupService.java b/src/main/java/com/projectswg/holocore/services/gameplay/player/group/GroupService.java index 29a81ed88..06fbc0832 100644 --- a/src/main/java/com/projectswg/holocore/services/gameplay/player/group/GroupService.java +++ b/src/main/java/com/projectswg/holocore/services/gameplay/player/group/GroupService.java @@ -417,6 +417,16 @@ public class GroupService extends Service { sendSystemMessage(creature.getOwner(), "removed"); group.removeMember(creature); updateChatRoom(creature.getOwner(), group, UpdateType.LEAVE); + + // If the leader has left, promote another group member to leader and notify the group of this + if (creature.getObjectId() == group.getLeaderId()) { + CreatureObject newLeader = group.getGroupMemberObjects().iterator().next(); // Pick a new leader + + group.setLeader(newLeader); + + sendGroupSystemMessage(group, "new_leader", "TU", newLeader.getObjectName()); + } + } private void updateChatRoom(Player player, GroupObject group, UpdateType updateType) {