mirror of
https://github.com/array-in-a-matrix/brainwine.git
synced 2025-04-02 11:11:58 -04:00
Implement maw plugging
This commit is contained in:
parent
3a2bdb5937
commit
ff5e199a75
5 changed files with 70 additions and 0 deletions
|
@ -27,6 +27,7 @@ import brainwine.gameserver.util.MathUtils;
|
|||
@Type(name = "SidekickAchievement", value = SidekickAchievement.class),
|
||||
@Type(name = "ScavengingAchievement", value = ScavengingAchievement.class),
|
||||
@Type(name = "DiscoveryAchievement", value = DiscoveryAchievement.class),
|
||||
@Type(name = "SpawnerStoppageAchievement", value = SpawnerStoppageAchievement.class),
|
||||
@Type(name = "Journeyman", value = JourneymanAchievement.class)
|
||||
})
|
||||
@JsonSerialize(using = AchievementSerializer.class)
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package brainwine.gameserver.achievements;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JacksonInject;
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
|
||||
import brainwine.gameserver.entity.player.Player;
|
||||
|
||||
public class SpawnerStoppageAchievement extends Achievement {
|
||||
|
||||
@JsonCreator
|
||||
public SpawnerStoppageAchievement(@JacksonInject("title") String title) {
|
||||
super(title);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getProgress(Player player) {
|
||||
return player.getStatistics().getMawsPlugged();
|
||||
}
|
||||
}
|
|
@ -20,6 +20,7 @@ import brainwine.gameserver.achievements.MiningAchievement;
|
|||
import brainwine.gameserver.achievements.RaiderAchievement;
|
||||
import brainwine.gameserver.achievements.ScavengingAchievement;
|
||||
import brainwine.gameserver.achievements.SidekickAchievement;
|
||||
import brainwine.gameserver.achievements.SpawnerStoppageAchievement;
|
||||
import brainwine.gameserver.entity.EntityConfig;
|
||||
import brainwine.gameserver.item.Item;
|
||||
|
||||
|
@ -37,6 +38,7 @@ public class PlayerStatistics {
|
|||
private int areasExplored;
|
||||
private int containersLooted;
|
||||
private int dungeonsRaided;
|
||||
private int mawsPlugged;
|
||||
private int deaths;
|
||||
|
||||
@JsonIgnore
|
||||
|
@ -293,6 +295,20 @@ public class PlayerStatistics {
|
|||
return dungeonsRaided;
|
||||
}
|
||||
|
||||
public void trackMawPlugged() {
|
||||
mawsPlugged++;
|
||||
player.addExperience(5);
|
||||
player.updateAchievementProgress(SpawnerStoppageAchievement.class);
|
||||
}
|
||||
|
||||
public void setMawsPlugged(int mawsPlugged) {
|
||||
this.mawsPlugged = mawsPlugged;
|
||||
}
|
||||
|
||||
public int getMawsPlugged() {
|
||||
return mawsPlugged;
|
||||
}
|
||||
|
||||
public void trackDeath() {
|
||||
deaths++;
|
||||
}
|
||||
|
|
|
@ -87,6 +87,9 @@ public class Item {
|
|||
@JsonProperty("placeover")
|
||||
private boolean placeover;
|
||||
|
||||
@JsonProperty("custom_place")
|
||||
private boolean customPlace;
|
||||
|
||||
@JsonProperty("base")
|
||||
private boolean base;
|
||||
|
||||
|
@ -311,6 +314,10 @@ public class Item {
|
|||
return placeover;
|
||||
}
|
||||
|
||||
public boolean hasCustomPlace() {
|
||||
return customPlace;
|
||||
}
|
||||
|
||||
public boolean isWhole() {
|
||||
return whole;
|
||||
}
|
||||
|
|
|
@ -87,6 +87,33 @@ public class BlockPlaceRequest extends PlayerRequest {
|
|||
player.getInventory().removeItem(item);
|
||||
player.getStatistics().trackItemPlaced();
|
||||
player.trackPlacement(x, y, item);
|
||||
|
||||
// Process custom place if applicable
|
||||
if(item.hasCustomPlace()) {
|
||||
processCustomPlace(player);
|
||||
}
|
||||
}
|
||||
|
||||
private void processCustomPlace(Player player) {
|
||||
Zone zone = player.getZone();
|
||||
|
||||
switch(item.getId()) {
|
||||
// See if we can plug a maw or pipe
|
||||
case "building/plug":
|
||||
Item baseItem = zone.getBlock(x, y).getBaseItem();
|
||||
String plugged = baseItem.hasId("base/maw") ? "base/maw-plugged"
|
||||
: baseItem.hasId("base/pipe") ? "base/pipe-plugged" : null;
|
||||
|
||||
if(plugged != null) {
|
||||
zone.updateBlock(x, y, Layer.FRONT, 0); // Remove the plug front block
|
||||
zone.updateBlock(x, y, Layer.BASE, plugged);
|
||||
player.getStatistics().trackMawPlugged();
|
||||
}
|
||||
|
||||
break;
|
||||
// No valid item; do nothing
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
private void fail(Player player, String reason) {
|
||||
|
|
Loading…
Add table
Reference in a new issue