allow 5th slot in r8 TOL + wall health upgrade for r8 trees
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
package engine.jobs;
|
package engine.jobs;
|
||||||
|
|
||||||
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.job.AbstractScheduleJob;
|
import engine.job.AbstractScheduleJob;
|
||||||
import engine.objects.Building;
|
import engine.objects.Building;
|
||||||
|
import engine.objects.City;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -41,6 +43,18 @@ public class UpgradeBuildingJob extends AbstractScheduleJob {
|
|||||||
|
|
||||||
rankingBuilding.setRank(rankingBuilding.getRank() + 1);
|
rankingBuilding.setRank(rankingBuilding.getRank() + 1);
|
||||||
|
|
||||||
|
if(rankingBuilding.getBlueprint().isWallPiece()){
|
||||||
|
City cityObject = ZoneManager.getCityAtLocation(rankingBuilding.loc);
|
||||||
|
if(cityObject.getTOL().getRank() == 8) {
|
||||||
|
if (rankingBuilding.getBlueprint() != null && rankingBuilding.getBlueprint().getBuildingGroup() != null && rankingBuilding.getBlueprint().isWallPiece()) {
|
||||||
|
float currentHealthRatio = rankingBuilding.getCurrentHitpoints() / rankingBuilding.healthMax;
|
||||||
|
float newMax = rankingBuilding.healthMax * 1.1f;
|
||||||
|
rankingBuilding.setMaxHitPoints(newMax);
|
||||||
|
rankingBuilding.setHealth(rankingBuilding.healthMax * currentHealthRatio);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Reload the object
|
// Reload the object
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1148,6 +1148,15 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
|
|||||||
wallPiece.setProtectionState(ProtectionState.PROTECTED);
|
wallPiece.setProtectionState(ProtectionState.PROTECTED);
|
||||||
PlaceAssetMsg.sendPlaceAssetConfirmWall(origin, serverZone);
|
PlaceAssetMsg.sendPlaceAssetConfirmWall(origin, serverZone);
|
||||||
|
|
||||||
|
//walls in R8 city are immediately granted extra HP by 10%
|
||||||
|
if(cityObject.getTOL().getRank() == 8) {
|
||||||
|
if (wallPiece.getBlueprint() != null && wallPiece.getBlueprint().getBuildingGroup() != null && wallPiece.getBlueprint().isWallPiece()) {
|
||||||
|
float currentHealthRatio = wallPiece.getCurrentHitpoints() / wallPiece.healthMax;
|
||||||
|
float newMax = wallPiece.healthMax * 1.1f;
|
||||||
|
wallPiece.setMaxHitPoints(newMax);
|
||||||
|
wallPiece.setHealth(wallPiece.healthMax * currentHealthRatio);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deduct gold from character's inventory
|
// Deduct gold from character's inventory
|
||||||
|
|||||||
@@ -166,8 +166,19 @@ public class Building extends AbstractWorldObject {
|
|||||||
if (this.blueprintUUID != 0)
|
if (this.blueprintUUID != 0)
|
||||||
this.meshUUID = blueprint.getMeshForRank(rank);
|
this.meshUUID = blueprint.getMeshForRank(rank);
|
||||||
|
|
||||||
this.healthMax = blueprint.getMaxHealth(this.rank);
|
if(this.getBlueprint() != null && this.getBlueprint().getBuildingGroup() != null && this.getBlueprint().isWallPiece()){
|
||||||
|
City cityObject = ZoneManager.getCityAtLocation(this.loc);
|
||||||
|
if(cityObject.getTOL().getRank() == 8) {
|
||||||
|
float currentHealthRatio = this.getCurrentHitpoints() / this.healthMax;
|
||||||
|
float newMax = this.healthMax * 1.1f;
|
||||||
|
this.setMaxHitPoints(newMax);
|
||||||
|
this.setHealth(this.healthMax * currentHealthRatio);
|
||||||
|
}else {
|
||||||
|
this.healthMax = blueprint.getMaxHealth(this.rank);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.healthMax = blueprint.getMaxHealth(this.rank);
|
||||||
|
}
|
||||||
// If this object has no blueprint but is a blueprint
|
// If this object has no blueprint but is a blueprint
|
||||||
// mesh then set it's current health to max health
|
// mesh then set it's current health to max health
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user