diff --git a/scripts/commands/pvp.py b/scripts/commands/pvp.py index 7750b2e6..e7c27d07 100644 --- a/scripts/commands/pvp.py +++ b/scripts/commands/pvp.py @@ -52,6 +52,7 @@ def run(core, actor, target, commandString): actor.setFactionStatus(FactionStatus.Combatant) actor.setPvpStatus(PvpStatus.GoingCovert, False) actor.sendSystemMessage('@faction_recruiter:covert_complete', 0) + actor.updatePvpStatus() return if factionStatus == FactionStatus.Combatant: @@ -61,6 +62,7 @@ def run(core, actor, target, commandString): actor.setFactionStatus(FactionStatus.SpecialForces) actor.setPvpStatus(PvpStatus.GoingOvert, False) actor.sendSystemMessage('@faction_recruiter:overt_complete', 0) + actor.updatePvpStatus() return if factionStatus == FactionStatus.SpecialForces: @@ -70,6 +72,7 @@ def run(core, actor, target, commandString): actor.setFactionStatus(FactionStatus.Combatant) actor.setPvpStatus(PvpStatus.GoingCovert, False) actor.sendSystemMessage('@faction_recruiter:covert_complete', 0) + actor.updatePvpStatus() return return diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index c615d628..bfc09120 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -458,7 +458,7 @@ public class CreatureObject extends TangibleObject implements IPersistent { } notifyObservers(messageBuilder.buildFactionDelta(faction), true); - updatePvpStatus(); + //updatePvpStatus(); } public int getFactionStatus() { @@ -473,7 +473,7 @@ public class CreatureObject extends TangibleObject implements IPersistent { } notifyObservers(messageBuilder.buildFactionStatusDelta(factionStatus), true); - updatePvpStatus(); + //updatePvpStatus(); } public float getHeight() { diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index b6d9517f..b00537a1 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -223,7 +223,7 @@ public class TangibleObject extends SWGObject { } } - updatePvpStatus(); + //updatePvpStatus(); } public void updatePvpStatus() { @@ -234,7 +234,10 @@ public class TangibleObject extends SWGObject { if (observer.getParent() != null) { observer.getSession().write(new UpdatePVPStatusMessage(this.getObjectID(), NGECore.getInstance().factionService.calculatePvpStatus((CreatureObject) observer.getParent(), this), getFaction()).serialize()); + if(getClient() != null) + getClient().getSession().write(new UpdatePVPStatusMessage(observer.getParent().getObjectID(), NGECore.getInstance().factionService.calculatePvpStatus((CreatureObject) this, (CreatureObject) observer.getParent()), getFaction()).serialize()); } + } } diff --git a/src/services/gcw/FactionService.java b/src/services/gcw/FactionService.java index 3a604f9a..afe73fd5 100644 --- a/src/services/gcw/FactionService.java +++ b/src/services/gcw/FactionService.java @@ -198,7 +198,7 @@ public class FactionService implements INetworkDispatch { * This should be used instead of getPvPBitmask where possible, but * should not be used in setPvPBitmask. */ - public int calculatePvpStatus(CreatureObject player, TangibleObject target) { + /*public int calculatePvpStatus(CreatureObject player, TangibleObject target) { PlayerObject ghost = (PlayerObject) player.getSlottedObject("ghost"); int pvpBitmask = target.getPvPBitmask(); @@ -254,6 +254,27 @@ public class FactionService implements INetworkDispatch { } return pvpBitmask; + }*/ + + // temp fix until calculatePvpStatus is fixed + public int calculatePvpStatus(CreatureObject player, TangibleObject target) { + + if(target.getSlottedObject("ghost") != null) { + + if(!player.getFaction().equals(target.getFaction()) && player.getFactionStatus() == FactionStatus.SpecialForces && ((CreatureObject) target).getFactionStatus() == FactionStatus.SpecialForces) + return 55; + else if(core.combatService.areInDuel(player, (CreatureObject) target)) + return 55; + else + return 0x14; + + } else { + if(target.getAttachment("AI") != null) + return PvpStatus.Attackable; + else + return 0; + } + } public Map getFactionMap() {