diff --git a/GameServer/src/org/moparscape/msc/gs/core/ClientUpdater.java b/GameServer/src/org/moparscape/msc/gs/core/ClientUpdater.java index a32b7a4..70a01c1 100644 --- a/GameServer/src/org/moparscape/msc/gs/core/ClientUpdater.java +++ b/GameServer/src/org/moparscape/msc/gs/core/ClientUpdater.java @@ -20,9 +20,8 @@ import org.moparscape.msc.gs.model.snapshot.Chatlog; import org.moparscape.msc.gs.tools.DataConversions; import org.moparscape.msc.gs.util.EntityList; import org.moparscape.msc.gs.util.Logger; -import org.moparscape.msc.gs.util.Processor; -public final class ClientUpdater implements Processor { +public final class ClientUpdater { public static int pktcount = 0; private static World world = Instance.getWorld(); diff --git a/GameServer/src/org/moparscape/msc/gs/model/Player.java b/GameServer/src/org/moparscape/msc/gs/model/Player.java index 00bc03b..2d4230d 100644 --- a/GameServer/src/org/moparscape/msc/gs/model/Player.java +++ b/GameServer/src/org/moparscape/msc/gs/model/Player.java @@ -532,6 +532,65 @@ public final class Player extends Mob { private int[] wornItems = new int[12]; private int wrongwords = 0; + private int poisonPower = 0; + private DelayedEvent poisonEvent; + + public boolean isPoisoned() { + return poisonPower > 0; + } + + public void poison(int power) { + if (!isPoisoned()) { + this.poisonPower = power; + poisonEvent = new DelayedEvent(this, 19500) { + public void run() { + damagePoison(true); + } + }; + World.getWorld().getDelayedEventHandler().add(poisonEvent); + } else + this.poisonPower = power; + } + + public void curePoison() { + this.poisonPower = 0; + if (poisonEvent != null) + poisonEvent.stop(); + } + + public void startPoison(int power) { + this.poison(power); + this.poisonPower = power; + + damagePoison(false); + } + + public void damagePoison(boolean decrease) { + if (this.poisonPower > 0) { + double calcDamage = Math.ceil(poisonPower / 5); + int damage = (int) calcDamage + 1; + + if (decrease) + poisonPower--; + + setLastDamage(damage); + setCurStat(3, getCurStat(3) - damage); + getActionSender().sendStat(3); + getActionSender().sendMessage( + "@gr3@You @gr2@are @gr1@Poisoned! @gr2@You @gr3@lose " + + damage + " @gr1@health."); + + for (Player p : getViewArea().getPlayersInView()) + p.informOfModifiedHits(this); + if (getCurStat(3) <= 0) + killedBy(null, false); + } else { + if (poisonEvent != null) + poisonEvent.stop(); + this.poisonPower = 0; + } + } + public Player(IoSession ios) { ioSession = ios; @@ -586,9 +645,11 @@ public final class Player extends Mob { /** * This method acts as a throttle for packets, and adds them to a list.
- * If the player sends more than 20 packets per second they're disconnected (60 packets per 3000ms) + * If the player sends more than 20 packets per second they're disconnected + * (60 packets per 3000ms) * - * @param p - the packet to add... + * @param p + * - the packet to add... */ public void addPacket(RSCPacket p) { long now = GameEngine.getTime(); @@ -660,13 +721,14 @@ public final class Player extends Mob { if (this != null && this.location != null && this.location.inWilderness()) { if (GameEngine.getTime() - this.getLastMoved() < Config.WILD_STAND_STILL_TIME) { - getActionSender() - .sendMessage( - "You must stand peacefully in one place for " + Config.WILD_STAND_STILL_TIME + " seconds!"); + getActionSender().sendMessage( + "You must stand peacefully in one place for " + + Config.WILD_STAND_STILL_TIME + " seconds!"); return false; } } - return !isBusy() && GameEngine.getTime() - getCombatTimer() > Config.WILD_STAND_STILL_TIME; + return !isBusy() + && GameEngine.getTime() - getCombatTimer() > Config.WILD_STAND_STILL_TIME; } public boolean canReport() { @@ -1618,7 +1680,8 @@ public final class Player extends Mob { if (getLocation().wildernessLevel() > 1) { if (combat) exprate += Config.WILD_COMBAT_BONUS; - if (getLocation().wildernessLevel() > Config.WILD_LEVEL_FOR_NON_COMBAT_BONUS && !combat) + if (getLocation().wildernessLevel() > Config.WILD_LEVEL_FOR_NON_COMBAT_BONUS + && !combat) exprate += Config.WILD_NON_COMBAT_BONUS; } diff --git a/GameServer/src/org/moparscape/msc/gs/util/Processor.java b/GameServer/src/org/moparscape/msc/gs/util/Processor.java deleted file mode 100644 index 23a1268..0000000 --- a/GameServer/src/org/moparscape/msc/gs/util/Processor.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.moparscape.msc.gs.util; - -import org.moparscape.msc.gs.model.Player; - -public interface Processor { - public void process(Player p); -}