|
|
@ -172,7 +172,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
private int spamCount = 0; |
|
|
|
private int spamCount = 0; |
|
|
|
|
|
|
|
|
|
|
|
private boolean initialized = false; |
|
|
|
private boolean initialized = false; |
|
|
|
|
|
|
|
|
|
|
|
private boolean enteredWorld = false; |
|
|
|
private boolean enteredWorld = false; |
|
|
|
|
|
|
|
|
|
|
|
private boolean canBreathe = true; |
|
|
|
private boolean canBreathe = true; |
|
|
@ -191,7 +191,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
public double timeLoggedIn = 0; |
|
|
|
public double timeLoggedIn = 0; |
|
|
|
|
|
|
|
|
|
|
|
public boolean RUN_MAGICTREK = true; |
|
|
|
public boolean RUN_MAGICTREK = true; |
|
|
|
|
|
|
|
|
|
|
|
public int spellsCasted = 0; |
|
|
|
public int spellsCasted = 0; |
|
|
|
public int pingCount = 0; |
|
|
|
public int pingCount = 0; |
|
|
|
public long startPing = 0; |
|
|
|
public long startPing = 0; |
|
|
@ -199,14 +199,14 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
private boolean wasTripped75 = false; |
|
|
|
private boolean wasTripped75 = false; |
|
|
|
private boolean wasTripped50 = false; |
|
|
|
private boolean wasTripped50 = false; |
|
|
|
private boolean wasTripped25 = false; |
|
|
|
private boolean wasTripped25 = false; |
|
|
|
|
|
|
|
|
|
|
|
private float characterHeight = 0; |
|
|
|
private float characterHeight = 0; |
|
|
|
public float centerHeight = 0; |
|
|
|
public float centerHeight = 0; |
|
|
|
private boolean lastSwimming = false; |
|
|
|
private boolean lastSwimming = false; |
|
|
|
|
|
|
|
|
|
|
|
private boolean isTeleporting = false; |
|
|
|
private boolean isTeleporting = false; |
|
|
|
public float landingAltitude = 0; |
|
|
|
public float landingAltitude = 0; |
|
|
|
|
|
|
|
|
|
|
|
public int bindBuilding = 0; |
|
|
|
public int bindBuilding = 0; |
|
|
|
public FriendStatus friendStatus = FriendStatus.Available; |
|
|
|
public FriendStatus friendStatus = FriendStatus.Available; |
|
|
|
|
|
|
|
|
|
|
@ -338,11 +338,11 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void setInnerCouncil(boolean value) { |
|
|
|
public void setInnerCouncil(boolean value) { |
|
|
|
|
|
|
|
|
|
|
|
// dont update if its the same.
|
|
|
|
// dont update if its the same.
|
|
|
|
if (GuildStatusController.isInnerCouncil(this.guildStatus) == value) |
|
|
|
if (GuildStatusController.isInnerCouncil(this.guildStatus) == value) |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
DbManager.PlayerCharacterQueries.SET_INNERCOUNCIL(this, value); |
|
|
|
DbManager.PlayerCharacterQueries.SET_INNERCOUNCIL(this, value); |
|
|
|
GuildStatusController.setInnerCouncil(guildStatus, value); |
|
|
|
GuildStatusController.setInnerCouncil(guildStatus, value); |
|
|
|
} |
|
|
|
} |
|
|
@ -350,7 +350,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
public void setGuildLeader(boolean value) { |
|
|
|
public void setGuildLeader(boolean value) { |
|
|
|
if (GuildStatusController.isGuildLeader(this.guildStatus) == value) |
|
|
|
if (GuildStatusController.isGuildLeader(this.guildStatus) == value) |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
GuildStatusController.setGuildLeader(guildStatus, value); |
|
|
|
GuildStatusController.setGuildLeader(guildStatus, value); |
|
|
|
if (value == true){ |
|
|
|
if (value == true){ |
|
|
|
this.setInnerCouncil(true); |
|
|
|
this.setInnerCouncil(true); |
|
|
@ -620,19 +620,19 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
|
|
|
|
|
|
|
|
private void killCleanup() { |
|
|
|
private void killCleanup() { |
|
|
|
this.stopMovement(this.getLoc()); |
|
|
|
this.stopMovement(this.getLoc()); |
|
|
|
|
|
|
|
|
|
|
|
this.health.set(-1); |
|
|
|
this.health.set(-1); |
|
|
|
//remove pet
|
|
|
|
//remove pet
|
|
|
|
if (this.pet != null) |
|
|
|
if (this.pet != null) |
|
|
|
this.dismissPet(); |
|
|
|
this.dismissPet(); |
|
|
|
|
|
|
|
|
|
|
|
this.dismissNecroPets(); |
|
|
|
this.dismissNecroPets(); |
|
|
|
// remove flight job.
|
|
|
|
// remove flight job.
|
|
|
|
|
|
|
|
|
|
|
|
this.setTakeOffTime(0); |
|
|
|
this.setTakeOffTime(0); |
|
|
|
this.setDesiredAltitude(0); |
|
|
|
this.setDesiredAltitude(0); |
|
|
|
this.altitude = (float) 0; |
|
|
|
this.altitude = (float) 0; |
|
|
|
|
|
|
|
|
|
|
|
this.getCharItemManager().closeTradeWindow(); |
|
|
|
this.getCharItemManager().closeTradeWindow(); |
|
|
|
|
|
|
|
|
|
|
|
//increment live counter. This is to prevent double kills from casts
|
|
|
|
//increment live counter. This is to prevent double kills from casts
|
|
|
@ -653,10 +653,10 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
// sends a kill message to ensure the Player falls over.
|
|
|
|
// sends a kill message to ensure the Player falls over.
|
|
|
|
|
|
|
|
|
|
|
|
this.respawnLock.writeLock().lock(); |
|
|
|
this.respawnLock.writeLock().lock(); |
|
|
|
|
|
|
|
|
|
|
|
try{ |
|
|
|
try{ |
|
|
|
if (SessionManager.getPlayerCharacterByID(this.getObjectUUID()) == null && !this.enteredWorld){ |
|
|
|
if (SessionManager.getPlayerCharacterByID(this.getObjectUUID()) == null && !this.enteredWorld){ |
|
|
|
WorldGrid.RemoveWorldObject(this); |
|
|
|
WorldGrid.RemoveWorldObject(this); |
|
|
|
this.respawn(false, false,true); |
|
|
|
this.respawn(false, false,true); |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
|
TargetedActionMsg killmsg = new TargetedActionMsg(this, true); |
|
|
|
TargetedActionMsg killmsg = new TargetedActionMsg(this, true); |
|
|
@ -667,7 +667,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
}finally{ |
|
|
|
}finally{ |
|
|
|
this.respawnLock.writeLock().unlock(); |
|
|
|
this.respawnLock.writeLock().unlock(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// TODO damage equipped items
|
|
|
|
// TODO damage equipped items
|
|
|
|
if (this.charItemManager != null) |
|
|
|
if (this.charItemManager != null) |
|
|
|
this.charItemManager.damageAllGear(); |
|
|
|
this.charItemManager.damageAllGear(); |
|
|
@ -724,16 +724,16 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
|
|
|
|
|
|
|
|
// Recalculate everything
|
|
|
|
// Recalculate everything
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.recalculatePlayerStats(true); |
|
|
|
this.recalculatePlayerStats(true); |
|
|
|
this.setCombat(false); |
|
|
|
this.setCombat(false); |
|
|
|
|
|
|
|
|
|
|
|
// Set Health to 1/4 max
|
|
|
|
// Set Health to 1/4 max
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Corpse corpse = null; |
|
|
|
Corpse corpse = null; |
|
|
|
|
|
|
|
|
|
|
|
if (makeCorpse){ |
|
|
|
if (makeCorpse){ |
|
|
|
try { |
|
|
|
try { |
|
|
|
corpse = Corpse.makeCorpse(this, enterWorld); |
|
|
|
corpse = Corpse.makeCorpse(this, enterWorld); |
|
|
@ -742,7 +742,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
} |
|
|
|
} |
|
|
|
//if we're not making corpse, just purge inventory. used for characters dead while logged out.
|
|
|
|
//if we're not making corpse, just purge inventory. used for characters dead while logged out.
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!setAlive){ |
|
|
|
if (!setAlive){ |
|
|
|
if (corpse == null && makeCorpse) { |
|
|
|
if (corpse == null && makeCorpse) { |
|
|
|
Logger.error("Corpse not created."); |
|
|
|
Logger.error("Corpse not created."); |
|
|
@ -754,7 +754,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.setHealth((float) (healthMax * .25)); |
|
|
|
this.setHealth((float) (healthMax * .25)); |
|
|
|
this.isAlive.set(true); |
|
|
|
this.isAlive.set(true); |
|
|
|
|
|
|
|
|
|
|
@ -762,7 +762,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
// Put player in safe mode
|
|
|
|
// Put player in safe mode
|
|
|
|
// Teleport the player to his bind loc
|
|
|
|
// Teleport the player to his bind loc
|
|
|
|
// or to a ruin as apporpriate.
|
|
|
|
// or to a ruin as apporpriate.
|
|
|
|
|
|
|
|
|
|
|
|
Building bindBuilding = BuildingManager.getBuildingFromCache(this.getBindBuildingID()); |
|
|
|
Building bindBuilding = BuildingManager.getBuildingFromCache(this.getBindBuildingID()); |
|
|
|
|
|
|
|
|
|
|
|
if (enterWorld) { |
|
|
|
if (enterWorld) { |
|
|
@ -778,11 +778,11 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
|
|
|
|
|
|
|
|
this.lastUpdateTime = System.currentTimeMillis(); |
|
|
|
this.lastUpdateTime = System.currentTimeMillis(); |
|
|
|
this.lastStamUpdateTime = System.currentTimeMillis(); |
|
|
|
this.lastStamUpdateTime = System.currentTimeMillis(); |
|
|
|
|
|
|
|
|
|
|
|
this.update(); |
|
|
|
this.update(); |
|
|
|
|
|
|
|
|
|
|
|
PowersManager.applyPower(this, this, Vector3fImmutable.ZERO, -1661758934, 40, false); |
|
|
|
PowersManager.applyPower(this, this, Vector3fImmutable.ZERO, -1661758934, 40, false); |
|
|
|
|
|
|
|
|
|
|
|
if (corpse == null && makeCorpse) { |
|
|
|
if (corpse == null && makeCorpse) { |
|
|
|
Logger.error("Corpse not created."); |
|
|
|
Logger.error("Corpse not created."); |
|
|
|
} |
|
|
|
} |
|
|
@ -870,19 +870,19 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
|
|
|
|
|
|
|
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) |
|
|
|
if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) |
|
|
|
return Vector3fImmutable.ZERO; |
|
|
|
return Vector3fImmutable.ZERO; |
|
|
|
|
|
|
|
|
|
|
|
Building bindBuilding = PlayerCharacter.getUpdatedBindBuilding(this); |
|
|
|
Building bindBuilding = PlayerCharacter.getUpdatedBindBuilding(this); |
|
|
|
|
|
|
|
|
|
|
|
//handle rented room binds.
|
|
|
|
//handle rented room binds.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (bindBuilding == null){ |
|
|
|
if (bindBuilding == null){ |
|
|
|
bindLocation = Enum.Ruins.getRandomRuin().getLocation(); |
|
|
|
bindLocation = Enum.Ruins.getRandomRuin().getLocation(); |
|
|
|
return bindLocation; |
|
|
|
return bindLocation; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bindLocation = BuildingManager.GetBindLocationForBuilding(bindBuilding); |
|
|
|
bindLocation = BuildingManager.GetBindLocationForBuilding(bindBuilding); |
|
|
|
|
|
|
|
|
|
|
|
if (bindLocation == null) |
|
|
|
if (bindLocation == null) |
|
|
@ -916,14 +916,14 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
public boolean setPromotionClass(int value) { |
|
|
|
public boolean setPromotionClass(int value) { |
|
|
|
|
|
|
|
|
|
|
|
PromotionClass promotionClass = PromotionClass.GetPromtionClassFromCache(value); |
|
|
|
PromotionClass promotionClass = PromotionClass.GetPromtionClassFromCache(value); |
|
|
|
|
|
|
|
|
|
|
|
if (promotionClass == null) |
|
|
|
if (promotionClass == null) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!DbManager.PlayerCharacterQueries.SET_PROMOTION_CLASS(this, value)) |
|
|
|
if (!DbManager.PlayerCharacterQueries.SET_PROMOTION_CLASS(this, value)) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
this.promotionClass = promotionClass; |
|
|
|
this.promotionClass = promotionClass; |
|
|
|
|
|
|
|
|
|
|
|
// Warehouse this event
|
|
|
|
// Warehouse this event
|
|
|
@ -964,7 +964,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
return 2; |
|
|
|
return 2; |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public final void toggleLFGroup() { |
|
|
|
public final void toggleLFGroup() { |
|
|
|
this.lfGroup = !this.lfGroup; |
|
|
|
this.lfGroup = !this.lfGroup; |
|
|
@ -1302,7 +1302,6 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
this.calculateSkills(); |
|
|
|
this.calculateSkills(); |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public boolean refineSpi() { |
|
|
|
public boolean refineSpi() { |
|
|
|
boolean worked = false; |
|
|
|
boolean worked = false; |
|
|
|
short newSpi = (short) 0; |
|
|
|
short newSpi = (short) 0; |
|
|
@ -1357,6 +1356,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|