diff --git a/scripts/commands/generic/cmdGroupDisband.js b/scripts/commands/generic/cmdGroupDisband.js index 2d17fec3e..b3508e650 100644 --- a/scripts/commands/generic/cmdGroupDisband.js +++ b/scripts/commands/generic/cmdGroupDisband.js @@ -1,14 +1,14 @@ function executeCommand(galacticManager, player, target, args) { - var GroupEventIntent = Java.type("intents.GroupEventIntent"); - var GroupEventType = Java.type("intents.GroupEventIntent.GroupEventType"); + var GroupEventIntent = Java.type("intents.GroupEventIntent"); + var GroupEventType = Java.type("intents.GroupEventIntent.GroupEventType"); - if (target != null && (args == null || args.length == 0)) { - new GroupEventIntent(GroupEventType.GROUP_DISBAND, player, target).broadcast(); - } else { - var kickingPlayer = galacticManager.getPlayerManager().getPlayerByCreatureFirstName(args); - if (kickingPlayer != null) - new GroupEventIntent(GroupEventType.GROUP_DISBAND, player, kickingPlayer.getCreatureObject()).broadcast(); - else - new GroupEventIntent(GroupEventType.GROUP_DISBAND, player, null).broadcast(); - } + if (target != null && (args == null || args.length == 0)) { + new GroupEventIntent(GroupEventType.GROUP_DISBAND, player, target).broadcast(); + } else { + var kickingPlayer = galacticManager.getPlayerManager().getPlayerByCreatureFirstName(args); + if (kickingPlayer != null) + new GroupEventIntent(GroupEventType.GROUP_DISBAND, player, kickingPlayer.getCreatureObject()).broadcast(); + else + new GroupEventIntent(GroupEventType.GROUP_DISBAND, player, null).broadcast(); + } } \ No newline at end of file diff --git a/src/resources/objects/group/GroupObject.java b/src/resources/objects/group/GroupObject.java index 73bb11966..8ae864ff5 100644 --- a/src/resources/objects/group/GroupObject.java +++ b/src/resources/objects/group/GroupObject.java @@ -52,13 +52,14 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO? private long leader; private short level; private long lootMaster; - private LootRule lootRule = LootRule.RANDOM; + private LootRule lootRule; private transient PickupPointTimer pickupPointTimer; public GroupObject(long objectId) { super(objectId, Baseline.BaselineType.GRUP); pickupPointTimer = new PickupPointTimer(); + lootRule = LootRule.RANDOM; } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { @@ -106,7 +107,7 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO? this.setLeader(this.groupMembers.get(2)); } - if (this.groupMembers.size() == 3) { + if (this.groupMembers.size() == 2) { this.disbandGroup(); return; } @@ -152,8 +153,10 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO? GroupMember previous = groupMembers.set(0, member); } } else { - groupMembers.add(member); + this.addMember(member.getCreatureObject()); } + + this.leader = member.getId(); groupMembers.sendDeltaMessage(this); } @@ -192,7 +195,7 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO? } public boolean isFull() { - return groupMembers.size() == 9; + return groupMembers.size() == 8; } public Map getGroupMembers() { @@ -219,17 +222,15 @@ public class GroupObject extends SWGObject { // Extends INTO or TANO? } private GroupMember getGroupMember(Player player) { - GroupMember foundMember = null; - synchronized(groupMembers) { - GroupMember testMember = new GroupMember(player.getCreatureObject()); - int index = groupMembers.indexOf(testMember); - - if (index != -1) - foundMember = groupMembers.get(index); + for (GroupMember member : groupMembers) { + if (member.getId() == player.getUserId()) { + return member; + } + } } - return foundMember; + return null; } public void disbandGroup() { diff --git a/src/services/group/GroupService.java b/src/services/group/GroupService.java index 81a952dc5..2e17b4aef 100644 --- a/src/services/group/GroupService.java +++ b/src/services/group/GroupService.java @@ -63,12 +63,13 @@ import utilities.ThreadUtilities; public class GroupService extends Service { private final ScheduledExecutorService logoutService; - private final Map groups = new HashMap<>(); - private Map logoffTimers = new HashMap<>(); + private final Map groups; + private Map logoffTimers; public GroupService() { logoutService = Executors.newSingleThreadScheduledExecutor(ThreadUtilities.newThreadFactory("group-logout-timer")); - + logoffTimers = new HashMap<>(); + groups = new HashMap<>(); registerForIntent(GroupEventIntent.TYPE); registerForIntent(PlayerEventIntent.TYPE); } @@ -120,9 +121,9 @@ public class GroupService extends Service { case GROUP_KICK: handleKick(intent.getPlayer(), intent.getTarget()); break; -// case GROUP_MAKE_MASTER_LOOTER: -// handleMakeMasterLooter(intent.getPlayer(), intent.getTarget()); -// break; + case GROUP_MAKE_MASTER_LOOTER: + handleMakeMasterLooter(intent.getPlayer(), intent.getTarget()); + break; } } @@ -359,7 +360,7 @@ public class GroupService extends Service { return; } - group.addMember(senderCreo); + //group.addMember(senderCreo); sendSystemMessage(sender, "formed_self", "TT", senderCreo.getObjectId()); @@ -417,19 +418,19 @@ public class GroupService extends Service { group.setLeader(newLeader); } -// private void handleMakeMasterLooter(Player player, CreatureObject target) { -// CreatureObject playerCreo = player.getCreatureObject(); -// if (playerCreo.getGroupId() == 0) { -// sendSystemMessage(player, "group_only"); -// return; -// } -// -// GroupObject group = getGroup(playerCreo.getGroupId()); -// -// if (group.getLeaderId() != playerCreo.getObjectId()) { -// int lootRule = group.getLootRule(); -// } -// } + private void handleMakeMasterLooter(Player player, CreatureObject target) { + CreatureObject playerCreo = player.getCreatureObject(); + if (playerCreo.getGroupId() == 0) { + sendSystemMessage(player, "group_only"); + return; + } + + GroupObject group = getGroup(playerCreo.getGroupId()); + + if (group.getLeaderId() != playerCreo.getObjectId()) { + LootRule lootRule = group.getLootRule(); + } + } private void sendNonLeaderLootMessage(Player player, int lootRule) { switch (LootRule.fromId(lootRule)) { @@ -485,7 +486,8 @@ public class GroupService extends Service { return null; group.setLeader(player.getCreatureObject()); - + //group.addMember(player.getCreatureObject()); + synchronized (groups) { groups.put(group.getObjectId(), group); }