Added group buffs

This commit is contained in:
Light2
2013-11-27 00:11:48 +01:00
parent 3ee31a9825
commit f2b156cb61
16 changed files with 83 additions and 55 deletions
+29 -9
View File
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import resources.objects.Buff;
import resources.objects.creature.CreatureObject;
import resources.objects.group.GroupObject;
@@ -150,6 +151,8 @@ public class GroupService implements INetworkDispatch {
leader.setGroupId(group.getObjectID());
invited.makeAware(group);
invited.setGroupId(group.getObjectID());
addGroupBuffsToMember(group, leader);
addGroupBuffsToMember(group, invited);
return;
}
@@ -162,6 +165,7 @@ public class GroupService implements INetworkDispatch {
invited.makeAware(group);
invited.setGroupId(group.getObjectID());
invited.sendSystemMessage("@group:joined_self", (byte) 0);
addGroupBuffsToMember(group, invited);
} else if(group.getMemberList().size() >= 8) {
@@ -175,10 +179,33 @@ public class GroupService implements INetworkDispatch {
}
}
public void addGroupBuffsToMember(GroupObject group, CreatureObject member) {
// loop until we find a member other than ourself
for(SWGObject otherMember : group.getMemberList()) {
if(otherMember != member) {
for(Buff buff : ((CreatureObject) otherMember).getBuffList().get()) {
if(buff.isGroupBuff()) {
Buff newBuff = core.buffService.doAddBuff(member, buff.getBuffName());
newBuff.setGroupBufferId(buff.getGroupBufferId());
}
}
return;
}
}
}
public void removeGroupBuffs(CreatureObject member) {
for(Buff buff : member.getBuffList().get()) {
if(buff.isGroupBuff() && buff.getGroupBufferId() != member.getObjectID()) {
core.buffService.removeBuffFromCreature(member, buff);
}
}
}
public void handleGroupDisband(CreatureObject creature) {
if(creature.getGroupId() == 0)
@@ -209,11 +236,7 @@ public class GroupService implements INetworkDispatch {
}
// Remove group buffs
if(creature.hasBuff("co_base_of_operations"))
core.buffService.removeBuffFromCreature(creature, creature.getBuffByName("co_base_of_operations"));
removeGroupBuffs(creature);
} else {
@@ -231,11 +254,8 @@ public class GroupService implements INetworkDispatch {
creature2.sendSystemMessage("The group has been disbanded.", (byte) 0);
// Remove group buffs
removeGroupBuffs((CreatureObject) member);
if(creature2.hasBuff("co_base_of_operations"))
core.buffService.removeBuffFromCreature(creature2, creature2.getBuffByName("co_base_of_operations"));
}
core.objectService.destroyObject(group.getObjectID());