forked from MagicBane/Server
refactored mob get/set owner
This commit is contained in:
@@ -440,7 +440,9 @@ public class InfoCmd extends AbstractDevCmd {
|
|||||||
output += "isSummonedPet: true";
|
output += "isSummonedPet: true";
|
||||||
else
|
else
|
||||||
output += "isSummonedPet: false";
|
output += "isSummonedPet: false";
|
||||||
PlayerCharacter owner = targetMob.getOwner();
|
|
||||||
|
|
||||||
|
PlayerCharacter owner = (PlayerCharacter) targetMob.guardCaptain;
|
||||||
if (owner != null)
|
if (owner != null)
|
||||||
output += " owner: " + owner.getObjectUUID();
|
output += " owner: " + owner.getObjectUUID();
|
||||||
output += newline;
|
output += newline;
|
||||||
|
|||||||
@@ -127,10 +127,12 @@ public enum NPCManager {
|
|||||||
|
|
||||||
DbManager.removeFromCache(necroPet);
|
DbManager.removeFromCache(necroPet);
|
||||||
|
|
||||||
PlayerCharacter petOwner = necroPet.getOwner();
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) necroPet.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
necroPet.setOwner(null);
|
|
||||||
|
necroPet.guardCaptain = null;
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
|
|
||||||
if (updateOwner == false)
|
if (updateOwner == false)
|
||||||
@@ -228,12 +230,14 @@ public enum NPCManager {
|
|||||||
WorldGrid.removeObject(toRemove);
|
WorldGrid.removeObject(toRemove);
|
||||||
DbManager.removeFromCache(toRemove);
|
DbManager.removeFromCache(toRemove);
|
||||||
|
|
||||||
PlayerCharacter petOwner = toRemove.getOwner();
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) toRemove.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
|
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
toRemove.setOwner(null);
|
|
||||||
|
toRemove.guardCaptain = null;
|
||||||
|
|
||||||
PetMsg petMsg = new PetMsg(5, null);
|
PetMsg petMsg = new PetMsg(5, null);
|
||||||
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
||||||
|
|||||||
@@ -786,24 +786,30 @@ public class MobAI {
|
|||||||
switch (mob.behaviourType) {
|
switch (mob.behaviourType) {
|
||||||
|
|
||||||
case Pet1:
|
case Pet1:
|
||||||
if (mob.getOwner() == null)
|
|
||||||
|
|
||||||
|
if ((PlayerCharacter) mob.guardCaptain == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!mob.playerAgroMap.containsKey(mob.getOwner().getObjectUUID())) {
|
|
||||||
|
if (!mob.playerAgroMap.containsKey(((PlayerCharacter) mob.guardCaptain).getObjectUUID())) {
|
||||||
|
|
||||||
//mob no longer has its owner loaded, translocate pet to owner
|
//mob no longer has its owner loaded, translocate pet to owner
|
||||||
|
|
||||||
MovementManager.translocate(mob, mob.getOwner().getLoc(), null);
|
|
||||||
|
MovementManager.translocate(mob, ((PlayerCharacter) mob.guardCaptain).getLoc(), null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mob.getCombatTarget() == null) {
|
if (mob.getCombatTarget() == null) {
|
||||||
|
|
||||||
//move back to owner
|
//move back to owner
|
||||||
|
|
||||||
if (CombatUtilities.inRange2D(mob, mob.getOwner(), 6))
|
|
||||||
|
if (CombatUtilities.inRange2D(mob, (PlayerCharacter) mob.guardCaptain, 6))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mob.destination = mob.getOwner().getLoc();
|
|
||||||
|
mob.destination = ((PlayerCharacter) mob.guardCaptain).getLoc();
|
||||||
MovementUtilities.moveToLocation(mob, mob.destination, 5);
|
MovementUtilities.moveToLocation(mob, mob.destination, 5);
|
||||||
} else
|
} else
|
||||||
chaseTarget(mob);
|
chaseTarget(mob);
|
||||||
@@ -1103,7 +1109,8 @@ public class MobAI {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (mob.getOwner() == null && mob.isNecroPet() == false && mob.isSiege() == false)
|
|
||||||
|
if ((PlayerCharacter) mob.guardCaptain == null && mob.isNecroPet() == false && mob.isSiege() == false)
|
||||||
if (ZoneManager.getSeaFloor().zoneMobSet.contains(mob))
|
if (ZoneManager.getSeaFloor().zoneMobSet.contains(mob))
|
||||||
mob.killCharacter("no owner");
|
mob.killCharacter("no owner");
|
||||||
|
|
||||||
|
|||||||
@@ -73,11 +73,14 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler {
|
|||||||
toRemove.getParentZone().zoneMobSet.remove(toRemove);
|
toRemove.getParentZone().zoneMobSet.remove(toRemove);
|
||||||
|
|
||||||
DbManager.removeFromCache(toRemove);
|
DbManager.removeFromCache(toRemove);
|
||||||
PlayerCharacter petOwner = toRemove.getOwner();
|
|
||||||
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) toRemove.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
toRemove.setOwner(null);
|
|
||||||
|
toRemove.guardCaptain = null;
|
||||||
PetMsg petMsg = new PetMsg(5, null);
|
PetMsg petMsg = new PetMsg(5, null);
|
||||||
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
||||||
@@ -195,11 +198,14 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler {
|
|||||||
toRemove.getParentZone().zoneMobSet.remove(toRemove);
|
toRemove.getParentZone().zoneMobSet.remove(toRemove);
|
||||||
|
|
||||||
DbManager.removeFromCache(toRemove);
|
DbManager.removeFromCache(toRemove);
|
||||||
PlayerCharacter petOwner = toRemove.getOwner();
|
|
||||||
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) toRemove.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
toRemove.setOwner(null);
|
|
||||||
|
toRemove.guardCaptain = null;
|
||||||
PetMsg petMsg = new PetMsg(5, null);
|
PetMsg petMsg = new PetMsg(5, null);
|
||||||
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
||||||
|
|||||||
@@ -101,7 +101,8 @@ public abstract class AbstractIntelligenceAgent extends AbstractCharacter {
|
|||||||
this.agentType = Enum.AIAgentType.CHARMED;
|
this.agentType = Enum.AIAgentType.CHARMED;
|
||||||
|
|
||||||
if (this.getObjectType().equals(GameObjectType.Mob)) {
|
if (this.getObjectType().equals(GameObjectType.Mob)) {
|
||||||
((Mob) this).setOwner(owner);
|
|
||||||
|
((Mob) this).guardCaptain = owner;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,7 +181,7 @@ public abstract class AbstractIntelligenceAgent extends AbstractCharacter {
|
|||||||
owner.setPet(null);
|
owner.setPet(null);
|
||||||
|
|
||||||
if (this.getObjectType().equals(GameObjectType.Mob))
|
if (this.getObjectType().equals(GameObjectType.Mob))
|
||||||
((Mob) this).setOwner(null);
|
((Mob) this).guardCaptain = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -357,7 +357,9 @@ public abstract class AbstractWorldObject extends AbstractGameObject {
|
|||||||
Mob mob = (Mob) this;
|
Mob mob = (Mob) this;
|
||||||
if (mob.isSiege()) {
|
if (mob.isSiege()) {
|
||||||
if (mob.isPet()) {
|
if (mob.isPet()) {
|
||||||
PlayerCharacter petOwner = mob.getOwner();
|
|
||||||
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) mob.guardCaptain;
|
||||||
if (petOwner != null && source.equals(EffectSourceType.Effect)) {
|
if (petOwner != null && source.equals(EffectSourceType.Effect)) {
|
||||||
petOwner.dismissPet();
|
petOwner.dismissPet();
|
||||||
return;
|
return;
|
||||||
|
|||||||
+23
-21
@@ -316,9 +316,14 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
|
|
||||||
writer.put((byte) 1);
|
writer.put((byte) 1);
|
||||||
|
|
||||||
if (mob.getOwner() != null) {
|
|
||||||
writer.putInt(mob.getOwner().getObjectType().ordinal());
|
if ((PlayerCharacter) mob.guardCaptain != null) {
|
||||||
writer.putInt(mob.getOwner().getObjectUUID());
|
|
||||||
|
|
||||||
|
writer.putInt(((PlayerCharacter) mob.guardCaptain).getObjectType().ordinal());
|
||||||
|
|
||||||
|
|
||||||
|
writer.putInt(((PlayerCharacter) mob.guardCaptain).getObjectUUID());
|
||||||
} else {
|
} else {
|
||||||
writer.putInt(0); //ownerType
|
writer.putInt(0); //ownerType
|
||||||
writer.putInt(0); //ownerID
|
writer.putInt(0); //ownerID
|
||||||
@@ -732,17 +737,6 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
return this.guild.getObjectUUID();
|
return this.guild.getObjectUUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerCharacter getOwner() {
|
|
||||||
|
|
||||||
|
|
||||||
return (PlayerCharacter) this.guardCaptain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOwner(PlayerCharacter value) {
|
|
||||||
|
|
||||||
this.guardCaptain = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFearedObject(AbstractWorldObject awo) {
|
public void setFearedObject(AbstractWorldObject awo) {
|
||||||
this.fearedObject = awo;
|
this.fearedObject = awo;
|
||||||
}
|
}
|
||||||
@@ -751,7 +745,7 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
public Vector3fImmutable getBindLoc() {
|
public Vector3fImmutable getBindLoc() {
|
||||||
|
|
||||||
if (this.isPet() && !this.behaviourType.equals(MobBehaviourType.SiegeEngine))
|
if (this.isPet() && !this.behaviourType.equals(MobBehaviourType.SiegeEngine))
|
||||||
return this.getOwner() != null ? this.getOwner().getLoc() : this.getLoc();
|
return (PlayerCharacter) this.guardCaptain != null ? ((PlayerCharacter) this.guardCaptain).getLoc() : this.getLoc();
|
||||||
else
|
else
|
||||||
return this.bindLoc;
|
return this.bindLoc;
|
||||||
}
|
}
|
||||||
@@ -875,7 +869,8 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
|
|
||||||
if (mobAttacker.isPet()) {
|
if (mobAttacker.isPet()) {
|
||||||
|
|
||||||
PlayerCharacter owner = mobAttacker.getOwner();
|
|
||||||
|
PlayerCharacter owner = (PlayerCharacter) mobAttacker.guardCaptain;
|
||||||
|
|
||||||
if (owner != null)
|
if (owner != null)
|
||||||
if (!this.isPet() && !this.isNecroPet() && !(this.agentType.equals(AIAgentType.PET)) && !this.isPlayerGuard) {
|
if (!this.isPet() && !this.isNecroPet() && !(this.agentType.equals(AIAgentType.PET)) && !this.isPlayerGuard) {
|
||||||
@@ -945,13 +940,17 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
|
|
||||||
if (this.isPet()) {
|
if (this.isPet()) {
|
||||||
|
|
||||||
PlayerCharacter petOwner = this.getOwner();
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) this.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
this.setOwner(null);
|
|
||||||
|
this.guardCaptain = null;
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
PetMsg petMsg = new PetMsg(5, null);
|
PetMsg petMsg = new PetMsg(5, null);
|
||||||
dispatch = Dispatch.borrow(this.getOwner(), petMsg);
|
|
||||||
|
|
||||||
|
dispatch = Dispatch.borrow((PlayerCharacter) this.guardCaptain, petMsg);
|
||||||
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
|
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.PRIMARY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -974,10 +973,13 @@ public class Mob extends AbstractIntelligenceAgent {
|
|||||||
WorldGrid.RemoveWorldObject(this);
|
WorldGrid.RemoveWorldObject(this);
|
||||||
|
|
||||||
DbManager.removeFromCache(this);
|
DbManager.removeFromCache(this);
|
||||||
PlayerCharacter petOwner = this.getOwner();
|
|
||||||
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) this.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
this.setOwner(null);
|
|
||||||
|
this.guardCaptain = null;
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
PetMsg petMsg = new PetMsg(5, null);
|
PetMsg petMsg = new PetMsg(5, null);
|
||||||
dispatch = Dispatch.borrow(petOwner, petMsg);
|
dispatch = Dispatch.borrow(petOwner, petMsg);
|
||||||
|
|||||||
@@ -655,12 +655,14 @@ public class NPC extends AbstractCharacter {
|
|||||||
WorldGrid.RemoveWorldObject(toRemove);
|
WorldGrid.RemoveWorldObject(toRemove);
|
||||||
DbManager.removeFromCache(toRemove);
|
DbManager.removeFromCache(toRemove);
|
||||||
|
|
||||||
PlayerCharacter petOwner = toRemove.getOwner();
|
|
||||||
|
PlayerCharacter petOwner = (PlayerCharacter) toRemove.guardCaptain;
|
||||||
|
|
||||||
if (petOwner != null) {
|
if (petOwner != null) {
|
||||||
|
|
||||||
petOwner.setPet(null);
|
petOwner.setPet(null);
|
||||||
toRemove.setOwner(null);
|
|
||||||
|
toRemove.guardCaptain = null;
|
||||||
|
|
||||||
PetMsg petMsg = new PetMsg(5, null);
|
PetMsg petMsg = new PetMsg(5, null);
|
||||||
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
Dispatch dispatch = Dispatch.borrow(petOwner, petMsg);
|
||||||
|
|||||||
@@ -4690,7 +4690,8 @@ public class PlayerCharacter extends AbstractCharacter {
|
|||||||
|
|
||||||
} else if (currentPet.isSiege()) {
|
} else if (currentPet.isSiege()) {
|
||||||
currentPet.agentType = AIAgentType.MOBILE;
|
currentPet.agentType = AIAgentType.MOBILE;
|
||||||
currentPet.setOwner(null);
|
|
||||||
|
currentPet.guardCaptain = null;
|
||||||
currentPet.setCombatTarget(null);
|
currentPet.setCombatTarget(null);
|
||||||
if (currentPet.isAlive())
|
if (currentPet.isAlive())
|
||||||
WorldGrid.updateObject(currentPet);
|
WorldGrid.updateObject(currentPet);
|
||||||
|
|||||||
@@ -94,7 +94,8 @@ public class CreateMobPowerAction extends AbstractPowerAction {
|
|||||||
|
|
||||||
} else if (currentPet != null && currentPet.isSiege()) {
|
} else if (currentPet != null && currentPet.isSiege()) {
|
||||||
currentPet.agentType = Enum.AIAgentType.MOBILE;
|
currentPet.agentType = Enum.AIAgentType.MOBILE;
|
||||||
currentPet.setOwner(null);
|
|
||||||
|
currentPet.guardCaptain = null;
|
||||||
currentPet.setCombatTarget(null);
|
currentPet.setCombatTarget(null);
|
||||||
|
|
||||||
if (currentPet.isAlive())
|
if (currentPet.isAlive())
|
||||||
@@ -110,7 +111,7 @@ public class CreateMobPowerAction extends AbstractPowerAction {
|
|||||||
DbManager.removeFromCache(currentPet);
|
DbManager.removeFromCache(currentPet);
|
||||||
currentPet.setCombatTarget(null);
|
currentPet.setCombatTarget(null);
|
||||||
|
|
||||||
currentPet.setOwner(null);
|
currentPet.guardCaptain = null;
|
||||||
WorldGrid.RemoveWorldObject(currentPet);
|
WorldGrid.RemoveWorldObject(currentPet);
|
||||||
//currentPet.getParentZone().zoneMobSet.remove(currentPet);
|
//currentPet.getParentZone().zoneMobSet.remove(currentPet);
|
||||||
seaFloor.zoneMobSet.remove(currentPet);
|
seaFloor.zoneMobSet.remove(currentPet);
|
||||||
@@ -120,7 +121,8 @@ public class CreateMobPowerAction extends AbstractPowerAction {
|
|||||||
} else {
|
} else {
|
||||||
if (currentPet.isSiege()) {
|
if (currentPet.isSiege()) {
|
||||||
currentPet.agentType = Enum.AIAgentType.MOBILE;
|
currentPet.agentType = Enum.AIAgentType.MOBILE;
|
||||||
currentPet.setOwner(null);
|
|
||||||
|
currentPet.guardCaptain = null;
|
||||||
currentPet.setCombatTarget(null);
|
currentPet.setCombatTarget(null);
|
||||||
|
|
||||||
if (currentPet.isAlive())
|
if (currentPet.isAlive())
|
||||||
|
|||||||
Reference in New Issue
Block a user