Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.rs.game.player;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Date;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.concurrent.ConcurrentLinkedQueue;
- import java.util.concurrent.CopyOnWriteArrayList;
- import java.util.concurrent.TimeUnit;
- import com.rs.Settings;
- import com.rs.cores.CoresManager;
- import com.rs.game.Animation;
- import com.rs.game.Entity;
- import com.rs.game.ForceTalk;
- import com.rs.game.Graphics;
- import com.rs.game.Hit;
- import com.rs.game.Hit.HitLook;
- import com.rs.game.World;
- import com.rs.game.WorldObject;
- import com.rs.game.WorldTile;
- import com.rs.game.item.FloorItem;
- import com.rs.game.item.Item;
- import com.rs.game.minigames.ClanWars;
- import com.rs.game.minigames.CommenceWar;
- import com.rs.game.minigames.PestControl;
- import com.rs.game.minigames.War;
- import com.rs.game.npc.NPC;
- import com.rs.game.npc.familiar.Familiar;
- import com.rs.game.npc.godwars.zaros.Nex;
- import com.rs.game.player.actions.PlayerCombat;
- import com.rs.game.player.content.FriendChatsManager;
- import com.rs.game.player.content.Notes;
- import com.rs.game.player.content.Pots;
- import com.rs.game.player.content.SkillCapeCustomizer;
- import com.rs.game.player.content.Trade;
- import com.rs.game.player.controlers.CastleWarsPlaying;
- import com.rs.game.player.controlers.CastleWarsWaiting;
- import com.rs.game.player.controlers.CorpBeastControler;
- import com.rs.game.player.controlers.DTControler;
- import com.rs.game.player.controlers.Duelarena;
- import com.rs.game.player.controlers.GodWars;
- import com.rs.game.player.controlers.PestControler;
- import com.rs.game.player.controlers.PitsControler;
- import com.rs.game.player.controlers.TowersPkControler;
- import com.rs.game.player.controlers.Wilderness;
- import com.rs.game.player.controlers.ZGDControler;
- import com.rs.game.player.CutscenesManager;
- import com.rs.game.tasks.WorldTask;
- import com.rs.game.tasks.WorldTasksManager;
- import com.rs.net.Session;
- import com.rs.net.decoders.WorldPacketsDecoder;
- import com.rs.net.encoders.WorldPacketsEncoder;
- import com.rs.utils.Logger;
- import com.rs.utils.PkRank;
- import com.rs.utils.SerializableFilesManager;
- import com.rs.utils.Utils;
- public class Player extends Entity {
- public static final int TELE_MOVE_TYPE = 127, WALK_MOVE_TYPE = 1,
- RUN_MOVE_TYPE = 2;
- private static final long serialVersionUID = 2011932556974180375L;
- // transient stuff
- private transient Trade trade;
- private transient ClanWars clanWars;
- private transient PestControl pestControl;
- private transient String username;
- private transient Session session;
- private transient boolean clientLoadedMapRegion;
- private transient int displayMode;
- private transient int screenWidth;
- private transient boolean usingTicket;
- private transient int trapAmount;
- private transient int screenHeight;
- private transient InterfaceManager interfaceManager;
- private transient DialogueManager dialogueManager;
- private transient HintIconsManager hintIconsManager;
- private transient ActionManager actionManager;
- private transient CutscenesManager cutscenesManager;
- private transient DuelConfigurations duelConfigurations;
- private transient PriceCheckManager priceCheckManager;
- private transient CoordsEvent coordsEvent;
- private transient FriendChatsManager currentFriendChat;
- // used for packets logic
- private transient ConcurrentLinkedQueue<LogicPacket> logicPackets;
- // used for update
- private transient LocalPlayerUpdate localPlayerUpdate;
- private transient LocalNPCUpdate localNPCUpdate;
- private int temporaryMovementType;
- private boolean updateMovementType;
- // player stages
- private transient boolean started;
- private transient boolean running;
- private transient long packetsDecoderPing;
- private transient boolean resting;
- private transient boolean canPvp;
- private transient long stopDelay; // used for doors and stuff like that
- private transient long foodDelay;
- private transient long potDelay;
- private transient long boneDelay;
- private transient Runnable closeInterfacesEvent;
- private transient long lastPublicMessage;
- private transient long polDelay;
- private transient Runnable interfaceListenerEvent;// used for static
- private transient List<Integer> switchItemCache;
- private transient boolean disableEquip;
- // interface
- // saving stuff
- private String password;
- private int rights;
- private String displayName;
- private String lastIP;
- private Appearence appearence;
- private Inventory inventory;
- private Equipment equipment;
- private Skills skills;
- private CombatDefinitions combatDefinitions;
- private Prayer prayer;
- private Bank bank;
- private ControlerManager controlerManager;
- private MusicsManager musicsManager;
- private EmotesManager emotesManager;
- private FriendsIgnores friendsIgnores;
- private DominionTower dominionTower;
- private Familiar familiar;
- private AuraManager auraManager;
- private byte runEnergy;
- private boolean allowChatEffects;
- private boolean mouseButtons;
- private int privateChatSetup;
- private int skullDelay;
- private int skullId;
- private boolean forceNextMapLoadRefresh;
- private long poisonImmune;
- private long fireImmune;
- private int lastVeng;
- private boolean castedVeng;
- private int[] pouches;
- private long displayTime;
- private long muted;
- private long jailed;
- private long banned;
- private boolean permBanned;
- private boolean filterGame;
- private boolean donator;
- private long donatorTill;
- //Recovery ques. & ans.
- private String recovQuestion;
- private String recovAnswer;
- // honor
- private int killCount, deathCount;
- private ChargesManager charges;
- // barrows
- private boolean[] killedBarrowBrothers;
- private int hiddenBrother;
- private int barrowsKillCount;
- private int pestPoints;
- // skill capes customizing
- private int[] maxedCapeCustomized;
- private int[] completionistCapeCustomized;
- private int overloadDelay;
- private String currentFriendChatOwner;
- private int summoningLeftClickOption;
- private List<String> ownedObjectsManagerKeys;
- public void init(Session session, String string) {
- //isinLobby = true;
- //if (dominionTower == null)
- //dominionTower = new DominionTower();
- username = string;
- this.session = session;
- //packetsDecoderPing = System.currentTimeMillis();
- //World.addPlayer(this);
- //World.updateEntityRegion(this);
- if (Settings.DEBUG)
- Logger.log(this, new StringBuilder("Inited Player: ").append
- (string).append
- (", pass: ").append
- (password).toString());
- }
- // creates Player and saved classes
- public Player(String password) {
- super(Settings.START_PLAYER_LOCATION);
- setHitpoints(Settings.START_PLAYER_HITPOINTS);
- this.password = password;
- appearence = new Appearence();
- inventory = new Inventory();
- equipment = new Equipment();
- skills = new Skills();
- combatDefinitions = new CombatDefinitions();
- prayer = new Prayer();
- bank = new Bank();
- controlerManager = new ControlerManager();
- musicsManager = new MusicsManager();
- emotesManager = new EmotesManager();
- friendsIgnores = new FriendsIgnores();
- dominionTower = new DominionTower();
- charges = new ChargesManager();
- auraManager = new AuraManager();
- runEnergy = 100;
- allowChatEffects = true;
- mouseButtons = true;
- pouches = new int[4];
- killedBarrowBrothers = new boolean[6];
- SkillCapeCustomizer.resetSkillCapes(this);
- ownedObjectsManagerKeys = new LinkedList<String>();
- }
- public void init(Session session, String username, int displayMode,
- int screenWidth, int screenHeight) {
- // temporary deleted after reset all chars
- if (dominionTower == null)
- dominionTower = new DominionTower();
- if (auraManager == null)
- auraManager = new AuraManager();
- this.session = session;
- this.username = username;
- this.displayMode = displayMode;
- this.screenWidth = screenWidth;
- this.screenHeight = screenHeight;
- interfaceManager = new InterfaceManager(this);
- dialogueManager = new DialogueManager(this);
- hintIconsManager = new HintIconsManager(this);
- priceCheckManager = new PriceCheckManager(this);
- localPlayerUpdate = new LocalPlayerUpdate(this);
- localNPCUpdate = new LocalNPCUpdate(this);
- actionManager = new ActionManager(this);
- cutscenesManager = new CutscenesManager(this);
- // loads player on saved instances
- appearence.setPlayer(this);
- inventory.setPlayer(this);
- equipment.setPlayer(this);
- skills.setPlayer(this);
- combatDefinitions.setPlayer(this);
- prayer.setPlayer(this);
- bank.setPlayer(this);
- controlerManager.setPlayer(this);
- musicsManager.setPlayer(this);
- emotesManager.setPlayer(this);
- friendsIgnores.setPlayer(this);
- dominionTower.setPlayer(this);
- auraManager.setPlayer(this);
- charges.setPlayer(this);
- setDirection(Utils.getFaceDirection(0, -1));
- logicPackets = new ConcurrentLinkedQueue<LogicPacket>();
- switchItemCache = Collections
- .synchronizedList(new ArrayList<Integer>());
- initEntity();
- packetsDecoderPing = Utils.currentTimeMillis();
- // inited so lets add it
- World.addPlayer(this);
- World.updateEntityRegion(this);
- if (Settings.DEBUG)
- Logger.log(this, "Inited Player: " + username + ", pass: "
- + password);
- }
- public void setWildernessSkull() {
- skullDelay = 3000; // 30minutes
- skullId = 0;
- appearence.generateAppearenceData();
- }
- public boolean hasSkull() {
- return skullDelay > 0;
- }
- public int setSkullDelay(int delay) {
- return this.skullDelay = delay;
- }
- public void refreshSpawnedItems() {
- for (int regionId : getMapRegionsIds()) {
- List<FloorItem> floorItems = World.getRegion(regionId)
- .getFloorItems();
- if (floorItems == null)
- continue;
- for (FloorItem item : floorItems) {
- if ((item.isInvisible() || item.isGrave())
- && this != item.getOwner()
- || item.getTile().getPlane() != getPlane())
- continue;
- getPackets().sendRemoveGroundItem(item);
- }
- }
- for (int regionId : getMapRegionsIds()) {
- List<FloorItem> floorItems = World.getRegion(regionId)
- .getFloorItems();
- if (floorItems == null)
- continue;
- for (FloorItem item : floorItems) {
- if ((item.isInvisible() || item.isGrave())
- && this != item.getOwner()
- || item.getTile().getPlane() != getPlane())
- continue;
- getPackets().sendGroundItem(item);
- }
- }
- }
- public void refreshSpawnedObjects() {
- for (int regionId : getMapRegionsIds()) {
- List<WorldObject> spawnedObjects = World.getRegion(regionId)
- .getSpawnedObjects();
- if (spawnedObjects != null) {
- for (WorldObject object : spawnedObjects)
- if (object.getPlane() == getPlane())
- getPackets().sendSpawnedObject(object);
- }
- List<WorldObject> removedObjects = World.getRegion(regionId)
- .getRemovedObjects();
- if (removedObjects != null) {
- for (WorldObject object : removedObjects)
- if (object.getPlane() == getPlane())
- getPackets().sendDestroyObject(object);
- }
- }
- }
- // now that we inited we can start showing game
- public void start() {
- loadMapRegions();
- started = true;
- run();
- if (isDead())
- sendDeath(null);
- }
- public void stopAll() {
- stopAll(true);
- }
- public void stopAll(boolean stopWalk) {
- stopAll(stopWalk, true);
- }
- // as walk done clientsided
- public void stopAll(boolean stopWalk, boolean stopInterfaces) {
- coordsEvent = null;
- if (stopInterfaces)
- closeInterfaces();
- if (stopWalk)
- resetWalkSteps();
- actionManager.forceStop();
- combatDefinitions.resetSpells(false);
- }
- @Override
- public void reset() {
- super.reset();
- refreshHitPoints();
- hintIconsManager.removeAll();
- skills.restoreSkills();
- combatDefinitions.resetSpecialAttack();
- prayer.reset();
- combatDefinitions.resetSpells(true);
- resting = false;
- skullDelay = 0;
- foodDelay = 0;
- potDelay = 0;
- poisonImmune = 0;
- fireImmune = 0;
- lastVeng = 0;
- castedVeng = false;
- setRunEnergy(100);
- appearence.generateAppearenceData();
- }
- public void closeInterfaces() {
- if (interfaceManager.containsScreenInter())
- interfaceManager.closeScreenInterface();
- if (interfaceManager.containsInventoryInter())
- interfaceManager.closeInventoryInterface();
- dialogueManager.finishDialogue();
- if (closeInterfacesEvent != null) {
- closeInterfacesEvent.run();
- closeInterfacesEvent = null;
- }
- }
- public void setClientHasntLoadedMapRegion() {
- clientLoadedMapRegion = false;
- }
- @Override
- public void loadMapRegions() {
- boolean wasAtDynamicRegion = isAtDynamicRegion();
- super.loadMapRegions();
- clientLoadedMapRegion = false;
- if (!started) {
- if (isAtDynamicRegion()) {
- getPackets().sendMapRegion(!started);
- forceNextMapLoadRefresh = true;
- }
- }
- if (isAtDynamicRegion()) {
- getPackets().sendDynamicMapRegion(wasAtDynamicRegion);
- if (!wasAtDynamicRegion)
- localNPCUpdate.reset();
- } else {
- getPackets().sendMapRegion(!started);
- if (wasAtDynamicRegion)
- localNPCUpdate.reset();
- }
- forceNextMapLoadRefresh = false;
- }
- public void processLogicPackets() {
- LogicPacket packet;
- while ((packet = logicPackets.poll()) != null)
- WorldPacketsDecoder.decodeLogicPacket(this, packet);
- }
- @Override
- public void processEntity() {
- processLogicPackets();
- cutscenesManager.process();
- super.processEntity();
- if (musicsManager.musicEnded())
- musicsManager.replayMusic();
- if (hasSkull()) {
- skullDelay--;
- if (!hasSkull())
- appearence.generateAppearenceData();
- }
- if (polDelay == 1)
- getPackets()
- .sendGameMessage(
- "The power of the light fades. Your resistance to melee attacks return to normal.");
- if (overloadDelay > 0) {
- if (overloadDelay == 1 || isDead()) {
- Pots.resetOverLoadEffect(this);
- return;
- } else if ((overloadDelay - 1) % 25 == 0)
- Pots.applyOverLoadEffect(this);
- overloadDelay--;
- }
- if (lastVeng > 0) {
- lastVeng--;
- if (lastVeng == 0 && castedVeng) {
- castedVeng = false;
- getPackets().sendGameMessage("Your vengeance has faded.");
- }
- }
- charges.process();
- auraManager.process();
- if (coordsEvent != null && coordsEvent.processEvent(this))
- coordsEvent = null;
- actionManager.process();
- prayer.processPrayer();
- controlerManager.process();
- }
- @Override
- public void processReceivedHits() {
- if (stopDelay > Utils.currentTimeMillis())
- return;
- super.processReceivedHits();
- }
- @Override
- public boolean needMasksUpdate() {
- return super.needMasksUpdate() || temporaryMovementType != 0
- || updateMovementType;
- }
- @Override
- public void resetMasks() {
- super.resetMasks();
- temporaryMovementType = 0;
- updateMovementType = false;
- if (!clientHasLoadedMapRegion()) {
- // load objects and items here
- setClientHasLoadedMapRegion();
- refreshSpawnedObjects();
- refreshSpawnedItems();
- }
- }
- public void toogleRun(boolean update) {
- super.setRun(!getRun());
- updateMovementType = true;
- if (update)
- sendRunButtonConfig();
- }
- public void setRunHidden(boolean run) {
- super.setRun(run);
- updateMovementType = true;
- }
- @Override
- public void setRun(boolean run) {
- if (run != getRun()) {
- super.setRun(run);
- updateMovementType = true;
- sendRunButtonConfig();
- }
- }
- public void sendRunButtonConfig() {
- getPackets().sendConfig(173, resting ? 3 : getRun() ? 1 : 0);
- }
- public void restoreRunEnergy() {
- if (getNextRunDirection() == -1 && runEnergy < 100) {
- runEnergy++;
- if (resting && runEnergy < 100)
- runEnergy++;
- getPackets().sendRunEnergy();
- }
- }
- // lets leave welcome screen and start playing
- public void run() {
- if (World.exiting_start != 0) {
- int delayPassed = (int) ((Utils.currentTimeMillis() - World.exiting_start) / 1000);
- getPackets().sendSystemUpdate(World.exiting_delay - delayPassed);
- }
- lastIP = getSession().getIP();
- interfaceManager.sendInterfaces();
- getPackets().sendRunEnergy();
- refreshAllowChatEffects();
- refreshMouseButtons();
- refreshPrivateChatSetup();
- sendRunButtonConfig();
- getPackets()
- .sendGameMessage("Welcome to " + Settings.SERVER_NAME + ".");
- if (donator || donatorTill != 0) {
- if (!donator && donatorTill < Utils.currentTimeMillis())
- getPackets().sendGameMessage("Your donator rank expired.");
- else
- getPackets().sendGameMessage(
- "Your donator rank expires " + getDonatorTill());
- }
- sendDefaultPlayersOptions();
- checkMultiArea();
- inventory.init();
- equipment.init();
- skills.init();
- combatDefinitions.init();
- prayer.init();
- friendsIgnores.init();
- Notes.sendUnlockNotes(this);
- refreshHitPoints();
- prayer.refreshPrayerPoints();
- getPoison().refresh();
- getPackets().sendConfig(281, 1000); // unlock can't do this on tutorial
- getPackets().sendConfig(1160, -1); // unlock summoning orb
- getPackets().sendGameBarStages();
- musicsManager.init();
- emotesManager.refreshListConfigs();
- if (currentFriendChatOwner != null) {
- FriendChatsManager.joinChat(currentFriendChatOwner, this);
- if (currentFriendChat == null) // failed
- currentFriendChatOwner = null;
- // clanWars = new ClanWars();
- }
- if (familiar != null)
- familiar.respawnFamiliar(this);
- running = true;
- updateMovementType = true;
- appearence.generateAppearenceData();
- controlerManager.login(); // checks what to do on login after welcome
- OwnedObjectManager.linkKeys(this);
- // screen
- }
- public void sendDefaultPlayersOptions() {
- getPackets().sendPlayerOption("Follow", 2, false);
- getPackets().sendPlayerOption("Trade with", 3, false);
- getPackets().sendPlayerOption("Req Assist", 4, false);
- }
- @Override
- public void checkMultiArea() {
- if (!started)
- return;
- boolean isAtMultiArea = isForceMultiArea() ? true : World
- .isMultiArea(this);
- if (isAtMultiArea && !isAtMultiArea()) {
- setAtMultiArea(isAtMultiArea);
- getPackets().sendGlobalConfig(616, 1);
- } else if (!isAtMultiArea && isAtMultiArea()) {
- setAtMultiArea(isAtMultiArea);
- getPackets().sendGlobalConfig(616, 0);
- }
- }
- public void logout() {
- if (!running)
- return;
- long currentTime = Utils.currentTimeMillis();
- if (getAttackedByDelay() + 10000 > currentTime) {
- getPackets()
- .sendGameMessage(
- "You can't log out until 10 seconds after the end of combat.");
- return;
- }
- if (getEmotesManager().getNextEmoteEnd() >= currentTime) {
- getPackets().sendGameMessage(
- "You can't log out while perfoming an emote.");
- return;
- }
- if (stopDelay >= currentTime) {
- getPackets().sendGameMessage(
- "You can't log out while perfoming an action.");
- return;
- }
- getPackets().sendLogout();
- running = false;
- }
- private transient boolean finishing;
- private Player tradePartner;
- private Trade tradeSession;
- @Override
- public void finish() {
- if (finishing || hasFinished())
- return;
- finishing = true;
- long currentTime = Utils.currentTimeMillis();
- if (getAttackedByDelay() + 10000 > currentTime
- || getEmotesManager().getNextEmoteEnd() >= currentTime
- || stopDelay >= currentTime) {
- CoresManager.slowExecutor.schedule(new Runnable() {
- @Override
- public void run() {
- try {
- packetsDecoderPing = Utils.currentTimeMillis();
- finishing = false;
- finish();
- } catch (Throwable e) {
- Logger.handle(e);
- }
- }
- }, 10, TimeUnit.SECONDS);
- return;
- }
- realFinish();
- }
- public void realFinish() {
- if (hasFinished())
- return;
- cutscenesManager.logout();
- controlerManager.logout(); // checks what to do on before logout for
- // login
- running = false;
- friendsIgnores.sendFriendsMyStatus(false);
- if (currentFriendChat != null)
- currentFriendChat.leaveChat(this, true);
- if (familiar != null)
- familiar.dissmissFamiliar(true);
- setFinished(true);
- session.setDecoder(-1);
- SerializableFilesManager.savePlayer(this);
- World.updateEntityRegion(this);
- World.removePlayer(this);
- if (Settings.DEBUG)
- Logger.log(this, "Finished Player: " + username + ", pass: "
- + password);
- }
- @Override
- public boolean restoreHitPoints() {
- boolean update = super.restoreHitPoints();
- if (update) {
- if (prayer.usingPrayer(0, 9))
- super.restoreHitPoints();
- if (resting)
- super.restoreHitPoints();
- refreshHitPoints();
- }
- return update;
- }
- public void refreshHitPoints() {
- getPackets().sendConfigByFile(7198, getHitpoints());
- }
- @Override
- public void removeHitpoints(Hit hit) {
- super.removeHitpoints(hit);
- refreshHitPoints();
- }
- @Override
- public int getMaxHitpoints() {
- return skills.getLevel(Skills.HITPOINTS) * 10
- + equipment.getEquipmentHpIncrease();
- }
- public String getUsername() {
- return username;
- }
- public String getPassword() {
- return password;
- }
- public void setRights(int rights) {
- this.rights = rights;
- }
- public int getRights() {
- return rights;
- }
- public WorldPacketsEncoder getPackets() {
- return session.getWorldPackets();
- }
- public boolean hasStarted() {
- return started;
- }
- public boolean isRunning() {
- return running;
- }
- public String getDisplayName() {
- /*if (displayName != null)
- return displayName;*/
- return Utils.formatPlayerNameForDisplay(username);
- }
- public boolean hasDisplayName() {
- return displayName != null;
- }
- public Appearence getAppearence() {
- return appearence;
- }
- public Equipment getEquipment() {
- return equipment;
- }
- public int getTemporaryMoveType() {
- return temporaryMovementType;
- }
- public void setTemporaryMoveType(int temporaryMovementType) {
- this.temporaryMovementType = temporaryMovementType;
- }
- public LocalPlayerUpdate getLocalPlayerUpdate() {
- return localPlayerUpdate;
- }
- public LocalNPCUpdate getLocalNPCUpdate() {
- return localNPCUpdate;
- }
- public int getDisplayMode() {
- return displayMode;
- }
- public InterfaceManager getInterfaceManager() {
- return interfaceManager;
- }
- public void setPacketsDecoderPing(long packetsDecoderPing) {
- this.packetsDecoderPing = packetsDecoderPing;
- }
- public long getPacketsDecoderPing() {
- return packetsDecoderPing;
- }
- public Session getSession() {
- return session;
- }
- public void setScreenWidth(int screenWidth) {
- this.screenWidth = screenWidth;
- }
- public int getScreenWidth() {
- return screenWidth;
- }
- public void setScreenHeight(int screenHeight) {
- this.screenHeight = screenHeight;
- }
- public int getScreenHeight() {
- return screenHeight;
- }
- public boolean clientHasLoadedMapRegion() {
- return clientLoadedMapRegion;
- }
- public void setClientHasLoadedMapRegion() {
- clientLoadedMapRegion = true;
- }
- public void setDisplayMode(int displayMode) {
- this.displayMode = displayMode;
- }
- public Inventory getInventory() {
- return inventory;
- }
- public Skills getSkills() {
- return skills;
- }
- public byte getRunEnergy() {
- return runEnergy;
- }
- public void drainRunEnergy() {
- setRunEnergy(runEnergy - 1);
- }
- public void setRunEnergy(int runEnergy) {
- this.runEnergy = (byte) runEnergy;
- getPackets().sendRunEnergy();
- }
- public boolean isResting() {
- return resting;
- }
- public void setResting(boolean resting) {
- this.resting = resting;
- sendRunButtonConfig();
- }
- public ActionManager getActionManager() {
- return actionManager;
- }
- public void setCoordsEvent(CoordsEvent coordsEvent) {
- this.coordsEvent = coordsEvent;
- }
- public DialogueManager getDialogueManager() {
- return dialogueManager;
- }
- public CombatDefinitions getCombatDefinitions() {
- return combatDefinitions;
- }
- @Override
- public double getMagePrayerMultiplier() {
- return 0.6;
- }
- @Override
- public double getRangePrayerMultiplier() {
- return 0.6;
- }
- @Override
- public double getMeleePrayerMultiplier() {
- return 0.6;
- }
- public void sendSoulSplit(final Hit hit, final Entity user) {
- final Player target = this;
- if (hit.getDamage() > 0)
- World.sendProjectile(user, this, 2263, 11, 11, 20, 5, 0, 0);
- user.heal(hit.getDamage() / 5);
- prayer.drainPrayer(hit.getDamage() / 5);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2264));
- if (hit.getDamage() > 0)
- World.sendProjectile(target, user, 2263, 11, 11, 20, 5, 0,
- 0);
- }
- }, 1);
- }
- @Override
- public void handleIngoingHit(final Hit hit) {
- if (hit.getLook() != HitLook.MELEE_DAMAGE
- && hit.getLook() != HitLook.RANGE_DAMAGE
- && hit.getLook() != HitLook.MAGIC_DAMAGE)
- return;
- if (auraManager.usingPenance()) {
- int amount = (int) (hit.getDamage() * 0.2);
- if (amount > 0)
- prayer.restorePrayer(amount);
- }
- Entity source = hit.getSource();
- if (source == null)
- return;
- int shieldId = equipment.getShieldId();
- if (shieldId == 13742) { // elsyian
- if (Utils.getRandom(100) <= 70)
- hit.setDamage((int) (hit.getDamage() * 0.75));
- } else if (shieldId == 13740) { // divine
- int drain = (int) (Math.ceil(hit.getDamage() * 0.3) / 2);
- if (prayer.getPrayerpoints() >= drain) {
- hit.setDamage((int) (hit.getDamage() * 0.70));
- prayer.drainPrayer(drain);
- }
- }
- if (polDelay > Utils.currentTimeMillis())
- hit.setDamage((int) (hit.getDamage() * 0.5));
- if (prayer.hasPrayersOn() && hit.getDamage() != 0) {
- if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
- if (prayer.usingPrayer(0, 17))
- hit.setDamage((int) (hit.getDamage() * source
- .getMagePrayerMultiplier()));
- else if (prayer.usingPrayer(1, 7)) {
- int deflectedDamage = source instanceof Nex ? 0
- : (int) (hit.getDamage() * 0.1);
- hit.setDamage((int) (hit.getDamage() * source
- .getMagePrayerMultiplier()));
- if (deflectedDamage > 0) {
- source.applyHit(new Hit(this, deflectedDamage,
- HitLook.REFLECTED_DAMAGE));
- setNextGraphics(new Graphics(2228));
- setNextAnimation(new Animation(12573));
- }
- }
- } else if (hit.getLook() == HitLook.RANGE_DAMAGE) {
- if (prayer.usingPrayer(0, 18))
- hit.setDamage((int) (hit.getDamage() * source
- .getRangePrayerMultiplier()));
- else if (prayer.usingPrayer(1, 8)) {
- int deflectedDamage = source instanceof Nex ? 0
- : (int) (hit.getDamage() * 0.1);
- hit.setDamage((int) (hit.getDamage() * source
- .getRangePrayerMultiplier()));
- if (deflectedDamage > 0) {
- source.applyHit(new Hit(this, deflectedDamage,
- HitLook.REFLECTED_DAMAGE));
- setNextGraphics(new Graphics(2229));
- setNextAnimation(new Animation(12573));
- }
- }
- } else if (hit.getLook() == HitLook.MELEE_DAMAGE) {
- if (prayer.usingPrayer(0, 19))
- hit.setDamage((int) (hit.getDamage() * source
- .getMeleePrayerMultiplier()));
- else if (prayer.usingPrayer(1, 9)) {
- int deflectedDamage = source instanceof Nex ? 0
- : (int) (hit.getDamage() * 0.1);
- hit.setDamage((int) (hit.getDamage() * source
- .getMeleePrayerMultiplier()));
- if (deflectedDamage > 0) {
- source.applyHit(new Hit(this, deflectedDamage,
- HitLook.REFLECTED_DAMAGE));
- setNextGraphics(new Graphics(2230));
- setNextAnimation(new Animation(12573));
- }
- }
- }
- }
- if (hit.getDamage() >= 200) {
- if (hit.getLook() == HitLook.MELEE_DAMAGE) {
- int reducedDamage = hit.getDamage()
- * combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_MELEE_BONUS]
- / 100;
- if (reducedDamage > 0) {
- hit.setDamage(hit.getDamage() - reducedDamage);
- hit.setSoaking(new Hit(source, reducedDamage,
- HitLook.ABSORB_DAMAGE));
- }
- } else if (hit.getLook() == HitLook.RANGE_DAMAGE) {
- int reducedDamage = hit.getDamage()
- * combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_RANGE_BONUS]
- / 100;
- if (reducedDamage > 0) {
- hit.setDamage(hit.getDamage() - reducedDamage);
- hit.setSoaking(new Hit(source, reducedDamage,
- HitLook.ABSORB_DAMAGE));
- }
- } else if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
- int reducedDamage = hit.getDamage()
- * combatDefinitions.getBonuses()[CombatDefinitions.ABSORVE_MAGE_BONUS]
- / 100;
- if (reducedDamage > 0) {
- hit.setDamage(hit.getDamage() - reducedDamage);
- hit.setSoaking(new Hit(source, reducedDamage,
- HitLook.ABSORB_DAMAGE));
- }
- }
- }
- if (castedVeng && hit.getDamage() >= 4) {
- castedVeng = false;
- setNextForceTalk(new ForceTalk("Taste vengeance!"));
- source.applyHit(new Hit(this, (int) (hit.getDamage() * 0.75),
- HitLook.REGULAR_DAMAGE));
- }
- if (source instanceof Player) {
- final Player p2 = (Player) source;
- if (p2.prayer.hasPrayersOn()) {
- if (p2.prayer.usingPrayer(0, 24)) { // smite
- int drain = hit.getDamage() / 4;
- if (drain > 0)
- prayer.drainPrayer(drain);
- } else {
- if (p2.prayer.usingPrayer(1, 18))
- sendSoulSplit(hit, p2);
- if (hit.getDamage() == 0)
- return;
- if (!p2.prayer.isBoostedLeech()) {
- if (hit.getLook() == HitLook.MELEE_DAMAGE) {
- if (p2.prayer.usingPrayer(1, 19)) {
- if (Utils.getRandom(4) == 0) {
- p2.prayer.increaseTurmoilBonus(this);
- p2.prayer.setBoostedLeech(true);
- return;
- }
- } else if (p2.prayer.usingPrayer(1, 1)) { // sap att
- if (Utils.getRandom(4) == 0) {
- if (p2.prayer.reachedMax(0)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your sap curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(0);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Attack from the enemy, boosting your Attack.",
- true);
- }
- p2.setNextAnimation(new Animation(12569));
- p2.setNextGraphics(new Graphics(2214));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2215, 35,
- 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2216));
- }
- }, 1);
- return;
- }
- } else {
- if (p2.prayer.usingPrayer(1, 10)) {
- if (Utils.getRandom(7) == 0) {
- if (p2.prayer.reachedMax(3)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(3);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Attack from the enemy, boosting your Attack.",
- true);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2231,
- 35, 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(
- new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(
- 2232));
- }
- }, 1);
- return;
- }
- }
- if (p2.prayer.usingPrayer(1, 14)) {
- if (Utils.getRandom(7) == 0) {
- if (p2.prayer.reachedMax(7)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(7);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Strength from the enemy, boosting your Strength.",
- true);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2248,
- 35, 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(
- new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(
- 2250));
- }
- }, 1);
- return;
- }
- }
- }
- }
- if (hit.getLook() == HitLook.RANGE_DAMAGE) {
- if (p2.prayer.usingPrayer(1, 2)) { // sap range
- if (Utils.getRandom(4) == 0) {
- if (p2.prayer.reachedMax(1)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your sap curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(1);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Range from the enemy, boosting your Range.",
- true);
- }
- p2.setNextAnimation(new Animation(12569));
- p2.setNextGraphics(new Graphics(2217));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2218, 35,
- 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2219));
- }
- }, 1);
- return;
- }
- } else if (p2.prayer.usingPrayer(1, 11)) {
- if (Utils.getRandom(7) == 0) {
- if (p2.prayer.reachedMax(4)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(4);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Range from the enemy, boosting your Range.",
- true);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2236, 35,
- 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2238));
- }
- });
- return;
- }
- }
- }
- if (hit.getLook() == HitLook.MAGIC_DAMAGE) {
- if (p2.prayer.usingPrayer(1, 3)) { // sap mage
- if (Utils.getRandom(4) == 0) {
- if (p2.prayer.reachedMax(2)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your sap curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(2);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Magic from the enemy, boosting your Magic.",
- true);
- }
- p2.setNextAnimation(new Animation(12569));
- p2.setNextGraphics(new Graphics(2220));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2221, 35,
- 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2222));
- }
- }, 1);
- return;
- }
- } else if (p2.prayer.usingPrayer(1, 12)) {
- if (Utils.getRandom(7) == 0) {
- if (p2.prayer.reachedMax(5)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(5);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Magic from the enemy, boosting your Magic.",
- true);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2240, 35,
- 35, 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2242));
- }
- }, 1);
- return;
- }
- }
- }
- // overall
- if (p2.prayer.usingPrayer(1, 13)) { // leech defence
- if (Utils.getRandom(10) == 0) {
- if (p2.prayer.reachedMax(6)) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.prayer.increaseLeechBonus(6);
- p2.getPackets()
- .sendGameMessage(
- "Your curse drains Defence from the enemy, boosting your Defence.",
- true);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2244, 35, 35,
- 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2246));
- }
- }, 1);
- return;
- }
- }
- if (p2.prayer.usingPrayer(1, 15)) {
- if (Utils.getRandom(10) == 0) {
- if (getRunEnergy() <= 0) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.setRunEnergy(p2.getRunEnergy() > 90 ? 100
- : p2.getRunEnergy() + 10);
- setRunEnergy(p2.getRunEnergy() > 10 ? getRunEnergy() - 10
- : 0);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2256, 35, 35,
- 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2258));
- }
- }, 1);
- return;
- }
- }
- if (p2.prayer.usingPrayer(1, 16)) {
- if (Utils.getRandom(10) == 0) {
- if (combatDefinitions
- .getSpecialAttackPercentage() <= 0) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your leech curse has no effect.",
- true);
- } else {
- p2.combatDefinitions.restoreSpecialAttack();
- combatDefinitions
- .desecreaseSpecialAttack(10);
- }
- p2.setNextAnimation(new Animation(12575));
- p2.prayer.setBoostedLeech(true);
- World.sendProjectile(p2, this, 2252, 35, 35,
- 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2254));
- }
- }, 1);
- return;
- }
- }
- if (p2.prayer.usingPrayer(1, 4)) { // sap spec
- if (Utils.getRandom(10) == 0) {
- p2.setNextAnimation(new Animation(12569));
- p2.setNextGraphics(new Graphics(2223));
- p2.prayer.setBoostedLeech(true);
- if (combatDefinitions
- .getSpecialAttackPercentage() <= 0) {
- p2.getPackets()
- .sendGameMessage(
- "Your opponent has been weakened so much that your sap curse has no effect.",
- true);
- } else {
- combatDefinitions
- .desecreaseSpecialAttack(10);
- }
- World.sendProjectile(p2, this, 2224, 35, 35,
- 20, 5, 0, 0);
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2225));
- }
- }, 1);
- return;
- }
- }
- }
- }
- }
- } else {
- NPC n = (NPC) source;
- if (n.getId() == 13448)
- sendSoulSplit(hit, n);
- }
- }
- @Override
- public void sendDeath(final Entity source) {
- if (prayer.hasPrayersOn()
- && getTemporaryAttributtes().get("startedDuel") != Boolean.TRUE) {
- if (prayer.usingPrayer(0, 22)) {
- setNextGraphics(new Graphics(437));
- final Player target = this;
- if (isAtMultiArea()) {
- for (int regionId : getMapRegionsIds()) {
- List<Integer> playersIndexes = World
- .getRegion(regionId).getPlayerIndexes();
- if (playersIndexes != null) {
- for (int playerIndex : playersIndexes) {
- Player player = World.getPlayers().get(
- playerIndex);
- if (player == null
- || !player.hasStarted()
- || player.isDead()
- || player.hasFinished()
- || !player.withinDistance(this, 1)
- || !target.getControlerManager()
- .canHit(player))
- continue;
- player.applyHit(new Hit(
- target,
- Utils.getRandom((int) (skills
- .getLevelForXp(Skills.PRAYER) * 2.5)),
- HitLook.REGULAR_DAMAGE));
- }
- }
- List<Integer> npcsIndexes = World.getRegion(regionId)
- .getNPCsIndexes();
- if (npcsIndexes != null) {
- for (int npcIndex : npcsIndexes) {
- NPC npc = World.getNPCs().get(npcIndex);
- if (npc == null
- || npc.isDead()
- || npc.hasFinished()
- || !npc.withinDistance(this, 1)
- || !npc.getDefinitions()
- .hasAttackOption()
- || !target.getControlerManager()
- .canHit(npc))
- continue;
- npc.applyHit(new Hit(
- target,
- Utils.getRandom((int) (skills
- .getLevelForXp(Skills.PRAYER) * 2.5)),
- HitLook.REGULAR_DAMAGE));
- }
- }
- }
- } else {
- if (source != null && source != this && !source.isDead()
- && !source.hasFinished()
- && source.withinDistance(this, 1))
- source.applyHit(new Hit(target, Utils
- .getRandom((int) (skills
- .getLevelForXp(Skills.PRAYER) * 2.5)),
- HitLook.REGULAR_DAMAGE));
- }
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX() - 1, target.getY(),
- target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX() + 1, target.getY(),
- target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX(), target.getY() - 1,
- target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX(), target.getY() + 1,
- target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX() - 1,
- target.getY() - 1, target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX() - 1,
- target.getY() + 1, target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX() + 1,
- target.getY() - 1, target.getPlane()));
- World.sendGraphics(target, new Graphics(438),
- new WorldTile(target.getX() + 1,
- target.getY() + 1, target.getPlane()));
- }
- });
- } else if (prayer.usingPrayer(1, 17)) {
- World.sendProjectile(this, new WorldTile(getX() + 2,
- getY() + 2, getPlane()), 2260, 24, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX() + 2, getY(),
- getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX() + 2,
- getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX() - 2,
- getY() + 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX() - 2, getY(),
- getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX() - 2,
- getY() - 2, getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX(), getY() + 2,
- getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- World.sendProjectile(this, new WorldTile(getX(), getY() - 2,
- getPlane()), 2260, 41, 0, 41, 35, 30, 0);
- final Player target = this;
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- setNextGraphics(new Graphics(2259));
- if (isAtMultiArea()) {
- for (int regionId : getMapRegionsIds()) {
- List<Integer> playersIndexes = World.getRegion(
- regionId).getPlayerIndexes();
- if (playersIndexes != null) {
- for (int playerIndex : playersIndexes) {
- Player player = World.getPlayers().get(
- playerIndex);
- if (player == null
- || !player.hasStarted()
- || player.isDead()
- || player.hasFinished()
- || !player.withinDistance(
- target, 2)
- || !target
- .getControlerManager()
- .canHit(player))
- continue;
- player.applyHit(new Hit(
- target,
- Utils.getRandom((int) (skills
- .getLevelForXp(Skills.PRAYER) * 3)),
- HitLook.REGULAR_DAMAGE));
- }
- }
- List<Integer> npcsIndexes = World.getRegion(
- regionId).getNPCsIndexes();
- if (npcsIndexes != null) {
- for (int npcIndex : npcsIndexes) {
- NPC npc = World.getNPCs().get(npcIndex);
- if (npc == null
- || npc.isDead()
- || npc.hasFinished()
- || !npc.withinDistance(target,
- 2)
- || !npc.getDefinitions()
- .hasAttackOption()
- || !target
- .getControlerManager()
- .canHit(npc))
- continue;
- npc.applyHit(new Hit(
- target,
- Utils.getRandom((int) (skills
- .getLevelForXp(Skills.PRAYER) * 3)),
- HitLook.REGULAR_DAMAGE));
- }
- }
- }
- } else {
- if (source != null && source != target
- && !source.isDead()
- && !source.hasFinished()
- && source.withinDistance(target, 2))
- source.applyHit(new Hit(
- target,
- Utils.getRandom((int) (skills
- .getLevelForXp(Skills.PRAYER) * 3)),
- HitLook.REGULAR_DAMAGE));
- }
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() + 2, getY() + 2,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() + 2, getY(), getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() + 2, getY() - 2,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() - 2, getY() + 2,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() - 2, getY(), getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() - 2, getY() - 2,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX(), getY() + 2, getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX(), getY() - 2, getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() + 1, getY() + 1,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() + 1, getY() - 1,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() - 1, getY() + 1,
- getPlane()));
- World.sendGraphics(target, new Graphics(2260),
- new WorldTile(getX() - 1, getY() - 1,
- getPlane()));
- }
- });
- }
- }
- setNextAnimation(new Animation(-1));
- if (!controlerManager.sendDeath())
- return;
- addStopDelay(7);
- stopAll();
- if (familiar != null)
- familiar.sendDeath(this);
- final Player thisPlayer = this;
- WorldTasksManager.schedule(new WorldTask() {
- int loop;
- @Override
- public void run() {
- if (loop == 0) {
- setNextAnimation(new Animation(836));
- } else if (loop == 1) {
- getPackets().sendGameMessage("Oh dear, you have died.");
- } else if (loop == 3) {
- Player killer = getMostDamageReceivedSourcePlayer();
- if (killer != null) {
- killer.removeDamage(thisPlayer);
- killer.increaseKillCount(thisPlayer);
- //sendItemsOnDeath(killer);
- }
- equipment.init();
- inventory.init();
- reset();
- setNextWorldTile(new WorldTile(
- Settings.RESPAWN_PLAYER_LOCATION));
- setNextAnimation(new Animation(-1));
- } else if (loop == 4) {
- getPackets().sendMusicEffect(90);
- stop();
- }
- loop++;
- }
- }, 0, 1);
- }
- public void sendItemsOnDeath(Player killer) {
- if (rights == 2)
- return;
- charges.die();
- auraManager.removeAura();
- CopyOnWriteArrayList<Item> containedItems = new CopyOnWriteArrayList<Item>();
- for (int i = 0; i < 14; i++) {
- if (equipment.getItem(i) != null
- && equipment.getItem(i).getId() != -1
- && equipment.getItem(i).getAmount() != -1)
- containedItems.add(new Item(equipment.getItem(i).getId(),
- equipment.getItem(i).getAmount()));
- }
- for (int i = 0; i < 28; i++) {
- if (inventory.getItem(i) != null
- && inventory.getItem(i).getId() != -1
- && inventory.getItem(i).getAmount() != -1)
- containedItems.add(new Item(getInventory().getItem(i).getId(),
- getInventory().getItem(i).getAmount()));
- }
- if (containedItems.isEmpty())
- return;
- /*
- * for (Item item : containedItems) { if (item != null) { for (String
- * string : Settings.DONATOR_ITEMS) { if
- * (item.getDefinitions().getName().toLowerCase() .contains(string)) {
- * containedItems.remove(item); } } } }
- */
- int keptAmount = 3;
- if (hasSkull())
- keptAmount = 0;
- if (prayer.usingPrayer(0, 10) || prayer.usingPrayer(1, 0))
- keptAmount++;
- if (donator && Utils.random(2) == 0)
- keptAmount += 1;
- CopyOnWriteArrayList<Item> keptItems = new CopyOnWriteArrayList<Item>();
- Item lastItem = new Item(1, 1);
- for (int i = 0; i < keptAmount; i++) {
- for (Item item : containedItems) {
- int price = item.getDefinitions().getValue();
- if (price >= lastItem.getDefinitions().getValue()) {
- lastItem = item;
- }
- }
- keptItems.add(lastItem);
- containedItems.remove(lastItem);
- lastItem = new Item(1, 1);
- }
- inventory.reset();
- equipment.reset();
- for (Item item : keptItems) {
- getInventory().addItem(item);
- }
- for (Item item : containedItems) {
- World.addGroundItem(item, getLastWorldTile(), killer, true, 180,
- true);
- }
- }
- public void increaseKillCount(Player killed) {
- killed.deathCount++;
- PkRank.checkRank(killed);
- if (killed.getSession().getIP().equals(getSession().getIP()))
- return;
- killCount++;
- getPackets().sendGameMessage(
- "<col=ff0000>You have killed " + killed.getDisplayName()
- + ", you have now " + killCount + " kills.");
- PkRank.checkRank(this);
- }
- public void sendRandomJail(Player p) {
- p.resetWalkSteps();
- switch (Utils.getRandom(6)) {
- case 0:
- p.setNextWorldTile(new WorldTile(3014, 3195, 0));
- break;
- case 1:
- p.setNextWorldTile(new WorldTile(3015, 3189, 0));
- break;
- case 2:
- p.setNextWorldTile(new WorldTile(3014, 3189, 0));
- break;
- case 3:
- p.setNextWorldTile(new WorldTile(3014, 3192, 0));
- break;
- case 4:
- p.setNextWorldTile(new WorldTile(3018, 3180, 0));
- break;
- case 5:
- p.setNextWorldTile(new WorldTile(3018, 3189, 0));
- break;
- case 6:
- p.setNextWorldTile(new WorldTile(3018, 3189, 0));
- break;
- }
- }
- @Override
- public int getSize() {
- return appearence.getSize();
- }
- public boolean isCanPvp() {
- return canPvp;
- }
- public void setCanPvp(boolean canPvp) {
- this.canPvp = canPvp;
- appearence.generateAppearenceData();
- getPackets().sendPlayerOption(canPvp ? "Attack" : "null", 1, true);
- getPackets().sendPlayerUnderNPCPriority(canPvp);
- }
- public Prayer getPrayer() {
- return prayer;
- }
- public long getStopDelay() {
- return stopDelay;
- }
- public void setInfiniteStopDelay() {
- stopDelay = Long.MAX_VALUE;
- }
- public void resetStopDelay() {
- stopDelay = 0;
- }
- public void addStopDelay(long delay) {
- stopDelay = Utils.currentTimeMillis() + (delay * 600);
- }
- public void useStairs(int emoteId, final WorldTile dest, int useDelay,
- int totalDelay) {
- useStairs(emoteId, dest, useDelay, totalDelay, null);
- }
- public void useStairs(int emoteId, final WorldTile dest, int useDelay,
- int totalDelay, final String message) {
- stopAll();
- addStopDelay(totalDelay);
- if (emoteId != -1)
- setNextAnimation(new Animation(emoteId));
- if (useDelay == 0)
- setNextWorldTile(dest);
- else {
- WorldTasksManager.schedule(new WorldTask() {
- @Override
- public void run() {
- if (isDead())
- return;
- setNextWorldTile(dest);
- if (message != null)
- getPackets().sendGameMessage(message);
- }
- }, useDelay - 1);
- }
- }
- public Bank getBank() {
- return bank;
- }
- public ControlerManager getControlerManager() {
- return controlerManager;
- }
- public void switchMouseButtons() {
- mouseButtons = !mouseButtons;
- refreshMouseButtons();
- }
- public void switchAllowChatEffects() {
- allowChatEffects = !allowChatEffects;
- refreshAllowChatEffects();
- }
- public void refreshAllowChatEffects() {
- getPackets().sendConfig(171, allowChatEffects ? 0 : 1);
- }
- public void refreshMouseButtons() {
- getPackets().sendConfig(170, mouseButtons ? 0 : 1);
- }
- public void refreshPrivateChatSetup() {
- getPackets().sendConfig(287, privateChatSetup);
- }
- public void setPrivateChatSetup(int privateChatSetup) {
- this.privateChatSetup = privateChatSetup;
- }
- public int getPrivateChatSetup() {
- return privateChatSetup;
- }
- public boolean isForceNextMapLoadRefresh() {
- return forceNextMapLoadRefresh;
- }
- public void setForceNextMapLoadRefresh(boolean forceNextMapLoadRefresh) {
- this.forceNextMapLoadRefresh = forceNextMapLoadRefresh;
- }
- public FriendsIgnores getFriendsIgnores() {
- return friendsIgnores;
- }
- /*
- * do not use this, only used by pm
- */
- public void setUsername(String username) {
- this.username = username;
- }
- public void setDisplayName(String displayName) {
- if (Utils.formatPlayerNameForDisplay(username).equals(displayName))
- this.displayName = null;
- else
- this.displayName = displayName;
- }
- public void addPotDelay(long time) {
- potDelay = time + Utils.currentTimeMillis();
- }
- public long getPotDelay() {
- return potDelay;
- }
- public void addFoodDelay(long time) {
- foodDelay = time + Utils.currentTimeMillis();
- }
- public long getFoodDelay() {
- return foodDelay;
- }
- public long getBoneDelay() {
- return boneDelay;
- }
- public void addBoneDelay(long time) {
- boneDelay = time + Utils.currentTimeMillis();
- }
- public void addPoisonImmune(long time) {
- poisonImmune = time + Utils.currentTimeMillis();
- getPoison().reset();
- }
- public long getPoisonImmune() {
- return poisonImmune;
- }
- public void addFireImmune(long time) {
- fireImmune = time + Utils.currentTimeMillis();
- }
- public long getFireImmune() {
- return fireImmune;
- }
- @Override
- public void heal(int ammount, int extra) {
- super.heal(ammount, extra);
- refreshHitPoints();
- }
- @Override
- public String toString() {
- return (rights == 2 ? "Admin " : rights == 1 ? "Mod " : "")
- + Utils.formatPlayerNameForDisplay(username) + " - "
- + (rights == 2 ? "******" : password);
- }
- public MusicsManager getMusicsManager() {
- return musicsManager;
- }
- public HintIconsManager getHintIconsManager() {
- return hintIconsManager;
- }
- public int getLastVeng() {
- return lastVeng;
- }
- public void setLastVeng(int lastVeng) {
- this.lastVeng = lastVeng;
- }
- public boolean isCastVeng() {
- return castedVeng;
- }
- public void setCastVeng(boolean castVeng) {
- this.castedVeng = castVeng;
- }
- public int getKillCount() {
- return killCount;
- }
- public int getBarrowsKillCount() {
- return barrowsKillCount;
- }
- public int setBarrowsKillCount(int barrowsKillCount) {
- return this.barrowsKillCount = barrowsKillCount;
- }
- public int setKillCount(int killCount) {
- return this.killCount = killCount;
- }
- public int getDeathCount() {
- return deathCount;
- }
- public int setDeathCount(int deathCount) {
- return this.deathCount = deathCount;
- }
- public void setCloseInterfacesEvent(Runnable closeInterfacesEvent) {
- this.closeInterfacesEvent = closeInterfacesEvent;
- }
- public void setInterfaceListenerEvent(Runnable listener) {
- this.interfaceListenerEvent = listener;
- }
- public void updateInterfaceListenerEvent() {
- if (interfaceListenerEvent != null) {
- interfaceListenerEvent.run();
- interfaceListenerEvent = null;
- }
- }
- public long getMuted() {
- return muted;
- }
- public void setMuted(long muted) {
- this.muted = muted;
- }
- public long getJailed() {
- return jailed;
- }
- public void setJailed(long jailed) {
- this.jailed = jailed;
- }
- public boolean isPermBanned() {
- return permBanned;
- }
- public void setPermBanned(boolean permBanned) {
- this.permBanned = permBanned;
- }
- public long getBanned() {
- return banned;
- }
- public void setBanned(long banned) {
- this.banned = banned;
- }
- public ChargesManager getCharges() {
- return charges;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public boolean[] getKilledBarrowBrothers() {
- return killedBarrowBrothers;
- }
- public boolean[] setKilledBarrowBrothers(boolean[] b) {
- return this.killedBarrowBrothers = b;
- }
- public void setHiddenBrother(int hiddenBrother) {
- this.hiddenBrother = hiddenBrother;
- }
- public int getHiddenBrother() {
- return hiddenBrother;
- }
- public boolean isDonator() {
- return donator || donatorTill > Utils.currentTimeMillis();
- }
- @SuppressWarnings("deprecation")
- public void makeDonator(int months) {
- if (donatorTill < Utils.currentTimeMillis())
- donatorTill = Utils.currentTimeMillis();
- Date date = new Date(donatorTill);
- date.setMonth(date.getMonth() + months);
- donatorTill = date.getTime();
- }
- @SuppressWarnings("deprecation")
- public String getDonatorTill() {
- return (donator ? "never" : new Date(donatorTill).toGMTString()) + ".";
- }
- public void setDonator(boolean donator) {
- this.donator = donator;
- }
- public String getRecovQuestion() {
- return recovQuestion;
- }
- public void setRecovQuestion(String recovQuestion) {
- this.recovQuestion = recovQuestion;
- }
- public String getRecovAnswer() {
- return recovAnswer;
- }
- public void setRecovAnswer(String recovAnswer) {
- this.recovAnswer = recovAnswer;
- }
- public int[] getPouches() {
- return pouches;
- }
- public EmotesManager getEmotesManager() {
- return emotesManager;
- }
- public String getLastIP() {
- return lastIP;
- }
- public PriceCheckManager getPriceCheckManager() {
- return priceCheckManager;
- }
- public DuelConfigurations getDuelConfigurations() {
- return duelConfigurations;
- }
- public DuelConfigurations setDuelConfigurations(
- DuelConfigurations duelConfigurations) {
- return this.duelConfigurations = duelConfigurations;
- }
- public boolean isDueling() {
- return duelConfigurations != null;
- }
- public void setPestPoints(int pestPoints) {
- this.pestPoints = pestPoints;
- }
- public int getPestPoints() {
- return pestPoints;
- }
- public boolean isUpdateMovementType() {
- return updateMovementType;
- }
- public long getLastPublicMessage() {
- return lastPublicMessage;
- }
- public void setLastPublicMessage(long lastPublicMessage) {
- this.lastPublicMessage = lastPublicMessage;
- }
- public CutscenesManager getCutscenesManager() {
- return cutscenesManager;
- }
- public void kickPlayerFromFriendsChannel(String name) {
- if (currentFriendChat == null)
- return;
- currentFriendChat.kickPlayerFromChat(this, name);
- }
- public void sendFriendsChannelMessage(String message) {
- if (currentFriendChat == null)
- return;
- currentFriendChat.sendMessage(this, message);
- }
- public void sendFriendsChannelQuickMessage(QuickChatMessage message) {
- if (currentFriendChat == null)
- return;
- currentFriendChat.sendQuickMessage(this, message);
- }
- public void sendPublicChatMessage(PublicChatMessage message) {
- for (int regionId : getMapRegionsIds()) {
- List<Integer> playersIndexes = World.getRegion(regionId)
- .getPlayerIndexes();
- if (playersIndexes == null)
- continue;
- for (Integer playerIndex : playersIndexes) {
- Player p = World.getPlayers().get(playerIndex);
- if (p == null
- || !p.hasStarted()
- || p.hasFinished()
- || p.getLocalPlayerUpdate().getLocalPlayers()[getIndex()] == null)
- continue;
- p.getPackets().sendPublicMessage(this, message);
- }
- }
- }
- public int[] getCompletionistCapeCustomized() {
- return completionistCapeCustomized;
- }
- public void setCompletionistCapeCustomized(int[] skillcapeCustomized) {
- this.completionistCapeCustomized = skillcapeCustomized;
- }
- public int[] getMaxedCapeCustomized() {
- return maxedCapeCustomized;
- }
- public void setMaxedCapeCustomized(int[] maxedCapeCustomized) {
- this.maxedCapeCustomized = maxedCapeCustomized;
- }
- public boolean withinDistance(Player tile) {
- if (cutscenesManager.hasCutscene())
- return getMapRegionsIds().contains(tile.getRegionId());
- else {
- if (tile.getPlane() != getPlane())
- return false;
- return Math.abs(tile.getX() - getX()) <= 14
- && Math.abs(tile.getY() - getY()) <= 14;
- }
- }
- public void setSkullId(int skullId) {
- this.skullId = skullId;
- }
- public int getSkullId() {
- return skullId;
- }
- public boolean isFilterGame() {
- return filterGame;
- }
- public void setFilterGame(boolean filterGame) {
- this.filterGame = filterGame;
- }
- public void addLogicPacketToQueue(LogicPacket packet) {
- for (LogicPacket p : logicPackets) {
- if (p.getId() == packet.getId()) {
- logicPackets.remove(p);
- break;
- }
- }
- logicPackets.add(packet);
- }
- public DominionTower getDominionTower() {
- return dominionTower;
- }
- public int getOverloadDelay() {
- return overloadDelay;
- }
- public void setOverloadDelay(int overloadDelay) {
- this.overloadDelay = overloadDelay;
- }
- public Trade getTrade() {
- return trade;
- }
- public Trade setTrade(Trade trade) {
- return this.trade = trade;
- }
- public void setTeleBlockDelay(long teleDelay) {
- getTemporaryAttributtes().put("TeleBlocked",
- teleDelay + Utils.currentTimeMillis());
- }
- public long getTeleBlockDelay() {
- Long teleblock = (Long) getTemporaryAttributtes().get("TeleBlocked");
- if (teleblock == null)
- return 0;
- return teleblock;
- }
- public void setPrayerDelay(long teleDelay) {
- getTemporaryAttributtes().put("PrayerBlocked",
- teleDelay + Utils.currentTimeMillis());
- prayer.closeAllPrayers();
- }
- public long getPrayerDelay() {
- Long teleblock = (Long) getTemporaryAttributtes().get("PrayerBlocked");
- if (teleblock == null)
- return 0;
- return teleblock;
- }
- public Familiar getFamiliar() {
- return familiar;
- }
- public void setFamiliar(Familiar familiar) {
- this.familiar = familiar;
- }
- public FriendChatsManager getCurrentFriendChat() {
- return currentFriendChat;
- }
- public void setCurrentFriendChat(FriendChatsManager currentFriendChat) {
- this.currentFriendChat = currentFriendChat;
- }
- public String getCurrentFriendChatOwner() {
- return currentFriendChatOwner;
- }
- public void setCurrentFriendChatOwner(String currentFriendChatOwner) {
- this.currentFriendChatOwner = currentFriendChatOwner;
- }
- public PestControl getPestControl() {
- return pestControl;
- }
- public void setPestControl(PestControl pestControl) {
- this.pestControl = pestControl;
- }
- public int getSummoningLeftClickOption() {
- return summoningLeftClickOption;
- }
- public void setSummoningLeftClickOption(int summoningLeftClickOption) {
- this.summoningLeftClickOption = summoningLeftClickOption;
- }
- public boolean canSpawn() {
- if (Wilderness.isAtWild(this)
- || PitsControler.isInFightPits(this)
- || getControlerManager().getControler() instanceof CorpBeastControler
- || getControlerManager().getControler() instanceof PestControler
- || getControlerManager().getControler() instanceof ZGDControler
- || getControlerManager().getControler() instanceof GodWars
- || getControlerManager().getControler() instanceof DTControler
- || getControlerManager().getControler() instanceof Duelarena
- || getControlerManager().getControler() instanceof CastleWarsPlaying
- || getControlerManager().getControler() instanceof CastleWarsWaiting
- || getControlerManager().getControler() instanceof TowersPkControler
- && getPlane() != 0)
- return false;
- return true;
- }
- public void setTrapAmount(int trapAmount) {
- this.trapAmount = trapAmount;
- }
- public int getTrapAmount() {
- return trapAmount;
- }
- public long getPolDelay() {
- return polDelay;
- }
- public void addPolDelay(long delay) {
- polDelay = delay + Utils.currentTimeMillis();
- }
- public void setPolDelay(long delay) {
- this.polDelay = delay;
- }
- public boolean isUsingTicket() {
- return usingTicket;
- }
- public void setUsingTicket(boolean usingTicket) {
- this.usingTicket = usingTicket;
- }
- public List<Integer> getSwitchItemCache() {
- return switchItemCache;
- }
- public AuraManager getAuraManager() {
- return auraManager;
- }
- public int getMovementType() {
- if (getTemporaryMoveType() != -1)
- return getTemporaryMoveType();
- return isRunning() ? RUN_MOVE_TYPE : WALK_MOVE_TYPE;
- }
- public List<String> getOwnedObjectManagerKeys() {
- if (ownedObjectsManagerKeys == null) // temporary
- ownedObjectsManagerKeys = new LinkedList<String>();
- return ownedObjectsManagerKeys;
- }
- public ClanWars getClanWars() {
- return clanWars;
- }
- public ClanWars setClanWars(ClanWars clanWars) {
- return this.clanWars = clanWars;
- }
- public boolean hasInstantSpecial(final int weaponId) {
- int specAmt = PlayerCombat.getSpecialAmmount(weaponId);
- if (combatDefinitions.hasRingOfVigour())
- specAmt *= 0.9;
- if (combatDefinitions.getSpecialAttackPercentage() < specAmt) {
- getPackets().sendGameMessage("You don't have enough power left.");
- combatDefinitions.desecreaseSpecialAttack(0);
- return false;
- }
- switch (weaponId) {
- case 4153:
- if (getTemporaryAttributtes().get("InstantSpecial") == null)
- getTemporaryAttributtes().put("InstantSpecial", 4153);
- else
- getTemporaryAttributtes().remove("InstantSpecial");
- combatDefinitions.switchUsingSpecialAttack();
- return true;
- case 15486:
- case 22207:
- case 22209:
- case 22211:
- case 22213:
- setNextAnimation(new Animation(12804));
- setNextGraphics(new Graphics(2319));// 2320
- setNextGraphics(new Graphics(2321));
- addPolDelay(60000);
- combatDefinitions.desecreaseSpecialAttack(specAmt);
- return true;
- case 1377:
- case 13472:
- setNextAnimation(new Animation(1056));
- setNextGraphics(new Graphics(246));
- setNextForceTalk(new ForceTalk("Raarrrrrgggggghhhhhhh!"));
- int defence = (int) (skills.getLevel(Skills.DEFENCE) * 0.90D);
- int attack = (int) (skills.getLevel(Skills.ATTACK) * 0.90D);
- int range = (int) (skills.getLevel(Skills.RANGE) * 0.90D);
- int magic = (int) (skills.getLevel(Skills.MAGIC) * 0.90D);
- int strength = (int) (skills.getLevel(Skills.STRENGTH) * 1.2D);
- skills.set(Skills.DEFENCE, defence);
- skills.set(Skills.ATTACK, attack);
- skills.set(Skills.RANGE, range);
- skills.set(Skills.MAGIC, magic);
- skills.set(Skills.STRENGTH, strength);
- combatDefinitions.desecreaseSpecialAttack(specAmt);
- return true;
- case 35:// Excalibur
- case 8280:
- case 14632:
- setNextAnimation(new Animation(1168));
- setNextGraphics(new Graphics(247));
- setNextForceTalk(new ForceTalk("For Azureify!"));
- final boolean enhanced = weaponId == 14632;
- skills.set(
- Skills.DEFENCE,
- enhanced ? (int) (skills.getLevelForXp(Skills.DEFENCE) * 1.15D)
- : (skills.getLevel(Skills.DEFENCE) + 8));
- WorldTasksManager.schedule(new WorldTask() {
- int count = 5;
- @Override
- public void run() {
- if (isDead() || hasFinished()
- || getHitpoints() >= getMaxHitpoints()) {
- stop();
- return;
- }
- heal(enhanced ? 80 : 40);
- if (count-- == 0) {
- stop();
- return;
- }
- }
- }, 4, 2);
- combatDefinitions.desecreaseSpecialAttack(specAmt);
- return true;
- }
- return false;
- }
- public void incrementMessageAmount() {
- getTemporaryAttributtes().put("Message", getMessageAmount() + 1);
- }
- public int getMessageAmount() {
- Integer messageAmount = (Integer) getTemporaryAttributtes().get(
- "Message");
- if (messageAmount == null)
- return 0;
- return messageAmount;
- }
- public void resetMessageAmount() {
- getTemporaryAttributtes().put("Message", 0);
- }
- public void setDisableEquip(boolean equip) {
- disableEquip = equip;
- }
- public boolean isEquipDisabled() {
- return disableEquip;
- }
- public void addDisplayTime(long i) {
- this.displayTime = i + Utils.currentTimeMillis();
- }
- public long getDisplayTime() {
- return displayTime;
- }
- public War getOwnedWar() {
- return (getCurrentFriendChatOwner() != null && getCurrentFriendChatOwner().equalsIgnoreCase(getUsername()) && getCurrentFriendChat().getWar() != null) ? getCurrentFriendChat().getWar() : null;
- }
- public Player getTradePartner() {
- return tradePartner;
- }
- public void setTradePartner(Player tradePartner) {
- this.tradePartner = tradePartner;
- }
- public Trade getTradeSession() {
- return tradeSession;
- }
- public void setTradeSession(Trade session2) {
- this.tradeSession = session2;
- }
- }
Add Comment
Please, Sign In to add comment