Compare commits

...

10 Commits

3 changed files with 49 additions and 5 deletions
+5
View File
@@ -12,6 +12,9 @@ package engine.jobs;
import engine.job.AbstractScheduleJob; import engine.job.AbstractScheduleJob;
import engine.objects.PlayerCharacter; import engine.objects.PlayerCharacter;
import engine.server.world.WorldServer; import engine.server.world.WorldServer;
import org.pmw.tinylog.Logger;
public class LogoutCharacterJob extends AbstractScheduleJob { public class LogoutCharacterJob extends AbstractScheduleJob {
@@ -26,9 +29,11 @@ public class LogoutCharacterJob extends AbstractScheduleJob {
@Override @Override
protected void doJob() { protected void doJob() {
Logger.info("LogoutCharacterJob.doJob(): Logging out " + pc.getFirstName());
server.logoutCharacter(this.pc); server.logoutCharacter(this.pc);
} }
@Override @Override
protected void _cancelJob() { protected void _cancelJob() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
+7 -3
View File
@@ -215,13 +215,17 @@ public class ClientConnection extends AbstractConnection {
@Override @Override
public void disconnect() { public void disconnect() {
Logger.info("ClientConnection.disconnect() called");
super.disconnect(); super.disconnect();
try { try {
if (ConfigManager.serverType.equals(Enum.ServerType.WORLDSERVER)) {
if (ConfigManager.serverType.equals(Enum.ServerType.WORLDSERVER)) Logger.info("ClientConnection.disconnect(): Calling WorldServer.removeClient()");
ConfigManager.worldServer.removeClient(this); ConfigManager.worldServer.removeClient(this);
else } else {
Logger.info("ClientConnection.disconnect(): Calling LoginServer.removeClient()");
ConfigManager.loginServer.removeClient(this); ConfigManager.loginServer.removeClient(this);
}
// TODO There has to be a more direct way to do this... // TODO There has to be a more direct way to do this...
SessionManager.remSession( SessionManager.remSession(
+36 -1
View File
@@ -9,6 +9,7 @@
package engine.server.world; package engine.server.world;
import java.util.Iterator;
import engine.Enum; import engine.Enum;
import engine.Enum.BuildingGroup; import engine.Enum.BuildingGroup;
import engine.Enum.DispatchChannel; import engine.Enum.DispatchChannel;
@@ -664,7 +665,7 @@ public class WorldServer {
Mine.releaseMineClaims(playerCharacter); Mine.releaseMineClaims(playerCharacter);
// logout // logout
long delta = MBServerStatics.LOGOUT_TIMER_MS; long delta = 0;
if (System.currentTimeMillis() - playerCharacter.getTimeStamp("LastCombatPlayer") < 60000) { if (System.currentTimeMillis() - playerCharacter.getTimeStamp("LastCombatPlayer") < 60000) {
delta = 60000; delta = 60000;
@@ -686,6 +687,7 @@ public class WorldServer {
playerCharacter.getLoadedObjects().clear(); playerCharacter.getLoadedObjects().clear();
playerCharacter.getLoadedStaticObjects().clear(); playerCharacter.getLoadedStaticObjects().clear();
Logger.info("Scheduling LogoutCharacterJob for " + playerCharacter.getFirstName());
LogoutCharacterJob logoutJob = new LogoutCharacterJob(playerCharacter, this); LogoutCharacterJob logoutJob = new LogoutCharacterJob(playerCharacter, this);
JobContainer jc = JobScheduler.getInstance().scheduleJob(logoutJob, JobContainer jc = JobScheduler.getInstance().scheduleJob(logoutJob,
System.currentTimeMillis() + delta); System.currentTimeMillis() + delta);
@@ -704,6 +706,32 @@ public class WorldServer {
Logger.error("Unable to find PlayerCharacter to logout"); Logger.error("Unable to find PlayerCharacter to logout");
return; return;
} }
// DEBUG: Log all current effects on the player
Logger.info("=== EFFECTS ON LOGOUT for " + player.getFirstName() + " ===");
for (Effect e : player.getEffects().values()) {
Logger.info("Effect: " + e.getName());
}
Iterator<Effect> it = player.getEffects().values().iterator();
while (it.hasNext()) {
Effect effect = it.next();
String name = effect.getName();
if (name.equals("Blessing of Power") ||
name.equals("Blessing of Wisdom") ||
name.equals("Blessing of Fortune")) {
it.remove();
Logger.info("Removed effect " + name + " from " + player.getFirstName());
}
}
Logger.info("Realm run blessings removed from " + player.getFirstName());
//remove player from loaded mobs agro maps //remove player from loaded mobs agro maps
for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(player.getLoc(),MBServerStatics.CHARACTER_LOAD_RANGE,MBServerStatics.MASK_MOB)) { for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(player.getLoc(),MBServerStatics.CHARACTER_LOAD_RANGE,MBServerStatics.MASK_MOB)) {
Mob loadedMob = (Mob) awo; Mob loadedMob = (Mob) awo;
@@ -867,3 +895,10 @@ public class WorldServer {
} }
} }
public void init() {
Logger.info("WorldServer.init() called");
// Your original init logic should go here
// Or you can leave it empty for testing
}