Browse Source

can teleport to owned mines

lakebane-mine-tele
FatBoy-DOTC 3 months ago
parent
commit
0901c03b74
  1. 102
      src/engine/net/client/handlers/MerchantMsgHandler.java
  2. 48
      src/engine/objects/Mine.java

102
src/engine/net/client/handlers/MerchantMsgHandler.java

@ -274,60 +274,84 @@ public class MerchantMsgHandler extends AbstractClientMsgHandler {
} }
} }
if (targetCity == null) if (targetCity == null){
return; Mine mineTele = null;
for(Mine mine : Mine.getMinesToTeleportTo(player)){
//verify level required to teleport or repledge if(mine.getObjectUUID() == msg.getCityID()){
mineTele = mine;
}
}
if(mineTele == null){
return;
}else {
int time = MBServerStatics.TELEPORT_TIME_IN_SECONDS;
msg.setTeleportTime(time);
Building tower = Mine.getTower(mineTele);
if (tower == null)
return;
Vector3fImmutable teleportLoc = Vector3fImmutable.getRandomPointOnCircle(tower.getLoc(), 10);
if (time > 0) {
//TODO add timer to teleport
TeleportJob tj = new TeleportJob(player, npc, teleportLoc, origin, true);
JobScheduler.getInstance().scheduleJob(tj, time * 1000);
}
}
}else{
//finish porting to a city
//verify level required to teleport or repledge
Guild toGuild = targetCity.getGuild(); Guild toGuild = targetCity.getGuild();
if (toGuild != null) if (toGuild != null)
if (isTeleport) { if (isTeleport) {
if (player.getLevel() < toGuild.getTeleportMin() || player.getLevel() > toGuild.getTeleportMax()) if (player.getLevel() < toGuild.getTeleportMin() || player.getLevel() > toGuild.getTeleportMax())
return;
} else if (player.getLevel() < toGuild.getRepledgeMin() || player.getLevel() > toGuild.getRepledgeMax())
return; return;
} else if (player.getLevel() < toGuild.getRepledgeMin() || player.getLevel() > toGuild.getRepledgeMax())
return;
boolean joinedGuild = false; boolean joinedGuild = false;
//if repledge, reguild the player //if repledge, reguild the player
if (!isTeleport) if (!isTeleport)
joinedGuild = GuildManager.joinGuild(player, targetCity.getGuild(), targetCity.getObjectUUID(), GuildHistoryType.JOIN); joinedGuild = GuildManager.joinGuild(player, targetCity.getGuild(), targetCity.getObjectUUID(), GuildHistoryType.JOIN);
int time; int time;
if (!isTeleport) //repledge if (!isTeleport) //repledge
time = MBServerStatics.REPLEDGE_TIME_IN_SECONDS; time = MBServerStatics.REPLEDGE_TIME_IN_SECONDS;
else else
time = MBServerStatics.TELEPORT_TIME_IN_SECONDS; time = MBServerStatics.TELEPORT_TIME_IN_SECONDS;
//resend message //resend message
msg.setTeleportTime(time); msg.setTeleportTime(time);
if ((!isTeleport && joinedGuild) || (isTeleport)) { if ((!isTeleport && joinedGuild) || (isTeleport)) {
dispatch = Dispatch.borrow(player, msg); dispatch = Dispatch.borrow(player, msg);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
} }
//teleport player to city //teleport player to city
Vector3fImmutable teleportLoc; Vector3fImmutable teleportLoc;
if (targetCity.getTOL().getRank() == 8) if (targetCity.getTOL().getRank() == 8)
teleportLoc = targetCity.getTOL().getStuckLocation(); teleportLoc = targetCity.getTOL().getStuckLocation();
else else
teleportLoc = Vector3fImmutable.getRandomPointOnCircle(targetCity.getTOL().getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS); teleportLoc = Vector3fImmutable.getRandomPointOnCircle(targetCity.getTOL().getLoc(), MBServerStatics.TREE_TELEPORT_RADIUS);
if (time > 0) { if (time > 0) {
//TODO add timer to teleport //TODO add timer to teleport
TeleportJob tj = new TeleportJob(player, npc, teleportLoc, origin, true); TeleportJob tj = new TeleportJob(player, npc, teleportLoc, origin, true);
JobScheduler.getInstance().scheduleJob(tj, time * 1000); JobScheduler.getInstance().scheduleJob(tj, time * 1000);
} else if (joinedGuild) { } else if (joinedGuild) {
player.teleport(teleportLoc); player.teleport(teleportLoc);
player.setSafeMode(); player.setSafeMode();
}
} }
} }
private static PowersBase getPowerforHermit(NPC npc) { private static PowersBase getPowerforHermit(NPC npc) {

48
src/engine/objects/Mine.java

@ -673,8 +673,11 @@ public class Mine extends AbstractGameObject {
_playerMemory.removeAll(toRemove); _playerMemory.removeAll(toRemove);
} }
public static Building getTower(Mine mine){ public static Building getTower(Mine mine){
Building tower = BuildingManager.getBuildingFromCache(mine.buildingID);
return null; if(tower != null)
return tower;
else
return null;
} }
public static void serializeForClientMsgTeleport(Mine mine, ByteBufferWriter writer) { public static void serializeForClientMsgTeleport(Mine mine, ByteBufferWriter writer) {
AbstractCharacter guildRuler; AbstractCharacter guildRuler;
@ -685,17 +688,18 @@ public class Mine extends AbstractGameObject {
// Cities aren't a mine without a TOL. Time to early exit. // Cities aren't a mine without a TOL. Time to early exit.
// No need to spam the log here as non-existant TOL's are indicated // No need to spam the log here as non-existant TOL's are indicated
// during bootstrap routines. // during bootstrap routines.
Building tower = Mine.getTower(mine);
if (tower == null) {
if (Mine.getTower(mine) == null) { Logger.error("NULL TOWER FOR " + mine.zoneName + " mine");
return;
Logger.error("NULL TOL FOR " + mine.zoneName + " mine");
} }
// Assign mine owner // Assign mine owner
if (Mine.getTower(mine) != null && Mine.getTower(mine).getOwner() != null) if (tower.getOwner() != null)
guildRuler = Mine.getTower(mine).getOwner(); guildRuler = tower.getOwner();
else else
guildRuler = null; guildRuler = null;
@ -712,7 +716,7 @@ public class Mine extends AbstractGameObject {
// Begin Serialzing soverign guild data // Begin Serialzing soverign guild data
writer.putInt(mine.getObjectType().ordinal()); writer.putInt(mine.getObjectType().ordinal());
writer.putInt(mine.getObjectUUID()); writer.putInt(mine.getObjectUUID());
writer.putString(Mine.getTower(mine).getName()); writer.putString(mine.zoneName + " Mine");
writer.putInt(rulingGuild.getObjectType().ordinal()); writer.putInt(rulingGuild.getObjectType().ordinal());
writer.putInt(rulingGuild.getObjectUUID()); writer.putInt(rulingGuild.getObjectUUID());
@ -767,11 +771,8 @@ public class Mine extends AbstractGameObject {
else else
writer.putString(rulingNation.getName()); writer.putString(rulingNation.getName());
if(Mine.getTower(mine) != null) { writer.putInt(1);
writer.putInt(Mine.getTower(mine).getRank());
} else{
writer.putInt(1);
}
writer.putInt(0xFFFFFFFF); writer.putInt(0xFFFFFFFF);
writer.putInt(0); writer.putInt(0);
@ -781,20 +782,17 @@ public class Mine extends AbstractGameObject {
else else
writer.putString(Guild.GetGL(rulingNation).getFirstName() + ' ' + Guild.GetGL(rulingNation).getLastName()); writer.putString(Guild.GetGL(rulingNation).getFirstName() + ' ' + Guild.GetGL(rulingNation).getLastName());
writer.putLocalDateTime(LocalDateTime.now()); writer.putLocalDateTime(LocalDateTime.now());
// writer.put((byte) mine.established.getDayOfMonth()); if(tower != null) {
// writer.put((byte) mine.established.minusMonths(1).getMonth().getValue()); writer.putFloat(tower.loc.x);
// writer.putInt((int) years); writer.putFloat(tower.loc.y);
// writer.put((byte) hours); writer.putFloat(tower.loc.z);
// writer.put((byte) minutes); } else{
// writer.put((byte) seconds); writer.putFloat(0);
writer.putFloat(0);
writer.putFloat(Mine.getTower(mine).loc.x); writer.putFloat(0);
writer.putFloat(Mine.getTower(mine).loc.y); }
writer.putFloat(Mine.getTower(mine).loc.z);
writer.putInt(0); writer.putInt(0);
writer.put((byte) 1); writer.put((byte) 1);

Loading…
Cancel
Save