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 = "SidekickAchievement", value = SidekickAchievement.class),
|
||||||
@Type(name = "ScavengingAchievement", value = ScavengingAchievement.class),
|
@Type(name = "ScavengingAchievement", value = ScavengingAchievement.class),
|
||||||
@Type(name = "DiscoveryAchievement", value = DiscoveryAchievement.class),
|
@Type(name = "DiscoveryAchievement", value = DiscoveryAchievement.class),
|
||||||
|
@Type(name = "SpawnerStoppageAchievement", value = SpawnerStoppageAchievement.class),
|
||||||
@Type(name = "Journeyman", value = JourneymanAchievement.class)
|
@Type(name = "Journeyman", value = JourneymanAchievement.class)
|
||||||
})
|
})
|
||||||
@JsonSerialize(using = AchievementSerializer.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.RaiderAchievement;
|
||||||
import brainwine.gameserver.achievements.ScavengingAchievement;
|
import brainwine.gameserver.achievements.ScavengingAchievement;
|
||||||
import brainwine.gameserver.achievements.SidekickAchievement;
|
import brainwine.gameserver.achievements.SidekickAchievement;
|
||||||
|
import brainwine.gameserver.achievements.SpawnerStoppageAchievement;
|
||||||
import brainwine.gameserver.entity.EntityConfig;
|
import brainwine.gameserver.entity.EntityConfig;
|
||||||
import brainwine.gameserver.item.Item;
|
import brainwine.gameserver.item.Item;
|
||||||
|
|
||||||
|
@ -37,6 +38,7 @@ public class PlayerStatistics {
|
||||||
private int areasExplored;
|
private int areasExplored;
|
||||||
private int containersLooted;
|
private int containersLooted;
|
||||||
private int dungeonsRaided;
|
private int dungeonsRaided;
|
||||||
|
private int mawsPlugged;
|
||||||
private int deaths;
|
private int deaths;
|
||||||
|
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
|
@ -293,6 +295,20 @@ public class PlayerStatistics {
|
||||||
return dungeonsRaided;
|
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() {
|
public void trackDeath() {
|
||||||
deaths++;
|
deaths++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,9 @@ public class Item {
|
||||||
@JsonProperty("placeover")
|
@JsonProperty("placeover")
|
||||||
private boolean placeover;
|
private boolean placeover;
|
||||||
|
|
||||||
|
@JsonProperty("custom_place")
|
||||||
|
private boolean customPlace;
|
||||||
|
|
||||||
@JsonProperty("base")
|
@JsonProperty("base")
|
||||||
private boolean base;
|
private boolean base;
|
||||||
|
|
||||||
|
@ -311,6 +314,10 @@ public class Item {
|
||||||
return placeover;
|
return placeover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasCustomPlace() {
|
||||||
|
return customPlace;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isWhole() {
|
public boolean isWhole() {
|
||||||
return whole;
|
return whole;
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,33 @@ public class BlockPlaceRequest extends PlayerRequest {
|
||||||
player.getInventory().removeItem(item);
|
player.getInventory().removeItem(item);
|
||||||
player.getStatistics().trackItemPlaced();
|
player.getStatistics().trackItemPlaced();
|
||||||
player.trackPlacement(x, y, item);
|
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) {
|
private void fail(Player player, String reason) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue