mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-08 23:13:25 -04:00
Fixed the same packet being sent multiple times
This commit is contained in:
+1
-1
@@ -39,7 +39,7 @@ public class JumpCmdCallback implements ICmdCallback {
|
||||
@Override
|
||||
public void execute(GalacticManager galacticManager, Player player, SWGObject target, String args) {
|
||||
CreatureObject creature = player.getCreatureObject();
|
||||
creature.sendObserversAndSelf(new JumpUpdate(creature.getObjectId()));
|
||||
creature.sendObservers(new JumpUpdate(creature.getObjectId()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ public class KneelCmdCallback implements ICmdCallback {
|
||||
creature.setPosture(Posture.CROUCHED);
|
||||
creature.setMovementScale(0);
|
||||
creature.setTurnScale(0);
|
||||
creature.sendObserversAndSelf(new PostureUpdate(creature.getObjectId(), Posture.CROUCHED));
|
||||
creature.sendObservers(new PostureUpdate(creature.getObjectId(), Posture.CROUCHED));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ public class ProneCmdCallback implements ICmdCallback {
|
||||
creature.setPosture(Posture.PRONE);
|
||||
creature.setTurnScale(1);
|
||||
creature.setMovementScale(0.50);
|
||||
creature.sendObserversAndSelf(new PostureUpdate(creature.getObjectId(), Posture.PRONE));
|
||||
creature.sendObservers(new PostureUpdate(creature.getObjectId(), Posture.PRONE));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -65,6 +65,6 @@ public class SitOnObjectCmdCallback implements ICmdCallback {
|
||||
creature.setPosture(Posture.SITTING);
|
||||
creature.setMovementScale(0);
|
||||
creature.setTurnScale(0);
|
||||
creature.sendObserversAndSelf(new SitOnObject(creature.getObjectId(), sot));
|
||||
creature.sendObservers(new SitOnObject(creature.getObjectId(), sot));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -45,10 +45,7 @@ public class SocialInternalCmdCallback implements ICmdCallback {
|
||||
|
||||
long objectId = player.getCreatureObject().getObjectId();
|
||||
PlayerEmote emote = new PlayerEmote(objectId, objectId, ((target == null) ? 0 : target.getObjectId()), Short.valueOf(cmd[1]));
|
||||
player.sendPacket(emote);
|
||||
|
||||
for (Player aware : player.getCreatureObject().getObservers()) {
|
||||
aware.sendPacket(new PlayerEmote(aware.getCreatureObject().getObjectId(), emote));
|
||||
}
|
||||
player.getCreatureObject().sendObservers(emote);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ public class StandCmdCallback implements ICmdCallback {
|
||||
creature.setPosture(Posture.UPRIGHT);
|
||||
creature.setMovementScale(1);
|
||||
creature.setTurnScale(1);
|
||||
creature.sendObserversAndSelf(new PostureUpdate(creature.getObjectId(), Posture.UPRIGHT));
|
||||
creature.sendObservers(new PostureUpdate(creature.getObjectId(), Posture.UPRIGHT));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -738,13 +738,6 @@ public abstract class SWGObject extends BaselineObject implements Comparable<SWG
|
||||
return awareness.getAware(type);
|
||||
}
|
||||
|
||||
public int sendObserversAndSelf(SWGPacket ... SWGPackets) {
|
||||
int sent = 0;
|
||||
sent += sendSelf(SWGPackets);
|
||||
sent += sendObservers(SWGPackets);
|
||||
return sent;
|
||||
}
|
||||
|
||||
public int sendObservers(SWGPacket ... SWGPackets) {
|
||||
int sent = 0;
|
||||
for (Player observer : getObservers()) {
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ class TerrainMapChunk {
|
||||
}
|
||||
|
||||
private static void recursiveAdd(@Nonnull Collection<SWGObject> withinRange, @Nonnull SWGObject obj, @Nonnull SWGObject test) {
|
||||
if (!test.isVisible(obj))
|
||||
if (obj.equals(test) || !test.isVisible(obj))
|
||||
return;
|
||||
withinRange.add(test);
|
||||
for (SWGObject child : test.getSlots().values()) {
|
||||
|
||||
+1
-1
@@ -312,7 +312,7 @@ public class CreatureObject extends TangibleObject {
|
||||
this.posture = posture;
|
||||
sendDelta(3, 13, posture.getId());
|
||||
if (isPlayer())
|
||||
sendObserversAndSelf(new PostureUpdate(getObjectId(), posture));
|
||||
sendObservers(new PostureUpdate(getObjectId(), posture));
|
||||
}
|
||||
|
||||
public void setRace(Race race) {
|
||||
|
||||
@@ -298,7 +298,7 @@ public class ChatManager extends Manager {
|
||||
}
|
||||
|
||||
private void broadcastAreaMessage(String message, Player broadcaster) {
|
||||
broadcaster.getCreatureObject().sendObserversAndSelf(new ChatSystemMessage(SystemChatType.PERSONAL, message));
|
||||
broadcaster.getCreatureObject().sendObservers(new ChatSystemMessage(SystemChatType.PERSONAL, message));
|
||||
}
|
||||
|
||||
private void broadcastPlanetMessage(String message, Terrain terrain) {
|
||||
|
||||
@@ -256,7 +256,7 @@ public class CombatManager extends Manager {
|
||||
combatSpam.setSpamType(CombatSpamFilterType.ALL);
|
||||
// TODO doesn't look like a buff in the combat log
|
||||
|
||||
source.sendObserversAndSelf(action, combatSpam);
|
||||
source.sendObservers(action, combatSpam);
|
||||
}
|
||||
|
||||
private void handleHeal(CreatureObject source, SWGObject target, CombatCommand combatCommand) {
|
||||
@@ -310,10 +310,7 @@ public class CombatManager extends Manager {
|
||||
float range = combatCommand.getConeLength();
|
||||
Location sourceLocation = source.getWorldLocation();
|
||||
|
||||
// Heal ourselves
|
||||
doHeal(source, source, healAmount, combatCommand);
|
||||
|
||||
for (SWGObject nearbyObject : source.getObjectsAware()) {
|
||||
for (SWGObject nearbyObject : source.getAware()) { // The source is included in awareness
|
||||
if (sourceLocation.isWithinDistance(nearbyObject.getLocation(), range)) {
|
||||
if (!(nearbyObject instanceof CreatureObject)) {
|
||||
// We can't heal something that's not a creature
|
||||
@@ -322,7 +319,7 @@ public class CombatManager extends Manager {
|
||||
|
||||
CreatureObject nearbyCreature = (CreatureObject) nearbyObject;
|
||||
|
||||
if (source.isAttackable(nearbyCreature) || nearbyCreature.isEnemyOf(source)) {
|
||||
if (source.isAttackable(nearbyCreature)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -453,7 +450,7 @@ public class CombatManager extends Manager {
|
||||
combatSpam.setSpamType(CombatSpamFilterType.ALL);
|
||||
// TODO doesn't look like a heal in the combat log
|
||||
|
||||
healed.sendObserversAndSelf(action, flyText, effect, combatSpam);
|
||||
healed.sendObservers(action, flyText, effect, combatSpam);
|
||||
}
|
||||
|
||||
private void doCombatSingle(CreatureObject source, SWGObject target, AttackInfo info, WeaponObject weapon, CombatCommand command) {
|
||||
@@ -474,6 +471,9 @@ public class CombatManager extends Manager {
|
||||
SWGObject originParent = origin.getParent();
|
||||
Collection<SWGObject> objectsToCheck = originParent == null ? origin.getObjectsAware() : originParent.getContainedObjects();
|
||||
|
||||
// TODO block
|
||||
// TODO evasion if no block
|
||||
|
||||
// TODO line of sight checks between the explosive and each target
|
||||
Set<CreatureObject> targets = objectsToCheck.stream().filter(CreatureObject.class::isInstance).map(CreatureObject.class::cast)
|
||||
.filter(source::isAttackable).filter(target -> canPerform(source, target, command) == CombatStatus.SUCCESS)
|
||||
@@ -522,7 +522,7 @@ public class CombatManager extends Manager {
|
||||
combatSpam.setSpamType(CombatSpamFilterType.ALL);
|
||||
|
||||
if (!info.isSuccess()) { // Single target negate, like dodge or parry!
|
||||
target.sendObserversAndSelf(combatSpam);
|
||||
target.sendObservers(combatSpam);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -538,7 +538,7 @@ public class CombatManager extends Manager {
|
||||
// TODO Critical hit roll for attacker
|
||||
// TODO armour
|
||||
|
||||
target.sendObserversAndSelf(combatSpam);
|
||||
target.sendObservers(combatSpam);
|
||||
|
||||
int finalDamage = info.getFinalDamage();
|
||||
|
||||
@@ -553,7 +553,7 @@ public class CombatManager extends Manager {
|
||||
target.modifyHealth(-finalDamage);
|
||||
}
|
||||
|
||||
source.sendObserversAndSelf(action);
|
||||
source.sendObservers(action);
|
||||
}
|
||||
|
||||
private void enterCombat(CreatureObject creature) {
|
||||
|
||||
@@ -406,7 +406,7 @@ final class CorpseService extends Service {
|
||||
corpse.setTurnScale(1);
|
||||
corpse.setMovementScale(1);
|
||||
corpse.setHealth(corpse.getMaxHealth());
|
||||
corpse.sendObserversAndSelf(new PlayClientEffectObjectMessage("clienteffect/player_clone_compile.cef", "", corpse.getObjectId(), ""));
|
||||
corpse.sendObservers(new PlayClientEffectObjectMessage("clienteffect/player_clone_compile.cef", "", corpse.getObjectId(), ""));
|
||||
|
||||
BuffIntent cloningSickness = new BuffIntent("cloning_sickness", corpse, corpse, false);
|
||||
new BuffIntent("incapWeaken", corpse, corpse, true).broadcastAfterIntent(cloningSickness);
|
||||
|
||||
@@ -302,7 +302,7 @@ public class BuffService extends Service {
|
||||
|
||||
private void sendParticleEffect(String effectFileName, CreatureObject receiver, String hardPoint) {
|
||||
if (!effectFileName.isEmpty()) {
|
||||
receiver.sendObserversAndSelf(new PlayClientEffectObjectMessage(effectFileName, hardPoint, receiver.getObjectId(), ""));
|
||||
receiver.sendObservers(new PlayClientEffectObjectMessage(effectFileName, hardPoint, receiver.getObjectId(), ""));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ public class EntertainmentService extends Service {
|
||||
performerObject.setPerformanceCounter(1);
|
||||
|
||||
// Send the flourish animation to the owner of the creature and owners of creatures observing
|
||||
performerObject.sendObserversAndSelf(new Animation(performerObject.getObjectId(), fi.getFlourishName()));
|
||||
performerObject.sendObservers(new Animation(performerObject.getObjectId(), fi.getFlourishName()));
|
||||
new SystemMessageIntent(performer, "@performance:flourish_perform").broadcast();
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ public class SampleSession {
|
||||
double concentration = getConcentration(creature);
|
||||
creature.setPosture(Posture.CROUCHED);
|
||||
creature.getOwner().sendPacket(new PlayMusicMessage(0, getMusicFile(), 1, false));
|
||||
creature.sendObserversAndSelf(new PlayClientEffectObjectMessage(getEffectFile(), "", creature.getObjectId(), ""));
|
||||
creature.sendObservers(new PlayClientEffectObjectMessage(getEffectFile(), "", creature.getObjectId(), ""));
|
||||
Log.d("%s started a sample session with %s and concentration %.1f", creature.getObjectName(), resource.getName(), concentration);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ public class SurveySession {
|
||||
loadResourcePoints(surveyMessage, creature, resource, 320);
|
||||
creature.getOwner().sendPacket(surveyMessage);
|
||||
creature.getOwner().sendPacket(new PlayMusicMessage(0, getMusicFile(), 1, false));
|
||||
creature.sendObserversAndSelf(new PlayClientEffectObjectMessage(getEffectFile(), "", creature.getObjectId(), ""));
|
||||
creature.sendObservers(new PlayClientEffectObjectMessage(getEffectFile(), "", creature.getObjectId(), ""));
|
||||
}
|
||||
|
||||
public void stopSession() {
|
||||
|
||||
@@ -155,7 +155,7 @@ public final class SkillTemplateService extends Service {
|
||||
flyTextColor = new RGB(Color.BLUE);
|
||||
}
|
||||
|
||||
creatureObject.sendObserversAndSelf(new PlayClientEffectObjectMessage(effectFile, "", objectId, ""));
|
||||
creatureObject.sendObservers(new PlayClientEffectObjectMessage(effectFile, "", objectId, ""));
|
||||
player.sendPacket(new ShowFlyText(objectId, new StringId("cbt_spam", flyText), Scale.LARGEST, flyTextColor));
|
||||
|
||||
if (skillUp)
|
||||
|
||||
@@ -397,7 +397,7 @@ final class CivilWarService extends Service {
|
||||
.getObjectName());
|
||||
|
||||
// Send visual effect to killer and everyone around
|
||||
killerCreature.sendObserversAndSelf(new PlayClientEffectObjectMessage(effectFile, "head", killerCreature.getObjectId(), ""));
|
||||
killerCreature.sendObservers(new PlayClientEffectObjectMessage(effectFile, "head", killerCreature.getObjectId(), ""));
|
||||
|
||||
// Send sound to just to the killer
|
||||
killerCreature.sendSelf(new PlayMusicMessage(0, soundFile, 0, false));
|
||||
|
||||
Reference in New Issue
Block a user